湿度控制器的设计.docx
《湿度控制器的设计.docx》由会员分享,可在线阅读,更多相关《湿度控制器的设计.docx(31页珍藏版)》请在冰豆网上搜索。
![湿度控制器的设计.docx](https://file1.bdocx.com/fileroot1/2023-2/28/85255ebf-14cf-4e27-8821-b9b6d207916b/85255ebf-14cf-4e27-8821-b9b6d207916b1.gif)
湿度控制器的设计
湿度控制器的设计
课程设计报告
题目:
湿度控制器的设计
学生姓名:
陈永浩
学生学号:
1008020201
系别:
电气信息工程学院
专业:
自动化
届别:
2014届
指导教师:
刘云侠
电气信息工程学院
2013年4月
湿度控制器的设计
学生:
陈永浩
指导教师:
刘云侠
电气信息工程学院自动化
1课程设计的任务与要求
1.1课程设计的任务
利用单片机设计并实现湿度控制器的控制,以及用proteus软件完成对控制器的仿真与校验。
通过本课程的设计进一步了解单片机的基本功能和使用方法。
1.2课程设计的要求
设计一个基于51单片机的湿度检测器,该设计要求实现以下功能:
(1)基本功能:
能够检测一定范围内的湿度值,过限报警。
(2)主要技术参数:
湿度检测范围:
10%-100%RH;
检测精度:
±1%RH;
显示方式:
四位显示;
报警方式:
蜂鸣音报警;
(3)设计温度控制器原理图,学习用PROTEL画出该原理图。
并用proteus进行仿真设计和绘制软件流程图。
用C语言进行程序编写后写入单片机中进行仿真调试。
1.3课程设计的研究基础
本设计主要由软件部分构成,其中所需要的硬件在proteus中均可找到,可以进行添加后在软件中进行仿真。
所需器件名单和主要功能如下:
(1)AT89C51单片机一个:
作为整个设计的控制中心对AD转换器的数据进行分析,并与预先设定值进行比较后进行相应控制,以满足实验的要求。
(2)LCD162显示屏:
用来显示湿度的实际值。
(3)湿度传感器:
通过温度传感器感知环境中的实际湿度值,并将数据输送到AD数字转换器中。
图2键盘输入电路
3.1.2数字显示电路
数字显示电路部分主要由一个8位数字显示屏构成用来显示湿度检测器检测到的当前湿度值。
图3数字显示电路
3.1.3控制电路
控制电路主要包括AT89C51单片机和温度传感器,以及ADC0804控制器构成。
如图4把模拟湿度传感器同ADC0804相连由VIN端输入,经转换后DB0-DB7输出给单片机,因为是P0口输入,需加上上拉电阻,ADC0804中WR、RD、CS端口分别AT89C51单片机的P3.6、P3.7,P3.5相连。
第九脚要2.5V电压,就用两个1K电阻串联,两头分别接地与接5V电源,两电阻之间电压即为2.5V。
图4控制器与AD转换器连接电路
3.3.4AT89C51单片机如图示,其主要端口信息及参数下:
图5AT89C51单片机
AT89C51单片机是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
主要特性
MCS-51兼容
4K字节可编程闪烁存储器
寿命:
1000写/擦循环
数据保留时间:
10年
全静态工作:
0Hz-24Hz
三级程序存储器锁定
128*8位内部RAM
32可编程I/O线
两个16位定时器/计数器
5个中断源
可编程串行通道
低功耗的闲置和掉电模式
片内振荡器和时钟电路
管脚说明
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下所示:
备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的PSEN信号将不出现
EA非/VP:
当EA非保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,EA非将内部锁定为RESET:
当EA非端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
反向振荡器的输出,如采用外部时钟源驱动器件,应不接。
3.2电路及器件的选择
如图6所示,本设计主要器件包括温度传感器,湿敏元件是最简单的湿度传感器。
湿敏元件主要电阻式,电容式两大类而本实验主要选择电阻式传感器。
图6设计整体结构图
AD转换器,本设计的暗度转换器型号为ADC0804,A/D转换器是用来通过一定的电路将模拟量转变为数字量。
模拟量可以是电压,电流等电信号,也可以是压力、温度、湿度、位移、声音等非电信号。
但在A/D转换前输入到A/D转换器的输入信号必须经各种传感器把各种物理量转换成电压信号。
独立键盘电路,本设计主要使用4个电子按键来模拟湿度控制器的键盘电路,其主要作用是用来设定湿度控制器的设定值。
LCD显示电路本设计采用的是型号为LM016L的8位数字显示屏1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成每个点阵字符位都可以显示一个字符。
振荡器:
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石英振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件XTAL2应不接。
有余输入内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
芯片擦除:
整个PEROM阵列和三个互锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。
在芯片擦除操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程之前该操作必须被执行。
此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑支持两种软件可选的掉电模式。
在闲置模式下,CPU停止工作。
但RAM定时器,计数器,串口和中断系统仍在工作。
在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
3.3系统整体电路图
本系统采用AT89C51作为控制系统,通过模拟传感器把湿度信号采集后送给ADC0804,转换成数字信号后送入单片机,再通过LCD1602显示出来。
同时独立键盘输入湿度上门限值和下门限值,当湿度值低于下门限值或上门限值时系统驱动蜂鸣器报警和控制电路进行湿度控制,当湿度再次回到两个门限值之间时消除报警和停止湿度控制,本系统实时刷新当前湿度和门限值。
如图所示。
图7系统整体电路图
4湿度控制器系统仿真和调试
4.1仿真软件介绍
Protues:
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
在编译方面,它也支持IAR、Keil和MPLAB等多种编译。
(1)Protues功能:
具有丰富的器件库:
超过27000种元器件,可方便地创建新元件。
智能的器件搜索:
通过模糊搜索可以快速定位所需要的器件。
智能化的连线功能:
自动连线功能使连接导线简单快捷,大大缩短绘图时间。
支持总线结构:
使用总线器件和总线布线使电路设计简明清晰。
可输出高质量图纸:
通过个性化设置,可以生成印刷质量的BMP图纸,可以方便地供WORD、POWERPOINT等多种文档使用。
(2)Protues提供了丰富的资源
仿真元器件资源:
仿真数字和模拟、交流和直流等数千种元器件,有30多个元件库。
仿真仪表资源:
示波器、逻辑分析仪、虚拟终端、SPI调试器、I2C调试器、信号发生器、模式发生器、交直流电压表、交直流电流表。
理论上同一种仪器可以在一个电路中随意的调用。
图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似,但功能更多。
这些虚拟仪器仪表具有理想的参数指标,例如极高的输入阻抗、极低的输出阻抗。
这些都尽可能减少了仪器对测量结果的影响。
还提供了比较丰富的测试信号用于电路的测试。
这些测试信号包括模拟信号和数字信号。
(3)Protues支持主流单片机软件仿真
提供软件调试功能。
提供丰富的外围接口器件及其仿真。
RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。
这样很接近实际。
在训练学生时,可以选择不同的方案,这样更利于培养学生。
提供丰富的虚拟仪器,利用虚拟仪器在仿真过程中可以测量外围电路的特性,培养学生实际硬件的调试能力。
(4)具有强大的原理图绘制功能。
Protues绘制好原理图后,调入已编译好的目标代码文件:
*.HEX,可以在Protues的原理图中看到模拟的实物运行状态和过程。
Protues是单片机课堂教学的先进助手。
Protues不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。
前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。
它的元器件、连接线路等却和传统的单片机实验硬件高度对应。
这在相当程度上替代了传统的单片机实验教学的功能,例:
元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。
课程设计、毕业设计是学生走向就业的重要实践环节。
由于Protues提供了实验室无法相比的大量的元器件库,提供了修改电路设计的灵活性、提供了实验室在数量、质量上难以相比的虚拟仪器、仪表,因而也提供了培养学生实践精神、创造精神的平台。
随着科技的发展“计算机仿真技术”已成为许多设计部门重要的前期设计手段。
它具有设计灵活,结果、过程的统一的特点。
可使设计时间大为缩短、耗资大为减少,也可降低工程制造的风险。
相信在单片机开发应用中Protues也得到了愈来愈广泛的应用。
4.2系统仿真实现
打开proteus仿真软件后,双击已经绘制好的protues文件中的单片机,在文件中打开关于湿度控制器.HEX文件,写入程序。
4.3系统测试
在硬件和软件单独调试成功后进行软硬件综合调试它可以分成以下几个步骤
(1)使湿度传感器有信号传出。
(2)使单片机获得中断信号,计算出转速值并存储
(3)通过LCD显示屏把测量的数据显示出来,
实际测试结果如图8所示:
当闭合开关后显示屏上能正常显示出当前环境中的湿度值,在图的右侧能够看到电机已经开始正常运转,说明驱动电路正常可以完成对对电机的控制,能够使在湿度值不满足工作环境时通过电动机的转动来调节空气中的湿度值以达到工作要求,在显示屏幕上可以看到当前湿度值为82%,说明本设计达到了设计的要求,不仅既能够检测环境中的湿度值并显示,而且能够进行相应的调节。
图8系统测试结果
5总结
5.1设计小结
本系统是基于单片机89C51的处理,可以完美的实现对环境湿度的监测。
传感器是实现测量与控制的首要环节,是测控系统的关键部件,如果没有传感器对原始被测信号进行准确可靠的捕捉和转换,一切准确的测量和控制都将无法实现。
工业生产过程的自动化测量和控制。
几乎主要依靠各种传感器来检测和控制生产过程中的各种参量。
使设备和系统正常运行在最佳状态,从而保证生产的高效率和高质量。
5.2收获体会
随着社会的发展,传感器的作用越来越突出。
在现代工农业生产过程中。
要用各种传感器来监视和控制生产过程中的各个参数,使设备工作在正常状态或最佳状态并使产品达到最好的质量。
因此可以,没有众多的优良的传感器,现代化生产也就失去了基础。
本次课程设计的写作是在老师的指导下进行的。
针对在写作过程中遇到许多的难题老师都给以认真的解释。
为此,向老师表示最衷心的谢意。
我在这次课程设计中学会了怎么去发现问题,解决问题。
遇到不明白的问题都会积极的去询问老师或者去找寻相关的资料。
从中学到了很多知识。
这次课程设计使我们有机会把我们的课堂理论知识运用到实际生活,贴近生活,实现我们的人生价值。
并且通过对知识的综合利用。
加入个人的分析和比较,加深了了我们对理论知识的理解和运用。
也让我了解了ADC0804的功能和原理。
我们在做课程设计的过程中要不停的讨论问题。
这样,我们可以尽可能的统一思想,这样就不会使自己在做的过程中没有方向,并且这样也是为了方便最后设计和在一起讨论不仅是一些思想的问题,还可以深入的讨论一些技术上的问题,这样可以使自己的处理问题要快一些,少走弯路。
多改变自己设计的方法,在设计的过程中最好要不停的改善自己解决问题的方法,这样可以方便自己解决问题。
5.3展望
自动化,智能化的时代已经到来了。
而单片机就好比生活中那些比较简单但很实用的机器的大脑。
单片机可以帮助电饭煲智能控温,单片机能够帮助汽车智能变速,单片机还可以设置密码控制门禁系统,单片机可以远程被控制。
在未来的生活里,我们几乎可能离不开单片机。
不需要超高的计算功能,不需要超高的逻辑能力就完全能够胜任生活中那些我们所需要的自动控制。
6参考文献
[1]侯玉宝,基于proteus的51系列单片机设计与仿真[M],电子工业出版社,2010.
[2]宋文绪,传感器与检测技术[M],高等教育出版社,2010.
[3]余锡存,单片机原理及接口技术[M],西安电子科技大学出版社,2009.
[4]李全利,单片机原理及接口技术[M],北京航空航天大学出版社,2010.
[5]薛均义,MCS-51系列单片微型计算机及其应用[M],西安交通大学出版社,2009.
[6]徐爱钧,单片机高级语言C51应用程序设计[M],北京航空航天大学出版社,2010.
[7]康华光,电子技术基础(模拟部分)[M],高等教育出版社,2006.
[8]崔葛瑾,数字电路实验基础[M],同济大学出版社,2006.
[9]张宝华,模拟电路实验基础[M],同济大学出版社,2006,
[10]康华光,电子技术基础(数字部分)[M],高等教育出版社,2006.
[11]谢维成,单片机原理与应用及51程序设[M],清华大学出版社,2009.
[12]谭浩强,C程序设计,华大学出版社[M],2005.
[13]谭浩强,C程序设计题解与上机指导[M],清华大学出版社,2005.
[14]谭浩强,C语言习题集与上机指导[M],高等教育出版社,2006.
[15]王连英,基于multisim10的电子仿真实验与设计[M],北京邮电大学出版社,2009.
[16]吴玉香,电机及拖动[M],化学工业出版社,2011.
[17]邱关源,电路[M],高等教育出版社,2006.
[18]田裕鹏,传感器原理[M],科学出版社,2007.
[19]李刚民,单片机原理及实用技术[M],高等教育出版社,2005.
[20]林志琦,基于priteus的单片机可视化软硬件仿真[M],科学出版社,2006.
7附录
于湿度控制器的c语言设计程序
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitcs=P3^5;
sbitrd=P3^7;
sbitwr=P3^6;
sbitlcdrs=P2^0;
sbitlcdrw=P2^1;
sbitlcden=P2^2;
sbits1=P2^4;
sbits2=P2^5;
sbits3=P2^6;
sbits4=P2^7;
sbitspeaker=P3^2;
sbitD1=P3^0;
sbitD0=P3^1;
ucharcodetable[]="Humidity";
ucharcodetable1[]="%";
ucharcodetable2[]="Low";
ucharcodetable3[]="%High";
ucharresult,Low=202,High=216;
voiddelay(uinti)//延时程序
{
ucharj;
while(i--)
{
for(j=0;j<115;j++)
{
};
}
}
voidinit_ad()//初始化AD
{
cs=0;
}
voidstart_ad()//启动AD
{
cs=0;
_nop_();
wr=0;
_nop_();
rd=1;
_nop_();
wr=1;
_nop_();
_nop_();
cs=1;
_nop_();
_nop_();
}
voidread_ad()//读AD转换后的值
{
cs=0;
_nop_();
wr=1;
_nop_();
wr=0;
_nop_();
rd=0;
_nop_();
_nop_();
result=P0;
_nop_();
_nop_();
rd=1;
_nop_();
cs=1;_
nop_();
}
voidwrite_com(ucharcom)//向液晶屏写指令
{
lcdrs=0;
P1=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
voidwrite_data(ucharresult)//向液晶屏写数据
{
lcdrs=1;
P1=result;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
voidinit()//液晶屏初始化
{
ucharnum;
lcden=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);//清屏指令
write_com(0x8a);//写入的首地址
}
voiddisplay()//液晶屏显示
{
uintnum,Low1,Low2,High1,High2;
ucharx,y;
x=result%100/10;
y=result%10;
Low1=Low%100/10;
Low2=Low%10;
High1=High%100/10;
High2=High%10;
write_com(0x01);//清屏指令
write_com(0x8a);//写入的首地址写入当前湿度值write_data(x+0x30);
delay(5);
write_data(y+0x30);
delay(5);
write_com(0x80);//数据指针设置
for(num=0;num<10;num++)
{
write_data(table[num]);//写第一行数据写入字母Humidity
delay(5);
}
write_com(0x80+0x43);//写入的首地址写Low的值write_data(Low1+0x30);
delay(5);
writedata(Low2+0x30);
delay(5);
write_com(0x80+0x4c);//写入的首地址High的值
write_data(High1+0x30);
delay(5);
write_data(High2+0x30);
delay(5);
write_data(table1[0]);//写入%
write_com(0x80+0x4e);//设置数据地址指针为2行
}
voidkeyscan()
{
if(s1==0)
{
delay(10);
if(s1==0)
{
High++;
if(High==99)
High=98;
while(!
s1);
}
}