基於ALTERA實現的鬧鐘工程

2021-07-31 20:08:20 字數 2969 閱讀 1901

本模板:

明德揚首創全新fpga設計技巧--至簡設計法,教你如何一步一步去完成乙個複雜電路的設計,裡面很多有實用技巧,熟練運用這些技巧,有助於你寫出非常優秀的

fpga設計

**。非常簡潔易讀,歡迎比較。

一、功能描述

本工程包括矩陣鍵盤和數碼管顯示模組,共同實現乙個帶有鬧鐘功能、可以設定時間的數字時鐘。具體功能如下:

1.數碼管可以顯示時十位、時個位、分十位、分個位、秒十位、秒個位。

2.上電後,數碼管顯示000000,並開始每秒計時。

3.按下按鍵0進入時間設定狀態。再按下按鍵0退出時間設定狀態,繼續計時。

4.在時間設定狀態,通過按鍵1來選擇設定的時間位,在0~5之間迴圈選擇。

5.在時間設定狀態,通過按鍵2來對當前選擇的時間位進行加1。

6.在計時狀態下,按下按鍵14,進入鬧鐘時間點設定狀態。再按下按健15,退出鬧鐘設定狀態。

7.在鬧鐘設定狀態,按下按鍵13選擇設定的時間位,此時可以按下所需要的按鍵序號設定對應鬧鐘時間。

8.當前時間與所設定的時間點匹配上了,蜂鳴器響應5秒。

二、平台效果圖

三、實現過程

首先根據所需要的功能,列出工程頂層的輸入輸出訊號列表。

訊號名i/o 位寬

說明clk i

1系統工作時鐘50m

rst_n i

1系統復位訊號,低電平有效

key_col i

4矩陣鍵盤按鍵列輸入

key_row o

4按鍵輸出行訊號

seg_ment o

8數碼管段選訊號

seg_sel o

6數碼管位選訊號

bell o

1蜂鳴器控制訊號

我們把工程分成四個模組,分別是數碼管顯示模組,矩陣鍵盤掃瞄模組,時鐘計數模組,鬧鐘設定模組。

1.數碼管顯示模組

本模組實現了將時鐘資料或者鬧鐘資料顯示到七段解碼器上的功能。

七段解碼器引腳圖:

根據七段解碼器的型號共陰極或者共陽極,給予訊號0或1點亮對應的led燈,乙個八段數碼管稱為一位,多個數碼管並列在一起可構成多位數碼管,它們的段選(a,b,c,d,e,f,g,dp)連在一起,而各自的公共端稱為位選線。顯示時,都從段選線送入字元編碼,而選中哪個位選線,那個數碼管便會被點亮。數碼管的8段,對應乙個位元組的8位,a對應最低位,dp對應最高位。所以如果想讓數碼管顯示數字0,那麼共陰數碼管的字元編碼為00111111,即;共陽數碼管的字元編碼為11000000。

在輪流顯示過程中,每位數碼管的點亮時間為1~

2ms,由於人的視覺暫留現象及發光二極體的餘輝效應,儘管實際上各位數碼管並非同時點亮,但只要掃瞄的速度足夠快,給人的印象就是一組穩定的顯示資料,不會有閃爍感,動態顯示的效果和靜態顯示是一樣的,能夠節省大量的

i/o埠,而且功耗更低。

本模組採用

6個七段解碼器顯示鬧鐘小時分鐘秒位,使用乙個計數器不停計數

0-5,每個數字代表乙個七段解碼器,在對應的七段解碼器給予對應的字元編碼,以此達到掃瞄數碼管顯示資料的功能。

訊號列表如下:

訊號名

i/o 位寬

說明 rst_n i

1系統復位訊號,低電平有效

clk i

1系統工作時鐘

50mdin i

32每個數碼管的時間資料

seg_sel o

8數碼管位選

seg_ment o

8數碼管段選

2.矩陣鍵盤掃瞄模組

本次案例萬年曆使用的是

4x4矩陣鍵盤,本模組就是實現了矩陣鍵盤的掃瞄並使用以及按鍵消抖功能。通過行掃瞄法得到按下的鍵的位置資訊。

訊號列表如下:

訊號名

i/o 位寬

說明 clk i

1 系統工作時鐘50m

rst_n i

1系統復位訊號,低電平有效

key_col i

4矩陣鍵盤列訊號

key_row o

4矩陣鍵盤行訊號

key_num o

4按鍵位置訊號

key_vld o

1按鍵有效訊號

3.時鐘計數模組

本模組實現了時鐘計數功能,按鍵

1按下則進入時鐘數字調節介面,此時利用按鍵

2來位選,按鍵

3來調節數字,按一次按鍵3則加

1,再次按下按鍵

1則恢復計數。

訊號列表如下:

訊號名

i/o 位寬

說明 clk i

1 系統工作時鐘50m

rst_n i

1系統復位訊號,低電平有效

key_num i

4輸入按鍵值

key_vld i

1按鍵輸入有效指示

dout o

24時鐘資料輸出

dout_vld o

24時鐘資料輸出有效

4.鬧鐘設定模組

本模組實現了設定鬧鐘時間功能,按下按鍵

14則進入鬧鐘時間設定介面,此時利用按鍵

13來位選,然後按下對應的按鍵則設定對應的數字,按下按鍵

15則退出鬧鐘設定介面,當時鐘資料和鬧鐘資料相同時,也就是到達設定時間時,蜂鳴器響5s。

訊號列表如下:

訊號名

i/o 位寬

說明 clk i

1 系統工作時鐘50m

rst_n i

1系統復位訊號,低電平有效

time_now i

24當前輸入時間

time_now_vld i

1當前輸入時間有效

bell o

1蜂鳴器控制訊號

set_group o

24設定鬧鐘時間點

setting o

1設定狀態標誌

C 鬧鐘的實現

說明下兩個類的主要功能吧,1.time類 主要負責記錄時間,包括當前時間還有響鈴時間 2.clock 負責鬧鐘響鈴,輸出時間,計時這些功能 include include using namespace std ifndef time h define time h class time endif...

AlarmManager類的應用(實現鬧鐘功能)

1 alarmmanager,顧名思義,就是 提醒 是android中常用的一種系統級別的提示服務,可以實現從指定時間開始,以乙個固定的間隔時間執行某項操作,所以常常與廣播 broadcast 連用,實現鬧鐘等提示功能 2 alarmmanager的常用方法有三個 1 set int type,lo...

基於FIS的前端工程化實現

2015.9.14 js css其他合併方式 1 nignx可以用combo拼接多個css js等,結構 2015.9.10 最近嘗試了下基於fis的前端工程化實現。等下再吐槽fis3 先列出要實現的功能 1 資源定位,自動匹配portal到cdn伺服器的路徑 2 資源合併,合併多個css js檔案...