#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ù)碼管上只有千位是保持不動。其他位都是閃爍的啊,怎樣才能保證其他位也不閃爍啊
#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++; }
因板子型號不同,沒有進行具體測試,改程序的問題主要是display();函數(shù)的位置不對,已經(jīng)幫你調(diào)整好了,你試試應(yīng)該沒問題了
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://m.zg4o1577.cn/bbs/) | Powered by Discuz! X3.1 |