基于单片机的仓库温湿度监测系统设计

发布时间:2016-05-07 14:37:05   来源:文档文库   
字号:

计(论文)

闽南理工学院教务处制


毕业设计诚信声明书

本人郑重声明:在毕业设计工作中严格遵守学校有关规定,恪守学术规范;我所提交的毕业设计是本人在 指导教师的指导下独立研究、撰写的成果,设计中所引用他人的文字、研究成果,均已在设计中加以说明;在本人的毕业设计中未剽窃、抄袭他人的学术观点、思想和成果,未篡改实验数据。

本设计和资料若有不实之处,本人愿承担一切相关责任。

学生签名:

基于单片机的仓库温湿度监测系统设计

【摘 要】本文主要设计了一种基于STC89C52单片机的智能温湿度监测系统,该系统能对仓库内的温湿度进行读取从而了解其温湿度的变化情况,利用温湿度传感器DHT11将仓库内的温湿度的变化情况,变换成数字量,通过单片机进行控制,最后由LCD完成温湿度显示。该系统可以方便的实现温度和湿度的采集和显示,使用起来相当方便,具有精度高,量程大,灵敏度高,体积小,耗能低等优点,适用于我们日常生活和工农业的温湿度监测,也可以作为温湿度处理模块嵌入其他系统中,作为其他系统的辅助扩展,有广泛的前景。

【关键词】DHT11,监测与控制,单片机SCT89C52LCD1602

The design of the warehouse humiture monitoring system based on the MCU

ABSTRACTThis paper mainly introduces a kind of intelligenttemperature and humidity monitoring system basedon STC89C52 MCU.the system can read and understand the changes

of temperature and humidity on the temperature and humidityDHT11 in the warehouse, using temperature and humidity sensor will change of temperature and humidity in the warehouse.

transform into digital quantity through the microcontroller to control, finally completed by LCD temperature and humidity display. The system can achievethe temperature and humidity

convenient acquisition and display, very convenient to use, has high accuracy, large measuring range, high sensitivity, small volume, low energy consumption,temperature and humidity monitoring applied to our daily life and industrial and agricultural,but also can be used as a temperature and humidity processing module embedded in other systems, as an adjunct to other the expansion of the system, has broad prospects.

Key Words DHT11monitoring and controlsingle chip micyocoSCT89C52LCD1602



1.绪论

1.1 课题研究的目的和意义

随着国民经济的快速发展和科学技术的普及,高性能设备发展快,对温度和湿度的要求也越来越高的企业也越来越多。传统模式的温湿度监测是以人为基础,依靠人工抄数值,人工巡回查看等方式来测量和记录环境状况的数据。在这种模型中,不仅效率低不利于人才资源的管理分配,以及缺乏科学性,许多重大事故都是由人为因素造成的,人工维护缺乏完整的管理系统。该监控系统可以解决资源的人力浪费,管理不及时的问题。

1.2 温湿度计及其温湿度监测系统的研究现状

 早在1970年,温湿度监测技术首先采用模拟式的组合仪器,采集现场信息和数据,并进行记录、指示和监测。1980年末期生产出了分布式控制系统。

90年代中期的智能温湿度传感器(亦称数字温湿度传感器)开发出来。它是微电子技术、计算机技术和自动测试技术(ATE)的结晶。目前,国际上已开发出多种智能温度传感器系列产品。内部温湿度传感器包括智能温湿度传感器、A/D传感器、信号处理器、存储器(或寄存器)和接口电路。部分产品用一个CPU、多路选择器、只读存储器(ROM)和随机存取存储器(RAM)。智能温湿度传感器可采集温湿度,适配各种微控制器(MCU),并且可通过软件来实现测试和控制,实现更智能的温湿度控制器。

现在科学家使用一台称为psychrometer的仪器测量相对湿度。psychrometer由两个连接在一起的温度计。在测量相对湿度时,要把psychrometer旅转直至被包着的温度计维持一个稳定的温度,并且该温度必须比干的温度计低。空气中的实际温度是干温度计。两个不同温度之间调用,因为水分蒸发的结果。科学家记录的温度的温度计和wet-bulb depression”,然后制成图表,用来计算相对湿度。

跟电子温度计一样,湿度计随着湿度传感器的快速发展日益成熟。现在常用的AD590温度传感器,DS18B20湿度传感器HMxx’系列,HS1xx系列,随着温湿度计的发展温室监控系统发展较为成熟,为人们更好的服务。

目前正研究和发展计算机数据采集控制系统的多因子综合控制系统。在世界上的一些国家,温湿度监控技术在实现半自动化的基础上朝着完全无人化、自动化的方向迅速发展。

1.3 本论文的主要内容

该系统通过温湿度传感器对仓库内的温湿度进行采集,利用ADC0832将仓库内的温湿度的变化情况,变换成数字量,通过单片机STC89C52进行控制,最后由LCD完成温湿度显示

2.系统方案设计

综合自己在本科阶段所学的知识和参与实验的经验,研究设计了以STC89C52单片机为主芯片的仓库温湿度监测系统,本设计是一个以单片机为核心的主模块,包括显示模块与报警器、温湿度传感器以及相应的软件等。通过接口可以有选择性的择取所需的功能模块进行所需的测量。设计框图如2-1所示。

在单片机电路设计中,可以采用一只温湿度传感器DHT11,此传感器,超快响应、抗干扰能力强、性价比高等优点可以满足设计要求。电路比较简单,软件设计也比较简单。

设计以STC89C52单片机为核心,整体结构采用模块化设计,主板上设计有键盘与显示电路以及RS232串口电路和电路子模块与功能扩展模块的接口,通过子模块接口用户可以按需来组合所需要的子模块,完成温湿度监测的实现。在通信和监控上,采用LCD液晶显示。本温湿度传感器属于多功能温湿度传感器,可以设置上下报警温度,当温度不在设置范围内时,可以报警。

2-1 总设计框图

ST89C52控制温湿度监测系统的设计完成后,将实现以一种基于DHT11的数字温湿度传感器设计方案。简要阐述了温湿度传感器DHT11的性能指标、单片机系统、LCD1602显示模块以及时序图、ADC0832接口电路模块及时序图。利用主板STC89C52单片机控制DHT11进行数据采集并将数据送至LCD液晶显示结果。另外,采集结果可由接口电路送入计算机显示并存储。


3.系统硬件设计

3.1 硬件系统总体结构图

本文所设计的数字测温湿度显示系统主要由STC89C52单片机及其最小系统模块、温湿度传感器、LCD1602液晶显示,结构方框图如图3-1所示,各部分主要结构设计及功能在下面介绍。

3-1硬件电路图

3.2 STC89C52最小系统

单片机最小系统是指用最少的元器件件组成可以运行的单片机的系统。即如图3-2所示。单片机的最小系统包括电源(接地),晶振电路(本设计使用11.0592MHz晶振),复位电路及EA引脚。有以上部分组成的最小系统,单片机就可以进行正常的简单运行了,值得注意的是,EA31脚)需要接高电平,因此,单片机不使用片外存储器,这样单片机系统才会正确运行用C语言编程所烧写进单片机的程序。

3-2 STC89C52最小系统

1)电源:单片机使用的是5V电源,其中正极接40引脚,负极(地)接20引脚。

2)晶振电路:单片机是一种时讯电路,必须提供脉冲信号才能正常工作,在单片机内部已集成了振荡器,使用晶体振荡器,接1819脚。

3)复位电路:复位按钮,重启。

4EA引脚:上拉倒VCC,表示烧写到单片机内部,程序小的话直接存在内部集成的ROM,至于程序大了就要接地了,外扩ROM

至此,一个单片机就接好,通上电,单片机就开始运行了。图中的排阻RM1P0口上拉用的,C4是滤波电容,抗干扰用。其他P0-P3口均为I/O口,每个口有8个引脚,共32个,编号都是0-7,如P0.0-P0.7,这些IO口是用来外接各种元器件,通过编程来实现各种所需要的功能。

3.3 温湿度传感器模块

本系统采用DHT11数字温湿度传感器,它是一个含有一个数字信号输出的温度和湿度传感器。以确保产品具有较高的长期稳定性与可靠性。它是特殊的温度和湿度传感技术和数字技术的模块集合。传感器包括电阻式感湿元件和一个测温元件,并具有较高的性能的8位微控制器相连接。DHT11的供电电压为3.3~5.5V DC。传感器通电后,等待1S度过一个不稳定状态,在这种状态下不需要发送任何指令。电源引脚(VCCGND)之间可增加一个100pF的电容,用于去耦滤波。

因此该产品具有抗干扰能力强、性价比高、响应快速等优点。DHT11的典型应用模块和实物图如图3-33-4所示。

3-3 DHT11硬件模块

3-4 DHT11数字温湿度传感器

3.4 ADC0832接口电路模块

ADC08328位分辨率的A/D转换芯片,其最高分辨达到256级,适用于一般的模拟量转换。其参考电压和电源输入的内部复用,实现05V的芯片模拟输入电压。芯片转换时间为32μS,据有双输出数据,可作用于数据验证,为了减少数据误差,稳定性强和转换速度。芯片的特定数据输入,使处理器控制变得更加方便和多器件挂接。DI通过数据的输入端子,可以方便地达到功能选择通道。ADC0832接口电路如图3-5所示。

3-5 ADC0832与单片机连接电路

一般情况下 ADC0832 与单片机的接口是四条数据线,分别是 DIDOCLKCS。因为DI端与 DO端在通信时不能同时有效,并且单片机的接口是双向的,所以电路设计时可以将 DI DO 并行在同根数据线上使用(如图 3-5)。 ADC0832没有运行时,其CS输入应设置为高电平,则芯片被禁止,DO/DI CLK 的电平可任意。当要执行 A/D转换时,首先将CS置于低电平,直到转换结束完成为止。在此芯片开始转换运行,并且由数据处理器CLK产生时钟脉冲,DO/DI端则使用其DI端的数据信号。在第一个时钟脉冲的结束之前 DI端必须置于高电平,表示启始信号。在第 二、三个脉冲结束之前 DI2位数据应用于选择信道的功能,其功能项如表 3-1 所示。

3-1 功能项

当两者的数据是“0,“1时,CH0为输入负端 IN-CH1为输入正端 IN+进行输入,当两者数据为“0、“0时,将 CH0作为输入正端 IN+CH1为输入负端 IN-进行输入,当两者数据为“1、“1时,只单一的对 CH1进行单通道转换,当两者的数据为“1、“0时,只单一的对 CH0 进行单通道转换。到第三个脉冲的结束之后 DI端的输入电平没有输入作用,此后DI/DO端则开始使用数据输出,DO开始读取转换数据。 从第 四个脉冲结束开始由DO端输出转换数据最高位DATA7,然后每个脉冲结束,DO端输出下个数据。直到第十一个脉冲时发出最低位数据 DATA0,完成输入一个字节的数据。也正是从此位开始输出下一个相反字节的数据,即从第十一个字节的末端输出 DATD0。然后输出的8位数据,到第 十九个脉冲时完成数据输出,也就是标志着一次的 A/D转换结束。最后将 CS置高电平,立即处理转换完成后的数据。具体的时序图参考图3-6

3-6 ADC0832时序图

作为一个单通道的模拟输入电压ADC0832 05V并且电压精度为19.53mVADC08328位分辨率。如果IN+输入与IN-输入的时,可是将电压值设定在一个大范围内,增加了转换的宽度。但值得指出的是,在进行IN+输入与IN-的输入时,如果IN-输入的电压大于IN+输入的电压则转换后数据结果一直为00H

3.5 LCD1602显示模块

LCD1602显示模块原理图如图3-7所示。

3-7 LCD1602与单片机连接电路

工业字符型液晶,能够同时显示16x0232个字符。(162行)

LCD1602液晶也被称为1602字符型液晶,它是一个专门显示符号、字母、数字等的点阵型液晶模块,它有许多的5X7或者5X11等点阵字符位汇聚而成,每个点阵字符位可以显示一个字符。具体引脚功能参照表3-2

LCD1602的特性:

1+5V电压,可调对比度

 2)内部含有复位电路

 3)提供各种控制命令,如:清屏、闪烁的光标、闪烁字符、以及其他功能

 480个字节的显示数据存储器DDRAM

 5)内置有1925X7字型点阵的CGROM(字符发生器)

68个可以用户自定义的5X7CGRAM

3-2 LCD1602引脚说明

LCD1602读写时序图如图3-83-9所示。

3-8 LCD1602读操作时序图

3-9 LCD1602读操作时序图

3.6 报警模块

本系统根据实际测得的温度值由温湿度传感器处理从而判断出指标是否超出,如果存在超出则有蜂鸣器报警。蜂鸣器的电流比较大,用单片机的I/O口直接驱动不能带动,需要进行电流放大,这里采用PNP三极管8550R3限流电阻,一般取1-2K,蜂鸣器正极接到PNPC极,当P2.0=1PNP截止,不响,当P2.0=0PNP导通,响。报警模块如图3-10所示。

3-10 报警模块


4.系统软件设计

4.1 主程序设计

本文采用DHT11温湿度传感器,它对仓库内的温湿度进行采集,并将其转换成数字信号,将数字信息提供给系统,系统进行LCD初始化显示,进行延时等待后读取DHT11温湿度传感器模块中的信息,才采集好的信息传给LCD1602进行显示,通过设定好的上下限进行报警。软件系统具体流程图如图4-1所示。

4-1 软件主程序图

4.2 LCD1602软件设计

1. 指令介绍

1.1 清屏指令

4-1 清屏指令

功能:

<1> 清除液晶显示器,将 DDRAM 的内容都填入"空白" ASCII0H

<2> 光标归位,将光标撤回显示屏的左上方;

<3> AC (地址计数器)的值设置为0

2. 光标归位指令

4-2 光标归位指令

功能:

<1> 把光标撤回到显示屏的左上方;

<2> AC (地址计数器)的值设置为0;

<3> 保持DDRAM的内容保持不变。

3. 进入模式设置指令

4-3进入模式设置指令

功能:设定每次输入1位数据后光标的方向,并且观察每次写入的一个

字符是否移动方向。

4. 显示开关控制指令

4-4显示开关控制指令

功能:光标显示/关闭控制显示器开/关、控制显示器开/关以及光标是否闪烁。

5. 设定显示屏或光标移动方向指令

4-5显示屏或光标移动方向指令

功能:使整个显示屏幕移位光标移位或光标移位。

6. 功能设定指令

4-6功能设定指令

功能:设定数据总线位数、显示的行数及字型。

7. 设定CGRAM地址指令

4-7 CGRAM地址指令

功能:设定下一个要存入数据CGRAM的地址。

DB5DB4DB3 为字符号。

地址。(000~111)(能定义八个字符)

DB2DB1DB0为行号。(000~111)(八行)

8. 设定DDRAM地址指令

4-8DDRAM地址指令

功能:设定下一个要存入数据DDRAM的地址。

9. 读取忙信号或AC地址指令

4-9读取忙信号或AC地址指令

功能:

<1> 读取忙碌信号BF的内容,BF=1表示液晶显示器繁忙,暂时无法接收单

片机传送来的数据或指令;当BF=0时,液晶显示器可以接收单片机传送来的数据或指令。

<2> 读取地址计数器(AC)的内容。

10. 数据写入DDRAMCGRAM指令一览

4-10 数据写入DDRAMCGRAM指令

功能:

<1> 将字符码写入DDRAM,显示出相对应的字符在液晶显示器上。

<2> 将使用者自己设计的图形存入CGRAM

DB7DB6DB5可为任何数据,一般取“000

DB4DB3DB2DB1DB0对应于每行5点的字模数据。

11. CGRAMDDRAM读出数据的指令一览

4-11CGRAMDDRAM读出数据的指令一览

功能:读取CGRAMDDRAM中的内容。

显示模块的程序流程图如图4-2所示。

4-2 LCD1602流程图

4.3 A/D转换模块软件设计

ADC0832通过内部多路器来控制通道,处理器的控制命令通过DI引脚输入。ADC08328个引脚,CH0CH1为模拟输入端,CS为片选引脚,CLKADC0832的时钟输入端,CS低置位才能对ADC0832进行配置和启动转换,CS在转换中必须为低,当CS为低时,DI端加上一个高电平,接着CLK上加一个时钟,DI上的逻辑1会使ADC0832脱离高电平,然后通道配置数据随着时钟通过DI端移入多路器,在经过一个时钟,D0置于低电平并启动转换,接着从处理器接受时钟信号,每经过一个时钟,转换后的数据就会从高电平到低电平逐次从D0移出,经过8个时钟后,数据又从低电平到高电平的形式从D0中移出,当最后一位数据移出时转换完成。当CS从低电平变为高电平时,ADC0832内部所有寄存器清零。如果要进行下一次转换,CS必须做一个从高电平到低电平的跳变。具体A/D转换流程如图4-3所示。

4-3 ADC0832流程图


5.总结

通过这次毕业设计,我能较好地把理论运用到实际生活中,既复习了已学过的理论知识,又强化了动手实践能力,通过查阅资料了解了许多课外知识,为今后的学习打下基础。

在此次毕业设计过程中,我也遇到了很多问题,例如所编写的程序无法实现相关编程要求、对于自己做的实物器件工作原理不是很了解、毕业设计论文不知从何处下手等问题,但经过老师的辅导、以及通过图书馆及网上查阅的相关资料,从而得出了想要的答案,并开始着手编程及撰写毕业设计。编程过程中出现了例如进入死循环等情况,目标文件无法生成可执行文件等,经过多次调试及老师的讲解后终于解决了编程问题。也终于明白了“世上无难事,只怕有心人”的意义所在。在遇到问题时首先不能畏惧或躲避,要通过不断的学习及资料的收集来解决问题。成功没有捷径,上帝只垂青那些为目标执着追求的人。

俗话说“万事开头难”,在经历并克服困难并解决实际问题后,感觉到一种如释重负的感觉,同时体会到一句话:实践是检验真理的唯一标准,只有理论与实践结合才能达到最好应用的效果。

通过这一个多月的努力,我的毕业论文终于完成了,这意味着大学生活即将结束。在大学阶段,我在学习上和思想上都受益匪浅,这除了自身的努力外,与各位老师、同学和朋友的关心、支持和鼓励是分不开的。

本毕业论文是在章玲导师的悉心指导下完成的。老师严谨的治学态度、精益求精的工作作风、诲人不倦的精神,深深地感染和激励着我。从课题的选择到论文的最终完成,老师都始终给我细心的指导和不懈的支持,在此向章老师致以诚挚的谢意和崇高的敬意。

感谢所有关心和帮助过我的同学和朋友们,他们在我课题研究期间,给予我很多帮助和启示,让我懂得怎样才能做得更好。

感谢在百忙中评审毕业论文和参与答辩的老师,并真诚地期待得到您进一步的指导和帮助。


参考文献

[1] 刘木华曹崇文稻谷种子安全干燥温度模型研究[A].中国农业机械学会成立40周年庆典暨2003年学术年会论文集[C].2003120-123

[2] 张璧光霍光青伊松林多热源热泵与太阳能联合干燥木材的研究[A].第十届全国冷(热)水机组与热泵技术研讨会论文集[C].2002:71-74

[3] 黄立新王宗濂唐金鑫我国喷雾干燥技术研究及进展[J].化学工程.2001(02):56-59

[4] 王宝和,于才渊,王喜忠纳米多孔材料的超临界干燥新技术[J].化学工程,2005.33(2):24-28

[5] 徐成海张世伟赵雨霞王喜鹏真空干燥设备的国内外发展动态[J].干燥技术与设备. 2006(04):132-134

[6] 史勇春柴本银.中国干燥技术现状及发展趋势[J].通用机械.2006(10):81-85

[7] 罗汝林,褚金奎,沈洪源基于模糊控制的烟叶烘烤温湿度控制仪的设计[D].大连理工大学.20063:22-26

[8] 黄维崔国民赵高坤孙永华烟叶采收成熟度对产值量及烟叶品质的影响[J].湖南农业大学学报(自然科学版).2009(S1):34-39

[9] 聂平徐兴强李万扬龙国昌基于单片机的烟叶烘烤温湿度控制系统[J].机械与电子. 2005(07)91-94

[10] 夏茄程鲍安红谢守勇烘烤房温湿度检测系统的设计[J].农机化研究.2009(03)100-104

[11] 路康,冯建勤,闰文科烟叶烘烤过程智能控制系统设计[J].烟草科技,20085:21-25

[12] 郭鹏烟叶烘烤智能控制系统研究[D].河南农业大学学报,20072:44-49

[13] Meredith Cohn.Buyout Jeopardizes Maryland’s Tobacco Barns.Knight Ridder Tribune Business News.2004

[14] Kamal M,Siddiqui.Analysis of a Malakisi barn used for tobacco curing in East and Southern Africa.Energy Conversion.2001


附录一:单片机程序


#include

#define uchar unsigned char

#define uint unsigned int

#define LCM_Data P1//数据接口

#define ON 0

#define OFF 1

sbit LCM_E=P2^2;//定义接口

sbit LCM_RW=P2^1;

sbit LCM_RS=P2^0;

sbit ADC_CS=P3^4;

sbit ADC_CLK=P3^5;

sbit ADC_DAT=P3^6;

sbit BEEP=P3^7;

void LCM_WriteData(uchar WDLCM);

void LCM_WriteCommand(uchar WCLCM,BuysC);

uchar LCM_ReadData(void);

uchar LCM_ReadStatus(void);

void LCM_Init(void);

void DisplayOneChar(uchar X, uchar Y, uchar DData);

void DisplayListChar(uchar X, uchar Y, uchar code *DData);

void Delay5Ms(void);

void Delay400Ms(void);

uchar code uctech[] = {"temp:"};

uchar code net[] = {"Temperature"};

uchar code lcdcode[] = {0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x43,0xdf,0x87,0x4f};

/*uchar code net3[] = {""};

uchar code net4[] = {"C"}; */

uchar code net1[] = {"O"};

uchar code net2[] = {"X"};

/*uint se,d; */

unsigned char code pic[8]={0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00};//

uchar Temp;

uchar ADval;

uchar code ADTemp[256]=

{

150,150,150,150,150,150,150,150,150,150,

150,150,150,150,150,150,150,150,150,150,

150,150,150,150,150,150,150,150,150,150,

150,150,150,150,150,150,150,150,150,150,

150,149,148,146,145,144, 143,142,141,140,

138,137,136,135,134,134,133,132,131,130,

129,128,127,126,126,125,124,123,122,122,

121,120,119,119,118,117,116,116,115,114,

114,113,112,112,111,111,110,109,108,108,

107,107,106,105,105,104,104,103,102,102,

101,101,100,100,99 ,98 ,98 ,97 ,96 ,95 ,95 ,

95 ,94 ,94 ,93 ,92 ,92 ,91 ,91 ,90 ,90 ,89 ,89 ,

88 ,88 ,87 ,87 ,86 ,86 ,85 ,85 ,84 ,84 ,83 ,83 ,

82 ,82 ,81 ,81 ,80 ,80 ,79 ,79 ,78 ,78 ,77 ,77 ,

76 ,76 ,75 ,75 ,74 ,74 ,73 ,73 ,72 ,72 ,71 ,71 ,

70 ,70 ,69 ,69 ,68 ,68 ,67 ,67 ,66 ,66 ,65 ,65 ,

64 ,64 ,63 ,63 ,62 ,62 ,61 ,61 ,60 ,60 ,59 ,59 ,

58 ,58 ,57 ,56 ,56 ,55 ,55 ,54 ,54 ,53 ,52 ,52 ,

51 ,51 ,50 ,49 ,49 ,48 ,48 ,47 ,46 ,46 ,45 ,44 ,

44 ,43 ,42 ,42 ,41 ,40 ,40 ,39 ,38 ,37 ,37 ,36 ,

35 ,34 ,33 ,32 ,32 ,31 ,30 ,29 ,28 ,27 ,26 ,25 ,

24 ,23 ,22 ,21 ,19 ,18 ,16 ,15 ,14 ,12 ,10 ,8 ,

6 ,4 ,2 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,

0 ,

};

void LCM_WriteData(uchar WDLCM)

{

LCM_ReadStatus();//检测忙

LCM_Data = WDLCM;

LCM_RS = 1;

LCM_RW = 0;

LCM_E = 0;//若晶振速度太高可以在这后加小的延时

LCM_E = 0;//延时

LCM_E = 1;

}

void LCM_WriteCommand(uchar WCLCM,BuysC)//BuysC0时忽略忙检测

{

if (BuysC) LCM_ReadStatus();//根据需要检测忙

LCM_Data = WCLCM;

LCM_RS = 0;

LCM_RW = 0;

LCM_E = 0;

LCM_E = 0;

LCM_E = 1;

}

uchar LCM_ReadData(void)

{

LCM_RS = 1;

LCM_RW = 1;

LCM_E = 0;

LCM_E = 0;

LCM_E = 1;

return(LCM_Data);

}

uchar LCM_ReadStatus(void)

{

LCM_Data = 0xFF;

LCM_RS = 0;

LCM_RW = 1;

LCM_E = 0;

LCM_E = 0;

LCM_E = 1;

while (LCM_Data & 0x80);//检测忙信号

return(LCM_Data);

}

void LCM_Init(void)

{

LCM_Data = 0;

LCM_WriteCommand(0x38,0);//三次显示模式设置,不检测忙信号

Delay5Ms();

LCM_WriteCommand(0x38,0);

Delay5Ms();

LCM_WriteCommand(0x38,0);

Delay5Ms();

LCM_WriteCommand(0x38,1);//显示模式设置,开始要求每次检测忙信号

LCM_WriteCommand(0x08,1);//关闭显示

LCM_WriteCommand(0x01,1);//显示清屏

LCM_WriteCommand(0x06,1);// 显示光标移动设置

LCM_WriteCommand(0x0C,1);// 显示开及光标设置

}

void DisplayOneChar(uchar X, uchar Y, uchar DData)

{

Y &= 0x1;

X &= 0xF;//限制X不能大于15Y不能大于1

if (Y) X |= 0x40;//当要显示第二行时地址码+0x40;

X |= 0x80;// 算出指令码

LCM_WriteCommand(X, 0);//这里不检测忙信号,发送地址码

LCM_WriteData(DData);

}

void DisplayListChar(uchar X, uchar Y, uchar code *DData)

{

uchar ListLength;

ListLength = 0;

Y &= 0x1;

X &= 0xF;//限制X不能大于15Y不能大于1

while (DData[ListLength]>0x20)//若到达字串尾则退出

{

if (X <= 0xF)//X坐标应小于0xF

{

DisplayOneChar(X, Y, DData[ListLength]);//显示单个字符

ListLength++;

X++;

}

}

}

void Delay5Ms(void)

{

unsigned int TempCyc = 5552;

while(TempCyc--);

}

void Delay400Ms(void)

{

uchar TempCycA = 5;

unsigned int TempCycB;

while(TempCycA--)

{

TempCycB=7269;

while(TempCycB--);

};

}

uchar ADC0832()

{

uchar i;

uchar adval=0x00;

ADC_CS=0; //选通

ADC_CLK=0;

ADC_DAT=1; //起始

ADC_CLK=1;

ADC_CLK=0;

ADC_DAT=1; //选择通道 0

ADC_CLK=1; //

ADC_CLK=0;

ADC_DAT=1;//0

ADC_CLK=1;

ADC_CLK=0;

ADC_DAT=1; //释放

for(i=0;i<8;i++)

{

ADC_CLK=1;

adval=adval<<1;

ADC_CLK=0;

adval=adval|ADC_DAT;

}

ADC_CS=1;

return (adval);

}

void main(void)

{

uint b,s,g;

uchar c,d;

Delay400Ms();//启动等待,等LCM讲入工作状态

LCM_Init();//LCM初始化

Delay5Ms();//延时片刻(可不要)

DisplayListChar(0, 1, uctech);

DisplayListChar(3, 0, net);

DisplayOneChar(9, 1, pic);

while(1)

{

ADval=ADC0832();

Temp=ADTemp[ADval];

b=Temp%1000/100;

s=Temp%100/10;

g=Temp%10;

d=(0x43);

c=(0xdf);

DisplayOneChar(5, 1, lcdcode[b]);//

DisplayOneChar(6, 1, lcdcode[s]);//

DisplayOneChar(7, 1, lcdcode[g]);//

DisplayOneChar(9, 1, lcdcode[c]);//

DisplayOneChar(10, 1, lcdcode[d]);//

if(Temp>25)

{

BEEP=ON;

DisplayOneChar(12, 1, 'X');

}

else

{

BEEP=OFF;

DisplayOneChar(12, 1, 'O');

}

Delay400Ms();

}

}

}

}

附录二:总设计原理图

本文来源:https://www.2haoxitong.net/k/doc/e49c3ceaaaea998fcd220e0d.html

《基于单片机的仓库温湿度监测系统设计.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式