智能照明控制系统源代码.docx
- 文档编号:11962263
- 上传时间:2023-04-16
- 格式:DOCX
- 页数:36
- 大小:24.32KB
智能照明控制系统源代码.docx
《智能照明控制系统源代码.docx》由会员分享,可在线阅读,更多相关《智能照明控制系统源代码.docx(36页珍藏版)》请在冰豆网上搜索。
智能照明控制系统源代码
附录4
软件设计源程序
题目教学楼智能照明控制系统软件设计
学生姓名李鑫
专业班级电子信息工程04级2
学号204401030222
院(系)电气信息工程学院
指导教师曹祥红
完成时间2008年6月10日
1主机程序
#include #include〈math.h> #include #include〈zlg7290。 H> #include〈LCD12864.H〉 #defineucharunsignedchar #defineuintunsignedint voidmsec(uintx); ucharrec_es(void); voidsent_es(ucharschar); sbitKEY_INT=P3^3;//键盘中断 sbitWARN=P3^4;//报警控制 uchardatakey_buf;//定义键值寄存器 ucharidataroom_disbuf[16]={”教室号: 000"}; ucharidataJSRS_disbuf[16]={”当前使用: 000"}; ucharidataGXDJ_disbuf[16]={"光线等级: 0”}; ucharidatatime_disbuf[16]={"00: 00: 00”}; ucharidataKDSJ_disbuf[16]={"00: 00"}; ucharidataGDSJ_disbuf[16]={”00: 00”}; uchardataZMKG; uchardataroom_buf[3]; uchardatacou1,cou2; longintdatacom1,com2,com3,com4; bitbdataflag1,flag2; ucharcodeZMK_disbuf[16]={”照明: 开"}; ucharcodeZMG_disbuf[16]={"照明: 关”}; main() {msec(1000);//开机延时 //EN=0;//上电液晶屏禁能 EA=1;//开所有中断 ET0=1;//开定时器0 TMOD=0x21;//设置T1为方式2 TH1=0Xfa;//设置波特率为9600b/s TL1=0Xfa; TH0=0x3c; TL0=0xb0; SCON=0xd0;//设置串口位方式3 PCON=0X80;//波特率加倍 RI=0; TI=0; cou2=0; flag2=0; //========开机动态提示========== LCD_Ini();//LCD初始化 WARN=0;//系统启动提示 msec(200); WARN=1; EX1=1;//开外部中断1 TR0=1; TR1=1;//定时器1开始计数 //============================== //====LCD初始化及开机提示======= LCD_Wrhz(0,"郑州轻工业学院”);//系统加载完毕界 LCD_Wrhz(16,"毕业设计”); LCD_Wrhz(8,”教学楼智能照明”); LCD_Wrhz(24,”控制系统"); KEY_INT=1; while(KEY_INT); key_buf=0; while (1) { LCD_Wrchar(0,"1.查看教室状态”);//显示主菜单 LCD_Wrchar(16,"2。 设置"); LCD_Wrchar(8,”3。 控制"); LCD_Wrchar(24,"4.关于本系统”); msec(10); if(flag2) {sent_es(5); msec(10); sent_es(time_disbuf[0]); msec (2); sent_es(time_disbuf[1]); msec (2); sent_es(time_disbuf[3]); msec (2); sent_es(time_disbuf[4]); flag2=0; } if(key_buf==1) {LCD_WrCommand(0x01);//清屏并归零地址计数器 msec (1); LCD_Wrchar(16,"输入教室号"); LCD_Wrchar(8,room_disbuf); key_buf=0; flag1=0; while(key_buf! =15) {cou1=7; while(key_buf! =11&&key_buf! =15) {if(flag1&&key_buf! =11&&key_buf! =15) {if(key_buf〈10&&key_buf>0) {room_disbuf[cou1]=key_buf+0x30; room_buf[cou1—7]=key_buf; } if(key_buf==13) {room_buf[cou1—7]=0; room_disbuf[cou1]=0x30; } if(cou1==9) cou1=7; elsecou1++; LCD_Wrchar(8,room_disbuf); msec(50); //key_buf=0; flag1=0; } } if(key_buf==11) {sent_es (1);//发读教室状态指令 msec(10);//等待从机判断 sent_es(room_buf[0]);//发送教室号 msec (2); sent_es(room_buf[1]); msec (2); sent_es(room_buf[2]); //msec(20);//等待从机判断教室号 com1=0; while(com1〈1000&&RI==0) {com1++; } if(RI==1) { JSRS_disbuf[9]=rec_es()+0x30; JSRS_disbuf[10]=rec_es()+0x30; JSRS_disbuf[11]=rec_es()+0x30; GXDJ_disbuf[9]=rec_es()+0x30; ZMKG=rec_es(); LCD_WrCommand(0x01);//清屏并归零地址计数器 msec (1); LCD_Wrchar(0,room_disbuf);//显示主菜单 LCD_Wrchar(16,JSRS_disbuf); LCD_Wrchar(8,GXDJ_disbuf); if(ZMKG==1) {LCD_Wrchar(24,"照明: 开”);} elseLCD_Wrchar(24,"照明: 关"); } else {LCD_WrCommand(0x01);//清屏并归零地址计数器 msec (1); LCD_Wrchar(0,"通信失败");//显示通信失败 LCD_Wrchar(16,”该从机不存在或者”); LCD_Wrchar(8,”连接故障"); } while(key_buf! =15); } } }//选功能菜单1 if(key_buf==2) {LCD_WrCommand(0x01);//清屏并归零地址计数器 msec (1); LCD_Wrchar(0,”1.当前时间设定”); LCD_Wrchar(16,"2。 开灯时间设定"); LCD_Wrchar(8,"3.关灯时间设定”); key_buf=0; while(key_buf! =15&&key_buf! =11) { if(key_buf==1) {LCD_WrCommand(0x01);//清屏并归零地址计数器 msec (1); LCD_Wrchar(0,"时间设定”);//显示通信失败 LCD_Wrchar(16,time_disbuf); cou1=0; key_buf=0; flag1=0; while(key_buf! =11&&key_buf! =15) {if(flag1&&key_buf! =11&&key_buf! =15) {if(key_buf<10&&key_buf>0) {time_disbuf[cou1]=key_buf+0x30; } if(key_buf==13) { time_disbuf[cou1]=0x30; } if(cou1==4) cou1=0; elseif((cou1〉=0&&cou1〈1)||(cou1〉=3&&cou1〈4)) cou1++; elseif(cou1==1) cou1+=2; LCD_Wrchar(16,time_disbuf); msec(50); //key_buf=0; flag1=0; } if(key_buf==11) {sent_es(5); msec(10); sent_es(time_disbuf[0]); msec (2); sent_es(time_disbuf[1]); msec (2); sent_es(time_disbuf[3]); msec (2); sent_es(time_disbuf[4]); flag2=0; } } }//功能2子功能1 if(key_buf==2) {LCD_WrCommand(0x01);//清屏并归零地址计数器 msec (1); LCD_Wrchar(0,”开灯时间设定”);//显示通信失败 LCD_Wrchar(16,KDSJ_disbuf); cou1=0; key_buf=0; flag1=0; while(key_buf! =11&&key_buf! =15) {if(flag1&&key_buf! =11&&key_buf! =15) {if(key_buf<10&&key_buf>0) {KDSJ_disbuf[cou1]=key_buf+0x30; } if(key_buf==13) { KDSJ_disbuf[cou1]=0x30; } if(cou1==4) cou1=0; elseif((cou1〉=0&&cou1<1)||(cou1>=3&&cou1<4)) cou1++; elseif(cou1==1) cou1+=2; LCD_Wrchar(16,KDSJ_disbuf); msec(50); //key_buf=0; flag1=0; } } }//功能2子功能2 if(key_buf==3) {LCD_WrCommand(0x01);//清屏并归零地址计数器 msec (1); LCD_Wrchar(0,”关灯时间设定");//显示通信失败 LCD_Wrchar(16,GDSJ_disbuf); cou1=0; key_buf=0; flag1=0; while(key_buf! =11&&key_buf! =15) {if(flag1&&key_buf! =11&&key_buf! =15) {if(key_buf〈10&&key_buf>0) {GDSJ_disbuf[cou1]=key_buf+0x30; } if(key_buf==13) { GDSJ_disbuf[cou1]=0x30; } if(cou1==4) cou1=0; elseif((cou1>=0&&cou1〈1)||(cou1>=3&&cou1〈4)) cou1++; elseif(cou1==1) cou1+=2; LCD_Wrchar(16,GDSJ_disbuf); msec(50); //key_buf=0; flag1=0; } } }//功能2子功能3 } }//功能菜单2 if(key_buf==3) {LCD_WrCommand(0x01);//清屏并归零地址计数器 msec (1); LCD_Wrchar(0,”1.允许照明");//显示通信失败 LCD_Wrchar(16,"2.照明关闭”); LCD_Wrchar(8,"3.所有分机复位”); key_buf=0; while(key_buf! =15) { if(key_buf==1) {sent_es (2);//发读教室状态指令 msec(10);//等待从机判断 LCD_WrCommand(0x01);//清屏并归零地址计数器 msec (1); LCD_Wrchar(0,”提示: ");//操作提示 LCD_Wrchar(16,”指令已发送"); LCD_Wrchar(8,"全局照明允许开"); while(key_buf! =15); key_buf=0; } if(key_buf==2) {sent_es(3);//发读教室状态指令 msec(10);//等待从机判断 LCD_WrCommand(0x01);//清屏并归零地址计数器 msec (1); LCD_Wrchar(0,”提示: ”);//操作提示 LCD_Wrchar(16,”指令已发送"); LCD_Wrchar(8,"全局照明允许关”); while(key_buf! =15); key_buf=0; } if(key_buf==3) {sent_es(4);//发读教室状态指令 msec(10);//等待从机判断 LCD_WrCommand(0x01);//清屏并归零地址计数器 msec (1); LCD_Wrchar(0,”提示: ");//操作提示 LCD_Wrchar(16,”指令已发送”); LCD_Wrchar(8,"所有分机已复位"); while(key_buf! =15); key_buf=0; } } }//功能菜单3 if(key_buf==4) {LCD_WrCommand(0x01);//清屏并归零地址计数器 msec (1); LCD_Wrchar(0,"本系统为2008");//显示通信失败 LCD_Wrchar(16,"年郑州轻工业学院"); LCD_Wrchar(8,"毕业设计题目: "); LCD_Wrchar(24,”教学楼智能照明控”); while(key_buf! =15) {if(key_buf==14) {LCD_WrCommand(0x01);//清屏并归零地址计数器 msec (1); LCD_Wrchar(0,”本系统为2008”);//显示通信失败 LCD_Wrchar(16,"年郑州轻工业学院"); LCD_Wrchar(8,”毕业设计题目: "); LCD_Wrchar(24,”教学楼智能智能控"); key_buf=0; } if(key_buf==16) {LCD_WrCommand(0x01);//清屏并归零地址计数器 msec (1); LCD_Wrchar(0,”制系统。 ");//显示通信失败 LCD_Wrchar(16,"学生: 李鑫”); LCD_Wrchar(8,""); LCD_Wrchar(24,"”); key_buf=0; } } }//功能菜单4 if(key_buf==12) {LCD_WrCommand(0x01);//清屏并归零地址计数器 msec (1); LCD_Wrchar(0,”当前时间: "); key_buf=0; while(key_buf==0) {LCD_Wrchar(8,time_disbuf); msec(10); if(flag2) {sent_es(5); msec(10); sent_es(time_disbuf[0]); msec (2); sent_es(time_disbuf[1]); msec (2); sent_es(time_disbuf[3]); msec (2); sent_es(time_disbuf[4]); flag2=0; } } }//显示时间子功能 } //=============================================================== key_buf=0; }//main //==================延时子程序==================== //说明: 函数传递的数值即延时时间,单位为ms //创建日期: 2008。 5.10 //入口参数: X //================================================ voidmsec(uintx) { unsignedchark; while(x—-) { for(k=0;k<125;k++); } } //==========发送串行数据============ voidsent_es(ucharschar) { SBUF=schar; while(TI==0&&key_buf! =15); TI=0; } //================================== //===========接收串行数据=========== ucharrec_es(void) {ucharrecnum; while(RI==0&&key_buf! =15); recnum=SBUF; RI=0; returnrecnum; } //================================== voidgetkey(void)interrupt2//取键值服务程序 {TR0=0; EX1=0; if(TR0==0) { key_buf=ZLG7290_GetKey(); } WARN=0; msec(10); WARN=1; EX1=1; flag1=1; TR0=1; } //================================== voidtime0(void)interrupt1 {TH0=0x3c; TL0=0xb0; cou2++; if(cou2==20) {cou2=0; if(time_disbuf[7]==0x39) {time_disbuf[7]=0x30; if(time_disbuf[6]==0x35) {time_disbuf[6]=0x30; if(time_disbuf[4]==0x39) {time_disbuf[4]=0x30; if(time_disbuf[3]==0x35) {time_disbuf[3]=0x30; if(time_disbuf[1]==0x39) {time_disbuf[1]=0x30; time_disbuf[0]++; } elseif(time_disbuf[1]==0x33&&time_disbuf[0]==0x32) {time_disbuf[0]=0x30; time_disbuf[1]=0x30; } elsetime_disbuf[1]++; } elsetime_disbuf[3]++; } elsetime_disbuf[4]++; flag2=1; com2=(time_disbuf[0]-0x30)*1000+(time_disbuf[1]—0x30)*100+(time_disbuf[3]—0x30)*10+time_disbuf[4]—0x30;com3=(KDSJ_disbuf[0]-0x30)*1000+(KDSJ_disbuf[1]—0x30)*100+(KDSJ_disbuf[3]—0x30)*10+KDSJ_disbuf[4]-0x30;com4=(GDSJ_disbuf[0]-0x30)*1000+(GDSJ_disbuf[1]-0x30)*100+(GDSJ_disbuf[3]-0x30)*10+GDSJ_disbuf[4]-0x30; if(com2=com3) {sent_es (2);} if(com2=com4) {sent_es(3);} } elsetime_disbuf[6]++; } elsetime_disbuf[7]++; } } 2从机主程序 #include"reg52。 h” #include"math.h” #include"VIIC_C51。 h" #defineucharunsignedchar #defineuintunsignedint voidled_scan(void);//函数声明段 voiddelay_ms(uintx); voidkey_scan(void); voidad_convert(ucharchannel); voidpass_dis(uchar*dis); voidsent_es(ucharschar); ucharrec_es(void); voidtime_dis(void); sbitkeyin=P1^7; sbitadc_flag=P3^2; sbitbuzzer=P3^4; sbitrelay=P3^5; sbitHW1=P1^2; sbitHW2=P1^3; uchardatadis_buf[6]={0x14,0x14,0x14,0x14,0x14,0x14};//定义显示缓冲区 uchardatatime_buf[6]={0x19,0x17,0,0,0,0};//时间缓冲区 uchardatagx_buf[6]={0x20,0x17,0x17,0x17,0x17,0};//时间缓冲区 uchardatars_buf[6]={0x1b,0x18,0x17,0,0,0};//时间缓冲区 uchardataroom_buf[3]; uchardataJSRS;//教室人数 uchardataGXDJ;//光线等级 uchardatawink_con;//闪烁控制位 uchardatakey_buf;//定义键值缓冲
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 智能 照明 控制系统 源代码