智能照明控制系统源代码Word文件下载.docx
《智能照明控制系统源代码Word文件下载.docx》由会员分享,可在线阅读,更多相关《智能照明控制系统源代码Word文件下载.docx(30页珍藏版)》请在冰豆网上搜索。
ucharidataGXDJ_disbuf[16]={"
光线等级:
0"
ucharidatatime_disbuf[16]={"
00:
00"
ucharidataKDSJ_disbuf[16]={"
ucharidataGDSJ_disbuf[16]={"
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);
sent_es(time_disbuf[0]);
msec
(2);
sent_es(time_disbuf[1]);
sent_es(time_disbuf[3]);
sent_es(time_disbuf[4]);
}
if(key_buf==1)
{LCD_WrCommand(0x01);
//清屏并归零地址计数器
msec
(1);
输入教室号"
LCD_Wrchar(8,room_disbuf);
flag1=0;
while(key_buf!
=15)
{cou1=7;
=11&
&
key_buf!
{if(flag1&
{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++;
msec(50);
//key_buf=0;
if(key_buf==11)
{sent_es
(1);
//发读教室状态指令
//等待从机判断
sent_es(room_buf[0]);
//发送教室号
sent_es(room_buf[1]);
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);
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);
LCD_Wrchar(0,"
通信失败"
//显示通信失败
该从机不存在或者"
LCD_Wrchar(8,"
连接故障"
=15);
}//选功能菜单1
if(key_buf==2)
1.当前时间设定"
2.开灯时间设定"
3.关灯时间设定"
=15&
=11)
时间设定"
LCD_Wrchar(16,time_disbuf);
cou1=0;
{time_disbuf[cou1]=key_buf+0x30;
time_disbuf[cou1]=0x30;
if(cou1==4)
elseif((cou1>
=0&
cou1<
1)||(cou1>
=3&
4))
cou1++;
elseif(cou1==1)
cou1+=2;
}//功能2子功能1
开灯时间设定"
LCD_Wrchar(16,KDSJ_disbuf);
{KDSJ_disbuf[cou1]=key_buf+0x30;
KDSJ_disbuf[cou1]=0x30;
}//功能2子功能2
if(key_buf==3)
关灯时间设定"
LCD_Wrchar(16,GDSJ_disbuf);
{GDSJ_disbuf[cou1]=key_buf+0x30;
GDSJ_disbuf[cou1]=0x30;
}//功能2子功能3
}//功能菜单2
1.允许照明"
2.照明关闭"
3.所有分机复位"
=15)
{sent_es
(2);
提示:
"
//操作提示
指令已发送"
全局照明允许开"
{sent_es(3);
全局照明允许关"
{sent_es(4);
所有分机已复位"
}//功能菜单3
if(key_buf==4)
本系统为2008"
年郑州轻工业学院"
毕业设计题目:
"
教学楼智能照明控"
{if(key_buf==14)
教学楼智能智能控"
if(key_buf==16)
//清屏并归零地址计数器
制系统。
学生:
李鑫"
}//功能菜单4
if(key_buf==12)
当前时间:
while(key_buf==0)
{LCD_Wrchar(8,time_disbuf);
}//显示时间子功能
//===============================================================
}//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&
//==================================
//===========接收串行数据===========
ucharrec_es(void)
{ucharrecnum;
while(RI==0&
recnum=SBUF;
returnrecnum;
voidgetkey(void)interrupt2//取键值服务程序
{TR0=0;
EX1=0;
if(TR0==0)
key_buf=ZLG7290_GetKey();
flag1=1;
voidtime0(void)interrupt1
{TH0=0x3c;
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)
if(com2=com4)
}
elsetime_disbuf[6]++;
elsetime_disbuf[7]++;
2从机主程序
#include"
reg52.h"
math.h"
#include"
VIIC_C51.h"
voidled_scan(void);
//函数声明段
voiddelay_ms(uintx);
voidkey_scan(void);
voidad_convert(ucharchannel);
voidpass_dis(uchar*dis);
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};
uchardataJSRS;
//教室人数
uchardataGXDJ;
//光线等级
uchardatawink_con;
//闪烁控制位
//定义键值缓冲区
ucharda