基于单片机的可调时数字闹铃毕业设计(编辑修改稿)内容摘要:

r shi,fen,miao。 char year_H,year_L,month,day。 sbit bell=P3^5。 sbit Rs=P2^5。 sbit Rw=P2^6。 sbit lcd_en=P2^7。 sbit Set=P2^0。 sbit Next=P2^1。 //Next 键 指示修改位置 sbit Num_up=P2^2。 //修改位数字加 sbit Num_down=P2^3。 //修改位数字减 第 13 页 共 25 页 /***********延时程序 1ms**********************/ void delay(uint ms) { uint i,j。 for(i=ms。 i0。 i) for(j=120。 j0。 j)。 } /***********LCD 的写数据和写指令程序段 ********/ void write_(uchar ) { Rs=0。 P0=。 delay(5)。 lcd_en=1。 delay(5)。 lcd_en=0。 } void write_data(uchar date) { Rs=1。 P0=date。 delay(5)。 lcd_en=1。 delay(5)。 lcd_en=0。 } /************写入时、分、秒、星期、年月日 ***********************/ void write_sfm(uchar add,uchar date) { uchar shi,ge。 write_(0x80+0x40+add)。 shi=date/10。 ge=date%10。 write_data(0x30+shi)。 write_data(0x30+ge)。 write_(0x80+0x40+add)。 } void write_week(uchar week) //写入星期 { write_(0x80+12)。 第 14 页 共 25 页 switch(week) { case 1: write_data(39。 M39。 )。 delay(5)。 write_data(39。 o39。 )。 delay(5)。 write_data(39。 n39。 )。 break。 case 2: write_data(39。 T39。 )。 delay(5)。 write_data(39。 u39。 )。 delay(5)。 write_data(39。 e39。 )。 break。 case 3: write_data(39。 W39。 )。 delay(5)。 write_data(39。 e39。 )。 delay(5)。 write_data(39。 n39。 )。 break。 case 4: write_data(39。 T39。 )。 delay(5)。 write_data(39。 h39。 )。 delay(5)。 write_data(39。 u39。 )。 break。 case 5: write_data(39。 F39。 )。 delay(5)。 write_data(39。 r39。 )。 delay(5)。 write_data(39。 i39。 )。 break。 case 6: write_data(39。 S39。 )。 delay(5)。 write_data(39。 a39。 )。 delay(5)。 write_data(39。 t39。 )。 break。 case 7: write_data(39。 S39。 )。 delay(5)。 write_data(39。 u39。 )。 delay(5)。 write_data(39。 n39。 )。 break。 第 15 页 共 25 页 } } void write_nyr(uchar add,uchar date) //写入年、月、日格式 { uchar date_S,date_G。 date_S=date/10。 date_G=date%10。 write_(0x80+add)。 //设置所设置的十位 write_data(0x30+date_S)。 //转为 ASCII 码 delay(5)。 write_data(0x30+date_G)。 write_(0x80+add)。 //将游标返回 } /************************************************************/ /************键盘检测 *****************************/ void keyscan_set_sfm(set_alarm_flag) //当 设 置到分秒修改检测 next,num+,num { uchar Next_num。 while(Set) { if(Next==0) { delay(5)。 if(Next==0) { while(!Next)。 Next_num++。 switch (Next_num) { case 1: write_(0x80+0x40+7)。 //分钟位 break。 case 2: write_(0x80+0x40+4)。 //小时位 if(set_alarm_flag==1) //调闹铃模 式下跳过秒位的调节 Next_num=0。 break。 case 3: if(set_alarm_flag!=1) write_(0x80+0x40+10)。 //非闹铃模式下停留在秒 第 16 页 共 25 页 位 Next_num=0。 break。 } } } if(Num_up==0) //数 字的加操作 { delay(5)。 if(Num_up==0) { while(!Num_up)。 if(set_alarm_flag==1amp。 amp。 Next_num==0) Next_num+=2。 switch (Next_num) { case 0: miao++。 if(miao==60) miao=0。 write_sfm(10,miao)。 break。 case 1: fen++。 if(fen==60) fen=0。 write_sfm(7,fen)。 break。 case 2: shi++。 if(shi==24) shi=0。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。