智能照明控制系统源代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
附录4
软件设计源程序
题目教学楼智能照明控制系统软件设计
学生姓名李鑫
专业班级电子信息工程04级2
学号 2
院(系)电气信息工程学院
指导教师曹祥红
完成时间 2008年 6月 10 日
1主机程序
#include
#include
#include
#include
#include
#define uchar unsigned char
#define uint unsigned int
void msec(uint x);
uchar rec_es(void);
void sent_es(uchar schar);
sbit KEY_INT = P3^3; //键盘中断
sbit WARN = P3^4; //报警控制
uchar data key_buf; //定义键值寄存器
uchar idata room_disbuf[16]={"教室号:000 "}; uchar idata JSRS_disbuf[16]={"当前使用:000 "}; uchar idata GXDJ_disbuf[16]={"光线等级:0 "}; uchar idata time_disbuf[16]={"00:00:00 "}; uchar idata KDSJ_disbuf[16]={"00:00 "}; uchar idata GDSJ_disbuf[16]={"00:00 "};
uchar data ZMKG;
uchar data room_buf[3];
uchar data cou1,cou2;
long int data com1,com2,com3,com4;
bit bdata flag1,flag2;
uchar code ZMK_disbuf[16]={"照明: 开"}; uchar code ZMG_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;
else cou1++;
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;