標(biāo)題:
51單片機(jī)鬧鐘添加取消響鈴按鍵
[打印本頁]
作者:
automation007
時(shí)間:
2021-1-24 11:36
標(biāo)題:
51單片機(jī)鬧鐘添加取消響鈴按鍵
本帖最后由 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)擊文件名下載附件
下載積分: 黑幣 -5
alarm_clock2.1.rar
2021-1-28 20:17 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
2.46 KB, 下載次數(shù): 6, 下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1