單片機(jī)學(xué)習(xí)筆記(三)——數(shù)碼管顯示
LED顯示器的接法:
(1)共陰極
(2)共陽極
共陰極 共陽極
七段數(shù)碼管加上一個小數(shù)點,共計 8 段。因此為LED顯示器提供的編碼正好是一個字節(jié)。TX 實驗板用共陰 LED顯示器,根據(jù)電路連接圖顯示 16 進(jìn)制數(shù)的編碼已列在下表。
0x3f
0x06
0x5b
0x4f
0x66
0x6d
0123450x7d
0x07
0x7f
0x6f
0x77
0x7c
6789ab0x39
0x5e
0x79
0x71
0x00
cdef無顯示
LED數(shù)碼顯示方式及電路:
(1)靜態(tài)顯示方式
特點:每個數(shù)碼管的段選必須接一個 8 位數(shù)據(jù)線來保持顯示的字形碼。當(dāng)送入一次字形碼后,顯示字形可一直保持,直到送入新字形碼為止。
優(yōu)點:占用CPU時間少,顯示便于監(jiān)測和控制。
缺點:硬件電路比較復(fù)雜,成本較高。
(2)動態(tài)顯示方式
動態(tài)顯示的特點是將所有位數(shù)碼管的段選線并聯(lián)在一起,由位選線控制是哪一位數(shù)碼管有效。選亮數(shù)碼管采用動態(tài)掃描顯示(即輪流向各位數(shù)碼管送出字形碼和相應(yīng)的位選,利用發(fā)光管的余輝和人眼視覺暫留作用,使人的感覺好像各位數(shù)碼管同時都在顯示)。動態(tài)顯示的亮度比靜態(tài)顯示要差一些,所以在選擇限流電阻時應(yīng)略小于靜態(tài)顯示電路中的。
LED數(shù)碼顯示程序(C 語言):
#include
#define uint unsigned int
#define uchar unsigned char
sbit dula = P2 ^ 6;//段選
sbit wela = P2 ^ 7;//位選
uchar num;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uint z);//延時
int main()
{
wela = 1;//11101010 打開鎖存器
P0 = 0xea; //選擇LED數(shù)碼管
wela = 0; //鎖住LED數(shù)碼管
while(1)
{
for(num = 0; num < 16; num++)
{
dula = 1; //打開鎖存器
P0 = table[num]; //數(shù)值編碼
dula = 0; //鎖住LED顯示
Delay(1000); //延時1s
}
}
return 0;
}
void Delay(unsigned int xx) //輸入 xx :ms
{
while(xx--)
{
Delay1ms();
}
}
void Delay1ms()//@11.0592MHz 1ms
{
unsigned char i, j;
_nop_();
_nop_();
_nop_();
i = 11;
j = 190;
do
{
while (--j);
} while (--i);
}