標(biāo)題: 電子表程序設(shè)計(jì) 帶實(shí)驗(yàn)報(bào)告源程序等 [打印本頁(yè)]
作者: 51SCM 時(shí)間: 2017-2-26 11:21
標(biāo)題: 電子表程序設(shè)計(jì) 帶實(shí)驗(yàn)報(bào)告源程序等
大家一起學(xué)習(xí)學(xué)習(xí)吧

鍵盤功能控制
正常狀態(tài):顯示時(shí)分;
按下KEY1鍵顯示秒鐘,松開(kāi)恢復(fù)顯示時(shí)分。
KEY2鍵:按下進(jìn)入模式選擇(亮度變暗):
1、 按下KEY1鍵,亮度恢復(fù)正常,調(diào)整時(shí)間;
① 按KEY3鍵,分鐘加,按KEY4鍵,分鐘減。
② 按下KEY2鍵,再按KEY3鍵,小時(shí)加,按下KEY4鍵,小時(shí)減。
③ 按下KEY1鍵,退出。
2、 按下KEY2鍵,亮度恢復(fù)正常,鬧鐘時(shí)間設(shè)定;
① 按KEY3鍵,分鐘加,按KEY4鍵,分鐘減。
② 按下KEY1鍵,再按KEY3鍵,小時(shí)加,按下KEY4鍵,小時(shí)減。
③ 按下KEY2鍵,退出。
KEY3鍵:正常狀態(tài)時(shí),按下顯示鬧鐘時(shí)間。
KEY4鍵:①鬧鐘開(kāi)關(guān)鍵;
②鬧鈴響時(shí)關(guān)閉鬧鈴。
0.png (63.51 KB, 下載次數(shù): 59)
下載附件
2017-2-27 00:38 上傳
單片機(jī)電子表實(shí)驗(yàn)報(bào)告,源碼下載:
電子表.zip
(51.06 KB, 下載次數(shù): 35)
2017-2-26 11:19 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者: admin 時(shí)間: 2017-2-27 00:40
樓主的程序源碼:
- #include<reg52.h>
- #define uint unsigned int
- #define uchar unsigned char
- sbit w1=P2^0;
- sbit w2=P2^1;
- sbit w3=P2^2;
- sbit w4=P2^3;
- sbit key1=P3^2;
- sbit Mod_key=P3^3;
- sbit Up_key=P3^4;
- sbit Down_key=P3^5;
- sbit D1=P2^5;
- uchar flag,alarm_flag,Buzzer_flag,back,aa,bb,minutes,seconds,hours,hours_alarm,minutes_alarm,t0,Hourshi,Hourge,Minuteshi,Minutege,Secondshi,Secondge;
- uchar code table[]={
- 0xc0,0xf9,0xa4,0xb0,0x99,
- 0x92,0x82,0xf8,0x80,0x90,
- 0xbf,0xff};
- uchar code tablehours[]={ //小時(shí)的個(gè)位單獨(dú)一個(gè)數(shù)組,因?yàn)樾枰恢北3诛@示小數(shù)點(diǎn)
- 0x40,0x79,0x24,0x30,0x19,
- 0x12,0x02,0x78,0x00,0x10};
- void init(); //初始化函數(shù)
- void delay(uint z); //延時(shí)函數(shù)
- void display(uchar hours,uchar minutes); //正常顯示函數(shù)
- void display_seconds(uchar aa,uchar Secondshi,uchar Secondge,uchar bb); //顯示秒鐘函數(shù)
- void keyscan(); //鍵盤掃描函數(shù)
- void Buzzer(); //蜂鳴器開(kāi)關(guān)函數(shù)
- void main()
- {
- init();
- while(1)
- {
- keyscan();
- Buzzer();
- if(flag==1)
- display_seconds(10,Secondshi,Secondge,10);
- if(alarm_flag==1)
- display(hours_alarm,minutes_alarm);
- if(flag!=1&&alarm_flag!=1)
- display(hours,minutes);
- }
- }
- void init() //初始化函數(shù)
- {
- flag=0;
- alarm_flag=0;
- Buzzer_flag=1; //蜂鳴器初始化時(shí)默認(rèn)關(guān)閉
- back=0;
- hours_alarm=0;
- minutes_alarm=0;
- hours=0;
- minutes=0;
- seconds=0;
- Hourshi=0;
- Hourge=0;
- Minuteshi=0;
- Minutege=0;
- Secondshi=0;
- Secondge=0;
- t0=0;
- TMOD=0x01;
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- EA=1;
- ET0=1;
- TR0=1;
- }
- void delay(uint z) //延時(shí)函數(shù)
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
- void display(uchar hours,uchar minutes) //正常顯示函數(shù)
- {
- P0=0xff;
- w1=0;
- P0=table[hours/10];
- w1=1;
- delay(1);
- P0=0xff;
- w2=0;
- P0=tablehours[hours%10];
- w2=1;
- delay(1);
- P0=0xff;
- w3=0;
- P0=table[minutes/10];
- w3=1;
- delay(1);
- P0=0xff;
- w4=0;
- P0=table[minutes%10];
- w4=1;
- delay(1);
- }
- void display_seconds(uchar aa,uchar Secondshi,uchar Secondge,uchar bb) //顯示秒鐘函數(shù)
- {
- P0=0xff;
- w1=0;
- P0=table[aa];
- w1=1;
- delay(1);
- P0=0xff;
- w2=0;
- P0=table[Secondshi];
- w2=1;
- delay(1);
- P0=0xff;
- w3=0;
- P0=table[Secondge];
- w3=1;
- delay(1);
- P0=0xff;
- w4=0;
- P0=table[bb];
- w4=1;
- delay(1);
- }
- void keyscan() //鍵盤掃描函數(shù)
- {
- if(key1==0)
- flag=1;
- else
- flag=0;
- if(Up_key==0)
- alarm_flag=1;
- else
- alarm_flag=0;
- if(Down_key==0)
- {
- while(!Down_key);
- Buzzer_flag=~Buzzer_flag;
- }
-
- if(Mod_key==0)
- {
- while(!Mod_key);
- while(1)
- {
- display(hours,minutes);
- delay(50);
- if(back==1)
- {
- back=0;
- break;
- }
- if(key1==0)
- {
- while(!key1);
- while(1)
- {
- display(hours,minutes);
- if(Up_key==0)
- {
- while(!Up_key);
- minutes++;
- if(minutes==60)
- minutes=0;
- }
-
- if(Down_key==0)
- {
- while(!Down_key);
- minutes--;
- if(minutes==-1)
- minutes=59;
- }
- if(back==1)
- {
- back==1;
- break;
- }
-
- if(Mod_key==0)
- {
- while(!Mod_key);
- while(1)
- {
- display(hours,minutes);
- if(Up_key==0)
- {
- while(!Up_key);
- hours++;
- if(hours==24)
- hours=0;
-
- }
- if(Down_key==0)
- {
- while(!Down_key);
- hours--;
- if(hours==-1)
- hours=23;
- }
- if(key1==0)
- {
- while(!key1);
- back=1;
- break;
- }
- }
- }
- }
- }
- if(Mod_key==0)
- {
- while(!Mod_key);
- while(1)
- {
- display(hours_alarm,minutes_alarm);
- if(Up_key==0)
- {
- while(!Up_key);
- minutes_alarm++;
- if(minutes_alarm==60)
- minutes_alarm=0;
- }
-
- if(Down_key==0)
- {
- while(!Down_key)
- minutes_alarm--;
- if(minutes_alarm==-1)
- minutes_alarm=59;
- }
- if(back==1)
- {
- back==1;
- break;
- }
-
- if(key1==0)
- {
- while(!key1);
- while(1)
- {
- display(hours_alarm,minutes_alarm);
- if(Up_key==0)
- {
- while(!Up_key);
- hours_alarm++;
- if(hours_alarm==24)
- hours_alarm=0;
- }
- if(Down_key==0)
- {
- while(!Down_key);
- hours_alarm--;
- if(hours_alarm==-1)
- hours_alarm=23;
- }
- if(Mod_key==0)
- {
- while(!Mod_key);
- back=1;
- Buzzer_flag=0; //設(shè)定鬧鐘時(shí)間后自動(dòng)開(kāi)啟蜂鳴器
- break;
- }
-
- }
- }
- }
- }
- }
- }
- }
- void Buzzer() //蜂鳴器開(kāi)關(guān)函數(shù)
- {
- if(hours==hours_alarm&&minutes==minutes_alarm)
- {
- if(Buzzer_flag==0)
- D1=0;
- else
- D1=1;
- }
- else
- D1=1;
- }
-
- void timer0() interrupt 1
- {
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- t0++;
- if(t0==20)
- {
- t0=0;
- seconds++;
- Secondshi=seconds/10;
- Secondge=seconds%10;
- if(seconds==60)
- {
- seconds=0;
- minutes++;
- Minuteshi=minutes/10;
- Minutege=minutes%10;
- if(minutes==60)
- {
- minutes=0;
- hours++;
- Hourshi=hours/10;
- Hourge=hours%10;
- if(hours==24)
- hours==0;
- }
-
- }
-
- }
- }
復(fù)制代碼
作者: qiang275129042 時(shí)間: 2017-2-27 17:42
謝謝大師
作者: 2649506328 時(shí)間: 2017-2-27 23:18
很好的教程!
作者: mickly007 時(shí)間: 2017-3-22 23:10
感謝分享,謝謝了
| 歡迎光臨 (http://www.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |