百度上如何創(chuàng)建自己的網(wǎng)站北京網(wǎng)站seo公司
文章目錄
- 一、功能簡介
- 二、軟件設計
- 三、實驗現(xiàn)象
- 聯(lián)系作者
一、功能簡介
本項目使用Proteus8仿真Arduino單片機控制器,使用PCF8574、LCD1602液晶、DS1302溫度傳感器、DS1302時鐘、按鍵、蜂鳴器等。
主要功能:
系統(tǒng)運行后,LCD1602顯示當前日期時間和溫度值,當按下K3鍵進入日期和時間設置模式,
每按下K3鍵1次,則切換不同位置,通過K1和K2鍵調(diào)整數(shù)據(jù);按下K4鍵可保存并返回主界面。
當按下K4鍵,進入鬧鐘設置模式,可通過K4鍵切換不同位置,通過K1和K2鍵調(diào)整數(shù)據(jù);按下
K3鍵可保存并返回主界面。當時間到達鬧鐘時間,開啟鬧鈴,可按下K1鍵取消鬧鈴。
二、軟件設計
/*
作者:嗨小易(QQ:3443792007)*///系統(tǒng)數(shù)據(jù)獲取
void sys_data_get(void)
{while(1){//獲取溫度sys_ctrl.temp=ds18b20_read_temperture()*10;//獲取時間ds1302_read_time();break;}
}//系統(tǒng)數(shù)據(jù)顯示
void sys_data_show(void)
{u8 buf[5];while(1){//正常模式顯示if(sys_ctrl.mode==0){//未進入鬧鐘設置模式if(sys_ctrl.alarm_mode==0){//日期時間顯示lcd1602_show_nums(2,0,gDS1302_TIME[6],2,0x80);//年lcd1602_show_nums(5,0,gDS1302_TIME[4],2,0x80);//月lcd1602_show_nums(8,0,gDS1302_TIME[3],2,0x80);//日lcd1602_show_nums(15,0,gDS1302_TIME[5],1,0x80);//星期lcd1602_show_nums(0,1,gDS1302_TIME[2],2,0x80);//時lcd1602_show_nums(3,1,gDS1302_TIME[1],2,0x80);//分lcd1602_show_nums(6,1,gDS1302_TIME[0],2,0x80);//秒//溫度顯示if(sys_ctrl.temp<9999){buf[0]=sys_ctrl.temp/100+0x30;buf[1]=sys_ctrl.temp%100/10+0x30;buf[2]='.';buf[3]=sys_ctrl.temp%100%10+0x30;buf[4]='\0';lcd1602_show_string(11,1,buf);}}//鬧鐘設置顯示else{//鬧鐘時間顯示lcd1602_show_nums(6,0,sys_ctrl.alarm_time[0],2,0x80);//時lcd1602_show_nums(9,0,sys_ctrl.alarm_time[1],2,0x80);//分//鬧鐘開關(guān)狀態(tài)顯示if(sys_ctrl.alarm_onoff==0)lcd1602_show_string(4,1,"OFF");else lcd1602_show_string(4,1," ON");//對應位置閃爍switch(sys_ctrl.alarm_mode){case 1:lcd1602_show_string(6,0," ");delay(50);lcd1602_show_nums(6,0,sys_ctrl.alarm_time[0],2,0x80);//時break;case 2:lcd1602_show_string(9,0," ");delay(50);lcd1602_show_nums(9,0,sys_ctrl.alarm_time[1],2,0x80);//分break;case 3:lcd1602_show_string(4,1," ");delay(50);//鬧鐘開關(guān)狀態(tài)顯示if(sys_ctrl.alarm_onoff==0)lcd1602_show_string(4,1,"OFF");else lcd1602_show_string(4,1," ON");break;}}}//設置模式顯示else {//設置時間顯示lcd1602_show_nums(2,0,sys_ctrl.set_time[6],2,0x80);//年lcd1602_show_nums(5,0,sys_ctrl.set_time[4],2,0x80);//月lcd1602_show_nums(8,0,sys_ctrl.set_time[3],2,0x80);//日lcd1602_show_nums(15,0,sys_ctrl.set_time[5],1,0x80);//星期lcd1602_show_nums(0,1,sys_ctrl.set_time[2],2,0x80);//時lcd1602_show_nums(3,1,sys_ctrl.set_time[1],2,0x80);//分lcd1602_show_nums(6,1,sys_ctrl.set_time[0],2,0x80);//秒//對應位置閃爍switch(sys_ctrl.mode){case 1:lcd1602_show_string(2,0," ");delay(50);lcd1602_show_nums(2,0,sys_ctrl.set_time[6],2,0x80);//年break;case 2:lcd1602_show_string(5,0," ");delay(50);lcd1602_show_nums(5,0,sys_ctrl.set_time[4],2,0x80);//月break;case 3:lcd1602_show_string(8,0," ");delay(50);lcd1602_show_nums(8,0,sys_ctrl.set_time[3],2,0x80);//日break;case 4:lcd1602_show_string(15,0," ");delay(50);lcd1602_show_nums(15,0,sys_ctrl.set_time[5],1,0x80);//星期break;case 5:lcd1602_show_string(0,1," ");delay(50);lcd1602_show_nums(0,1,sys_ctrl.set_time[2],2,0x80);//時break;case 6:lcd1602_show_string(3,1," ");delay(50);lcd1602_show_nums(3,1,sys_ctrl.set_time[1],2,0x80);//分break;case 7:lcd1602_show_string(6,1," ");delay(50);lcd1602_show_nums(6,1,sys_ctrl.set_time[0],2,0x80);//秒break;}}break;}
}//系統(tǒng)數(shù)據(jù)設置
void sys_data_set(void)
{u8 key=0;static u8 oneflag=0;static u8 nzoneflag=0;u8 i=0;key=key_scan(0);if(key!=0)beep_alarm(100,1000);//提示音//設置if(key==KEY3_PRESS){//未進入鬧鐘設置if(sys_ctrl.alarm_mode==0){sys_ctrl.mode++;if(sys_ctrl.mode>7)sys_ctrl.mode=1;if(oneflag==0){oneflag=1;//獲取當前時間記錄for(i=0;i<7;i++)sys_ctrl.set_time[i]=gDS1302_TIME[i];_sys_parm_set_show();//系統(tǒng)參數(shù)設置界面顯示 }} //進入鬧鐘設置else{sys_ctrl.alarm_mode=0;nzoneflag=0;sys_open_show();//系統(tǒng)開機界面顯示}}//加else if(key==KEY1_PRESS){//時間修改if(sys_ctrl.mode!=0){switch(sys_ctrl.mode){case 1://年sys_ctrl.set_time[6]++;if(sys_ctrl.set_time[6]>99)sys_ctrl.set_time[6]=0;break;case 2://月sys_ctrl.set_time[4]++;if(sys_ctrl.set_time[4]>12)sys_ctrl.set_time[4]=1;break;case 3://日sys_ctrl.set_time[3]++;if(sys_ctrl.set_time[3]>31)sys_ctrl.set_time[3]=1;break;case 4://星期sys_ctrl.set_time[5]++;if(sys_ctrl.set_time[5]>7)sys_ctrl.set_time[5]=1;break;case 5://時sys_ctrl.set_time[2]++;if(sys_ctrl.set_time[2]>23)sys_ctrl.set_time[2]=0;break;case 6://分sys_ctrl.set_time[1]++;if(sys_ctrl.set_time[1]>59)sys_ctrl.set_time[1]=0;break;case 7://秒sys_ctrl.set_time[0]++;if(sys_ctrl.set_time[0]>59)sys_ctrl.set_time[0]=0;break;}}//鬧鐘設置if(sys_ctrl.alarm_mode!=0){switch(sys_ctrl.alarm_mode){case 1:sys_ctrl.alarm_time[0]++;if(sys_ctrl.alarm_time[0]>23)sys_ctrl.alarm_time[0]=0;break;case 2:sys_ctrl.alarm_time[1]++;if(sys_ctrl.alarm_time[1]>59)sys_ctrl.alarm_time[1]=0;break;case 3:sys_ctrl.alarm_onoff=!sys_ctrl.alarm_onoff;break;}}//已鬧鈴,取消if(sys_ctrl.naoling==1)sys_ctrl.naoling=0;}//減else if(key==KEY2_PRESS){//時間修改if(sys_ctrl.mode!=0){switch(sys_ctrl.mode){case 1://年sys_ctrl.set_time[6]--;if(sys_ctrl.set_time[6]<0)sys_ctrl.set_time[6]=99;break;case 2://月sys_ctrl.set_time[4]--;if(sys_ctrl.set_time[4]<0)sys_ctrl.set_time[4]=12;break;case 3://日sys_ctrl.set_time[3]--;if(sys_ctrl.set_time[3]<0)sys_ctrl.set_time[3]=31;break;case 4://星期sys_ctrl.set_time[5]--;if(sys_ctrl.set_time[5]<0)sys_ctrl.set_time[5]=7;break;case 5://時sys_ctrl.set_time[2]--;if(sys_ctrl.set_time[2]<0)sys_ctrl.set_time[2]=23;break;case 6://分sys_ctrl.set_time[1]--;if(sys_ctrl.set_time[1]<0)sys_ctrl.set_time[1]=59;break;case 7://秒sys_ctrl.set_time[0]--;if(sys_ctrl.set_time[0]<0)sys_ctrl.set_time[0]=59;break;}}//鬧鐘設置if(sys_ctrl.alarm_mode!=0){switch(sys_ctrl.alarm_mode){case 1:sys_ctrl.alarm_time[0]--;if(sys_ctrl.alarm_time[0]<0)sys_ctrl.alarm_time[0]=23;break;case 2:sys_ctrl.alarm_time[1]--;if(sys_ctrl.alarm_time[1]<0)sys_ctrl.alarm_time[1]=59;break;case 3:sys_ctrl.alarm_onoff=!sys_ctrl.alarm_onoff;break;}}}//確定else if(key==KEY4_PRESS){//時間修改if(sys_ctrl.mode!=0){sys_ctrl.mode=0;oneflag=0;ds1302_set_time(sys_ctrl.set_time[6],sys_ctrl.set_time[4],sys_ctrl.set_time[3],sys_ctrl.set_time[2],sys_ctrl.set_time[1],sys_ctrl.set_time[0]);sys_open_show();//系統(tǒng)開機界面顯示}//鬧鐘設置else{sys_ctrl.alarm_mode++;if(sys_ctrl.alarm_mode>3)sys_ctrl.alarm_mode=1;if(nzoneflag==0){nzoneflag=1;_sys_alarm_set_show();//鬧鐘設置界面顯示}}}
}
三、實驗現(xiàn)象
B站演示視頻:https://space.bilibili.com/444388619
聯(lián)系作者
視頻地址:https://space.bilibili.com/444388619/video
專注于51單片機、STM32、國產(chǎn)32、DSP、Proteus、arduino、ESP32、物聯(lián)網(wǎng)軟件開發(fā),PCB設計,視頻分享,技術(shù)交流。