開發(fā)實(shí)例
下面講解一下四位數(shù)碼管的動態(tài)驅(qū)動顯示,首先看一下接線引腳圖如下。
接下來用51單片機(jī)設(shè)計目標(biāo):通過編寫c語言程序經(jīng)編譯連接后下載到單片機(jī)中,使四位數(shù)碼管依次顯示1,2,3,4
#define uchar usigned char
#define uint usigned int
//位選控制端口
sbit p20=P2^0;
sbit p21=P2^1;
sbit p22=P2^2;
sbit p23=P2^3;
//數(shù)碼管段選編碼數(shù)組,分別為顯示:1,2,3,4的編碼
uchar code BianMa[] ={0x7,0xb,0xd,0xe};
//延時1ms函數(shù)(用于數(shù)碼管動態(tài)刷新)
void Delay1ms(int time);
void main()
{
while(1)
{
p20 =0; //共陰極數(shù)碼管低位選有效,表示已選中第一位數(shù)碼管
P0 =BianMa[0];//通過I/O口P0向數(shù)碼管送段選編碼
Delay1ms(500);//第一位數(shù)碼管顯示0.5秒,然后換到第二位,依次下去,由于視覺停留和數(shù)碼管余輝,所以感覺四位都在顯示
p20 =1;
p21 =0; //第二位亮
P0 =BianMa[1];
Delay1ms(500);
p21 =1;
p22 =0; //第三位亮
P0 =BianMa[2];
Delay1ms(500);
p22 =1;
p23 =0; //第四位亮
P0 =BianMa[3];
Delay1ms(500);
p23 =1;
}
//延時函數(shù)體
void Delay1ms(int time
{
int i,j;
for(i =time;i》0;i--)
for(j =110;j》0;j--)
}
關(guān)于亮度和鎖存器
一般來說靜態(tài)驅(qū)動的亮度要高于動態(tài)驅(qū)動的亮度,但不影響使用。實(shí)際使用中為了達(dá)到更好的效果,會配合鎖存器如74HC573一起使用,可以記憶先前狀態(tài)數(shù)據(jù)直到有新數(shù)據(jù)覆蓋。對做51單片機(jī)應(yīng)用開發(fā)來說,相對LCD液晶,液晶模塊編程更方便,樣式更多樣,但是其缺點(diǎn)亮度不夠。這也恰恰是數(shù)碼管的優(yōu)勢,如果做簡單的計數(shù)顯示,數(shù)碼管是最好選擇。
使用中注意事項
數(shù)碼管的基本組成是發(fā)光二極管,因此其可以通過的電流只有幾mA,接5V直流電源做測試的時候一定要串上一個幾十K大小的電阻。否則,很容易燒掉,此外用萬用表的測電阻檔就可將其點(diǎn)亮,足以說明其電流之小。