求单片机实验七段数码管显示实验程序
发布网友
发布时间:2022-04-19 18:55
我来回答
共2个回答
热心网友
时间:2023-07-05 20:11
/* ch03-3-4.c - 七段LED数码管实验程序 */
//==声明区=================================================
#include<reg51.h> //定义8051寄存器的头文件,P2-17~19
#define SEG P0 //定义七段LED数码管接至Port 0
/*声明七段LED数码管驱动信号数组(共阳)*/
char code TAB[10]={0xc0,0xf9,0xa4,0xb0,0x99, //数字0-4
0x92,0x83,0xf8,0x80,0x98}; //数字5-9
void delay(int); //声明延迟函数
//==主程序==========================================
main() //主程序开始
{ unsigned char i; //声明无符号变量i
while(1) //无穷循环,程序一直跑
for(i=0;i<10;i++) //显示0-9,共10次
{ SEG=TAB[i]; //显示数字
delay(500); //延迟500×1m=0.5秒
} //for循环结束
} //主程序结束
//==子程序==========================================
/* 延迟函数,延迟约x×1ms */
void delay (int x) //延迟函数开始
{ int i,j; //声明整形变量i,j
for (i=0;i<x;i++) //计数x次,延迟x×1ms
for (j=0;j<160;j++); //计数120次,延迟1ms
} //延迟函数结束
热心网友
时间:2023-07-05 20:11
ORG 0000H
SJMP START
ORG 000BH
SJMP T0INT
ORG 0030H
START: MOV SP,#60H
MOV TMOD,#01H
MOV TL0,#0B0H
MOV TH0,#3CH
SETB ET0
SETB EA
SETB TR0
MOV R1,#20
MOV DPTR,#TABFLA
MOV R4,#37H
LOOP1: MOV A,R4
MOV R0,A
MOV R2,#01H
LOOP: MOV A,R2
MOV P2,A
MOV A,@R0
MOVC A,@A+DPTR
MOV P1,A
MOV R3,#0
DJNZ R3,$
MOV P1,#0FFH
MOV A,R2
RL A
MOV R2,A
INC R0
CJNE A,#01,LOOP
CJNE R1,#0,LOOP1
MOV R1,#20
DEC R4
CJNE R4,#2FH,LOOP1
SJMP START
TABFLA: DB 0C0H,0F9H,0A4H,0B0H,99H
DB 92H,82H,0F8H,80H,90H,88H
DB 83H,0C6H,0A1H,86H,8EH
T0INT: MOV TH0,#3CH
MOV TL0,#0B0H
DEC R1
RETI
END