参考基于at89s52单片机的校园打铃系统设计毕业论文内容摘要:

00:00_00(在 4 月的 12 时闹钟响一次 )。 4:设置星期 定时闹钟: ?/?/?[二 ]12: 00: 00_00(在每周二的 12 时闹钟响一次 )。 4. 2 系统总流程图 19 主程序 蜂鸣器蜂鸣一声 红外中断接收 LCM2402 DS1302 初始化 显示 dalinlcd2402 Wele to used 2402 初始化 关蜂鸣器 Menu=0 主显示菜单 Menu=1 调时 菜单 Menu=2 定时查看菜单 1 2 3 显示时间 定时值校对处理 DT。 =0xff(有键按下) Y 09 按下 定时加减键 DT=。 2402 初始化 显示 Y N Menu=2 定时查看 2402 初始化 清空 DT 接下页 按 sleep 键 Menu=1 按 off 键 Menu=99 DT= 其他 DT=off 子流程图 A 子流程图 B N 子流程图 1 2 3 41 系统流程图 1 20 42 系统流程图 2 接上页 DT=0X00amp。 DT0X0A DT=0X4C N=0 N=1 X=DT N++ Y=DT N 显示 XY 清空 DT 显示“ OK” 清空 DT 子流程图 A 显示 DT!=OFF(有键按下 ) DT=? DT=2F ( PP 键) DT=1D (AV 键 ) 其他 DT=OFF Menu=0 Menu=1 2402 初始化 清空 DT 21 图 43 系统流程图 3 子流程图 B 显示定时时间 DT!=OFF DT=? 18 13 14 15 16 其他 Menu=1 Rom加 1 Rom 减 1 Rom 加 5 Rom 减 5 Menu=0 Rom24 且 rom100 Rom=0 Rom200 Rom=24 2402 初始化 清空 DT 22 图 44 系统流程图 4 子流程图 1 MENU=99(帮助菜单 ) DT=0X2F DT!=0XFF DT=0X1D i=0 menu=0 I++ i6 时 i=0 2402 初始化 清空 DT 子流程图 2 Menu=11 显示时间 09 按下 SET+ SET AV 键 调用写时间程序 I++ i— i1 是 i=6 Menu=0(主界面) I=6 清屏刷新显示 延时 清空 DT 一体函数 23 图 45 系统流程图 5 系统主程序 系统 主程序 /******************************************************************************************** //系统主程序 // 菜单切换 //main() *********************************************************************************************/ void main (void){ beep_a()。 keyboard_int ()。 LCM2402_Init()。 //LCM2402 初始化 Init_1302()。 //检测时钟芯片是否未被初始化 CgramWrite()。 print(0x80, DalingLCD2402 )。 print(0xc2, Wele to used)。 DelayS(5000)。 LCM2402_Init()。 //LCM2402 初始化 Bell_Out=1。 子流程图 3 (定时菜单) menu=12 显示定时时间 09 按下 SET+ SET AV 键 调用定时时间程序 I++ i— i1 是 i=6 Menu=0(主界面) I=6 清屏刷新显示 延时 清空 DT 一体函数 24 while(1){//主线程 // //0 主显示 if(menu == 0){ RealTime_Display()。 //在第一行显示时间部分 print(0xc6, !AL)。 print2(0xca, )。 print(0xcb, Used: )。 print2(0xd3,alarm_con/16+0x30)。 print2(0xd4,alarm_con%16+0x30)。 print(0xd5,/25)。 search_time()。 //定时值校对 amp。 处理函数 if (DT != 0xff){ if(DT=0x00 amp。 amp。 DT 0x0a){ uint16 i。 uint8 n=0,x=0xff,y=0xff。 LCM2402_Init()。 //LCM2402 初始化 for(i=0。 i500。 i++){ print(0x83,{ Controller NO. })。 print(0xc3,{ )。 print(0xcd, })。 if(DT=0x00 amp。 amp。 DT 0x0a){ switch (n){ case 0: x = DT。 n++。 i=0。 break。 // case 1: y = DT。 n。 i=0。 break。 // } print2(0xcb,x%16+0x30)。 print2(0xcc,y%16+0x30)。 DelayS250()。 DT = 0xff。 } if(DT == 0x4C){ print(0xca,{OK})。 //ALARMing(i)。 //** 闹钟和无线遥控的键值处理 ** DelayS250()。 DT = 0xff。 } } } if(DT0x12 amp。 amp。 DT 0x17){//当按定时加减查看的几个键时会进入定时查看菜单 25 menu = 2。 } switch (DT){ case 0x1c: menu = 1。 break。 // case 0x2F: menu =99。 break。 // default:DT = 0xff。 break。 } LCM2402_Init()。 //LCM2402 初始化 DT = 0xff。 } } //1 是否调时。 if(menu == 1){ print(0x80,Set The Real Time ?)。 print(0xc5,PP: OK AV: Esc)。 if (DT != 0xff){ switch (DT){ case 0x1D: menu = 0。 break。 // case 0x1B: menu = 11。 break。 // default:DT = 0xff。 break。 } LCM2402_Init()。 //LCM2402 初始化 DT = 0xff。 } } //2 定时查看 if(menu == 2){ alarm_Display()。 //在第一行显示定时部分 print(0xc3,] NO.)。 print2(0xc8,0x30+rom/10)。 print2(0xc9,0x30+rom%10)。 print(0xce,STORE: Set)。 if (DT != 0xff){ switch (DT){ case 0x18: menu = 12。 break。 // case 0x13: rom++。 break。 // case 0x14: rom。 break。 // case 0x15: rom=rom+5。 break。 // case 0x16: rom=rom5。 break。 // case 0x1D: menu = 0。 break。 // default:DT = 0xff。 break。 26 } if(rom 24 amp。 amp。 rom 100){ rom = 0。 }//当 if(rom 200){ rom = 24。 } LCM2402_Init()。 //LCM2402 初始化 DT = 0xff。 } } //99 帮助菜单 if(menu == 99){ uint8 i。 if (DT != 0xff){ if(DT == 0x2F){ i++。 if(i 6){i=0。 } DelayS(500)。 } if(DT == 0x1D){ i = 0。 menu = 0。 } LCM2402_Init()。 //LCM2402 初始化 DT = 0xff。 } switch (i){ case 0: print(0x80,AV: Esc Help)。 print(0xc0,MUTE: Next Help Page)。 break。 // case 1: print(0x80,SLEEP: Set The Real Time)。 print(0xc0,00~99: Controller NO.)。 break。 // case 2: print(0x80,set+/: Up/Down)。 print(0xc0,PR.+/: Alarm +/1)。 break。 // case 3: print(0x80,.+/: Alarm +/5)。 print(0xc0,STORE: Set Alarm)。 break。 // case 4: print(0x80,/: Jumping)。 print(0xc0,SEARCH: Set to ??)。 break。 // case 5: print(0x80,PP: OK!)。 print(0xc0,AV: Exit/Clean!)。 break。 // case 6: print(0x81,daling| DL2402)。 print(0xc5,zhu cai dan )。 break。 // default:break。 } } //11 调时输入 if(menu == 11){ static unsigned char i=0。 bit k。 //定义静态 RealTime_Display()。 //在第一行显示时间部分 for(i=1。 i8。 ){//8 个时钟数据的循环加位 switch (i){//显示设置项的说明 case 7: print(0xc0,AV:Esc (Second 00~59)^^)。 break。 // 27 case 6: print(0xc4,(Minute 00~59)^^)。 break。 // case 5: print(0xc3,(Hour 00~23)^^)。 break。 // case 4: print(0xcc,^(Week 1~7))。 break。 // case 3: print(0xc8,^^(Date 01~31))。 break。 // case 2: print(0xc5,^^(Month 01~12))。 break。 // case 1: print(0xc2,^^(Year 00~99) AV:Esc)。 break。 // } print(0x97。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。