智能红外遥控电风扇的软件设计.docx
- 文档编号:23600044
- 上传时间:2023-05-18
- 格式:DOCX
- 页数:37
- 大小:1.16MB
智能红外遥控电风扇的软件设计.docx
《智能红外遥控电风扇的软件设计.docx》由会员分享,可在线阅读,更多相关《智能红外遥控电风扇的软件设计.docx(37页珍藏版)》请在冰豆网上搜索。
智能红外遥控电风扇的软件设计
摘要
本设计是智能红外遥控电风扇的软件系统设计,要求在KEILC环境里编写代码、生成HEX文件,在PROTEUS环境里画出硬件电路图,并且将KEILC生成的HEX文件烧录到单片机里进行仿真。
尽管智能红外遥控电风扇硬件电路比较复杂,但是因为本设计是软件设计,因此在PROTEUS环境里仿真时,用一些简单器件来模拟红外遥控电风扇系统各个模块。
在PROTEUS环境里仿真时,以AT89C51型单片机为数据处理核心、以数字式温度传感器DS18B20为温度数据采集单元、以液晶显示屏LCD1602为温度数据显示单元;以两个开关分别模拟红外信息采集模块和光照度信息采集模块、以直流电动机模拟风扇模块、以电灯模拟照明模块。
关键字:
软件设计模拟代替KEILCPROTEUS仿真
Abstract
Thisdesignissoftwaresystemdesignofthesmartinfraredremotecontrolelectricfan.ThecodeandtheHEXfileisgeneratedintheKEILCsoftware.ThehardwarecircuitisdrawninthePROTEUSsoftware.Thehardwarecircuitiscomplex.Mydesignisthesoftwaresystemdesign.SoIusesomesimpledevicestoreplacemodulesofthesmartinfraredremotecontrolelectricfansystem.Forexample,IuseAT89C51fordataprocessingcoreandDS18B20fortemperaturedataacquisitionunitandLCD1602fortemperaturedatadisplayelementwhenIsimulatesoftwaresystemintheProteussoftware.IusetwoswitchesandelectromotorandelectricbulbinsteadofinfraredsignalacquisitionmoduleandlightinformationacquisitionmoduleandfanmoduleandlightingmoduletosimulatesoftwaresysteminthePROTEUSsoftware.
Keywords:
softwaredesigninsteadofKEILCPROTEUSsimulation
第三章软件流程图15
3.1软件总流程图15
3.2系统在光照度充足状态下工作流程图16
3.3系统在光照度不充足状态下工作流程图17
引言
当今社会,不管是国内还是海外,物联网越来越发达。
在这种大背景下,家用电器的智能化程度不断加深。
为适应企业的发展,为满足客户的需求,“如何使电风扇智能化”成了众多相关企业领导阶层关注的焦点,以便提高企业效益,提高用户满意度。
在此背景下,在海内外智能电风扇蓬勃发展。
智能电风扇之所以具备智能,是因为智能电风扇应用了数据处理器、传感器。
数据处理器分类很多,不同种类的处理器应用领域也不尽相同。
传感器的种类很多,智能电风扇多使用一种传感器,那么智能电风扇就多具备一种智能。
智能电风扇最起码使用的传感器是温度传感器,温度传感器能使电风扇具备根据温度实时地、自动地调节风扇风速档位的智能。
在国外,基于其他高级处理器的智能电风扇普及程度比较高。
比如美国,基于DSP和基于FPGA/CPLD处理器的智能电风扇应用很广泛。
DSP处理器处理数据的速度很快,使得智能电风扇“反应”很快。
在国内,单片机技术已经很成熟了,我国在传感器应用领域也取得不少进展。
因此在国内,智能电风扇发展和应用也很快。
智能电风扇在未来的发展是向更加人性化发展。
未来智能电风扇的功能将至少具备智能开关功能、智能调节风速功能、智能照明功能、智能显示功能。
所谓智能开关功能,就是指在电风扇初始化之后,能够根据周围环境里有无人来决定打开或者关闭电风扇系统;所谓智能调节风速功能,就是指电风扇能够根据周围环境温度实时地、自动地调节风扇风速档位;所谓智能照明功能,就是指电风扇能够根据周围环境的明暗情况来实时地、自动地打开或者关闭照明设备;所谓智能显示功能,就是指液晶显示屏能够自动地更新显示内容。
我国科技力量正在迅猛蓬勃发展,我想在未来我国在不仅仅智能电风扇领域取得很大进展,并且我国将在智能家电领域取得较大发展。
第一章本设计所用芯片的概述
1.1数字式温度传感器DS18B20的概述
1.1.1数字式温度传感器DS18B20的介绍
数字式温度传感器DSl820,显著的优点是:
(1)接线简洁,DS18B20只有三个管脚,可以与单片机直接连接;
(2)测量范围广、测量精度高,测量区间从-55℃一直到+125℃,测量精度是0.5℃;(3)响应时间短,从初始化到响应可在短时间内完成。
表1-1数字式温度传感器DS18B20管脚说明表
数字式温度传感器DS18B20管脚
GND
接地
DQ
输入/输出
VCC
接+5V电源
图1-1数字式温度传感器DS18B20框图
1.1.2数字式温度传感器DS18B20操作指令、工作过程及时序
数字式温度传感器DS18B20遵循单总线协议。
单总线协议流程是:
主机发送指令初始化DS18B20→主机发送DS18B20的ROM操作指令→主机发送DS18B20的存储器操作指令→DS18B20发出数据、主机接收数据。
初始化:
对数字式温度传感器DS18B20的所有处理均从初始化开始。
表1-2DS18B20操作指令说明表
ROM操作指令
存储器操作指令
READROM(读ROM)
33H
WRITESCRATCHPAD(写暂存器)
4EH
MATCHROM(匹配ROM)
55H
READSCRATCHPAD(读暂存器)
BEH
SKIPROM(跳过ROM)
CCH
COPYSCRATCHPAD(复制暂存器)
48H
SEARCHROM(搜索ROM)
F0H
CONVERTTEMPERSTURE(温度变换)
44H
ALARSEARCH(告警搜索)
ECH
REACLLEPROM(重新调出)
B8H
存储器操作指令
READPOWERSUPPLY(读电源)
B4H
数字式温度传感器DS18B20各个时序简述:
初始化时序:
单片机将总线从高电平拉低到低电平并且持续480—960us;紧接着单片机将总线从低电平拉高到高电平;单片机等待15—60us,如果单片机检测到18B20发出的低电平,那么初始化成功。
DS18B20发出低电平状态持续60—240us,然后发出高电平。
图1-2数字式温度传感器初始化时序示意图
写时序:
当单片机机将总线从高电平拉低到低电平时,DS18B20就产生写时间时序。
单片机必须在15us之内将所需要写入DS18B20的“位”送到总线上,并且持续15us等待DS18B20进行采样。
如果单片机是发出低电平,那么意味着给DS18B20写入的是“0”;如果单片机是发出高电平,那么意味着给DS18B20写入的是“1”。
另外要注意,给DS18B20多次写入“位”时,两次写入间隔大于等于1us。
读时序:
DS18B20把总线从高电平拉低到低电平,并且持续发出低电平15us,紧接着将总线从低电平拉高到高电平,这就告诉单片机DS18B20将要输出数据。
DS18B20发出的数据在之后的45us内有效,60—120us内DS18B20释放总线。
图1-3数字式温度传感器DS18B20写时序与读时序示意图
1.2ULN2003A的概述
1.2.1ULN2003A的介绍
ULN2003A可以接高电压、可以通过大电流。
ULN2003A显著特点是:
(1)工作状态下所接电压可以很高;
(2)工作状态下所通电流可以很大。
图1-4ULN2003A框图
表1-3ULN2003A管脚说明表
ULN2003芯片引脚介绍
引脚1到引脚7
脉冲信号输入端
引脚10到引脚16
脉冲信号输出端
引脚9
公共端
1.2.2ULN2003A的工作过程
图1-5ULN2003A内部结构图
如图所示,以管脚1和管脚16为例,管脚1输入高电平,管脚16输出低电平;管脚1输入低电平,管脚16输出高电平。
因为单片机不可以接高电压和大电流,因此单片机与负载之间接上ULN2003A就解决了电压和电流不匹配的难题。
简而言之,ULN2003A可以作为继电器使用。
1.3液晶显示器的概述
图1-6液晶显示器LCD1602框图
液晶显示屏幕LCD具有功耗低、体积小、显示内容丰富、超薄轻巧袖珍等等很多优点,在很多仪表显示或者低功耗显示系统中应用广泛。
本设计所使用的LCD1602可以显示两行字符,每行最多可以16个字符。
1.3.1LCD1602管脚介绍
表1-4LCD1602管脚说明表
LCD1602主要管脚
VSS
接地
VDD
接5V正电源,接正电源时对比度最弱,接地电源时对比度最高
V0
液晶显示器对比度调整端
RS
寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器
R/W
读写信号线,高电平时进行读操作,低电平时进行写操作
E
使能端,当E端由高电平跳变成低电平时,可以对其操作
D0~D7
数据线
1.3.2LCD1602相关指令介绍
表1-5LCD1602操作指令说明表
LCD1602相关指令
指令
RS
R/W
D7
D6
D5
D4
D3
D2
D1
D0
清显示
0
0
0
0
0
0
0
0
0
1
光标返回
0
0
0
0
0
0
0
0
1
*
置输入模式
0
0
0
0
0
0
0
1
I/D
S
显示开/关控制
0
0
0
0
0
0
1
D
C
B
1.3.31LCD1602时序介绍
表1-6LCD1602基本时序说明表
LCD1602基本操作时序
操作
输入
输出
RS
R/W
E
D0-D7
读状态
低电平
高电平
高电平
无
“D0-D7”状态字
写指令
低电平
低电平
高脉冲
指令码
无
读数据
高电平
高电平
高电平
无
“D0-D7”数据
写数据
高电平
低电平
高脉冲
数据
无
图1-7液晶显示器LCD1602读时序图
图1-8液晶显示器LCD1602写时序图
1.4AT89C51单片机的简述
AT89C51是一款耗能低、性能优良的微处理器。
需要注意的是P0口,使用时必须接上拉电阻,否则输不出高电平。
P3口除了作为I/O口之外,还有其他特殊功能:
包括串行通信功能;外部中断控制功能;计时计数控制功能;外部数据存储器数据读取或者写入控制功能。
1.4.1AT89C51管脚介绍
表1-7AT89C51管脚说明表
AT89C51引脚
VCC
电源正端输入,接+5V
VSS
电源地端
XTAL1
振荡器输入端
XTAL2
振荡器输出端
RST
复位输入端口
P0-P3
可编程通用I/O脚
图1-9AT89C51单片机框图
第二章硬件系统模拟
2.1智能红外遥控电风扇系统模块框图
智能红外遥控电风扇系统模块分为输入模块和输出模块。
输入模块分为:
温度信息采集模块,红外信息采集模块,光照度信息采集模块;输出模块分为:
温度显示模块,风扇模块,照明模块。
图2-1智能红外遥控电风扇系统模块框图
2.2硬件模块的模拟
表2-1硬件各模块替代器件说明表
硬件模块的模拟
在PROTEU仿真环境里用
DS18B20
模拟
温度采集模块
LCD1602
温度显示模块
直流电动机
风扇模块
电灯
照明模块
开关
红外信息采集模块
开关
光照度信息采集模块
2.2.1数字式温度传感器模拟温度采集模块
图2-2DS18B20与AT89C51连接示意图
2.2.2液晶显示屏模拟显示模块
图2-3LCD1602与AT89C51连接示意图
2.2.3直流电动机模拟风扇模块
图2-4直流电动机和ULN2003A与AT89C51连接示意图
2.2.4电灯模拟照明模块
图2-5电灯和ULN2003A与AT89C51连接示意图
2.2.5开关模拟红外信号采集模块
如果红外信息采集模块采集到红外信号,那么红外信息采集模块就向单片机发出低电平,反之就发出高电平。
红外信息采集模块与单片机之间是单向通信,红外信息采集模块只向单片机发数据,而单片机不向红外信息采集模块发送数据或者指令。
因此,可以用开关来模拟红外信息采集模块。
因此在设计软件系统时,只需定时检测红外信息采集模块所发送的电平是高电平还是低电平。
有红外,那么发送低电平
红外信息采集模块
单
片
机
无红外,那么发送高电平
图2-6红外信号采集模块与AT89C51通信示意图
表2-2开关模拟红外信息采集模块说明表
开关模拟红外信号采集模块
有无红外
电平高低
等价于
开关状态
电平高低
有
低电平
闭合
低电平
无
高电平
打开
高电平
2.2.6开关模拟光照度信息采集模块
如果周围环境光照度低于预先设定的门限值,那么光照度信息采集模块就向单片机发出低电平,反之发出高电平。
光照度信息采集模块与单片机之间是单向通信,光照度信息采集模块只向单片机发数据,而单片机不光照度信息采集模块发送数据或者指令。
因此,可以用开关来模拟光照度信息采集模块。
因此在设计软件系统时,只需定时检测光照度信息采集模块所发送的电平是高电平还是低电平。
光照度充足,发送低电平
光照度信息采集模块
单
片
机
光照度不充足,发送高电平
图2-7光照度信息采集模块与AT89C51通信示意图
表2-3开关模拟光照度信息采集采集模块说明表
开关模拟光照度信息采集模块
光是否充足
电平高低
等价于
开关状态
电平高低
充足
高电平
打开
高电平
不足
低电平电平
闭合
低电平
图2-8开关模拟红外信号采集模块和光照度信息采集模块示意图
2.3在PROTEUS仿真时硬件系统电路图
图2-9在PROTEUS仿真时硬件系统电路图
第三章软件流程图
软件流程图可以清楚的说明系统工作方式方法,可以说明软件代码编写者的编程思路。
软件流程图是很好的交流沟通工具。
软件流程图分为主程序流程图和子程序流程图。
由于本设计所涉及子程序,大部分是顺序执行。
因此子程序流程图比较简单,在此就没有罗列。
3.1软件总流程图
图3-1系统工作流程图
系统首先判断有无红外信号,其次判断光照度是否充足。
红外信号使系统具备了智能开关功能,光照度信息使系统实现了智能照明功能。
3.2系统在光照度充足状态下工作流程图
图3-2系统在光照度充足状态下工作流程图
通过改变计数器初值N,能改变红外信号消失后系统从工作状态进入检测红外信号状态的延时时间。
“计数器对X取余数等于0”,能使温度采集温度显示不太频繁,使液晶显示的温度值能够使人看清楚,也能改变系统对温度变化的灵敏度。
3.3系统在光照度不充足状态下工作流程图
图3-3系统在光照度不充足状态下工作流程图
第四章智能红外遥控电风扇系统仿真
当今社会,电子产品的更新周期越来越快,性价比越来越高。
这主要是因为电子产品设计可以在虚拟软件环境下仿真。
4.1仿真软件简介
4.1.1KEILC简介
KEILC是一款调试程序代码的软件。
程序代码可以只由C语言编写;程序代码也可以只由汇编语言编写;程序代码也可以由C语言和汇编语言共同编写。
注意,C语言家族很大很多,KEILC使用的C语言是C语言家族的一个分支。
在做本设计时,我使用的版本是KEILUVISION4。
KEILC的使用方法是点击KEILC软件;点击PROJECT打开下拉菜单,点击NEWVISIONPROJECT,创建工程,然后弹出一个窗口选择单片机型号;点击FILE打开下拉菜单,点击NEW,也可以使用CTRL+N来快捷建立新文件;然后编辑代码,也可以将编辑在.TXT文件里的代码复制粘贴到代码编辑器里;保存文件,如果源代码是用C语言编写而成的,那就以.C为后缀,如果源代码是用汇编语言编写而成的,那就以.ASM为后缀;点击TARGETOPTION,弹出一个窗口,点击OUTPUT,点击CREATHEX;点击BUILDTARGETFILES。
如果代码没有错误,那就可以生成目标文件;如果代码有错误,那么KEILC会在BUILDOUTPUT窗口给出提示信息。
点击错误提示信息,鼠标光标就会选中有错误的行。
需要注意的是,在创建工程时一定要选择硬件电路里所用的单片机,否则在仿真时调不出想要的结果。
4.1.2PROTEUS简介
PROTEUS是一款功能强大、性能卓越的电子虚拟仿真软件。
这款仿真软件易学易用,入门很容易,是电子行业人士的得力助手。
虽然PROTEUS入门容易,但是想要精通PROTEUS却很难。
在PROTEUS里,可以自己建库、自己建立元器件。
在使用PROTEUS设计时,一开始就要注意合理布局,不要等到最后才调整布局。
如果连线复杂,可以用“总线”加“标号”的接线方式来简化。
仿真时,第一步先将源代码编辑到KEILC中,然后编译生成.HEX文件;第二步在PROTEUS里打开需要被仿真的.DSN文件,然后点击单片机,于是PROTEUS就弹出一个窗口;在这个窗口里点击添加.HEX文件,将.HEX文件烧录到单片机里;最后,点击左下角的运行快捷键,即可看到硬件在受到软件“激励”后所做出的“响应”。
4.2各个模块仿真
4.2.1液晶显示模块仿真
图4-1液晶显示模块仿真
4.2.2温度采集温度显示模块仿真
图4-2温度采集温度显示模块仿真
4.2.3风扇模块照明模块仿真
图4-3风扇模块照明模块仿真
4.3智能红外遥控电风扇系统仿真
由于从图片里分辨不出电动机是处于转动状态还是处于静止的状态,但是从图片里可以分辨出电灯有没有发亮。
因此系统仿真时利用电灯来代替电动机。
如果电灯发亮就表示电动机处于转动状态;如果电灯没有发亮,就表示电动机处于静止状态。
4.3.1仿真条件:
温度大于50摄氏度且有红外且光不足
根据设计要求,预期结果是:
点亮电灯;开启全部风扇。
仿真结果如下图所示,可以看出仿真结果与预期结果相吻合。
图4-4温度大于50摄氏度且有红外且光不足条件下仿真结果
4.3.2仿真条件:
温度大于36摄氏度且小于50摄氏度且有红外且光不足
根据设计要求,预期结果是:
点亮电灯;开启两个风扇。
仿真结果如下图所示,可以看出仿真结果与预期结果相吻合。
图4-5温度大于36摄氏度且小于50摄氏度且有红外且光不足条件下仿真结果
4.3.3仿真条件:
温度大于26摄氏度且小于36摄氏度且有红外且光不足
根据设计要求,预期结果是:
点亮电灯;开启一个风扇。
仿真结果如下图所示,可以看出仿真结果与预期结果相吻合。
图4-6温度大于26摄氏度且小于36摄氏度且有红外且光不足条件下仿真结果
4.3.4仿真条件:
温度小于26摄氏度且有红外且光不足
根据设计要求,预期结果是:
点亮电灯;关闭全部风扇。
仿真结果如下图所示,可以看出仿真结果与预期结果相吻合。
图4-7温度小于26摄氏度且有红外且光不足条件下仿真结果
4.3.5仿真条件:
温度大于50摄氏度且有红外且光充足
根据设计要求,预期结果是:
关闭电灯;开启全部风扇。
仿真结果如下图所示,可以看出仿真结果与预期结果相吻合。
图4-8温度大于50摄氏度且有红外且光充足条件下仿真结果
4.3.6仿真条件:
温度大于36摄氏度且小于50摄氏度且有红外且光充足
根据设计要求,预期结果是:
关闭电灯;开启两个风扇。
仿真结果如下图所示,可以看出仿真结果与预期结果相吻合。
图4-9温度大于36摄氏度且小于50摄氏度且有红外且光充足条件下仿真结果
4.3.7仿真条件:
温度大于26摄氏度且小于36摄氏度且有红外且光充足
根据设计要求,预期结果是:
关闭电灯;开启一个风扇。
仿真结果如下图所示,可以看出仿真结果与预期结果相吻合。
图4-10温度大于26摄氏度且小于36摄氏度且有红外且光充足条件下仿真结果
4.3.8仿真条件:
温度小于26摄氏度且有红外且光充足
根据设计要求,预期结果是:
关闭电灯;关闭全部风扇。
仿真结果如下图所示,可以看出仿真结果与预期结果相吻合。
图4-11温度小于26摄氏度且有红外且光充足条件下仿真结果
4.3.9仿真条件:
没有红外
根据设计要求,预期结果是:
系统不工作。
仿真结果如下图所示,可以看出仿真结果与预期结果相吻合。
图4-12没有红外条件下仿真结果
4.4仿真过程中遇到的问题
4.4.1问题:
对温度采集和温度显示模块仿真时,始终无法达到预期效果。
问题实质是:
DS18B20和LCD1602对时序要求高。
尽管好多文献里有相关程序,但是我还是没有独立调试出温度采集和温度显示的子程序。
在王红霞老师的辅导下,才仿真出预期结果。
4.4.2问题:
LCD显示温度非常快,看不清温度值。
图4-15LCD显示模糊示意图
问题的实质是:
温度采集十分频繁,导致温度值更新太快。
我在代码中添加了“
if(n%2000==0){duquwenduzhi();xianshiwenduzhi();}”,解决了此问题。
4.4.3问题:
电灯发亮时一闪一闪的。
问题的实质是:
由于指令有先后顺序,导致电灯在温度采集和温度显示期间不发光。
一开始指令顺序是:
“P1=0x00;duquwenduzhi();xianshiwenduzhi();”,最后我修改为:
“duquwenduzhi();xianshiwenduzhi();P1=0x00;”。
在理论上,尽管电灯还在闪烁,但是时间极其短暂,人眼分辨不出来。
4.4.4问题:
温度为零下27摄氏度时,风扇转动。
问题的实质是:
在计算机世界,正负是由“0”或者“1”表示而不是由正负号表示。
我在判断温度大小的条件里添加了“wenduzhengfubiaozhi==0”。
例如,一开始是“if(hongwai==0&&wenduzhi>5000&&guangzhao==1)”,最后我修改为“if(hongwai==0&&wenduzhi>5000&&guangzhao==
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 智能 红外 遥控 电风扇 软件设计