1. 實驗任務
如圖所示,利用AT89S51單片機的P0端口的P0.0-P0.7連接到一個共陰數碼管的a-h的筆段上,數碼管的公共端接地。在數碼管上循環顯示0-9數字,時間間隔0.2秒。
2. 電路原理圖
圖4.7.1
3. 系統板上硬件連線
把“單片機系統”區域中的P0.0/AD0-P0.7/AD7端口用8芯排線連接到“四路靜態數碼顯示模塊”區域中的任一個數碼管的a-h端口上;要求:P0.0/AD0與a相連,P0.1/AD1與b相連,P0.2/AD2與c相連,……,P0.7/AD7與h相連。
4. 程序設計內容
(1. LED數碼顯示原理
七段LED顯示器內部由七個條形發光二極管和一個小圓點發光二極管組成,根據各管的極管的接線形式,可分成共陰極型和共陽極型。
LED數碼管的g~a七個發光二極管因加正電壓而發亮,因加零電壓而不以發亮,不同亮暗的組合就能形成不同的字形,這種組合稱之為字形碼,下面給出共陰極的字形碼見表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. 由于顯示的數字0-9的字形碼沒有規律可循,只能采用查表的方式來完成我們所需的要求了。這樣我們按著數字0-9的順序,把每個數字的筆段代碼按順序排好!建立的表格如下所示:TABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
5.程序框圖
圖4.7.2
6.匯編源程序
ORG 0
START: MOV R1,#00H
NEXT: MOV A,R1
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
INC R1
CJNE R1,#10,NEXT
LJMP START
DELAY: MOV R5,#20
D2: MOV R6,#20
D1: MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
DJNZ R5,D2
RET
TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END
7. C語言源程序
#include 《AT89X51.H》
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char dispcount;
void delay02s(void)
{
unsigned char i,j,k;
for(i=20;i》0;i--)
for(j=20;j》0;j--)
for(k=248;k》0;k--);
}
void main(void)
{
while(1)
{
for(dispcount=0;dispcount《10;dispcount++)
{
P0=table[dispcount];
delay02s();
}
}
}
-
led
+關注
關注
242文章
23277瀏覽量
660895 -
單片機
+關注
關注
6037文章
44558瀏覽量
635355 -
數碼管
+關注
關注
32文章
1882瀏覽量
91125
發布評論請先 登錄
相關推薦
評論