为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

毕业设计(论文)-基于单片机的空调温度,湿度控制器设计

2017-09-24 43页 doc 233KB 27阅读

用户头像

is_686908

暂无简介

举报
毕业设计(论文)-基于单片机的空调温度,湿度控制器设计毕业设计(论文)-基于单片机的空调温度,湿度控制器设计 基于单片机的空调温度,湿度控制设计 摘 要 本毕业设计论文介绍了基于AT89C52单片机的空调温度和湿度控制器的设计,该控制器硬件主要由AT89C52单片机,DHT11温度湿度检测电路,电源电路和输出控制电路等组成,软件采用C语言编程。该控制器利用单片机技术,通过温度和湿度检测电路对空调环境温度和湿度自动监测,并由 LCD 显示所测温度和湿度,实现了对温度和湿度的优化控制。 关键词:AT89C52单片机;温度;湿度;传感器;控制器 I 基于单片机的空调温度,湿...
毕业设计(论文)-基于单片机的空调温度,湿度控制器设计
毕业(论文)-基于单片机的空调温度,湿度控制器设计 基于单片机的空调温度,湿度控制设计 摘 要 本论文介绍了基于AT89C52单片机的空调温度和湿度控制器的设计,该控制器硬件主要由AT89C52单片机,DHT11温度湿度检测电路,电源电路和输出控制电路等组成,软件采用C语言编程。该控制器利用单片机技术,通过温度和湿度检测电路对空调环境温度和湿度自动监测,并由 LCD 显示所测温度和湿度,实现了对温度和湿度的优化控制。 关键词:AT89C52单片机;温度;湿度;传感器;控制器 I 基于单片机的空调温度,湿度控制设计 Abstract This paper of the graduation design introduces AT89C52 SCM based on controller design of temperature and humidity of the air conditioning .This controller hardware consist of AT89C52 SCM, DHT11 detection circuit of temperature and humidity , supply circuit of the power and output control circuit and other components, The C programming language used in the software. The controller using technology of SCM.,It is realize the optimal control of temperature and humidity through detection circuit of the temperature and humidity monitoring automatically the temperature and humidity around the environment of the air conditioning ,and the LCD displaying the value of the temperature and humidity. Keywords: AT89C52 SCM; Temperature; Humidity; Sensors; Controller II 目录 摘 要 .................................................................. I Abstract ............................................................... II 1. 绪论 ................................................................. 1 1.1引言 ............................................................. 1 1.2 设计目的及意义 .................................................. 1 1.3 设计的要求及主要 ............................................ 2 2. 系统组成及原理 ....................................................... 3 2.1 系统组成及原理 .................................................. 3 2.1.1 系统组成 ...................................................... 3 2.1.2 系统工作原理 .................................................. 3 2.2 硬件设计部分 .................................................... 5 2.2.1 单片机最小系统 ................................................ 5 2.2.1.1 单片机AT89C52简介 .......................................... 5 2.2.1.2 复位电路简介 ................................................ 7 2.2.1.3 晶振电路简介 ................................................ 7 2.2.2 电源电路 ...................................................... 8 2.2.3 DHT11温湿度传感器 ............................................. 8 2.2.4 lcd1602液晶显示器 ............................................. 9 2.2.5 键盘 ......................................................... 10 2.2.6 蜂鸣器 ....................................................... 11 2.2.7 发光二极管的显示 ............................................. 12 3. 软件部分设计 ........................................................ 13 3.1 软件图设计 ................................................ 13 3.2 程序 ........................................................... 14 4 总结 ................................................................. 30 参考文献 ............................................................... 31 附录1 系统电路 ......................................................... 32 附录2 PCB图 ........................................................... 33 附录3 实物照片 ......................................................... 34 致谢 ................................................................... 35 基于单片机的空调温度,湿度控制设计 1. 绪论 1.1引言 温度与湿度是影响人类生存与生活的两大因素,人类自古以来就不停的对温湿度 进行探索,温度与湿度在探索中逐渐被人类所熟知,人类开始对温湿度进行控制来达到自己想要的结果。其中空调可以很方便快捷地控制温湿度。那么空调是怎样控制温湿度的呢,我们接下来来探讨。 1.2 设计目的及意义 自古以来,温度,湿度都是影响人们生活的两大因素。温度过高不仅会使人们感觉到热,还会加快食物变质等其他不良影响,同样温度过低会让人感到寒冷及作物生长缓慢等等。湿度同样也会影响人们的生活。湿度过高或者过低会引发许多生理疾病及其他不好的影响。所以,人们及其他生物只适合生活在一定范围的温湿度范围之内。 自前几十年市场上出现一种名叫空调的家电,立刻受到广大消费者的青睐,经过几十年的发展,空调已经成为家电中很普及的家电之一。由此可见,人们随着生活质量的提高,对一些娱乐享受的消费同样随之提高,空调正适应潮流而出现。 夏日,随着温度的升高,一些食物容易变质腐烂。特别是一些酒店,菜肴的新鲜程度至关重要。当市场上出现一种家电叫冰箱时立刻引起消费者的抢购。 北方冬季空气湿度低,太干燥,影响皮肤的水分代谢。使人们生理不适。所以市场也有一些家电增加湿度,也可以喷一些水来增加湿度。而南方刚好相反,湿度过高, 所以除湿机就出现市场。 由上述可知,温度湿度对我们的影响。所以研究温度湿度是非常重要。在选择毕业设计目,我就选择基于单片机空调温度,湿度控制设计。设计的目的就是控制温度和湿度的控制。使温度湿度在一定范围内,当超出范围,相应的发光二极管发光,报警。 1 基于单片机的空调温度,湿度控制设计 1.3 设计的要求及主要内容 设计并制作以单片机为核心的空调温度,湿度控制器主要由单片机控制系统,直流稳压电源,温度与湿度检测电路和显示电路等几部分组成,实现对空调温度,湿度控制的功能。 2 基于单片机的空调温度,湿度控制设计 2. 系统组成及原理 2.1 系统组成及原理 2.1.1 系统组成 系统组成硬件主要有按键电路,发光二极管显示电路,单片机最小系统,LCD液晶显示电路,DHT11温湿度传感器电路,电源电路。系统主要要完成对温度湿度的采集、显示以及设定等工作,从而实现对温度湿度的控制。本系统采用DHT11作为检测温湿度器件,外部温度湿度信号经 DHT11将输入的模拟信号转换成8位的数字信号, 通过并口传送到单片机系统( AT89C52) ,单片机系统将接收的数字信号译码处理,通过LCD1602将温度显示出来;同时单片机系统还将完成键盘扫描 、按键温度设定、超温,湿度报警等程序的处理 ,将处理的温,湿度信号与系统设定设定值比较,形成可以由蜂鸣器和发光二极管显示温湿度是否超出范围,从而实现智能化。 键入控制 液晶显示电路 报警及显示 单片机 AT89C52 单片机最小系统 温湿度检测电路 电源供给 图1 系统原理方框图 2.1.2 系统工作原理 系统设计的目的就是对环境的温湿度值的控制,硬件主要包括发光二极管电路,单片机最小系统,按键电路,LCD液晶电路,DHT11温湿度电路,蜂鸣器报警电路,及电源电路。我在这介绍几个重要的电路:(1)发光二极管电路:发光二极管的作用是显示反映环境温湿度值是否在设定值范围的具体显示,这样就可以通过四个不同的发光二极管的发光状况来看出温湿度大概具体的值范围,这样有利于我们更方便控制温 3 基于单片机的空调温度,湿度控制设计 湿度值。(2)按键电路:我这用8个按钮的作用就是改变设定的温湿度上限下限值,按键两个一组改变一个值的大小,一个是递加的作用,一个递减的作用。从而实现设计的人性化。(3)LCD液晶电路:在这个设计,由于需要显示环境温湿度值和设定的温湿度上限下限值,再说需要显示的数据较多,所以我选择液晶1602显示器。通过液晶显示器可以准确方便随时了解现在的温湿度值和设定值。(4)DHT11温湿度传感器电路:这个设计需要检测温湿度值,所以需要一个电路来检测温湿度值,在选择传感器时,由于DHT11具有同时检测温湿度值的功能,而且连接电路简单便捷,所以DHT11是我最好的选择了。(5)蜂鸣器电路:当温湿度过高或者过低时,需要报警功能,我选用一种方便便宜的元件蜂鸣器,由于单片机引脚电流过小,然而驱动蜂鸣器需要一个的电流,需要放大电流,所以我选择NPN三极管来放大电流,单片机引脚低电平驱动蜂鸣器报警。(6)电源电路:正常情况下,一般电压都是220V交流电压,然而设计需要+5V直流电压,所以需要一个电源电路来转换成需要的电源。我选用一种变压器先把220V变成9V电压,通过桥式整流把交流转变成直流,再通过电容滤波及7805稳压,最后转变成需要的+5V直流电源。 led_yellowLCD1602液晶显示电路GNDVCCP1lcd1602R212P141GND320Ω2VCCled_green3123456789VOVCC4R312P13RS5RW320Ω6PPPPPPPPE00000000led_blueVCC012345677LCD 1602DB08R412P12DB13912DB2320ΩGND10led_redP22DB3R1011AT89C52P23DB410K12R512P11140P24DB5P1.0VccVCC13239P00P00DB6320ΩP1.1P0.014发光二极管显示电路338P01P01DB7P1.2P0.115437P02P02BG VCCP1.3P0.216536P03P03BG GNDP1.4P0.312635P04P04VCCP1.5P0.4VCC734P05P05key1P1.6P0.58AT89C5233P06P06P1.7P0.6R1RST/Vpd932P07P07GNDRST/VpdP0.71031VCC10KP3.0/RXDEA/VppVCC1130VCCC3P3.1/TXDALE/PROG1229P3.2/ INTOPSEN132810UF复位电路P3.3/INT1P2.71427P3.4/T0P2.6C11526P3.5/T1P2.51625R11P3.6/WRP2.430pF17245KDHT11VCCP3.7/RDP2.312MHZXTAL218232GNDXTAL2P2.21XTALXTAL11922VCCXTAL1P2.1P2722021DATAGNDVssP2.03NC14C2单片机AT89C52GND30pF晶振电路buzzerDHT11温湿度传感电路GNDR8P20PNP1kTF1D17805PPPPPP12121212333333014567VCC+5VVinVCC+5vkey5key4key3key2蜂鸣器电路GNDC5C412121212220uF/25VG1000uF/25VND2D3~220V~9Vkey9key8key7key6DD3 变压器GNDGND电源电路R9R8R7R610K10K10K10K GND按键电路 图2 系统总电路 4 基于单片机的空调温度,湿度控制设计 2.2 硬件设计部分 2.2.1 单片机最小系统 晶振电路,复位电路及单片机组成单片机最小系统,其中复位电路的极性电容的大小直接影响单片机的复位时间,容值越大需要的复位时间越短,我选用10uF。晶振电路我选用12MHZ的晶振,晶振频率直接影响单片机的处理速度,频率越大处理速度越快。与晶振相连的是两个电容,我采用30pF。单片机我选用AT89C52。单片机就像电脑中的PCU,是数据处理及控制中心。最小系统的电路图如下: 图3 单片机最小系统图 2.2.1.1 单片机AT89C52简介 单片机,是单片微型计算机的简称,它最早是被用在工业控制领域,是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器,随机存储器,只读存储器,多种I/O口和中断系统,定时器/计时器等功能集成到一块硅片上构成的一个小而完善的计算机系统。 该设计论文采用AT89C52型号单片机,该型号单片机有四十个引脚,引脚图如下 5 基于单片机的空调温度,湿度控制设计 图4 单片机引脚图 各引脚功能: (1)Vcc(40脚):接+5v电源,为单片机提供电源。 (2)Vss(20脚):接地,属于电源接口。 (3)XTAL1(19脚):片内振荡器方相放大器和时钟发生器电路的输入端。当使用片内振荡器时,该引脚连接外部石英晶体和微调电容;当采用外接时钟源时,该引脚接外部时钟振荡器的信号。 (4)XTAL2(18脚):片内振荡器反相放大器的输出端。当使用片内振荡器时,该引脚连接外部石英晶体和微调电容;当采用外部时钟源时,该引脚悬空。 (5)RST(9脚):复位信号输入端,高电平有效。在此引脚加上持续时间大于2个机器周期的高电平,就可以使单片机复位。 EA(6)/Vpp(31脚):EA为该引脚的第一功能,即外部程序存储器访问允许控制端。 EA当接高电平时,在PC值不超出0FFFH时,单片机读片内程序存储器(4KB)中的程序;当PC值超出时,将自动转向读取片外60KB程序存储器空间中的程序 EA当接低电平时,只读取外部程序存储器中的内容,读取的地址范围为0000H,FFFFH,片内的4KB Flash程序存储器不起作用。 Vpp为该引脚的第二功能,即在对片内Flash进行编程时,Vpp引脚接入编程电压。 (7)ALE/PROG(30脚):ALE为CPU访问外部程序存储器或外部数据存储器提供一个地址锁存信号,将低8位地址锁存在片外的地址锁存器中。 PROG为该引脚的第二功能,即在对片内Flash存储器编程时,此引脚作为编程脉冲输入端。 (8)(29脚):片外程序存储器的读选通信号,低电平有效。 PSEN (9)P0,P1,P2,P3:I/O口引脚。 6 基于单片机的空调温度,湿度控制设计 2.2.1.2 复位电路简介 单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态, 并从这个状态开始工作。无论是在单片机刚开始接上电源时, 还是断电后或者发生故障后都要复位。89系列单片机的复位信号是从RST引脚输人到芯片的施密特触发器中的。当系统处于正常工作状态时, 且振荡器稳定后, 如果RST引脚有一个高电平并维持2 则CPU就可响应并且将系统复位。复位分为手动复位个机器周期(24个振荡周期), 和上电复位。本设计系统采用的是上电自动复位。 系统复位电路如下所示。 图5 复位电路图 2.2.1.3 晶振电路简介 晶振就是给单片机提供稳定的正常工作的时钟信号。其原理:在石英晶体的两个极板上加一个电场,晶片会产生机械变形,对极板施加机械力使其变形,又会在极板上产生相应的电荷,这叫作压电效果。如果在两个极板上加上交变的电压,晶片便会产生机械变形震荡,同时这种机械震荡还会产生交变的电场,但是当外加交变电压频率与晶片固有的频率相等时,机械振动的幅度会加剧,产生交变电场也增大。叫做压电谐波。 AT89C52内部有一个用于构成片内振荡器的高增益反相放大器, 振荡器产生的信 号送到单片机, 作为单片机的时钟信号,驱动单片机产生执行指令功能的机器周期。引脚XTAL1和XTAL2是此放大器的输人端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起可构成一个自激振荡器,外接石英晶体或陶瓷谐振器以及电容C1和C2构成并联谐振电路, 接在放大器的反馈回路中。对外接电容C1和C2的值虽然没有严格的要求, 但电容的大小多少会影响振荡器频率的高低、振荡器的稳定性、起振圈内部振荡的接法的快速性和温度稳定性。 7 基于单片机的空调温度,湿度控制设计 一个晶振与两个30pF的电容组合连接单片机的两端XTAL1和XTAL2而成晶振电容,此处采用12MHZ的晶振。 电路如下所示 图6 晶振电路图 2.2.2 电源电路 一般电源包括变压,整流,滤波,稳压四个部分。变压是利用电磁感应的原理,主要构件是初级线圈,次级线圈和铁心。整流部分应用桥式整流电路,就是利用了桥臂上二极管的正向导通特性。若是全桥整流输入为正弦信号,那就是前半个周期,其中两个二极管加上的是正向电压,另外两个为负向电压,加正向的导通,形成一个回路,后半个周期一个道理。 直流稳压电源中的滤波电路一般是在电压输出并联一个电容,他的作用是滤除电路中的交流部分。 此处稳压采用的是7805,7805是一种固定式的三端集成稳压器,它可以在满足一定条件下输出5V电压,电流最大一般是1A。 该电源的元件:变压器一个,二极管四个,7085一个,极性1000uf电容一个,极性220uf电容一个,电路如下: 图7 电源电路 2.2.3 DHT11温湿度传感器 DHT11数字温湿度传感器是一款含有己校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机连接。因此该产品具有品质卓越,超快响应,抗干扰能力强,性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程 8 基于单片机的空调温度,湿度控制设计 序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中药调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积,极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选择。产品为4针单排引脚封装。连接方便,特殊封装形式可根据用户需求而提供。 单片机是用DATA引脚连接,单线双向。DATA用于微处理器与DTH11之间DHT11与 的通信和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数部分用于以后扩展,现读出为零。操作流程如下: 一次完整的数据传输为40bit,高位先出。 数据格式:8bit湿度整数数据+8bit湿度小数数据 +8bit温度整数数据+8bit温度小数数据 +8bit校验和 数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bit温度整数数据+8bit温度小数数据”所得结果的末8位。 DHT11电路图如下 图8 DHT1电路 2.2.4 lcd1602液晶显示器 Lcd是液晶显示器的缩写,它是一种被动式的显示器,即液晶本身并不发光,而是利用液晶经过处理后能改变光线通过方向的特性,从而达到白底黑字或黑底白字显示的目的。液晶显示器具有省电,抗干扰能力强等优点,因此被广泛应用在智能仪器仪表和单片机测控系统中。 1602液晶主要技术参数如下表2所示。 表1 1602液晶主要技术参数表 显示容量 16×2个字符 芯片工作电压 4.5-5.5V 9 基于单片机的空调温度,湿度控制设计 工作电流 2.0mA(5.0V) 模块最佳工作电压 5.0V 字符尺寸 2.95×4.35(W×H)mm 在设计1602与单片机的接口时,我们将D0-D7八个数据口与P0口相连,但必须注意单片机AT89S52的P0口不带上拉电阻,所以必须附加10K的上拉电阻。其余引脚与单片机的接法如下所示。 图9 LCD电路 表2 1602液晶引脚功能表 引脚号 符号 引脚说明 引脚号 符号 引脚说明 1 Vss 电源地 9 D2 数据口 2 VDD 电源正极 10 D3 数据口 3 VO 液晶显示对比度调节端 11 D4 数据口 4 RS 数据/命令选择端(H/L) 12 D5 数据口 5 R/W 读写选择端(H/L) 13 D6 数据口 6 E 使能信号 14 D7 数据口 7 D0 数据口 15 BLA 背光电源正极 8 D1 数据口 16 BLB 背光电源负极 2.2.5 键盘 由于设计要求需要手动设定温湿度上限下限值的设定,所以需要按键来实现值的递加递减,我选用四角轻触按键,因为这种键的特点有手动按一下后,松手后按键自动弹回。 10 基于单片机的空调温度,湿度控制设计 这八个键盘的作用分别是:k2—上限温度值递加,k3—上限温度值递减,k4—下限温度值递加,k5—下限温度递减,k6—上限湿度值递加,k7—上限湿度值递减,k8—下限湿度值递加,k9—下限湿度递减。键盘接口电路如下所示。 图10 键盘电路 2.2.6 蜂鸣器 蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。本设计牵涉到超出范围报警,由于蜂鸣器简单又常用,用来做报警是很方便 蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动膜发声的,因此需要一定的电流才能驱动它,由于单片机接口电流都很小,不能够驱动蜂鸣器工作发声,这时就需要一种电流放大的效果,三级管刚好有这种作用,因此引用三极管,此处选用PNP,PNP三极管基极与发射极电流较小,所以基极接单片机引脚接口,由于电流放大的作用,发射极与集电极之间电流较大,所以发射极接蜂鸣器。 蜂鸣器电路图如下: 图11 蜂鸣器电路 11 基于单片机的空调温度,湿度控制设计 2.2.7 发光二极管的显示 发光二极管是一种由磷化镓等半导体材料制成的,能直接将电能转换成光能的显示器件。 此处应用4个发光二极管作为显示温湿度控制显示作用的效果。当温度高于设定的温度上限值时,红色发光二极管点亮;当温度低于设定的温度下限值时,蓝色发光二极管点亮;当湿度高于设定的湿度上限值时,绿色发光二极管点亮;当湿度低于设定的湿度下限值时,黄色发光二极管点亮。 电路图如下 图12 发光二极管电路 12 基于单片机的空调温度,湿度控制设计 3. 软件部分设计 3.1 软件流程图设计 程序是从定义变量,数组及其他开始,后再对一些元件进行初始化,当判断这些元件初始化成功,可以正常工作时,然后开始对温湿度进行不停的检测,单片机不停的对温湿度传感器进行读取数据,又不停的传送给液晶显示器来显示当前温湿度,后再与设定的温湿度值进行值大小比较,当出现温湿度超过设定值时,通过发光二极管和蜂鸣器来提醒报警。程序不停的对温湿度进行检测,读取,显示,比较,程序进行死循环。 图13 软件流程图 13 基于单片机的空调温度,湿度控制设计 3.2 程序 #include #include #define uint unsigned int #define uchar unsigned char #define KeyPort P3 sbit lcd_rs=P2^2; sbit lcd_rw=P2^3; sbit lcd_e=P2^4; sbit buz_bit=P2^0; sbit dl_red=P1^1; sbit dl_blue=P1^2; sbit dl_green=P1^3; sbit dl_white=P1^4; sbit Sensor_SDA = P2^7; uchar *String; uchar Sensor_Data[5]={0x00,0x00,0x00,0x00,0x00}; uchar Sensor_AnswerFlag; //收到起始标志位 uchar Sensor_ErrorFlag; //读取传感器错误标志 uchar Sensor_Check; //校验和 uint Sys_CNT; uint Tmp; uchar flag; uchar num; uchar code table[]="Temp: 'C"; uchar code table1[]="RH: %"; 14 基于单片机的空调温度,湿度控制设计 uchar code table2[]="Sensor Not"; uchar code table3[]="Connected"; uchar code table4[]="Check wrong"; uchar temp_H_shi,temp_H_ge, temp_L_shi,temp_L_ge, hum_H_shi,hum_H_ge, hum_L_shi,hum_L_ge, shih,geh, shi,ge; uchar temp; uchar T1_count,T0_count; uchar hum;//定义整形的湿度数据 uchar temp_H,temp_L,hum_H,hum_L; uchar code number_table[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39}; uchar code table5[]=" welcome to "; uchar code table6[]="this is my work。"; void lcd_init(void);//液晶初始化 void delay_ms(uint ms); //12MHZ延时N毫秒 void write_com(uchar com);//给lcd写指令 void delay_us(uint us);//延时12微妙 void write_com(uchar com);//lcd写指令 void write_data(uchar dat); //lcd写数据 void display_start(void);//lcd一开始显示的 void write_char(uchar x,uchar y, uchar c);//往第y行的第x+1列写字符c void display_form(void);//设置lcd显示的基本框架 void display_temp_hum(void);//显示温度湿度 void key();//键盘扫描 void campare(void);//看温度湿度是否在上限下限之间 15 基于单片机的空调温度,湿度控制设计 unsigned char Read_Sensor(void); unsigned char Read_SensorData(void); void diyihang(uint z); void dierhang(uint z); void display(); void Clear_Data (void); void check_and_display(); void delay_us(uint us)// 延时12微妙 { while(us--) { _nop_() ; } } void write_com(uchar com)//lcd写指令 { lcd_e=0; lcd_rs=0; lcd_rw=0; P0=com; delay_us(400);// 延时N微妙 lcd_e=1; delay_ms(1); //12MHZ延时N毫秒 lcd_e=0; } 16 基于单片机的空调温度,湿度控制设计 void write_data(uchar dat) //lcd写数据 { lcd_e=0; lcd_rs=1; lcd_rw=0; P0=dat; delay_us(33);// 延时N微妙 lcd_e=1; delay_ms(1); //12MHZ延时N毫秒 lcd_e=0; } void delay_ms(uint ms) //延时一毫秒 { uchar i; while(ms--) for(i=0;i<123;i++); } void lcd_init(void)//液晶初始化 { delay_ms(15); write_com(0x38);//设置16x2,5x7点阵,8位数据接口 delay_ms(5); write_com(0x38); delay_ms(5); write_com(0x38); write_com(0x38); write_com(0x0c);//设置开显示,不显示光标 write_com(0x01);//显示清屏 write_com(0x06);//写一个字符后地址指针加1 17 基于单片机的空调温度,湿度控制设计 } void display_start(void)//lcd一开始显示的 { uchar j; write_com(0x80);//放置光标的位置为第一行第一列 for(j=0;j<16;j++) { write_data(table5[j]); delay_us(100); } write_com(0xc0);//放置光标的位置为第2行第一列 for(j=0;j<16;j++) { write_data(table6[j]); delay_us(9); } } void write_char(uchar x,uchar y, uchar c)//往第y行的第x+1列写字符c { if(y==0) write_com(0x80+x); else if(y==1) write_com(0xc0+x); else if(y>1){} write_data(c); delay_ms(5); } 18 基于单片机的空调温度,湿度控制设计 void display_form(void)//设置lcd显示的基本框架 { write_char(0,0,'T'); write_char(1,0,':'); write_char(2,0,' '); write_char(3,0,'H'); write_char(4,0,' '); write_char(5,0,' '); write_char(6,0,' '); write_char(7,0,'L'); write_char(8,0,' '); write_char(9,0,' '); write_char(10,0,' '); write_char(11,0,'N'); write_char(12,0,' '); write_char(13,0,' '); write_char(14,0,0xdf);//lcd显示? write_char(15,0,'C'); write_char(0,1,'R'); write_char(1,1,':'); write_char(2,1,' '); write_char(3,1,'H'); write_char(4,1,' '); write_char(5,1,' '); write_char(6,1,' '); write_char(7,1,'L'); write_char(8,1,' '); write_char(9,1,' '); write_char(10,1,' '); write_char(11,1,' '); 19 基于单片机的空调温度,湿度控制设计 write_char(12,1,'N'); write_char(13,1,' '); write_char(14,1,' '); write_char(15,1,'%'); } void key()//键盘扫描 { uchar key_l,key_h; uchar key_value; P3=0xf0; //高四位置高,低四位拉低 key_l=P3; key_l=key_l&0xf0; if(key_l!=0xf0) { delay_ms(5); if(key_l!=0xf0) { key_l=P3&0xf0;//11100000 0xe0表示左边第一个键按下 key_l=key_l|0x0f;//假设11101111 P3=key_l; key_h=P3; key_h=key_h&0x0f; //00001110 key_l=key_l&0xf0;//11100000 key_value=key_h+key_l;//11101110 } } switch (key_value) { 20 基于单片机的空调温度,湿度控制设计 case 0xee:temp_H++;display_temp_hum();break;//第1行第1列键按下,上限温度加1 case 0xde:temp_H--;display_temp_hum();break;//第1行第2列键按下,上限温度减1 case 0xbe:temp_L++;display_temp_hum();break;//第1行第3列键按下,下限温度加1 case 0x7e:temp_L--;display_temp_hum();break;//第1行第4列键按下,下限温度减1 case 0xed:hum_H++;display_temp_hum();break;//第2行第1列键按下,上限湿度加1 case 0xdd:hum_H--;display_temp_hum();break;//第2行第2列键按下,上限湿度减1 case 0xbd:hum_L++;display_temp_hum();break;//第2行第3列键按下,下限湿度加1 case 0x7d:hum_L--;display_temp_hum();break;//第2行第4列键按下,下限湿度减1 default:display_temp_hum();break; } } void campare(void)//看温度湿度是否在上限下限之间 { if(temp>temp_H) { dl_red=0; dl_blue=1; } if(temptemp_H)||(temphum_H)||(hum=temp)&&(temp>=temp_L))&&((hum_H>=hum)&&(hum>=hum_L))) { buz_bit=1; } if(temp_H>=temp) { if(temp>=temp_L) { dl_red=1; dl_blue=1; } } if(hum>hum_H) { dl_green=0; dl_white=1; } if(hum=hum) { if(hum>=hum_L) { 22 基于单片机的空调温度,湿度控制设计 dl_white=1; dl_green=1; } } } void main() //主函数 { //Timer_init();//定时器初始化 lcd_init();//液晶初始化 display_start();//液晶开始显示的 delay_ms(5000);//lcd显示5s时间 display_form();//设置lcd显示的基本框架 //init_ds18b20();//ds18b20初始化 temp_H=45; temp_L=0; hum_H=70; hum_L=50; dl_red=1; dl_blue=1; dl_white=1; dl_green=1; while(1) { Read_Sensor(); display_temp_hum();//调用温度湿度显示程序 campare();//看温度湿度是否在上限下限之间 key();//键盘扫描 Clear_Data(); // 清除收到数据 check_and_display(); // 检测并显示数据 delay_ms(1000); // 延时 2S(两次读取间隔至少2S) 23 基于单片机的空调温度,湿度控制设计 } } void Clear_Data (void) { int i; for(i=0;i<5;i++) { Sensor_Data[i] = 0x00; }//接收数据清零 } void display_temp_hum(void) { uchar temp_H_shi,temp_H_ge, temp_L_shi,temp_L_ge, hum_H_shi,hum_H_ge, hum_L_shi,hum_L_ge; temp_H_shi=temp_H/10; temp_H_ge=temp_H%10; temp_L_shi=temp_L/10; temp_L_ge=temp_L%10; hum_H_shi=hum_H/10; hum_H_ge=hum_H%10; hum_L_shi=hum_L/10; hum_L_ge=hum_L%10; Tmp = Sensor_Data[2]*256+Sensor_Data[3]; diyihang(13); write_data(Tmp/100%10 + '0'); write_data(Tmp/10%10 + '0'); 24 基于单片机的空调温度,湿度控制设计 temp=(Tmp/100%10)*10+(Tmp/10%10); Tmp = Sensor_Data[0]*256+Sensor_Data[1]; dierhang(14); write_data(Tmp/100%10 + '0'); write_data(Tmp/10%10 + '0'); hum=(Tmp/100%10)*10+(Tmp/10%10); write_char(4,0,number_table[temp_H_shi]); write_char(5,0,number_table[temp_H_ge]); write_char(8,0,number_table[temp_L_shi]); write_char(9,0,number_table[temp_L_ge]); write_char(4,1,number_table[hum_H_shi]); write_char(5,1,number_table[hum_H_ge]); write_char(8,1,number_table[hum_L_shi]); write_char(9,1,number_table[hum_L_ge]); } unsigned char Read_SensorData(void) { uchar i,cnt; uchar buffer,tmp; buffer = 0; for(i=0;i<8;i++) { cnt=0; while(!Sensor_SDA) //检测上次低电平是否结束 { if(++cnt >= 300) { break; 25 基于单片机的空调温度,湿度控制设计 } } //延时Min=26us Max50us 跳过数据"0" 的高电平 delay_us(2); //判断传感器发送数据位 tmp =0; if(Sensor_SDA) { tmp = 1; } cnt =0; while(Sensor_SDA) //等待高电平 结束 { if(++cnt >= 200) { break; } } buffer <<=1; buffer |= tmp; } return buffer; } unsigned char Read_Sensor(void) { unsigned char i; delay_ms(1000); //主机拉低(Min=800US Max=20Ms) Sensor_SDA = 0; delay_ms(2); 26 基于单片机的空调温度,湿度控制设计 //释放总线 延时(Min=30us Max=50us) Sensor_SDA = 1; delay_us(2); //主机设为输入 判断传感器响应信号 Sensor_SDA = 1; Sensor_AnswerFlag = 0; // 传感器响应标志 //判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行 if(Sensor_SDA == 0) { Sensor_AnswerFlag = 1;//收到起始信号 Sys _CNT = 0; //判断从机是否发出 80us 的低电平响应信号是否结束 while((!Sensor_SDA)) { if(++Sys_CNT>300) //防止进入死循环 { Sensor_ErrorFlag = 1; return 0; } } Sys_CNT = 0; //判断从机是否发出 80us 的高电平,如发出则进入数据接收状态 while((Sensor_SDA)) { if(++Sys_CNT>300) //防止进入死循环 { 27 基于单片机的空调温度,湿度控制设计 Sensor_ErrorFlag = 1; return 0; } } 数据接收 传感器共发送40位数据 // // 即5个字节 高位先送 5个字节分别为湿度高位 湿度低位 温度高位 温 度低位 校验和 // 校验和为:湿度高位+湿度低位+温度高位+温度低位 for(i=0;i<5;i++) { Sensor_Data[i] = Read_SensorData(); } } else { Sensor_AnswerFlag = 0; // 未收到传感器响应 } return 1; } void check_and_display() { if(Sensor_AnswerFlag == 1) { Sensor_Check = Sensor_Data[0]+Sensor_Data[1]+Sensor_Data[2]+Sensor_Data[3]; //校验成功 if(Sensor_Check ==Sensor_Data[4]) { if(flag == 1) 28 基于单片机的空调温度,湿度控制设计 { flag = 0; } } else //校验失败 { flag=1; } } else //没有连接上 { write_com(0x01);//清屏 diyihang(1);//显示位置 for(num=0;num<10;num++) { write_data(table2[num]); } dierhang(1);//换行显示 for(num=0;num<9;num++) { write_data(table3[num]); } flag=1; } } void diyihang(uint z) { z--; write_com(0x80+z); } 29 基于单片机的空调温度,湿度控制设计 void dierhang(uint z) { z--; write_com(0x80+0x40+z); } 4 总结 毕业设计就是一个大学生最后一个任务,时光很快,不知不觉我也完成,对于它,开始之前它就像一座大山一样,让我不敢仰视,而完成之后,俯视也不过如此。困难往往都是这样,不敢触及永远只有仰视与畏惧。 本次课程设计从获得题目开始便着手准备,一开始我不知何处开始,很长一段时间都没有什么进展,于是我找了同学探讨这个设计,慢慢看清。首先我看了一些资料,关于这个设计的要求及目的。而后就学习c语言编程,慢慢的逐渐掌握后再学习单片机。然后就用c语言编写程序,C语言编完后就开始用altium designer画原理图,画pcb板。其中过程也算挺漫长的,学习的自然也多。 通过这项任务,使我更加了解单片机的具体应用及前景,也使得我开始踏入单片机的入门门槛。感谢同学和老师的帮助,使我能够独立完成,让我能够体会完成后的喜悦与快乐,虽然这个设计可能是我一生当中不算什么大事,但是它却是我大学生涯的一个句号。让我以后回忆也会充实了大学生活。 30 基于单片机的空调温度,湿度控制设计 参考文献 [1] 张毅刚,彭喜元,彭宇编著. 单片机原理及应用[M]。高等教育出版社 北京 [2] 史久贵编著. 基于Altium Designer的原理图与PCB设计[M]。 机械工业出版社 [3] 郭天祥. 51单片机C语言教程[M]。 北京:电子工业出版社,2009 [4] 谭浩强等. C程序设计(第二版)[M]。 北京:清华大学出版社 1999 [5] 胡向东. 传感技术[M]。 重庆大学出版社 2006 [6] 张国雄. 测控电路第三版[M]。 北京:机械工业出版社 2007 [7] 钟富昭. 8051单片机典型模块设计与应用[M]。 北京:人民邮电出版社 2007 [8] 赵修良. 于LabVIEW 的多路温湿度测量系统[J]。 湖南科技学院学报 2009 [9] 周润景,张丽娜. 基于PROTEUS的电路及单片机系统设计与仿真[M]。 北京航空航天大学出版社 2006 [10] 李建民. 单片机在温度控制系统中的应用[J]。 江汉大学学报(1996 [11] 罗亚非,凌阳16位单片机应用基础[M]. 北京航空航天大学出版社,2005.5 [12] 韩建国. Foudation and Application of Microcontroller[M]。 中国计量出版社 [13] Stephen G Kochan 著.Programming in ANSI C[M]. Hagden Kooks Indianapolis:Indiana U.S.A,1994 [14]8-bit Microcontroller With 8K Bytes Flash AT89C52[M]. ATMEL,1999 31 基于单片机的空调温度,湿度控制设计 附录1 系统电路 led_yellowLCD1602液晶显示电路GNDVCCP1lcd1602R212P141GND320Ω2VCCled_green3123456789VOVCC4R312P13RS5RW320Ω6PPPPPPPPE00000000led_blueVCC012345677LCD 1602DB08R412P12DB13912DB2320ΩGND10led_redP22DB3R1011AT89C52P23DB410K12R512P11140P24DB5P1.0VccVCC13239P00P00DB6320ΩP1.1P0.014发光二极管显示电路338P01P01DB7P1.2P0.115437P02P02BG VCCP1.3P0.216536P03P03BG GNDP1.4P0.312635P04P04VCCP1.5P0.4VCC734P05P05key1P1.6P0.58AT89C5233P06P06P1.7P0.6R1RST/Vpd932P07P07GNDRST/VpdP0.71031VCC10KP3.0/RXDEA/VppVCC1130VCCC3P3.1/TXDALE/PROG1229P3.2/ INTOPSEN132810UF复位电路P3.3/INT1P2.71427P3.4/T0P2.6C11526P3.5/T1P2.51625R11P3.6/WRP2.430pF17245KDHT11VCCP3.7/RDP2.312MHZXTAL218232GNDXTAL2P2.21XTALXTAL11922VCCXTAL1P2.1P2722021DATAGNDVssP2.03NC14C2单片机AT89C52GND30pF晶振电路buzzerDHT11温湿度传感电路GNDR8P20PNP1kTF1D17805PPPPPP12121212333333014567VCC+5VVinVCC+5vkey5key4key3key2蜂鸣器电路GNDC5C412121212220uF/25VG1000uF/25VND2D3~220V~9Vkey9key8key7key6DD3 变压器GNDGND电源电路R9R8R7R610K10K10K10K GND按键电路 图14 系统电路图 32 基于单片机的空调温度,湿度控制设计 附录2 PCB图 图15 PCB图 33 基于单片机的空调温度,湿度控制设计 附录3 实物照片 图16 实物照片 34 基于单片机的空调温度,湿度控制设计 致谢 通过对基于单片机空调温度,湿度控制设计的毕业设计,让我把自己所学的知识应用到实践当中。毕业设计就好像大学当中最后的任务,就像旅行者最后一道风景。给人振奋,给人深刻。 首先,我必须感谢所有的老师的,尤其是林老师,是他们让我能把这个毕业设计独立完成的可能,同样感谢周围的同学,是他们在旁的指点及鼓励。谢谢大家,让我完成大学最后的路途。 35
/
本文档为【毕业设计(论文)-基于单片机的空调温度,湿度控制器设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索