单片机交流
登录
直播中
徐伟
7年用户
921经验值
私信
关注
[问答]
如何对基于51单片机的教室智能照明灯控制系统进行仿真?
开启该帖子的消息推送
控制系统
照明灯
基于51
单片机
的教室智能照明灯控制系统是由哪些部分组成的?
如何对基于51单片机的教室智能照明灯控制系统进行
仿真
?
回帖
(1)
李海玮
2021-7-16 16:33:11
方案框图:
原理图:
仿真图:
系统控制模块的硬件构成及简介
系统控制单元是以AT89S51单片机主控模块为核心,其它外围威廉希尔官方网站 主要包括:环境光采集威廉希尔官方网站 、时钟模块、热释红外传感器模块、看门狗模块、按键威廉希尔官方网站 、EEPROM存储模块、超时报警模块、数码管显示模块。
环境光模块采用光敏三极管来检测环境光的强度,有光照时,电阻减小,随着光照强度的减弱,电阻逐渐增大,把光信号转化成电信号,实现对光强度的检测。
人体存在传感器模块采用HP-208是基于红外线技术的智能产品,实现对人体存在的检测。
硬件时钟模块采用具有充电能力的低功耗,具有临时性存放数据的RAM寄存器的实时时钟芯片DS1302。该威廉希尔官方网站 的接口简单、价格低廉、使用方便,被广泛的使用。
系统数据存储及故障保护部分由X5045组成,X5045是一种串行通讯的512字节EEPROM,同时兼有看门狗和电源监控功能键盘模块。
2.2系统控制的主要硬件威廉希尔官方网站
考虑到本系统安装时受环境影响因素比较多,且教室控制设备中的人体存在传感器、光敏三极管等经常会因环境情形变化而不稳定,所以在设计过程中,电子元器件的选用、线路布置和设备的安放要充分考虑到抗干扰问题。
2.2.1系统主控威廉希尔官方网站
本系统的主控模块采用AT89S51作为主控芯片,它是一种低功耗,8位CMOS工艺处理器,具有8K在线可编程Flash存储器,片内的Flash可多次编程,为在线编程提供了方便。片内有128字节的RAM,4KB的EEPROM,由于合理的安排使用片内RAM空间,所以没有片外扩展的RAM,使威廉希尔官方网站 结构简洁。该芯片的主要特征见如表2.1:
表2.1 AT89S51主要特征
AT89S51引脚 外围器件引脚 说明
P0. 0-P0. 7 ULN2803 数码管段码驱动接口
P2. 0-P2. 7 PNP-9012基极 数码管段码驱动接口
P1. 0 X5045SI X5045串行输入端
P1. 1 X5045SCK X5045串行时钟端
P1. 2 X5045CS X5045片选端
P1. 3 X504550 X5045串行输出端
P1. 4 工作状态指示灯
P1. 5 DS1302CLK DS1302时钟线
P1.6 DS1302I/O DS1302数据线
P1. 7 DS1302RST DS1302复位线
P3. 0- P3. 1 数据采集输入端
P3. 3 人体存在传感器输出信号端
P3. 4 超时报警信号输入端
P3. 7 光敏三极管输入信号端
单片机最小系统如图2-2所示:
图2-2 单片机最小系统
(1) 40(Vcc)20(GND)脚间的电压应有5V 。
(2) 18、19脚分别与20脚间有1.7―2.5V电压
(3) 9(RST)脚与GND间电压基本为0 。
(4) 31脚 (EA)与20引脚(GND)间电压为5V 。
部分代码
#include 《reg51.h》#include 《intrins.h》#define uchar unsigned char#define uint unsigned intuchar time_data[7];uchar code write_add[7]={0x8c,0x8a,0x88,0x86,0x84,0x82,0x80}; //数据的地址uchar code read_add[7]={0x8d,0x8b,0x89,0x87,0x85,0x83,0x81};uchar code table1[;uchar code table2[;uchar code table3[; //清屏内容uchar code table4[;uchar code table5[;uchar code table6[;uchar code table7[;uchar code table8[;uchar code table9[;uchar code table0[;bit Adjust; //调节标志位,=1表示进入调节模式,=0是正常模式bit Auto_flg; //自动模式标志位,=1表示手动模式,=0是自动模式***it rs=P1^0; //LCD1602***it rw=P1^1; //LCD1602***it e=P1^2; //LCD1602***it sck=P2^5; //时钟端口***it io=P2^6; //时钟端口***it rst=P2^7; //时钟端口***it SELT =P1^6; //选择键***it ENTER=P1^7; //确认键***it UP =P3^0; //加键***it DOWN =P3^1; //减键***it MODE =P3^2; //切换按键接口***it SWITCH=P3^3; //手动开关***it AUTO_LED=P1^3; //自动模式灯接口***it HAND_LED=P1^4; //手动灯接口***it LAMP1=P3^4; //灯接口***it LAMP2=P3^5; //灯接口***it LAMP3=P3^6; //灯接口***it LAMP4=P3^7; //灯接口***it LIGHT1=P2^0; //光线检测端口***it IN1=P2^2;***it OUT1=P2^1;***it DQ=P1^5; //温度数据口uchar Select_num; //选择按键按下次数uchar Enter_num; //确认按键按下次数uchar Switch_num; //手动开关按键按下次数float Year,Month,Day,Hour,Minute,Second; //时间设置值uchar Week; float Hour_H,Minute_H,Second_H; //设置开始时间float Hour_L,Minute_L,Second_L; //设置结束时间int Value1; //人数uchar IN1_flag=0;uchar OUT1_flag=0;uint Count; //T0定时器中断计数次数uchar Miao;int temperature; //全局变量 温度void read_rtc();/**************************************************LCD1602显示*******************************************************************/void delay1(uint z) //延时函数{ uint x,y; for(x=z;x》0;x--) for(y=10;y》0;y--);}void write_com(uchar com) //写指令函数{ rw=0; delay1(5); rs=0; delay1(5); e=1; delay1(5); P0=com; delay1(5); e=0; delay1(5); }void write_date(uchar date) //写数据函数{ rw=0; delay1(5); rs=1; delay1(5); e=1; delay1(5); P0=date; delay1(5); e=0; delay1(5); }void init() //初始化函数{ uchar num; Year=17; Month=1; Day=1; Hour=15; Minute=30; Second=50; Week=1; Hour_H=22; Minute_H=0; Second_H=0; Hour_L=18; Minute_L=0; Second_L=0; e=0; // 时序表e初始为0 write_com(0x38); //设置16*2显示,5*7点阵,8位数据接口 write_com(0x0c); //设置光标 write_com(0x06); //光标自动加1,光标输入方式 write_com(0x01); //清屏 write_com(0x80); //设置初始显示位置 for(num=0;num《16;num++) { write_date(table1[num]); delay1(5); } write_com(0x80+0x40); for(num=0;num《16;num++) { write_date(table2[num]); delay1(5); } }void SetTime_dispaly(uchar add,uchar dat) //第一个:参数的地址,第二个:参数的内容{ uchar shi,ge; shi=dat/10; //把十位提取出来 ge=dat%10; //把个位提取出来 write_com(add); //要写的地址 write_date(0x30+shi); //十位的内容 1602字符库 write_date(0x30+ge); //个位的内容 1602字符库}void Week_dispaly(uchar add,uchar dat) //第一个:参数的地址,第二个:参数的内容{ write_com(add); //要写的地址 write_date(0x30+dat); //十位的内容 1602字符库}void Date_dispaly(uchar add,uchar dat) //第一个:参数的地址,第二个:参数的内容{ uchar shi,ge; shi=dat/16; //把十位提取出来 ge=dat%16; //把个位提取出来 write_com(add+3); //要写的地址 write_date(0x30+shi); //十位的内容 1602字符库 write_date(0x30+ge); //个位的内容 1602字符库 } 。
.
方案框图:
原理图:
仿真图:
系统控制模块的硬件构成及简介
系统控制单元是以AT89S51单片机主控模块为核心,其它外围威廉希尔官方网站 主要包括:环境光采集威廉希尔官方网站 、时钟模块、热释红外传感器模块、看门狗模块、按键威廉希尔官方网站 、EEPROM存储模块、超时报警模块、数码管显示模块。
环境光模块采用光敏三极管来检测环境光的强度,有光照时,电阻减小,随着光照强度的减弱,电阻逐渐增大,把光信号转化成电信号,实现对光强度的检测。
人体存在传感器模块采用HP-208是基于红外线技术的智能产品,实现对人体存在的检测。
硬件时钟模块采用具有充电能力的低功耗,具有临时性存放数据的RAM寄存器的实时时钟芯片DS1302。该威廉希尔官方网站 的接口简单、价格低廉、使用方便,被广泛的使用。
系统数据存储及故障保护部分由X5045组成,X5045是一种串行通讯的512字节EEPROM,同时兼有看门狗和电源监控功能键盘模块。
2.2系统控制的主要硬件威廉希尔官方网站
考虑到本系统安装时受环境影响因素比较多,且教室控制设备中的人体存在传感器、光敏三极管等经常会因环境情形变化而不稳定,所以在设计过程中,电子元器件的选用、线路布置和设备的安放要充分考虑到抗干扰问题。
2.2.1系统主控威廉希尔官方网站
本系统的主控模块采用AT89S51作为主控芯片,它是一种低功耗,8位CMOS工艺处理器,具有8K在线可编程Flash存储器,片内的Flash可多次编程,为在线编程提供了方便。片内有128字节的RAM,4KB的EEPROM,由于合理的安排使用片内RAM空间,所以没有片外扩展的RAM,使威廉希尔官方网站 结构简洁。该芯片的主要特征见如表2.1:
表2.1 AT89S51主要特征
AT89S51引脚 外围器件引脚 说明
P0. 0-P0. 7 ULN2803 数码管段码驱动接口
P2. 0-P2. 7 PNP-9012基极 数码管段码驱动接口
P1. 0 X5045SI X5045串行输入端
P1. 1 X5045SCK X5045串行时钟端
P1. 2 X5045CS X5045片选端
P1. 3 X504550 X5045串行输出端
P1. 4 工作状态指示灯
P1. 5 DS1302CLK DS1302时钟线
P1.6 DS1302I/O DS1302数据线
P1. 7 DS1302RST DS1302复位线
P3. 0- P3. 1 数据采集输入端
P3. 3 人体存在传感器输出信号端
P3. 4 超时报警信号输入端
P3. 7 光敏三极管输入信号端
单片机最小系统如图2-2所示:
图2-2 单片机最小系统
(1) 40(Vcc)20(GND)脚间的电压应有5V 。
(2) 18、19脚分别与20脚间有1.7―2.5V电压
(3) 9(RST)脚与GND间电压基本为0 。
(4) 31脚 (EA)与20引脚(GND)间电压为5V 。
部分代码
#include 《reg51.h》#include 《intrins.h》#define uchar unsigned char#define uint unsigned intuchar time_data[7];uchar code write_add[7]={0x8c,0x8a,0x88,0x86,0x84,0x82,0x80}; //数据的地址uchar code read_add[7]={0x8d,0x8b,0x89,0x87,0x85,0x83,0x81};uchar code table1[;uchar code table2[;uchar code table3[; //清屏内容uchar code table4[;uchar code table5[;uchar code table6[;uchar code table7[;uchar code table8[;uchar code table9[;uchar code table0[;bit Adjust; //调节标志位,=1表示进入调节模式,=0是正常模式bit Auto_flg; //自动模式标志位,=1表示手动模式,=0是自动模式***it rs=P1^0; //LCD1602***it rw=P1^1; //LCD1602***it e=P1^2; //LCD1602***it sck=P2^5; //时钟端口***it io=P2^6; //时钟端口***it rst=P2^7; //时钟端口***it SELT =P1^6; //选择键***it ENTER=P1^7; //确认键***it UP =P3^0; //加键***it DOWN =P3^1; //减键***it MODE =P3^2; //切换按键接口***it SWITCH=P3^3; //手动开关***it AUTO_LED=P1^3; //自动模式灯接口***it HAND_LED=P1^4; //手动灯接口***it LAMP1=P3^4; //灯接口***it LAMP2=P3^5; //灯接口***it LAMP3=P3^6; //灯接口***it LAMP4=P3^7; //灯接口***it LIGHT1=P2^0; //光线检测端口***it IN1=P2^2;***it OUT1=P2^1;***it DQ=P1^5; //温度数据口uchar Select_num; //选择按键按下次数uchar Enter_num; //确认按键按下次数uchar Switch_num; //手动开关按键按下次数float Year,Month,Day,Hour,Minute,Second; //时间设置值uchar Week; float Hour_H,Minute_H,Second_H; //设置开始时间float Hour_L,Minute_L,Second_L; //设置结束时间int Value1; //人数uchar IN1_flag=0;uchar OUT1_flag=0;uint Count; //T0定时器中断计数次数uchar Miao;int temperature; //全局变量 温度void read_rtc();/**************************************************LCD1602显示*******************************************************************/void delay1(uint z) //延时函数{ uint x,y; for(x=z;x》0;x--) for(y=10;y》0;y--);}void write_com(uchar com) //写指令函数{ rw=0; delay1(5); rs=0; delay1(5); e=1; delay1(5); P0=com; delay1(5); e=0; delay1(5); }void write_date(uchar date) //写数据函数{ rw=0; delay1(5); rs=1; delay1(5); e=1; delay1(5); P0=date; delay1(5); e=0; delay1(5); }void init() //初始化函数{ uchar num; Year=17; Month=1; Day=1; Hour=15; Minute=30; Second=50; Week=1; Hour_H=22; Minute_H=0; Second_H=0; Hour_L=18; Minute_L=0; Second_L=0; e=0; // 时序表e初始为0 write_com(0x38); //设置16*2显示,5*7点阵,8位数据接口 write_com(0x0c); //设置光标 write_com(0x06); //光标自动加1,光标输入方式 write_com(0x01); //清屏 write_com(0x80); //设置初始显示位置 for(num=0;num《16;num++) { write_date(table1[num]); delay1(5); } write_com(0x80+0x40); for(num=0;num《16;num++) { write_date(table2[num]); delay1(5); } }void SetTime_dispaly(uchar add,uchar dat) //第一个:参数的地址,第二个:参数的内容{ uchar shi,ge; shi=dat/10; //把十位提取出来 ge=dat%10; //把个位提取出来 write_com(add); //要写的地址 write_date(0x30+shi); //十位的内容 1602字符库 write_date(0x30+ge); //个位的内容 1602字符库}void Week_dispaly(uchar add,uchar dat) //第一个:参数的地址,第二个:参数的内容{ write_com(add); //要写的地址 write_date(0x30+dat); //十位的内容 1602字符库}void Date_dispaly(uchar add,uchar dat) //第一个:参数的地址,第二个:参数的内容{ uchar shi,ge; shi=dat/16; //把十位提取出来 ge=dat%16; //把个位提取出来 write_com(add+3); //要写的地址 write_date(0x30+shi); //十位的内容 1602字符库 write_date(0x30+ge); //个位的内容 1602字符库 } 。
.
举报
更多回帖
rotate(-90deg);
回复
相关问答
控制系统
照明灯
怎样去设计一种基于
51
单片机
的
教室
智能
照明
控制系统
?
2021-07-19
1326
如何设计室内
智能
照明
控制系统
威廉希尔官方网站 ?
2019-10-15
2166
怎样去设计一种基于
51
单片机
的
智能
加湿器
控制系统
2021-11-02
1831
基于STM32的蓝牙
智能
照明灯
求指教
2019-04-10
1616
萌新求助,求一种基于STM32的
智能
灯
控制系统
2021-11-08
1061
如何设计并制作一个高效可控白光LED
照明灯
及其检测装置?
2022-02-11
935
如何去选择微波探测延时
照明灯
的元器件?
2021-06-02
1707
声控延时
照明灯
的原理是什么?
2019-11-11
1902
真心求助,关于用
单片机
做声控灯。
2012-05-06
5625
如何去实现一种基于STM32
单片机
家居
照明
系统
的
智能
控制
设计呢
2021-12-17
1750
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
英国威廉希尔公司网站
william hill官网 版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分