法临律网
您的当前位置:首页基于51单片机的湿度控制器含原理图与c代码-本科生毕业设计(论文)

基于51单片机的湿度控制器含原理图与c代码-本科生毕业设计(论文)

来源:法临律网


单片机湿度控制器

摘要

本系统采用ATC51作为控制系统,通过模拟传感器把湿度信号采集后送给

ADC0804,转换成数字信号后送入单片机,再通过LCD1602显示出来,同时

键盘输入湿度上门限值和下门限值,当湿度值低于下门限值或上门限值时系统驱

动蜂鸣器报警和控制电路进行湿度控制,当湿度再次回到两个门限值之间时消除

报警和停止湿度控制,本系统实时刷新当前湿度和门限值,适用于大棚,花卉以

及家庭湿度检测与控制。

目前工业自动化水平已成为衡量各行各业现代化水平的一个重要标志。同时,控制理论的发展也经历了古典控制理论、智能控制的典型实例是模糊全自动洗衣机等。现代控制理论和智能控制理论三个阶段。

关键词:ATC51LCD1602ADC0804,湿度控制与检测



成都理工大学本科毕业设计(论文)

Single-chiphumidity controller

Summary

Thissystem used ATC51 as control system, by simulation sensor

tohumidity signal collection Hou to ADC0804, conversion into digital

signalHou into single tablets machine, then by LCD1602 displayed out,

whileindependent keyboard entered humidity door limited value and Xia

thresholdvalue, dang humidity value below Xia threshold value or door

limitedvalue Shi system drive buzzer alarm and control circuit for

humiditycontrol, dang humidity again returned to two a threshold value

ZhijianShi elimination alarm and stop humidity control, This system live

andrefreshes the current humidity threshold values, apply to greenhouse,

flower and family and humidity measuring and controlling
symbol of the measure of all walks of life the level of modernization.
The current level of industrial automation has become an important
intelligent control in three stages. The typical example of the

intelligentcontrol fuzzy automatic washing machine.

KeywordATC51LCD1602ADC0804humiditycontroller



2

成都理工大学本科毕业设计(论文)

目录

第一章绪论--------------------------------------------------------------------------------------11.1选题背景及目的-----------------------------------------------11.2 发展状况-----------------------------------------------------11.3 各章节主要内容-----------------------------------------------32章 系统的方案与论证--------------------------------------------42.1系统选择论证-------------------------------------------------42.1.1 单片机控制模块的选择论证------------------------------4
2.1.2 显示模块的选择与论证----------------------------------4
2.2 设计任务及要求---------------------------------------------42.3 系统的设计原则---------------------------------------------52.4 系统组成与框图---------------------------------------------6系统控制结构组成如图2-1-------------------------------------6
2.5 系统原理设计-----------------------------------------------62.5.1 ATC51 简介------------------------------------------6
2.5.2 ATC51 管脚说明--------------------------------------7
2.5.3 振荡器特性--------------------------------------------9
2.5.4 时钟电路----------------------------------------------9

2.6 湿度传感器------------------------------------------------12 2.5.6 AD 转换电路------------------------------------------11
2.5.5 复位电路---------------------------------------------10
2.6.1 湿敏元件的特性----------------------------------------12
2.7 LCD 液晶显示器---------------------------------------------13

第三章 硬件电路的设计---------------------------------------------163.1 湿度传感器与ADC0804连接电路------------------------------163.2 LCD 电路图-------------------------------------------------173.3 键盘与驱动电路----------------------------------------183.4 总体电路设计----------------------------------------------18第四章 程序流程图与代码------------------------------------------194.1 主要程序流程图--------------------------------------------194.2 主要程序--------------------------------------------------20第五章 系统的调试与总结------------------------------------------215.1 单片机测试------------------------------------------------215.2 硬件及软件调试--------------------------------------------215.3 整机的调试与测试------------------------------------------215.4 综合调试--------------------------------------------------22总结---------------------------------------------------------------23参考文献-----------------------------------------------------------24附录一-------------------------------------------------------------25

附录二-------------------------------------------------------------38

3

成都理工大学本科毕业设计(论文)

第一章绪论

1.1选题背景及目的

在工农业生产和日常生活中,对湿度的测量及控制始终占据着重要地位。在

现代农业大棚种植或是室内畜牧业、气象、环保、国防、科研、航天以及现代生

活的各个方面,经常需要对环境湿度进行测量及控制。本设计就在此基础上,设

计一种基于C51单片机控制的智能湿度控制系统。

目前工业自动化水平已成为衡量各行各业现代化水平的一个重要标志。同时,

控制理论的发展也经历了古典控制理论、现代控制理论和智能控制理论三个阶段。

智能控制的典型实例是模糊全自动洗衣机等。自动控制系统可分为开环控制系统

和闭环控制系统。一个控控制系统包括控制器、传感器、变送器、执行机构、输

入输出接口。控制器的输出经过输出接口、执行机构,加到被控系统上;控制系
其传感器、变送器、执行机构是不一样的。比如压力控制系统要采用压力传感器。统的被控量,经过传感器,变送器,通过输入接口送到控制器。不同的控制系统,
1.2 发展状况


进入21 世纪后,特别在我国加入WTO 后,国内产品面临巨大挑战。各行业特


别是传统产业都急切需要应用电子技术、自动控制技术进行改造和提升。例如纺


织行业,温湿度是影响纺织品质量的重要因素,但纺织企业对温湿度的测控手段


仍很粗糙,十分落后,绝大多数仍在使用干湿球湿度计,采用人工观测,人工调


节阀门、风机的方法,其控制效果可想而知。制药行业里也基本如此。而在食品


行业里,则基本上凭经验,很少有人使用湿度传感器。值得一提的是,随着农业


向产业化发展,许多农识到必需摆脱落后的传统耕作、养殖方式,采用现代


科学技术来应付进口农产品的挑战,并打进国外市场。各地建立了越来越多的新


型温室大棚,种植反季节蔬菜,花卉;养殖业对环境的测控也日感迫切;调温冷


库的大量兴建都给温湿度测控技术提供了广阔的市场。我国已引进荷兰、以色列
等国家较先进的大型温室四十多座,自动化程度较高,成本也高。国内正在逐步


1

成都理工大学本科毕业设计(论文)

消化吸收有关技术,一般先搞调温、调光照,控通风;第二步搞温湿度自动控制


CO2 测控。此外,国家粮食储备工程的大量兴建,对温湿度测控技术提也提出


了要求。

但目前,在湿度测试领域大部分湿敏元件性能还只能使用在通常温度环境下。在需要特殊环境下测湿的应用场合大部分国内包括许多国外湿度传感器都会“皱起眉头”!例如在上面提到纺织印染行业,食品行业,耐高温材料行业等,都需要在高温情况下测量湿度。一般情况下,印染行业在纱锭烘干中,温度能达到120摄氏度或更高温度;在食品行业中,食物的烘烤温度能达到80-200摄氏度左右;耐高温材料,如陶瓷过滤器的烘干等能达到200摄氏度以上。在这些情况下,普通的湿度传感器是很难测量的。

由于单片机技术在各个领域正得到越来越广泛的应用,世界上许多集成电路生厂家相继推出了各种类型的单片机。近十几年来,单片机在生产过程控制、自

泛的应用。近几年来,单片机的发展更为迅速,它已渗透到诸多学科和领域,以
动检测、数据采集与处理、科技计算、商业管理和办公室自动化等方面获得了广
及人们生活的各个方面。在单片机家族的众多成员中,MCS-51 系列单片机以其

MCS-51 系列单片机开发的硬件越来越多,与其配套的各类开发系统、各种软件

也日趋完善,因此,可以极方便的利用现有资源,开发出用于不同目的的各类应用系统。

随着集成电路技术的发展,单片微型计算机的功能也不断增强,许多高性能的新型机种不断涌现出来。单片机以其功能强、体积小、重量轻、可靠性高、造价低、通用灵活和开发周期短等优点,成为自动化和各个测控领域中广泛应用的器件,也广泛应用于卫星定向、汽车火花控制、交通管理和微波炉等专用控制上在工业生产中成为必不可少的器件,尤其是在日常生活中发挥的作用也越来越大。

在湿度控制系统中,单片机更是起到了不可替代的核心作用。随着生产的发展,在工业中,设备对湿度的控制要求越来越高,随着人们生活水平的提高,对 2

成都理工大学本科毕业设计(论文)

日常用品的自动化也提出了更高的要求,单片机的不断更新换代,满足了上述的要求,达到自动控制品质的目的。

1.3各章节主要内容

本论文共分成五章第1章主要是选题背景和发展状况;第2章提出了系统的方案与论证,形成一个大体轮廓;第3章对系统硬件电路部分进行设计,主要是接口连接和硬件传感器的设计;第4章系统的软件部分设计,包括各个子程序和对应的流程图。第五章为系统调试,包括硬件、软件、综合调试。





3

成都理工大学本科毕业设计(论文)

2章系统的方案与论证

此系统采能够自动、准确检测环境空气的相对湿度,并将检测数据通过A/D转换后,送到处理器(ATC51)中,然后通过软件的编程,将当前环境的相对湿度值转换为十进制数字后,再通过LCD来显示;而且,通过软件编程,再加上相应的控制电路,设计出可以自动的调节当前环境的相对湿度:当空气湿度过高时,控制系统自动启动抽风机,减少室内空气中的水蒸气,以达到降低空气湿度的目的;当室内空气湿度过低时,控制系统自动关闭抽风机,增加空气的水蒸气,以达到增加湿度的目的,使空气湿度保持在理想的状态;键盘设置及调整湿度的初始值。

2.1系统选择论证

2.1.1 单片机控制模块的选择论证

响应外部的各种数字信号,但在数据处理方面过于复杂,而且芯片价格较昂贵。
方案一:采用XC9000 系列的FPGA。该类器件具有并行处理能力,能快速的

2.1.2 显示模块的选择与论证

方案一:采用128液晶模块显示测得的数据,可显示较多组的数据,字体较大,可清晰读数,但128液晶模块价格昂贵,接线复杂,故不采用。方案二:采用1602液晶模块显示所测数据,1602液晶接线简单方便,同时也能满足显示需要,价格远低于128液晶。因此,本方案为首选方案。综上所述,显示模块选择方案二。

2.2 设计任务及要求

设计一个基于51 单片机的湿度检测器。课程设计要求:15V 供电;
2. 温度采集采用模拟湿度传感器;


4

成都理工大学本科毕业设计(论文)

3.采用ADC0804把模拟量转换为数字量
4LCD1602显示;
54个按键;
6.设计温度控制器原理图,学习用PROTEL画出该原理图,并用proteus进行仿 真;设计和绘制软件流程图,用C语言进行程序编写;焊接硬件电路,进行调试。

2.3 系统的设计原则

一般系统的设计原则包含安全性(稳定抗干扰性),操作的便利性(人性化),实时性,通用性和经济性。

1)安全可靠
首先要选用高性能的ATS52单片机,保证在恶劣的工业环境下能正常运行。其

次是设计可靠的控制方案,并具有各种安全保护措施,如报警、事故预测、事故
2)操作维护方便 处理和不间断电源等。
识才能操作。

选用高性能的ATC51单片机的实时性,表现在内部和外部事件能及时地响应,并做出相应的处理。

4)通用性好
系统设计时应考虑能适应不同的设备和各种不同设备和各种不同控制对象,并采用积木式结构,按照控制要求灵活构成系统。主要表现在两个方面:一是硬件板设计采用标准总线结构(如PC总线),配置各种通用的模板,以便扩充功能时,只需增加功能模板就能实现;二是软件功能模块或控制算法采用标准模块结构,用户使用时不需要二次开发,只需各种功能模块,灵活地进行控制系统组态。

5)经济效益高
5



成都理工大学本科毕业设计(论文)

2.4 系统组成与框图

系统控制结构组成如图2-1

湿度传感器。用于检测空气的湿度[9]

微控制器。采用ATMEL公司的C51单片机,作为主控制器。

模数转换电路。用于把湿度传感器的模拟量转换为数字量。

键盘输入电路。用于设定初始值等。

LCD显示电路。用于显示湿度[10]

功率驱动电路(湿度调节电路)。

湿 AD A

LCD显示电路

T

8


1

2-1

2.5 系统原理设计

2.5.1 ATC51简介

单片机我们采用ATC51相较于INTEL公司的8051它本身带有一定的优点。

ATC51是一种带4K字节闪烁可编程可擦除只读存贮器(FPEROM—Falsh

Programmableand Erasable Read Only Memory)的低电压,高性能CMOS8 位微处

理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工

业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8CPU 和闪烁存储

器组合在单个芯片中,ATMELATC51是一种高效微控制器,ATC单片机为


6

成都理工大学本科毕业设计(论文)

很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

主要特性:
·MCS-51兼容
·4K字节可编程闪烁存储器 寿命:1000/擦循环
·数据保留时间:10
·全静态工作:0Hz-24Hz
·三级程序存储器锁定
·128*8位内部RAM
·32可编程I/O线
·两个16位定时器/计数器
·5个中断源
·可编程串行通道

·低功耗的闲置和掉电模式
2.5.2 ATC51 管脚说明 ·片内振荡器和时钟电路

3.P0口:P0口为一个8位漏极开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

4.P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。

5.P2 口:P2 口为一个内部上拉电阻的8位双向I/O 口,P2口缓冲器可接收,输出4TTL 门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于

内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行 7

成都理工大学本科毕业设计(论文)

存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。口在FLASH编程和校验时接收高八位地址信号和控制信号。

6.P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为ATC51的一些特殊功能口,如下表41所示:
7.RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

8.ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对然而要注意的是:每当用作外部数据存储器时,外部输出的脉冲或用于定时目的。


将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH 地址上置0



P3.2

INT0

外部中断0 请求

P3.3

INT1

外部中断1 请求

P3.4

T0

定时器/计数器0 计数输入

P3.5

T1

定时器/计数器1 计数输入

P3.6

WR

外部RAM 写选通

P3.7

RD

外部RAM 读选通

P3口同时为闪烁编程和编程校验接收一些控制信号。

此时,ALE只有在执行MOVXMOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

9./PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN 8

成都理工大学本科毕业设计(论文)

信号将不出现。

10./EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

11.XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

12.XTAL2:来自反向振荡器的输出。

2.5.3 振荡器特性

XTAL1XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石英振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。

整个PEROM 阵列和三个锁定位的电擦除可通过正确的控制信号组合, 并保持
芯片擦除:

两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。

2.5.4 时钟电路

时钟电路是计算机的心脏,它控制着计算机的工作节奏。MCS-51单片机允许的时钟频率是因型号而异的典型值为12MHZ
MCS-51内部都有一个反相放大器,XTAL1XTAL2分别为反相放大器输入和输出端,外接定时反馈元件以后就组成振荡器,产生时钟送至单片机内部的各个部件。ATC51是属于CMOS8位微处理器,它的时钟电路在结构上有别于NMOS型的单片机。 CMOS型单片机内部(如ATC51)有一个可控的负反馈反相放大器,外接晶 9

成都理工大学本科毕业设计(论文)

振(或陶瓷谐振器)和电容组成振荡器,图42CMOS型单片机时钟电路框图。振荡器工作受/PD端控制,由软件置“1”PD(即特殊功能寄存器PCON.1)使/PD0,振荡器停止工作,整个单片机也就停止工作,以达到节电目的。清“0”PD,使振荡器工作产生时钟,单片机便正常运行。图中SYS为晶振或陶瓷谐振器,振荡器产生的时钟频率主要由SYS参数确定(晶振上标明的频率)。电容C1C2的作用有两个:其一是使振荡器起振,其二是对振荡器的频率f起微调作用(C1C2大,f变小),其典型值为30pF

2.5.5 复位电路

计算机在启动运行时都需要复位,使处理器CPU和系统中的其它部件都处于一个确定的初始状态,并从这个状态开始工作。

MCS-51单片机有一个复位引脚RST,它是史密特触发输入(对于CHMOS单片机,RST引脚的内部有一个拉低电阻),当振荡器起振后该引脚上出现2个机器周期(

位状态。此时ALEPSENP0P1P2P3口都 输出高电平。RST变为低电平后,
24个时钟周期)以上的高电平,使器件复位,只要RST保持高电平,MCS-51保持复

高电平,只要高电平时间足够长,就可以使MCS-51有效的复位。RST端在加电时应保持的高电平时间包括VCC的上升时间和振荡器起振的时间,Vss上升时间若为10ms,振荡器起振的时间和频率有关。10MHZ时约为1ms1MHZ时约为10ms,所以一般为了可靠的复位,RST在上电应保持20ms以上的高电平。RC时间常数越大,上电RST端保持高电平的时间越长。

若复位电路失效,加电后CPU从一个随机的状态开始工作,系统就不能正常运转。

2.5.6 AD转换电路

A/D 转换器是用来通过一定的电路将模拟量转变为数字量。
10

成都理工大学本科毕业设计(论文)

模拟量可以是电压、电流等电信号,也可以是压力、温度、湿度、位移、声音等非电信号。但在A/D转换前,输入到A/D转换器的输入信号必须经各种传感器把各种物理量转换成电压信号。

A/D转换后,输出的数字信号可以有8位、10位、12位和16位等。

A/D转换器的工作原理主要介绍以下三种方法:
逐次逼近法
双积分法
电压频率转换法
AD转换四步奏:采样、保持、量化、编码。

AD转换技术指标:
1)分辩率(Resolution)指数字量变化一个最小量时模拟信号的变化量,定义为满刻度与2^n的比值。分辩率又称精度,通常以数字信号的位数

来表示。
转换所需的时间的倒数。积分型AD 的转换时间是毫秒级属低速AD,逐次比
2) 转换速率(Conversion Rate)是指完成一次从模拟转换到数字的AD
速率

在数值上等同于采样速率也是可以接受的。常用单位是kspsMsps,表示每秒采样千/百万次(kilo/ Million Samples per Second)。
3)量化误差(QuantizingError) 由于AD的有限分辩率而引起的误差,即有限分辩率AD的阶梯状转移特性曲线与无限分辩率AD(理想AD)的转移特性曲线(直线)之间的最大偏差。通常是1个或半个最小数字量的模拟变化量,表示为1LSB1/2LSB

4)偏移误差(OffsetError) 输入信号为零时输出信号不为零的值,可外接电位器调至最小。

5)满刻度误差(FullScale Error) 满度输出时对应的输入信号与理想

输入信号值之差。



11

成都理工大学本科毕业设计(论文)

6)线性度(Linearity)实际转换器的转移函数与理想直线的最大偏移,不包括以上三种误差。

2.6 湿度传感器

2.6.1湿敏元件的特性

湿敏元件是最简单的湿度传感器。湿敏元件主要电阻式、电容式两大类。

2.6.2湿敏电阻

湿敏电阻的特点是在基片上覆盖一层用感湿材料制成的膜,当空气中的水蒸气吸附在感湿膜上时,元件的电阻率和电阻值都发生变化,利用这一特性即可测量湿度。湿敏电阻的种类很多,例如金属氧化特湿敏电阻、硅湿敏电阻、陶瓷湿敏电阻等。湿敏电阻的优点是灵敏度高,主要缺点是线性度和产品的互换性差。

2.6.3 湿敏电容
湿敏电容一般是用高分子薄膜电容制成的,常用的高分子材料有聚苯乙烯、

容易实现小型化和集成化,其精度一般比湿敏电阻要低一些。国外生产湿敏电容的主厂家有Humirel公司、Philips公司、Siemens公司等。以Humirel公司生产的SH1100型湿敏电容为例,其测量范围是(1%99%RH,在55%RH时的电容量为180pF(典型值)。当相对湿度从0变化到100%时,电容量的变化范围是163pF202pF。温度系数为0.04pF/℃,湿度滞后量为±1.5%,响应时间为5s

除电阻式、电容式湿敏元件之外,还有电解质离子型湿敏元件、重量型湿敏 、光强型湿敏元件、声表面波湿元件(利用感湿膜重量的变化来改变振荡频率)
敏元件等。湿敏元件的线性度及抗污染性差,在检测环境湿度时,湿敏元件要长期暴露在待测环境中,很容易被污染而影响其测量精度及长期稳定性。

2.6.3 湿度测量的名词术语
湿度:湿度是表示空气中水蒸气的含量。湿度又分为绝对湿度和相对湿度两 12

成都理工大学本科毕业设计(论文)

种。

绝对湿度:绝对湿度亦称水蒸气密度,它表示水蒸气的质量与总容积的比值,dv代表绝对湿度,它表示每立方米干燥空气与水蒸气的混合物中所含水分的克数; .需要指p为水蒸气的压强(单位是Pa);Tab为干燥空气的温度值(单位是℃)
出,国内也有人将空气中所含水蒸气的压强理解为绝对湿度,这与国外关于绝对湿度的定义不相符。

相对湿度:相对湿度表示在相同湿度下大气中水蒸气的实际压强与饱和水蒸气的压强之比,通常用百分数来表示。相对湿度的英文缩写为RH(RelativeHumidity)
露点:在水蒸气冷却过程中最初发生结露的温度。若气温低于露点,水蒸气开始凝结。湿度比:它表示水蒸气的质量与干燥空气的质量比。

大气压强:在单位面积上大气的压力。通常将海平面高度的大气压强称为1

个标准大气压,p0=101.325Pa。大气压强随高度的增加而降低。设A、B两点的高
2000M4000M8000M 时,大气压强就依次降成 0.88p0﹑0.78p016p0﹑
度差h2-h1=h,这两点的大气压强分别为p1,p2。 当距海面高度为1000M
0.37p0

强。其计算公式比较复杂,并且计算水和冰的饱和压强的公式也不同。

2.7 LCD液晶显示器

1602 液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔每行之间也有间隔起到了字符间距和行间距的作用,正因为如此所以他不能显示图形1602LCD 是指显示的内 。目前容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液 晶。


13

成都理工大学本科毕业设计(论文)

2-1
在日常生活中,我们对液晶显示器并不陌生。液晶显示模块已作为很多电子

产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看
输出方式有以下几种:发光管、LED 数码管、液晶显示器。
到,显示的主要是数字、专用符号和图形。在单片机的人机交流界面中,一般的

芯片工作电压:4.5—5.5V
工作电流:2.0mA(5.0V)
模块最佳工作电压:5.0V
字符尺寸:2.95×4.35(W×H)mm
引脚功能说明:1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,
1脚:VSS为地电源。

2脚:VDD5V正电源。

3 脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比 度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K 电位器调整对比度。


14

成都理工大学本科毕业设计(论文)

4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。

5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RSR/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。

6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D78位双向数据线。

15脚:背光源正极。

16脚:背光源负极。





15

成都理工大学本科毕业设计(论文)

第三章硬件电路的设计3.1 湿度传感器与ADC0804连接电路

3-1
输出给单片机,因为是P0 口输入,需加上上拉电阻,ADC0804 WRRDCS
如图3-1 把模拟湿度传感器同ADC0804 相连由VIN 端输入,经转换后DB0-DB7

3-2



16

成都理工大学本科毕业设计(论文)

3.2 LCD电路图

3-3
时序如图3-4
LCD1602 MAC51 P1 口相连,如图3-3 显示为学生姓名拼音和学号,其

3-4



17

成都理工大学本科毕业设计(论文)

3.3 键盘与驱动电路

3-5

电路中当湿度到达门限值后会报警,同时驱动电路驱动电机工作,当环境湿

度低于低门限值时系统报警,同时驱动电路打开加湿器工作,为环境增加湿度,

当环境湿度增加到高于低门限值时系统自动停止报警同时驱动加湿器停止工作,。
本系统采用ATC51 作为控制系统,通过模拟传感器把湿度信号采集后送给3.4 总体电路设计

动蜂鸣器报警和控制电路进行湿度控制,当湿度再次回到两个门限值之间时消除

报警和停止湿度控制,本系统实时刷新当前湿度和门限值,如图3-6所示。

3-6
第四章程序流程图与代码
18



成都理工大学本科毕业设计(论文)

4.1 主要程序流程图

主程序流程图 AD 转换程序流程 MAIN

中断服务


初始化

现场保护

调用AD 程序

开启AD 并转换

调用显示程序

Y


AD 结果

查询是否在
N
门限区间内

调用驱动程序



显示子程序 按键子程序
19


成都理工大学本科毕业设计(论文)


显示子程序


判断
断点保护

写缓冲单元
及循环次数

按键S1

按键S2

按键S3

按键S4

送显示字位

湿

湿

湿

湿

上上 下下
1
1

1
限限

返回

4.2 主要程序

见附录一



20

成都理工大学本科毕业设计(论文)

第五章系统的调试与总结

5.1 单片机测试

判断单片机芯片及时钟系统是否正常工作有一个简单的办法,就是用万用表测量单片机晶振引脚(1819脚)的对地电压,以正常工作的单片机用数字万用表测量为例:18脚对地约2.24V19脚对地约2.09V。对于怀疑是复位电路故障而不能正常工作的单片机也可以采用模拟复位的方法来判断,单片机正常工作时第9脚对地电压为零,可以用导线短时间和+5V连接一下,模拟一下上电复位,如果单片机能正常工作了,说明这个复位电路有问题。

5.2 硬件及软件调试

硬件调试,第一步是目测,在印好电路板之后,先检查印制线是否有断线、

是否有毛刺、是否与其它线或焊盘粘连、焊盘是否有脱落、过孔是否有未金属化
现象。而在目测的过程中,我们发现有一条印制线断开,因此我们用焊锡使这条断线连在一起。第二步是用万用表测量。在目测完之后,利用万用表来测量连线
地线也没有短路现象。第三步是加电检查。给印制板加电时,我们检查到的器件

的电源端符合要求的电压值+5V,同时接地端的电压为0。第四步是联机检查。利用系统和单片机开发系统用仿真电缆连接起来,发现联机检查完后以上是连接都正确、畅通、可靠。

软件调试,第一步是在具有汇编软件的主机上和用户系统连接起来,进行调试准备。第二步是单步运行。第三步是系统连调,即进行软件和硬件联合调试。经调试,软件运行良好。

5.3 整机的调试与测试

首先是测试显示电路的正确性,根据硬件写好一段显示程序,写入单片机中。安装好硬件,上电,显示正常,达到预期效果。证明显示电路正常。按下复位按键,LCD无显示,松开,显示正常,证明复位电路正常。 21

成都理工大学本科毕业设计(论文)

然后测试得到温度程序,将初始化程序,ADC0804正常工作的初始化程序、写ADC0804程序、读ADC0804程序,得到湿度子程序,湿度转换子程序,数据转换子程序,显示子程序正确编排后写入单片机中,上电,显示不正常。重新读取源程序,经检查后发现问题在于ADC0804初始化程序有错,修改后重新编译并写入单片机。上电后,显示当前湿度。证明ADC0804工作正常,各部分子程序运行正常。

最后是按键子程序及报警子程序的调试,将按键子程序及报警子程序及上述程序正确编排后,写入单片机中,上电后,各个部分工作正常,在测得当前湿度超出设定湿度上下限后,蜂鸣器发出报警声,调试基本成功。但后来发现,按键要在按下1S后才反应,再次研读程序发现原因在于按键程序采用扫描方式,程序每执行一遍才扫描按键一次。进而到考虑采用中断方式解决此问题,但因为ADC0804正常工作有严格的时序,否则不能正常工作,而中断则在很大可

能上会影响到ADC0804 正常工作。在尝试并采用中断方式却失败后,决定仍采
用扫描方式。的,修改显示程序并且在主程序和按键子程序中增加调用显示程序的次数,问题 后来仔细排查发现按键反应迟缓是由于显示程序占用时间过长造成

在硬件和软件单独调试成功后进行软硬件综合调试,它可以分成以下几个步骤:
1.使湿度传感器有信号传出。

2.使单片机获得中断信号,计算出转速值并存储;
3.通过LCD显示屏把测量的数据显示出来。

总结

本系统是基于单片机C51的处理,,可以完美的实现对环境湿度的监测。传感器是实现测量与控制的首要环节,是测控系统的关键部件,如果没有传感器 22

成都理工大学本科毕业设计(论文)

对原始被测信号进行准确可靠的捕捉和转换,一切准确的测量和控制都将无法实现。工业生产过程的自动化测量和控制,几乎主要依靠各种传感器来检测和控制生产过程中的各种参量,使设备和系统正常运行在最佳状态,从而保证生产的高效率和高质量。

随着社会的发展,传感器的作用越来越突出。在现代工农业生产尤过程中,要用各种传感器来监视和控制生产过程中的各个参数,使设备工作在正常状态或最佳状态,并使产品达到最好的质量。因此可以说,没有众多的优良的传感器,现代化生产也就失去了基础。

本次课程设计的写作是在老师的指导下进行的。针对在写作过程中遇到许多的难题老师都给以认真的解释,为此,向老师表示最衷心的谢意。我在这次课程设计中,学会了怎么去发现问题,解决问题。遇到不明白的问题都会积极的去询问老师,或者去找寻相关的资料。从中学到了很多知识。这次课程设计使我们有

机会把我们的课堂理论知识运用到实际生活中,贴近生活,实现我们的人生价值。
的理解和运用。也让我了解了ADC0804 的功能和原理。有很多设计理念来源于实
并且通过对知识的综合利用,加入个人的分析和比较,加深了了我们对理论知识

这样就不会使自己在做的过程中没有方向,并且这样也是为了方便最后设计和在

一起讨论不仅是一些思想的问题,还可以深入的讨论一些技术上的问题,这样可以使自己的处理问题要快一些,少走弯路。多改变自己设计的方法,在设计的过程中最好要不停的改善自己解决问题的方法,这样可以方便自己解决问题。

参考文献

1】李光飞,楼然苗,胡佳文等。单片机课程设计实例指导。北京:北京航空航天大学出

版社,2004

2】王守刚,电路原理图与电路板设计教程。北京:北京希望电子出版社,2000 23

成都理工大学本科毕业设计(论文)

3】肖金球,单片机原理与接口技术。北京:清华大学出版社,2004
4】何立民,单片机应用技术选编。北京:北京航空航天大学出版社,1996
5】彭立,张建洲,王少华.自适应温度控制系统的研制[J]东北师大学报(自然科学版),1994,(01) .

6】俞胜扬.环境湿热实验箱加湿系统的改进[J]电测与仪表,2004,(02) .

7】郭天祥.51单片机C语言教程—入门、提高、开发、拓展全攻略(电子工业出版社),2009
8】刘侃,张永泰,刘洛琨.ARM 程序设计优化策略与技术[J]单片机与嵌入式系统应用, 2004,(04).

9】谭浩强.C程序设计。清华大学出版社,1991
10】谢晨浩.环境试验设备湿度测量不确定度的分析[J]电子质量,2003,(12) . 11】王红萍.铂电阻温度传感器测温研究[J]抚顺石油学院学报,2003,(02) .

12】张媛媛,何怡刚,徐雪松. 基于C8051F020 的温湿度控制箱设计[J]国外电子元器件,
13】富刚,郎德荣. 温湿度闭环控制实验设备的开发与研制[J]沈阳航空工业学院学报,
2004,(10) .
14

15
,2011, , Pages284-292

附录一

#include<reg51.h>

#include<intrins.h>

#define uchar unsigned char 24

成都理工大学本科毕业设计(论文)

#defineuint unsigned int

sbitcs=P3^5;

sbitrd=P3^7;

sbitwr=P3^6;

sbitlcdrs=P2^0;

sbitlcdrw=P2^1;

sbitlcden=P2^2;

sbits1=P2^4;

sbits2=P2^5;

sbit s3=P2^6;

sbit s4=P2^7;


sbit D1=P3^0;
sbit D0=P3^1;

ucharcode table[]="Humidity ";

ucharcode table1[]="%";

ucharcode table2[]="Low";

ucharcode table3[]="% High";

ucharresult,Low=202,High=216;

void delay(uint i)

//延时程序


{

uchar j;


25

成都理工大学本科毕业设计(论文)

while(i--)

{

for(j=0;j<115;j++)

{

};

}

}

voidinit_ad() //初始化AD

{

}

cs=0;


cs=0;

_nop_();

wr=0;

_nop_();

rd=1;

_nop_();

wr=1;

_nop_();

_nop_();



26

成都理工大学本科毕业设计(论文)

cs=1;

_nop_();

_nop_();

}

voidread_ad() // AD转换后的值

{

cs=0;

_nop_();

wr=1;

_nop_();

wr=0;


_nop_();

_nop_();

result=P0;

_nop_();

_nop_();

rd=1;

_nop_();

cs=1;

_nop_();



27

成都理工大学本科毕业设计(论文)

}

voidwrite_com(uchar com) //向液晶屏写指令

{

lcdrs=0;

P1=com;

delay(5);

lcden=1;

delay(5);

lcden=0;

}
void write_data(uchar result) //向液晶屏写数据
P1=result;

delay(5);

lcden=1;

delay(5);

lcden=0;

}

voidinit() //液晶屏初始化

{

uchar num;



28

成都理工大学本科毕业设计(论文)

lcden=0;

write_com(0x38);

write_com(0x0c);

write_com(0x06);

write_com(0x01); //清屏指令

write_com(0x8a); //写入的首地址

}

voiddisplay() //液晶屏显示

{

uint num, Low1,Low2,High1,High2;
uchar x,y;
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);



29

成都理工大学本科毕业设计(论文)

delay(5);

write_com(0x80); //数据指针设置

for(num=0;num<10;num++)

{

write_data(table[num]);//写第一行数据写入字母

Humidity

delay(5);

}

write_com(0x8c);

delay(5);

write_com(0x80+0x40);//设置数据地址指针为2
write_data(table1[0]) ;

write_data(table2[num]);//写第二行数据 写入 字母Low

delay(5);

}

write_com(0x80+0x45);

for(num=0;num<7;num++)

{

High

write_data(table3[num]);//写第二行数据

写入 字母


delay(5);


30

成都理工大学本科毕业设计(论文)

}

write_com(0x80+0x43); //写入的首地址写Low的值

write_data(Low1+0x30);

delay(5);

write_data(Low2+0x30);

delay(5);

write_com(0x80+0x4c); //写入的首地址 High的值

write_data(High1+0x30);

delay(5);

write_data(High2+0x30);
delay(5);
}

voidkeyscan()

{

if(s1==0)

{

delay(10);

if(s1==0)

{

High++;



31

成都理工大学本科毕业设计(论文)

if(High==99)

High=98;

while(!s1);

}

}

if(s2==0)

{

delay(10);

if(s2==0)

{

High--;


while(!s2);

}

}

if(s3==0)

{

delay(10);

if(s3==0)

{

Low++;



32

成都理工大学本科毕业设计(论文)

while(!s3);

}

}

if(s4==0)

{

delay(10);

if(s4==0)

{

Low--;

while(!s4);
}
} unsigned char timer0h,timer0l,time; //生日歌

codeunsigned char sszymmh[]={5,1,1, 5,1,1, 6,1,2, 5,1,2, 1,2,2, 7,1,4,

5,1,1,5,1,1, 6,1,2, 5,1,2, 2,2,2, 1,2,4,

5,1,1,5,1,1, 5,2,2, 3,2,2, 1,2,2, 7,1,2, 6,1,2,

4,2,1,4,2,1, 3,2,2, 1,2,2, 2,2,2, 1,2,4};

//音阶频率表高八位

codeunsigned char FREQH[]={

0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,



33

成都理工大学本科毕业设计(论文)

0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC,//1,2,3,4,5,6,7,8,i

0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,

// 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,

};

//音阶频率表低八位

codeunsigned char FREQL[]={

0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,

0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F,//1,2,3,4,5,6,7,8,i

0xEE,0x44,0x6B,0xB4,0xF4,0x2D,

0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,

{

unsignedchar t1;

unsignedlong t2;

for(t1=0;t1<t;t1++)

{

for(t2=0;t2<8000;t2++)

{

} } 34

成都理工大学本科毕业设计(论文)

TR0=0;

}

voidt0int() interrupt 1

{

TR0=0;

speaker=!speaker;

TH0=timer0h;

TL0=timer0l;

TR0=1;

}

Void song()


TL0=timer0l;

TR0=1;

delay2(time);

}

voidbeen(void)

{

unsignedchar k,i;

TMOD=1; //CT0 定时工作方式1

EA=1;



35

成都理工大学本科毕业设计(论文)

ET0=1;//IE=0x82//CPU 开中断,CT0开中断

i=0;

while(i<35){ //音乐数组长度,唱完从头再来

k=sszymmh[i]+7*sszymmh[i+1]-1;

timer0h=FREQH[k];

timer0l=FREQL[k];

time=sszymmh[i+2];

i=i+3;

song();

}
}
void main()
lcdrw=0;

init_ad();

init();

Low=Low*0.39;

High=High*0.39;

while(1)

{

keyscan();

start_ad();



36

成都理工大学本科毕业设计(论文)

delay(10);

read_ad();

delay(10);

result=result*0.39;

display();

delay(1000);

if(result>High||result<Low)

{

been();

D0=0;;

}





37

成都理工大学本科毕业设计(论文)

附录二





38

显示全文