基于NIOSⅡ的矩阵键盘和液晶显示外设组件的设计
3 LCD显示模块的程序设计
本文引用地址:http://www.amcfsurvey.com/article/268259.htm在NiosⅡ和LCD的接口中,一方面可以通过在NiosⅡ系统中添加相应I/O口的方式来实现对液晶显示屏LCD的间接控制,另一方面也可以利用构建IP核来直接进行控制。第一种是将LCD接口当作普通的外部设备PIO进行操作,LCD的数据以及读、写使能、片选信号等都包括在PIO总线内;第二种是在SOPC Builder中自己定义eomponent,并把液晶显示模块看成外部存储器,直接做成Avalon总线Slave设备。
第一种方法在硬件工程中,需要设计与外设相连的I/O接口;而在软件工程中,需要用户编写相应的接口程序对外设进行初始化,设置相应的外设寄存器。在每次新建一个工程后,这样的工作都得重复进行,因而会增加开发成本。第二种方案需要写HDL模块,自己定义控制状态、数据寄存器和控制位,这种方式控制灵活,易于实现复杂的控制时序,而且一旦自定义设备成功后,就可以像使用其他设备一样来使用这些设备。用户也可以将这些设备共享给其他的使用者,这样就大大减少了重复工作。本设计中采用第二种方法。
在Altera SOPC Builder中双击Create NewComponent,打开Component窗口,并在HDL Files标签下添加LCD硬件描述语言编写的文件(该文件描述了组件与Avalon总线的接口以及组件与液晶屏的接口),系统编辑器就会立即自动对文件进行分析,并从文件中读I/O信号和参数信息。Lcd 12864自定义逻辑信号如图3所示。
完成LCD_12864器件的加入后,LCD_12864器件就会出现在SOPC Builder的组件选择栏的“User Logic”项目下。图4所示是LCD模块的管脚分配图。
LCD模块的初始化就是对LCD进行模式设置。由于SOPC Builder中的LCDl2864控制模块已经考虑了LCD的读写时序,所以使用NiosⅡIDE进行LCD驱动和控制时只需对LCD进行初始化。其部分初始化子程序如下:
之后,打开NiosⅡIDE,创建软件工程,编写test程序,即可测试验证液晶模块的显示结果。其中部分程序如下:
4 结束语
本设计最后经过测试证明,矩阵键盘按键中断响应准确无误。由于其扫描过程由硬件实现,无需占用CPU资源,故可大大提高系统的性能,LCD可以接收任意中英文的输入显示。在开发设计过程中,矩阵键盘和LCD接口均封装为用户自定义的外设组件加入SOPCBuilder的元件库中,因而可以很方便地在其他系统中根据实际情况添加使用。用户也可以将这些设备共享给其他的使用者,这样就大大减少了重复工作。与其他方法相比,该方法无疑是一种更高效、灵活和低成本的开发方法,同时体现出了SOPC片上可编程系统的灵活、方便、可重用的优势。
电气符号相关文章:电气符号大全
led显示器相关文章:led显示器原理
分频器相关文章:分频器原理
评论