1、设计要求
基于小脚丫FPGA开发板和Nokia5110液晶屏实现数字时钟的设计,要求:
- 1)采用FPGA+按键+液晶屏实现数字时钟功能;
- 2)时间显示格式:XX:XX:XX (时:分:秒),采用24小时制;
- 3)增加按键控制,时分秒三位分别可调,处于调节状态的位闪烁区别;
2、硬件连接
FPGA的系统时钟来自于小脚丫FPGA开发板配置的24MHz时钟晶振,连接FPGA的C1引脚。
本设计用到两个按键K1和K2,硬件设计如图1所示,两个按键分别连接到FPGA的A2和B7引脚。
图1、按键硬件设计
设计中需要驱动Nokia5110液晶屏作为显示,液晶屏与小脚丫FPGA开发板之间的连接关系如图2所示,对应的管脚如下。
液晶屏 | RST | CE | DC | DIN | CLK | VCC | BL | GND |
FPGA | N3 | P2 | N2 | M1 | K1 | 3.3V | J1 | GND |
图2、液晶屏硬件连接
3、工作原理
- 2)使用三个8bit的BCD码表示时钟、分钟、秒钟的值,其中高4bit表示值的十位,低4bit表示值的个位;
- 3)正常运行时,每来一个sec_clk秒钟个位加1,个位满10清零同时十位加1,当秒钟满60清零同时分钟个位加1,依次进行...直到23:59:59的下一刻全部清零;
- 4)按键K1,模式调节,设计共分4中模式(运行模式、时针调节、分针调节、秒针调节),按动K1依次切换模式;
- 5)按键K2,时间调节,当数字时钟在时针调节、分针调节或秒针调节模式时,按动K2调节对应时间位;
- 6)硬件连接图中,程序复位控制线控制程序复位,断开重连设计复位。
4、代码设计
为了实现所需要的功能,我们将整个设计划分不同的模块,如图3所示。
图3、数字时钟程序设计框架
4.1 clock_ctl模块
Clock_ctl模块主要实现数字时钟的模式控制,本设计共有4种模式(normal、hour_set、minute_set、second_set)当K1按键按下(set_en为高电平)时依次跳转,如图4所示。
图4、数字时钟状态控制设计
4.2 clock_cnt模块
Clock_cnt模块主要实现时钟逻辑模块:
- 2)当处于second_set模式时,每次K2按键按下(up_en为高电平)时,秒钟个位加1,个位满10清零同时十位加1,当秒钟满60清零,分钟和时钟保持不变,如下:
5、系统运行
图5、系统运行
视频地址:
https://v.youku.com/v_show/id_XMTM5MDE4OTE2MA==.html?from=s1.8-1-1.2
6、资源报告
资源 | 数量 | 比例 | 说明 |
LUTs | 718 | 56% | |
寄存器 | 179 | 11% | |
存储器 | 0 | 0% | |
IO管脚 | 12 | ||
时钟频率 | 25MHz |
7、知识点
- Ø时钟计数分频
- Ø按键消抖处理
- Ø串行/并行转换
- ØNokia5110液晶屏驱动
8、参考文档
Lattice MachXO2数据手册Nokia5110液晶屏资料
9、相关文件
文件名称 | 功能 |
Digital_clock | 顶层模块,将所有功能模块接口连接起来 |
Clock_div | 实现分频,产生按键、显示和秒时钟 |
key_board | 实现按键消抖 |
clock_ctl | 实现数字时钟的模式控制 |
clock_cnt | 时钟逻辑,产生时分秒的数值 |
LCD_nokia5110 | 驱动Nokia5110液晶屏的显示 |