首页->【FPGA/CPLD助学小组】

13 1

勇敢的芯伴你玩转Altera FPGA连载105:RTC时间的LCD显示和UART设置

特权同学,版权所有

配套例程和更多资料下载链接:

http://pan.baidu.com/s/1i5LMUUD

1.jpg

 

 

功能简介

         该实例工程的功能框图如图10.83所示。PC可以通过UART发送串口帧数据对RTC芯片的当前时间进行调整;FPGA内部定时读取RTC芯片的最新时间,将此时间通过3.5寸的LCD显示出来;LCD的字模数据则存储在FPGA内嵌ROM中。

2.jpg

图10.83 RTC、LCD与UART联合实例功能框图

         本实例模块划分如图10.84所示。

3.jpg

图10.84 RTC、LCD与UART联合实例模块层次

         这些模块几乎前面的实例中都使用过,本实例只是将他们整合在一起,唯一需要特别进行设计的是lcd_controller.v模块中字模显示位置以及相关逻辑的实现。

 

板级调试

连接好下载线,连接好SF-CY4核心板和SF-LCD子板,给它们供电。打开Quartus II,进入下载界面,将本实例工程下的cy4.sof文件烧录到FPGA中在线运行。

         此时,如图10.86所示,可以看到LCD上显示了黑底蓝字的时间信息。

4.jpg

图10.86 LCD显示时间

         如图10.87所示,打开“串口调试器”,做好设置,然后输入数据“aa10553055”,其中aa表示帧头,55表示帧尾,时间设定为“10:55:30”。点击“手工发送”,则可以看到液晶屏上的时间也跟着变化了,这是因为RTC芯片已经写入了新的时间数据。

5.jpg

图10.87 UART协议帧重置时间

 

 

 

 


楼主可见

  1. huitailangdxiaohao 1#

    吴老师,能请教一个问题吗,关于在矩阵键盘检测实验当中:

    这里实现的状态机如图所示。其基本原理为:K_IDLE 状态下,所有行信号输出为低电平,

    这样任意一个按键被按下,都会有列信号变化发生,但是这无法定位到具体的键值;因此我

    们就进入K_H1OL 状态,该状态下,我们只拉低一个行信号,即key_h[0];紧接着进入K_H2OL

    状态,判断当前是否有列信号拉低了,若有表示按键事件发生在key_h[0]所在行,相应输出

    键值,回到K_IDLE 即可,若没有列信号被拉低,则拉低另一个行信号key_h[1];后续状态

    继续判断,依次类推,知道遍历一遍所有的行,那么就一定能检测到按键值。


    这段话,怎么理解,为什么要定义6个状态,进入K_H2OL状态,有列信号输出,表示的是key_h[0]的按键呢?