1、設計要求
基于小腳丫FPGA開發(fā)板和Nokia5110液晶屏實現(xiàn)數(shù)字時鐘的設計,要求:
- 1)采用FPGA+按鍵+液晶屏實現(xiàn)數(shù)字時鐘功能;
- 2)時間顯示格式:XX:XX:XX (時:分:秒),采用24小時制;
- 3)增加按鍵控制,時分秒三位分別可調(diào),處于調(diào)節(jié)狀態(tài)的位閃爍區(qū)別;
2、硬件連接
FPGA的系統(tǒng)時鐘來自于小腳丫FPGA開發(fā)板配置的24MHz時鐘晶振,連接FPGA的C1引腳。
本設計用到兩個按鍵K1和K2,硬件設計如圖1所示,兩個按鍵分別連接到FPGA的A2和B7引腳。
圖1、按鍵硬件設計
設計中需要驅(qū)動Nokia5110液晶屏作為顯示,液晶屏與小腳丫FPGA開發(fā)板之間的連接關系如圖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,模式調(diào)節(jié),設計共分4中模式(運行模式、時針調(diào)節(jié)、分針調(diào)節(jié)、秒針調(diào)節(jié)),按動K1依次切換模式;
- 5)按鍵K2,時間調(diào)節(jié),當數(shù)字時鐘在時針調(diào)節(jié)、分針調(diào)節(jié)或秒針調(diào)節(jié)模式時,按動K2調(diào)節(jié)對應時間位;
- 6)硬件連接圖中,程序復位控制線控制程序復位,斷開重連設計復位。
4、代碼設計
為了實現(xiàn)所需要的功能,我們將整個設計劃分不同的模塊,如圖3所示。
圖3、數(shù)字時鐘程序設計框架
4.1 clock_ctl模塊
Clock_ctl模塊主要實現(xiàn)數(shù)字時鐘的模式控制,本設計共有4種模式(normal、hour_set、minute_set、second_set)當K1按鍵按下(set_en為高電平)時依次跳轉(zhuǎn),如圖4所示。
圖4、數(shù)字時鐘狀態(tài)控制設計
4.2 clock_cnt模塊
Clock_cnt模塊主要實現(xiàn)時鐘邏輯模塊:
- 2)當處于second_set模式時,每次K2按鍵按下(up_en為高電平)時,秒鐘個位加1,個位滿10清零同時十位加1,當秒鐘滿60清零,分鐘和時鐘保持不變,如下:
5、系統(tǒng)運行
圖5、系統(tǒng)運行
視頻地址:
https://v.youku.com/v_show/id_XMTM5MDE4OTE2MA==.html?from=s1.8-1-1.2
6、資源報告
資源 | 數(shù)量 | 比例 | 說明 |
LUTs | 718 | 56% | |
寄存器 | 179 | 11% | |
存儲器 | 0 | 0% | |
IO管腳 | 12 | ||
時鐘頻率 | 25MHz |
7、知識點
- ?時鐘計數(shù)分頻
- ?按鍵消抖處理
- ?串行/并行轉(zhuǎn)換
- ?Nokia5110液晶屏驅(qū)動
8、參考文檔
Lattice MachXO2數(shù)據(jù)手冊Nokia5110液晶屏資料
9、相關文件
文件名稱 | 功能 |
Digital_clock | 頂層模塊,將所有功能模塊接口連接起來 |
Clock_div | 實現(xiàn)分頻,產(chǎn)生按鍵、顯示和秒時鐘 |
key_board | 實現(xiàn)按鍵消抖 |
clock_ctl | 實現(xiàn)數(shù)字時鐘的模式控制 |
clock_cnt | 時鐘邏輯,產(chǎn)生時分秒的數(shù)值 |
LCD_nokia5110 | 驅(qū)動Nokia5110液晶屏的顯示 |