7. I/O并行口直接驅(qū)動(dòng)LED顯示
如圖13所示,利用AT89S51單片機(jī)的P0端口的P0.0-P0.7連接到一個(gè)共陰數(shù)碼管的a-h(huán)的筆段上,數(shù)碼管的公共端接地。在數(shù)碼管上循環(huán)顯示0-9數(shù)字,時(shí)間間隔0.2秒。
2.
把“單片機(jī)系統(tǒng)”區(qū)域中的P0.0/AD0-P0.7/AD7端口用8芯排線連接到“四路靜態(tài)數(shù)碼顯示模塊”區(qū)域中的任一個(gè)數(shù)碼管的a-h(huán)端口上;要求:P0.0/AD0與a相連,P0.1/AD1與b相連,P0.2/AD2與c相連,……,P0.7/AD7與h相連。
4.
(1.LED數(shù)碼顯示原理
七段LED顯示器內(nèi)部由七個(gè)條形發(fā)光二極管和一個(gè)小圓點(diǎn)發(fā)光二極管組成,根據(jù)各管的極管的接線形式,可分成共陰極型和共陽極型。
LED數(shù)碼管的g~a七個(gè)發(fā)光二極管因加正電壓而發(fā)亮,因加零電壓而不以發(fā)亮,不同亮暗的組合就能形成不同的字形,這種組合稱之為字形碼,下面給出共陰極的字形碼見表2
“0”
3FH
“8”
7FH
“1”
06H
“9”
6FH
“2”
5BH
“A”
77H
“3”
4FH
“b”
7CH
“4”
66H
“C”
39H
“5”
6DH
“d”
5EH
“6”
7DH
“E”
79H
“7”
07H
“F”
71H
(2.由于顯示的數(shù)字0-9的字形碼沒有規(guī)律可循,只能采用查表的方式來完成我們所需的要求了。這樣我們按著數(shù)字0-9的順序,把每個(gè)數(shù)字的筆段代碼按順序排好!建立的表格如下所示:TABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
ORG0
START:MOVR1,#00H
NEXT:MOVA,R1
MOVDPTR,#TABLE
MOVCA,@A+DPTR
MOVP0,A
LCALLDELAY
INCR1
CJNER1,#10,NEXT
LJMPSTART
DELAY:MOVR5,#20
D2:MOVR6,#20
D1:MOVR7,#248
DJNZR7,$
DJNZR6,D1
DJNZR5,D2
RET
TABLE:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END
7.
#include
unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f};
unsignedchardispcount;
voiddelay02s(void)
{
unsignedchari,j,k;
for(i=20;i>0;i--)
for(j=20;j>0;j--)
for(k=248;k>0;k--);
}
voidmain(void)
{
while(1)
{
for(dispcount=0;dispcount<10;dispcount++)
{
P0=table[dispcount];
delay02s();
}
}
}
評(píng)論