基于NIOSⅡ的矩阵键盘和液晶显示外设组件的设计
引言
本文引用地址:http://www.amcfsurvey.com/article/268259.htmNiosⅡ是Altera公司推出的第二代IP软核处理器。它与其他IP核可构成SOPC系统的主要部分。Altera SOPC Builder提供有NiosⅡ处理器及一些常用外设接口,因此,对于一些库中没有提供的模块,用户就可以自己定义添加。用户还可以通过自定义逻辑方法在SOPC设计中添加自己开发的IP核。而定制用户逻辑外设是使用NiosⅡ嵌入式软核处理器的SOPC系统的重要特性之一。
本文提出了一种针对LCD控制器和矩阵键盘的IP核的设计方法。该方法利用SOPC Builder中元件编辑器Create New Component,通过自定义逻辑方法在SOPC设计中添加自己开发的液晶显示模块和键盘IP核。该控制器具有Avalon总线接口,可与其它标准IP核一起构成以NiosⅡ为核心的片上系统,并可编写驱动程序。
1 键盘和显示电路的硬件设计
键盘采用4×4行列式键盘,其4根行输入线KEY0~KEY3和4根列输出线KEYSCAN0~KEYSCAN3与键盘接口电路相连,每行信号线使用上拉电阻接到3.3 V电源上。液晶显示采用的是THSl2864-12显示模块。HSl2864-12是一种图形点阵液晶显示器,液晶显示屏为128×64点阵,可显示4行,每行显示8个汉字,该模块具有2MB的中文字型ROM,可提供8192个16×16点阵中文字型。同时,为了便于英文和其它常用字符显示,它还具有16 KB半宽字型ROM,提供有128个16×8点阵的字母符号字型;另外,绘图显示画面还可提供一个64×256点阵的绘图区域(GDRAM)及240点的ICONRAM,可以和文字、画面混合显示,其内含的CGRAM可提供4组软件可编程的16×16点阵造字功能。其键盘电路和显示模块接口电路如图1所示。
2 键盘扫描电路的程序设计
行列式键盘又叫矩阵式键盘,它用带有I/O口的线组成行列结构,按键设置在行列的交点上。传统矩阵键盘大多使用软件驱动控制,即在程序中循环扫描查询键盘的状态,以判断是否有键按下,这种方法比较耗费CPU资源,而且查询扫描结果可能出现误码。本文提出了一种新的用硬件描述语言在FPGA中实现矩阵键盘控制的方法。该方法使用时序电路扫描查询键盘,在发现键按下的时候,可给出相应的键码和中断信号,并以中断的方式处理按键。矩阵键盘扫描分4个时序,在每一个时序,KEY0~KEY3(四根行线线)端口分别输出1110、1101、1011、0111扫描码,并分别控制一列按键接地,同时在每个时序查询KEYSCAN0~KEYSCAN3(四根列线)端口。
图2所示是一种4×4行列结构的键盘扫描电路,它由分频器电路、键盘扫描计数电路、键盘行(row)列(col)按键检测电路、按键抖动消除电路、键盘编码电路等组成。
设计好键盘的硬件控制程序以后,键盘控制程序可封装为参数可配置的用户自定义外设组件,以在SOPCBuilder中直接添加使用。完成KEYS器件的加入后,KEYS器件就会出现在SOPCBuilder的组件选择栏的“User Logic”项目下,最后在NiosⅡIDE中设计矩阵键盘的驱动程序,安装键盘按键中断,编写按键中断服务程序,从而通过按键中断获取相应按键的键盘码。其例程如下:
/*初始化键盘中断*/
电气符号相关文章:电气符号大全
led显示器相关文章:led显示器原理
分频器相关文章:分频器原理
评论