数字显示中要求通过8051单片机驱动一个7段LED数码管。使7段LED数码管在第1秒钟显示“0”,第2秒钟显示 1

数字显示中要求通过8051单片机驱动一个7段LED数码管。使7段LED数码管在第1秒钟显示“0”,第2秒钟显示“1”,第三秒钟显示“2”,…………第10秒显示“0”,周而复始

第1个回答  2013-01-04
/*
51单片机P1口通过电阻接1位7段共阳数码管,数码管COM接VCC
FOSC = 12MHz
*/
org 00h
jmp main
org 000bh
t0_isr:
mov tl0,#(65536 - 50000) mod 256
mov th0,#(65536 - 50000) / 256
inc r7
cjne r7,#20,t0_isr2
mov r7,#00h
inc r6
cjne r6,#10,t0_isr1
mov r6,#00h
t0_isr1:
mov a,r6
movc a,@a+dptr
mov p1,a
t0_isr2:
reti
LED7Code:
DB 0C0H ; 0
DB 0F9H ; 1
DB 0A4H ; 2
DB 0B0H ; 3
DB 099H ; 4
DB 092H ; 5
DB 082H ; 6
DB 0F8H ; 7
DB 080H ; 8
DB 090H ; 9
main:
mov r7,#00h
mov r6,#00h
mov dptr,#LED7Code
mov a,r6
movc a,@a+dptr
mov p1,a
mov tmod,#01h
mov tl0,#(65536 - 50000) mod 256
mov th0,#(65536 - 50000) / 256
setb tr0
mov ie,#82h
jmp $
end追问

真的不好意思,能准确点吗?像那个大写那种,太感谢了,明天就要用了……

追答

准确点?什么意思啊?

追问

我可以加你qq吗,详细的聊一下

追答

私信给你了,匿名的?

追问

哥们,我的qq251003957,加我吧

第2个回答  2013-01-04
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar DSY_CODE[]=
{
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
};
void DelayMS(uint ms)
{
uchar t;
while(ms--)
{
for(t=0;t<120;t++);
}
}
void main()
{
P0 = 0x3f;
i = 0;
Second_Counts = 0;
TMOD = 0x01;
TH0 = (65535-50000)/256;
TL0 = (65535-50000)%256;
while(1);
}
void DSY_Refresh() interrupt 1
{
TH0 = (65535-50000)/256;
TL0 = (65535-50000)%256;
if(++i==20)
{
i = 0;
P0 = DSY_CODE[Second_Counts/10-1];
}
}追问

对不起,我们要求要用汇编语言程序设计

追答

ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0IT
MAIN:
MOV SP,#60H
MOV R3,#0
MOV R4,#0
MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
SETB EA
SETB ET0
SETB TR0
SJMP $

T0IT:
MOV TH0,#3CH
MOV TL0,#0B0H
INC R3
CJNE R3,#20,RT
MOV R3,#0
INC R4
CJNE R4,#0AH,DISP
MOV R4,#0
SJMP RT
DISP:
MOV A,R4
MOV DPTR,#TAB
DEC A
CJNE A,#0FFH,DISP1
MOV A,#1
DISP1:
MOVC A,@A+DPTR
MOV P0,A
RT: RETI;
TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END
我也贴一个,这个用共阴极数码管,但最后第10秒显示9,第0秒怎么办?

本回答被提问者采纳
相似回答