仿真.PNG (22.89 KB, 下載次數: 59)
下載附件
2019-7-23 16:47 上傳
- #include <REGX51.H>
- #define uchar unsigned char
- #define uint unsigned int
- uchar hour,min,sec,ok;
- uchar code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, //0~9 共陰 shuzu
- 0x77,0x7c,0x39,0x5e,0x79,0x71,0x09,0x38,0x40}; //a~f -
- uchar disp[8]={0,0,18,0,0,18,0,0};
- void display()
- {
- uchar i,j,k=0x80;
- for(i=0;i<8;i++)
- {
- P0=dispcode[disp[i]];
- P2=k;
- k=k>>1;
- for(j=250;j>0;j--);
- P2=0;
- }
- }
- uchar inkey()
- {
- uchar k;
- static uint cnt=0;
- k=P3;
- if(k!=0xff)
- {
- cnt++;
- if(cnt==10){return k;}
- else if(cnt>200){cnt=180;return k;}
- else return 0xff;
- }
- else {cnt=0;return 0xff;}
- }
- void keyaction()//按鍵功能
- {
- uchar k;
- k=inkey();
- switch(k)
- {
- case 0xf7://加秒
- sec++;if(sec>60)sec=0;break;
- case 0xfb://加分
- min++;if(min>60)min=0;break;
- case 0xfd://加時
- hour++;if(hour>24)hour=0;break;
- case 0xef://開始運行
- ok=!ok;break;
- default: break;
- }
- disp[0]=sec%10;
- disp[1]=sec/10;
- disp[3]=min%10;
- disp[4]=min/10;
- disp[6]=hour%10;
- disp[7]=hour/10;
- }
- void calc()
- {
- sec++;
-
- if(sec>59)
- {
- sec=0;
- min++;
-
- if(min>59)
- {
- min=0;
- hour++;
- if(hour>23)hour=0;
- }
- }
- disp[0]=sec%10;
- disp[1]=sec/10;
- disp[3]=min%10;
- disp[4]=min/10;
- disp[6]=hour%10;
- disp[7]=hour/10;
- }
- void main()
- {
- uchar i;
- while(1)
- {
- for(i=0;i<250;i++)
- {
- display();
- keyaction();
- }
- if(ok)calc();
- }
- }
復制代碼
全部資料51hei下載地址:
按鍵動態顯示(時鐘).zip
(64.41 KB, 下載次數: 34)
2019-7-23 16:49 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|