|
|
動(dòng)態(tài)數(shù)碼管顯示不能像你這樣寫,定時(shí)時(shí)間太長了,會(huì)出錯(cuò)。給你改了。
- #include <reg51.h>
- #include <intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit WE=P2^0;
- sbit DU=P2^1;
- sbit S1=P3^4;
- sbit S2=P3^5;
- uchar i,j;
- uint num,Q,W,E,R;
- uchar code duan[]={
- 0x3F, //"0"
- 0x06, //"1"
- 0x5B, //"2"
- 0x4F, //"3"
- 0x66, //"4"
- 0x6D, //"5"
- 0x7D, //"6"
- 0x07, //"7"
- 0x7F, //"8"
- 0x6F, //"9"
- 0x77, //"A"
- 0x7C, //"B"
- 0x39, //"C"
- 0x5E, //"D"
- 0x79, //"E"
- 0x71, //"F"
- 0x76, //"H"
- };
- /*
- void fangdou()
- {
- uint a;
- for(a=0;a<2400;a++);
- }
- void delay(uint z)
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=120;y>0;y--);
- }*/
- void display()
- {
- P0=0x00;//消隱
- DU=1;
- DU=0;
- if(j==0)
- {
- P0=0xfe;
- WE=1;
- WE=0;
- P0=duan[i/1000%10];
- DU=1;
- DU=0;
- }
- if(j==1)
- {
- P0=0xfd;
- WE=1;
- WE=0;
- P0=duan[i/100%10];
- DU=1;
- DU=0;
- }
- if(j==2)
- {
- P0=0xfb;
- WE=1;
- WE=0;
- P0=duan[i/10%10];
- DU=1;
- DU=0;
- }
- if(j==3)
- {
- P0=0xf7;
- WE=1;
- WE=0;
- P0=duan[i%10];
- DU=1;
- DU=0;
- }
- j++;
- if(j==4)
- j=0;
- }
- void timer0_init()
- {
- TMOD=0x01;
- TL0=(65536-2000)%256;
- TH0=(65536-2000)/256;
- TF0=0;
- TR0=1;
- }
- void main()
- {
- timer0_init();
- while(1)
- {
- if(TF0==1)
- {
- TF0=0;
- TL0=(65536-2000)%256;
- TH0=(65536-2000)/256;
- num++;
- if(num>=500)
- {
- num=0;
- i++;
- if(i>9999)
- i=0;
- }
- display();
- }
- }
- }
-
復(fù)制代碼 |
|