寫的電子鐘程序,里面包含了程序文件,proteus仿真電路圖,程序語言上有些不足,僅供參考。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.gif (101 KB, 下載次數: 90)
下載附件
2022-4-9 18:07 上傳
單片機源程序如下:
- 程序如下:
- #include<reg51.h>
- unsigned char dat[6]={0};
- unsigned char duan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
- unsigned char wei[6]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
- unsigned char num=0;
- unsigned char s=0;
- unsigned char m=0;
- unsigned char h=0;
- sbit button1=P3^0;
- sbit button2=P3^2;
- sbit button3=P3^5;
- sbit button4=P3^7;
- sbit bee = P1^0;
- void delay()
- {
- unsigned int i;
- for(i=0;i<100;i++);
- }
- void Bee()
- {
- bee = 1;
- delay();
- bee = 0;
- delay();
- }
- void KEY_scan()
- {
- if(button1 == 0)
- {
- h++;
- while(button1 == 0);
- }
- if(button2 == 0)
- {
- h--;
- while(button2 == 0);
- }
- if(button3 == 0)
- {
- m++;
- while(button3 == 0);
- }
- if(button4 == 0)
- {
- m--;
- while(button4 == 0);
- }
- }
- void display()
- {
- static unsigned char i = 0;
- dat[0]=h/10;
- dat[1]=h%10;
- dat[2]=m/10;
- dat[3]=m%10;
- dat[4]=s/10;
- dat[5]=s%10;
- {
- P2=wei[i];
- P0=duan[dat[i]];
- i++;
- if(i>=6)
- i = 0;
- }
- }
- unsigned char dz_js(void)
- {
- num++;
- if(num==100)
- {
- num=0;
- s++;
- if(s>=60)
- {
- s = 0;
- m++;
- }
- if(m>=60)
- {
- m = 0;
- h++;
- }
- if(h>=24)
- h=0;
- }
- return(s,m,h);
- }
- void T1_svr() interrupt 3
- {
- TH1=(65536-10000)/256;
- TL1=(65536-10000)%256;
- dz_js();
- display();
- }
- void main()
- {
- TMOD=0x10;
- TH1=(65536-10000)/256;
- TL1=(65536-10000)%256;
-
- ET1 = 1;
- EA = 1;
- TR1 = 1;
- while(1)
- {
- bee = 0;
- KEY_scan();
- if(m == 59)
- Bee();
- }
- }
復制代碼 Keil代碼與Proteus仿真下載:
電子鐘.7z
(60.06 KB, 下載次數: 36)
2022-4-9 15:48 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|