仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.png (28.68 KB, 下載次數: 51)
下載附件
2020-6-11 15:33 上傳
單片機源程序如下:
- #include <reg51.h>
- #include<intrins.h>
- void UsartConfiguration();
- unsigned char p;
- #define uint unsigned int
- #define uchar unsigned char
- uchar code duan[]={0x76,0x79,0x38,0x38,0x3f};
- uchar wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
- unsigned char code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
- int num,second,minute,hour,a;
- int i,j,k,m,n,s,t;
- unsigned char PuZh[16];
- unsigned char src[16] = {0,1,2,3,4,5,6,7,8,9};
- sbit stop=P3^5;
- sbit clear=P3^6;
- sbit start=P3^7;
- sbit hourjia=P2^0;
- sbit hourjian=P2^1;
- sbit minutejia=P2^2;
- sbit minutejian=P2^3;
- sbit clock=P2^4;
- sbit ledground=P2^5;
- void mDelay(unsigned int mDelay)
- { unsigned int i;
- for(;mDelay>0;mDelay--)
- { for(i=0;i<124;i++)
- {;}
- }
- }
- void liushuideng()
- {
- int k=2;
- while(k--)
- { int i;
- ledground=0;
- P0=0x01;
- mDelay(500);
- for(i=0;i<7;i++)
- {
- P0=P0<<1;
- mDelay(100);
- }
- ledground=1;
- }
- }
- void shumaguan_init()
- {
- P0=0xff;
- P1=0x00;
- mDelay(900);
- P0=~0xff;
- P1=0x00;
- mDelay(900);
- }
- void shumaguan()
- {
- uchar n;
- int z=50;
- while(z--)
- {
- for(n=0;n<5;n++)
- {
- P1=wei[n];
- P0=duan[n];
- mDelay(1);
- }
- }
- }
- void UsartConfiguration()
- {
- SCON=0X50;
- TMOD=0X21;
- PCON=0X80;
- TH1=0XF3;
- TL1=0XF3;
- TR1=1;
- }
- void Interrupt_0() interrupt 1
- { TH0=-50000/256;
- TL0=-50000%256;
- num++;
- if(num%5==0)
- { if(minutejia==0)
- {minute++;mDelay(2);if(minute>59) minute=0;}
- if(minutejian==0)
- { minute--;mDelay(2);if(minute<0) minute=59;}
- if(hourjia==0)
- {hour++;mDelay(2);if(hour>23) hour=0;}
- if(hourjian==0)
- {hour--;mDelay(2);if(hour<0) hour=23;}
- }
- if(num==20)
- { num=0;
- second=second+1;
- if(second>59)
- {second=0;minute=minute+1;}
- if(minute>59)
- {minute=0;hour=hour+1;}
- if(hour>23)
- hour=0;
- }
- }
- void main()
- {
- clock=0;
- liushuideng();
- shumaguan_init();
- shumaguan();
- a=-50000;
- TH0=-50000/256;
- TL0=-50000%256;
- EA=1;
- ET0=1;
- TR0=1;
- hour=23;
- minute=58;
- second=40;
- UsartConfiguration();
- while(1)
- {
- for(p=0; p<16; p++)
- {
- SBUF = PuZh[p];
- while(!TI);
- TI=0;
- }
- mDelay(3);
- if(stop==0) { TR0=0;}
- if(clear==0)
- {
- hour=0;
- second=0;
- minute=0;
- TR0=0;
- }
- if(start==0)
- {TR0=1;}
- j=second%10;
- k=second/10;
- m=minute%10;
- n=minute/10;
- s=hour%10;
- t=hour/10;
- PuZh[0] = src[hour/10]+0x30;
- PuZh[1] = src[hour% 10]+0x30;
- PuZh[2] = 0x2D;
- PuZh[3] = src[minute/ 10]+0x30;
- PuZh[4] = src[minute% 10]+0x30;
- if(hour==0&&minute==0)
- clock=1;
- else
- clock=0;
- P1=0x7f;
- P0=tab[j];
- mDelay(1);
- P1=0xbf;
- P0=tab[k];
- mDelay(1);
- P1=0xdb;
- P0=0x40;
- mDelay(1);
- P1=0xef;
- P0=tab[m];
- mDelay(1);
- P1=0xf7;
- P0=tab[n];
- mDelay(1);
- P1=0xfd;
- P0=tab[s];
- mDelay(1);
- P1=0xfe;
- P0=tab[t];
- mDelay(1);
- }
- }
復制代碼
所有資料51hei提供下載(仿真+程序):
發送.zip
(48.46 KB, 下載次數: 16)
2020-6-10 09:59 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
串口.zip
(22.76 KB, 下載次數: 15)
2020-6-10 09:59 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|