為照顧初學者,本文采用兩種編程語言編寫,電路很簡單圖就不用畫了,簡單的介紹一下:利用AT89S51單片機的P0端口的P0.0-P0.7連接到一個共陰數碼管的a-h的筆段上,數碼管的公共端接地。在數碼管上循環顯示0-9數字,時間間隔0.2秒。
匯編語言源程序:
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
C語言源程序編寫的IO并行口直接驅動LED顯示代碼如下,感謝大家對www.zg4o1577.cn的支持有問題請指出:
#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();
}
}
}