#include<reg51.h>
#inclede<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar tape[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f} ;
sbit duan=P2^6;
sbit wei=P2^7;
uchar a,qian,bai,shi,ge;
uint num;
void display();
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
main()
{ TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
num=0;
while(1)
{ if(a==20)
{ a=0;
num++;
if(num==9999)
num=0;
qian=num/1000;
bai=num%1000/100;
shi=num%100/10;
ge=num%10;
display();
}
}
}
void display()
{ P0=0xf7;
wei=1;
wei=0;
duan=1;
P0=tape[ge];
duan=0;
delay(6);
P0=0xfb;
wei=1;
wei=0;
duan=1;
P0=tape[shi];
duan=0;
delay(6);
P0=0xfd;
wei=1;
wei=0;
duan=1;
P0=tape[bai];
duan=0;
delay(6);
P0=0xfe;
wei=1;
wei=0;
duan=1;
P0=tape[qian];
duan=0;
delay(6);
}
void time0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
}
為什么數(shù)碼管上只有千位是保持不動(dòng)。其他位都是閃爍的啊,怎樣才能保證其他位也不閃爍啊
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar tape[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f} ;
sbit duan=P2^6;
sbit wei=P2^7;
uchar a,qian,bai,shi,ge;
uint num;
void display(uchar qian,uchar bai,uchar shi,uchar ge);
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
main()
{ TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
num=0;
while(1)
{ if(a==20)
{ a=0;
num++;
if(num==9999)
num=0;
qian=num/1000;
bai=num%1000/100;
shi=num%100/10;
ge=num%10;
}
display(qian,bai,shi,ge);
}
}
void display(uchar qian,uchar bai,uchar shi,uchar ge)
{ P0=0xf7;
wei=1;
wei=0;
duan=1;
P0=tape[ge];
duan=0;
delay(6);
P0=0xfb;
wei=1;
wei=0;
duan=1;
P0=tape[shi];
duan=0;
delay(6);
P0=0xfd;
wei=1;
wei=0;
duan=1;
P0=tape[bai];
duan=0;
delay(6);
P0=0xfe;
wei=1;
wei=0;
duan=1;
P0=tape[qian];
duan=0;
delay(6);
}
void time0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
}
因板子型號(hào)不同,沒有進(jìn)行具體測(cè)試,改程序的問(wèn)題主要是display();函數(shù)的位置不對(duì),已經(jīng)幫你調(diào)整好了,你試試應(yīng)該沒問(wèn)題了
ORG 0000H
LJMP MIAN
ORG 000BH
LJMP INT_T0
ORG 0030H
MIAN: MOV DPTR,#TABLE
TABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
MOV R1,#200
MOV R2,#20
MOV R3,#0
MOV R4,#0
MOV R5,#0
MOV R6,#0
MOV TMOD,#02H
MOV TH0,#06H
MOV TL0,#00H
SETB EA
SETB ET0
SETB TR0
LOOP:
MOV P2,#07H
MOV A,R3
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY10ms
MOV P2,#06H
MOV A,R4
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY10ms
MOV P2,#05H
MOV A,R5
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY10ms
MOV P2,#04H
MOV A,R6
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY10ms
LJMP LOOP
INT_T0: DJNZ R1,QUIT
MOV R1,#200
DJNZ R2,QUIT
MOV R2,#20
INC R3
CJNE R3,#10,QUIT
MOV R3,#0
INC R4
CJNE R4,#10,QUIT
MOV R4,#0
INC R5
CJNE R5,#10,QUIT
MOV R5,#0
INC R6
CJNE R6,#10,QUIT
MOV R6,#0
QUIT:RETI
DELAY10ms:
MOV 40H,#10
LOOP1: MOV 41H,#200
DJNZ 41,$
DJNZ 40H,LOOP1
RET
END
| 歡迎光臨 (http://www.raoushi.com/bbs/) | Powered by Discuz! X3.1 |