簡單設計了一個單片機驅動數碼管的電路,該設計中只使用了4位數碼管,占用了單片機3個IO口,如果驅動芯片全用滿可以驅動8位數碼管。僅供初學者分享學習。
1. 數碼管顯示設計 本設計使用了一個4位的數碼管,為共陽型,為了節省單片機的IO口,使用了兩片74HC595作為數碼管的驅動芯片,共占用3個IO口。74HC595部分電路圖如下:
134507gwg2zynx7qnnz32k.jpg (53.12 KB, 下載次數: 313)
下載附件
2016-5-12 05:08 上傳
與單片機相連接的三個腳分別為:HC_DAT,HC_RCK,HC_CLK。兩片595采用級聯方式,即U2的第9腳接到U3的第14引腳。 2. 74HC595簡介 74HC595是8位的移位寄存器,串入并出,并具有鎖存功能,被廣泛的用于數碼管、點陣的驅動電路中。其管腳介紹如下: 15:數據輸出A-接數碼管數據A段; 1:數據輸出B-接數碼管數據B段; 2:數據輸出C-接數碼管數據C段; 3:數據輸出D-接數碼管數據D段; 4:數據輸出E-接數碼管數據E段; 5:數據輸出F-接數碼管數據F段; 6:數據輸出G-接數碼管數據G段; 7:數據輸出H-接數碼管數據H段; 16:電源正腳-接電源正; 8:電源負腳-接電源負; 14:數據輸入腳-接單片機管腳; 12:數據鎖存時鐘-接單片機管腳; 11:數據輸入時鐘-接單片機管腳; 13:使能輸出腳-低電平有效,接低電平; 10:數據清零-不清零,接高電平; 9:數據級聯輸出-接下一片595的數據輸入腳; 74HC595的真值表如下:
知道了74HC595的引腳定義和真值表,那該如何編程呢?下面重點來了,通過時序圖來編程。看重點!!! 3. 74HC595時序圖 我是重點!我是重點!我是重點!
通過時序可以看出: SCK是上升沿的時候要把數據寫入; RCK是上升沿的時候數據才能鎖存顯示; 有數據操作的過程中RESET必須是高電平; EN必須是低電平,595才能工作;
知道了以上4點就可以寫程序了。其中3、4條是硬件連接上的事情(也可以用單片機的IO口來連接,這樣的話可以隨時控制74HC595的工作與否情況)。寫程序主要靠1、2條。下面具體操作。 4. 程序實例 看下面一段程序:
第39行:HC595_CLK(0)的原型如下:
HC595_CLK(0)是讓CLK處于低電平,即上升沿還沒有來到; HC595_DAT(1)就是要把寫入的數據準備好; temp<<1是將數據移位,即一個字節分八次寫入; HC595_CLK(1)是讓CLK處于高電平,即上升沿來了; 以上幾句解釋一下就是: 在CLK時鐘上升沿來臨之前把要寫入的數據準備好,等上升沿來了就把準備好的數據寫入。這就是對時序圖的解釋。 記住,這僅僅是把數據寫入到了74HC595中,但是還沒有讓74HC595鎖存,即沒有讓數據顯示出來,如果讓數據顯示的話,必須要給RCK一個上升沿(即時序圖中的第2條),操作如下:
單片機執行完這個程序后,數據才會在數碼管上顯示出來。
這一節內容的難度較大,主要是因為時序圖這個東西是很模糊的一個內容,大家可以慢慢理解體會。
|