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