智能照明控制系统源代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

相关文档
最新文档