|
這是一個(gè)51單片機(jī)的時(shí)鐘設(shè)計(jì),可以調(diào)節(jié)
秒,分,時(shí)的數(shù)。一共有四個(gè)鍵一個(gè)復(fù)位,
其他分別是調(diào)節(jié)秒分時(shí)的鍵。- #include<reg51.h>
- #include<absacc.h>
- #define uchar unsigned char
- #define uint unsigned int
- /*七段共陰管顯示定義*/
- uchar code dispcode[ ]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,
- 0xBF,0x86,0xCB,0xCF,0xEF,0xED,0xFD,0x87,0xFF,0xDF};
- /*定義并初始化變量*/
- uchar seconde=0;
- uchar minite=0;
- uchar hour=0;
- uchar mstcnt=0;
- sbit P1_0=P1^0; // second 調(diào)整定義
- sbit P1_1=P1^1; //minite調(diào)整定義
- sbit P1_2=P1^2; //hour調(diào)整定義
- sbit P1_3=P1^3; //暫停定義
- /*函數(shù)聲明*/
- void delay(uchar k ); //延時(shí)子程序
- void time_pro( ); //時(shí)間處理子程序
- void display( ); //顯示子程序
- void keyscan( ); //鍵盤(pán)掃描子程序
- /*延時(shí)子程序*/
- void delay (uchar k)
- {
- uchar j;
- while((k--)!=0)
- {
- for(j=0;j<125;j++)
- {;}
- }
- }
- /*時(shí)間處理子程序*/
- void time_pro( void)
- {
- if(seconde==60) //秒鐘設(shè)為60進(jìn)制
- { seconde=0;
- minite++;
- if( minite==60) //分鐘設(shè)為60進(jìn)制
- { minite=0;
- hour++;
- if(hour==24) //時(shí)鐘設(shè)為24進(jìn)制
- {hour=0; }
- }
- }
- }
- /* 顯示子程序*/
- void display(void)
- {
- P2=0x01;
- P0=dispcode[hour/10]; //顯示小時(shí)的十位
- delay(10);
- P2=0x02;
- P0=dispcode[hour%10]; //顯示小時(shí)的個(gè)位
- delay(10);
- P2=0x04;
- P0=dispcode[minite/10]; //顯示分的十位
- delay(10);
- P2=0x08;
- P0=(dispcode[minite%10]); //顯示分的個(gè)位
- delay(10);
- P2=0x10;
- P0=dispcode[seconde/10]; //顯示秒的十位
- delay(10);
- P2=0x20;
- P0=dispcode[seconde%10]; //顯示秒的個(gè)位
- delay(10);
- }
- /*鍵盤(pán)掃描子程序*/
- void keyscan (void)
- {
- if(P1_0==0) //按鍵1秒的調(diào)整
- {
- delay(30);
- if(P1_0==0)
- {
- seconde++;
- if(seconde==60)
- {seconde=0; }
- }
- }
- if(P1_1==0) //按鍵2分的調(diào)整
- {
- delay(30);
- if(P1_1==0)
- {
- minite++;
- if(minite==60)
- {minite=0;}
- }
- }
- if(P1_2==0) //按鍵3小時(shí)的調(diào)整
- {
- delay(30);
- if(P1_2==0)
- {
- hour++;
- if(hour==24)
- {hour=0; }
- }
- }
- if(P1_3==0)
- {
- delay(30);
- if(P1_3==0)
- {
- while(!P1_3);
- {TR0=~TR0;} //啟動(dòng)或停止定時(shí)器0
- }
- }
- }
- void timer0(void) interrupt 1
- {
- TH0=0x3c;
- TL0=0xb0;
- mstcnt++;
- if(mstcnt==20)
- {
- seconde++;
- mstcnt=0; //清零
- } //
- }
- /*主函數(shù)*/
- void main(void)
- { P1=0xff; //初始化p1口,全設(shè)為1
- TMOD = 0x11; //time0為定時(shí)器,方式1
- TH0=0x3c; //預(yù)置計(jì)數(shù)初值
- TL0=0xb0;
- EA=1;
- ET0=1;
- TR0=1;
- while (1)
- {
- keyscan( ); //按鍵掃描
- time_pro( ); //時(shí)間處理
- display( ); //顯示時(shí)間
- }
- }
復(fù)制代碼
|
-
時(shí)鐘.jpg.png
(562.03 KB, 下載次數(shù): 70)
下載附件
2018-10-26 20:46 上傳
-
-
時(shí)鐘20407.rar
2018-10-26 20:47 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
70.48 KB, 下載次數(shù): 56, 下載積分: 黑幣 -5
-
-
新時(shí)鐘20407.rar
2018-10-26 20:48 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
34.31 KB, 下載次數(shù): 50, 下載積分: 黑幣 -5
|