智能照明控制系统源代码.docx

上传人:b****8 文档编号:9683769 上传时间:2023-05-20 格式:DOCX 页数:34 大小:21.47KB
下载 相关 举报
智能照明控制系统源代码.docx_第1页
第1页 / 共34页
智能照明控制系统源代码.docx_第2页
第2页 / 共34页
智能照明控制系统源代码.docx_第3页
第3页 / 共34页
智能照明控制系统源代码.docx_第4页
第4页 / 共34页
智能照明控制系统源代码.docx_第5页
第5页 / 共34页
智能照明控制系统源代码.docx_第6页
第6页 / 共34页
智能照明控制系统源代码.docx_第7页
第7页 / 共34页
智能照明控制系统源代码.docx_第8页
第8页 / 共34页
智能照明控制系统源代码.docx_第9页
第9页 / 共34页
智能照明控制系统源代码.docx_第10页
第10页 / 共34页
智能照明控制系统源代码.docx_第11页
第11页 / 共34页
智能照明控制系统源代码.docx_第12页
第12页 / 共34页
智能照明控制系统源代码.docx_第13页
第13页 / 共34页
智能照明控制系统源代码.docx_第14页
第14页 / 共34页
智能照明控制系统源代码.docx_第15页
第15页 / 共34页
智能照明控制系统源代码.docx_第16页
第16页 / 共34页
智能照明控制系统源代码.docx_第17页
第17页 / 共34页
智能照明控制系统源代码.docx_第18页
第18页 / 共34页
智能照明控制系统源代码.docx_第19页
第19页 / 共34页
智能照明控制系统源代码.docx_第20页
第20页 / 共34页
亲,该文档总共34页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

智能照明控制系统源代码.docx

《智能照明控制系统源代码.docx》由会员分享,可在线阅读,更多相关《智能照明控制系统源代码.docx(34页珍藏版)》请在冰点文库上搜索。

智能照明控制系统源代码.docx

智能照明控制系统源代码

附录4

 

软件设计源程序

 

题目教学楼智能照明控制系统软件设计

学生姓名李鑫

专业班级电子信息工程04级2

学号2

院(系)电气信息工程学院

指导教师曹祥红

完成时间2008年6月10日

1主机程序

#include

#include

#include

#include

#include

#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;//定义键值缓冲区

uchardatawink_speed;//

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2