|
本帖最后由 automation007 于 2021-1-28 20:17 編輯
51鬧鐘添加取消響鈴按鍵,有時(shí)候響鈴很煩人,所以添加了按鍵以跳過當(dāng)前響鈴,下一次再響...還添加了工作與休息按鍵,按工作鍵時(shí)就進(jìn)入工作計(jì)時(shí),按休息鍵時(shí),就進(jìn)入休息計(jì)時(shí)。默認(rèn)工作時(shí)長為30分鐘,休息時(shí)長為10分鐘。繼昨天開發(fā)了三個(gè)按鍵,今天又加入了一個(gè)切換鈴聲的按鍵...反正用的是最笨的辦法...誰有空有興趣再研究吧!可以用串口來控制的我偏用8個(gè)IO口來控制....太笨了
單片機(jī)源程序如下:
- #include <reg52.h>
- #define uint unsigned int
- #define uchar unsigned char
- sbit K1=P3^7;//跳過當(dāng)前響鈴
- sbit K2=P3^6;//開始休息
- sbit K3=P3^5;//開始工作
- uint working_hours;//
- uint rest_time;//
- //uint Ring_duration;//
- uchar code digital_table[]={//-
- 0x3f,0x06,0x5b,0x4f,
- 0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x77,0x7c,
- 0x39,0x5e,0x79,0x71
- };
- uchar code digital[]={//
- 0x1f,0x2f,0x4f,0x8f
- };
- uint num;//
- void init();//
- void display_digital();//
- void delay_ms(uint x);
- void main(){
- /***可修改工作時(shí)間與休息時(shí)間,其它不用動(dòng)***/
- working_hours=29;//工作時(shí)長 29
- rest_time=9;//休息時(shí)長 9
- init();
- display_digital();
- }
- void display_digital(){
- uchar temp,m[4],up=1,lower=0,min_temp=0,max_temp=1;
- uchar AlarmClock_switch=1;
- uint tim;//
- while(1){
- if(K1==0||K2==0||K3==0){
- delay_ms(50);
- if(K1==0||K2==0||K3==0){
- if(K1==0){//
- delay_ms(50);//
- if(K1==0){//
- AlarmClock_switch=0;//
- }
- }
- if(K2==0){//10()
- delay_ms(50);//
- if(K2==0){//
- num=0;//
- tim=0;//
- lower=1;//=1
- up=0;//
- AlarmClock_switch=0;
- min_temp=2;//
- max_temp=3;//
- }
- }
- if(K3==0){//)
- delay_ms(50);
- if(K3==0){
- num=0;//
- tim=0;//
- up=1;//
- lower=0;//
- AlarmClock_switch=0;
- min_temp=0;//
- max_temp=1;//
- }
- }
- }
- }
- if(tim!=0&&AlarmClock_switch==0){// 1200
- AlarmClock_switch=1;//
- }
- if(num>=1200){//1 1200
- num=0;//
- tim++;//++
- if(up&&tim>working_hours){//
- tim=0;
- lower=1;//=1
- up=0;//
- min_temp=2;//
- max_temp=3;//
- }
- if(lower&&tim>rest_time){//
- tim=0;//
- up=1;//
- lower=0;//
- min_temp=0;//
- max_temp=1;//
- }
- }
- if(tim==0&&up==1&&num<340&&AlarmClock_switch==1){//<17 tim1
- P1=0xfd;//
- }else if(tim==0&&lower==1&&num<400&&AlarmClock_switch==1){//<26s
- P1=0xf7;//0xfb
- }else
- P1=0xff;//
- if(tim>9){//>9
- temp++;//++
- if(temp>max_temp)//>
- temp=min_temp;//
- m[min_temp]=tim/10;
- m[max_temp]=tim%10;
- }else{
- temp=min_temp;
- m[min_temp]=tim;//
- }
- P0=0x00;//
- P2=digital[temp];//
- P0=digital_table[m[temp]];//
- }
- }
- void init(){
- num=0;
- TMOD=1;//T016
- TH0=(65535-50000)/255;//50//
- TL0=(65535-50000)%255;//
- EA=1;//
- ET0=1;//0
- TR0=1;//0
- K1=1;
- K2=1;
- }
- void timer0() interrupt 1 /*using 0*/{//
- TH0=(65535-50000)/255;//50
- TL0=(65535-50000)%255;//50
- num++;//++
- }
- void delay_ms(uint x){
- uint t,m;
- for(t=x;t>0;t--){
- for(m=120;m>0;m--);
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
51鬧鐘添加取消響鈴按鍵2.rar
(1.7 MB, 下載次數(shù): 10)
2021-1-25 20:49 上傳
點(diǎn)擊文件名下載附件
|
-
-
alarm_clock2.1.rar
2021-1-28 20:17 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
2.46 KB, 下載次數(shù): 6, 下載積分: 黑幣 -5
評(píng)分
-
查看全部評(píng)分
|