基于单片机的闹钟提醒器内容摘要:

temp[1]/10+0x30)。 //时 lcd_wcmd(0xcc)。 lcd_wdat(alarm_temp[1]%10+0x30)。 lcd_wcmd(0xcd)。 lcd_wdat(58)。 lcd_wcmd(0xce)。 lcd_wdat(alarm_temp[0]/10+0x30)。 //分 lcd_wcmd(0xcf)。 lcd_wdat(alarm_temp[0]%10+0x30)。 //秒 } /*系统设置 */ void sys_set(void) { uchar i,j。 uchar key_state=0。 TR0=0。 //停止闪烁,显示 : lcd_wcmd(0xc2)。 lcd_wdat(58)。 lcd_wcmd(0xc5)。 lcd_wdat(58)。 while(key_break) { if(!key_set) //adjust the key state { delay(10000)。 if(!key_set) while(!key_set)。 key_state++。 if(key_state==9) key_state=0。 } switch(key_state)//调整时间时,需要的时候再读出各寄存器的值,以完成调整时间的要求 13 //虽然会浪费一定的空间,但能保证较快地响应请求 //在每次读出数据后应将 bcd 码转化为 16 进制数,调整完成后,再将 16 进制数转化为 bcd 码,最后给 ds1302 送数 { case 0://时钟 秒调整 time_temp[0] lcd_wcmd(0xc8)。 lcd_wdat(67)。 //c lcd_wcmd(0xc9)。 lcd_wdat(45)。 // lcd_wcmd(0xca)。 lcd_wdat(83)。 //s time_temp[0]=R1302(0x81)。 //读出秒寄存器 time_temp[0]=time_temp[0]/16*10+time_temp[0]%16。 //转化为 16 进制数 if(!key_add) { delay(10000)。 if(!key_add) { while(!key_add)。 time_temp[0]++。 if(time_temp[0]==60) time_temp[0]=0。 } } if(!key_sub) { delay(10000)。 if(!key_sub) { while(!key_sub)。 time_temp[0]。 if(time_temp[0]==255) time_temp[0]=59。 } } W1302(0x8e,0x00)。 W1302(0x80,time_temp[0]/10*16+time_temp[0]%10)。 W1302(0x8e,0x80)。 break。 case 1://时钟 分调整 lcd_wcmd(0xc8)。 14 lcd_wdat(67)。 //c lcd_wcmd(0xc9)。 lcd_wdat(45)。 // lcd_wcmd(0xca)。 lcd_wdat(77)。 //m time_temp[1]=R1302(0x83)。 //读出分寄存器 time_temp[1]=time_temp[1]/16*10+time_temp[1]%16。 if(!key_add) //++ { delay(10000)。 if(!key_add) { while(!key_add)。 time_temp[1]++。 { if(time_temp[1]==60) time_temp[1]=0。 } } } if(!key_sub) // { delay(10000)。 if(!key_sub) { while(!key_sub)。 time_temp[1]。 { if(time_temp[1]==255) time_temp[1]=59。 } } } W1302(0x8e,0x00)。 W1302(0x82,time_temp[1]/10*16+time_temp[1]%10)。 W1302(0x8e,0x80)。 break。 case 2://时钟 时调整 lcd_wcmd(0xc8)。 lcd_wdat(67)。 //c lcd_wcmd(0xc9)。 lcd_wdat(45)。 // 15 lcd_wcmd(0xca)。 lcd_wdat(72)。 //h time_temp[2]=R1302(0x85)。 //读出时寄存器 time_temp[2]=time_temp[2]/16*10+time_temp[2]%16。 if(!key_add) //++ { delay(10000)。 if(!key_add) { while(!key_add)。 time_temp[2]++。 if(time_temp[2]==24) time_temp[2]=0。 } } if(!key_sub) // { delay(10000)。 if(!key_sub) { while(!key_sub)。 time_temp[2]。 { if(time_temp[2]==255) time_temp[2]=23。 } } } W1302(0x8e,0x00)。 W1302(0x84,time_temp[2]/10*16+time_temp[2]%10)。 //转换为 bcd 码 W1302(0x8e,0x80)。 break。 case 3://时钟 日调整 lcd_wcmd(0xc8)。 lcd_wdat(67)。 //c lcd_wcmd(0xc9)。 lcd_wdat(45)。 // lcd_wcmd(0xca)。 lcd_wdat(68)。 //d time_temp[3]=R1302(0x87)。 //读出日寄存器 time_temp[3]=time_temp[3]/16*10+time_temp[3]%16。 16 time_temp[6]=R1302(0x8d)。 //读年 ,用于判断平年与闰年 i=time_temp[6]/16*10+time_temp[6]%16。 //转化为 16 进制 j=R1302(0x89)。 //读月 if(!key_add) //++ { delay(10000)。 if(!key_add) { while(!key_add)。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。