毕业设计(论文)_基于单片机AT89C52的大棚温度控制系统_第1页
毕业设计(论文)_基于单片机AT89C52的大棚温度控制系统_第2页
毕业设计(论文)_基于单片机AT89C52的大棚温度控制系统_第3页
毕业设计(论文)_基于单片机AT89C52的大棚温度控制系统_第4页
毕业设计(论文)_基于单片机AT89C52的大棚温度控制系统_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、毕业设计毕业设计题 目: 大棚温度控制系统 系 别: 计算机科学系 班 级: 计 应 091 姓 名: XXXX 学 号: 000000 指导老师: XXX 二一一年十一月十三日 目目 录录第第 1 1 章章 绪绪 论论.11.1 系统的概述.11.2 系统的要求.11.3 系统的主要模块.11.3.1 本系统的主要组成部分.11.3.2 各部分的功能.21.3.3 工作原理.2第第 2 2 章章 设计的理论基础设计的理论基础.32.1 AT89C52 的工作原理 .32.1.1 CPU 的结构 .32.1.2 CPU 的结构 I/O 口结构 .32.1.3 程序存储器.32.1.4 定时器.

2、42.1.5 中断系统.42.2 单总线数字温度传感器 DS18B20 检测电路.52.2.1 DS18B20 简单介绍 .52.2.2 DS18B20 的性能特点.52.2.3 DS18B20 的测温原理 .62.3 LCD1602 液晶显示器 .62.3.1 LCD1602 简介 .62.3.2 1602LCD 的指令说明及时序 .72.4 直流马达.82.4.1 马达工作的原理.82.4.2 马达的基本构造.9第第 3 3 章章 系统的硬系统的硬件件组组成成电路电路设设计计.103.1 系统总硬件设计.103.2 时钟电路.103.3 AT89C52 的复位电路 .113.4 单总线数字

3、温度传感器 DS18B20 检测电路.113.5 LCD1602 显示模块 .123.6 驱动电路.12第第 4 4 章章 系统软件的设计系统软件的设计.144.1 主程序设计 .144.2 温度检测.144.2.1 读取温度设计 .144.2.2 温度数据处理设计.164.3 液晶显示器 LCM1602 .174.3.1 LCM1602 初始化 .174.4 马达的控制 .21第第 5 5 章章 系统调系统调试试.22第第 6 6 章章 总结与展望总结与展望.235.1 总结.235.2 展望.23参考文献参考文献.24致致 谢谢.25附录附录 A A:程序:程序 .26附录附录 B B:元

4、件清单:元件清单 .42附录附录 C C:实物照片:实物照片 .42基于单片机 AT89C52 的大棚温度控制系统摘 要蔬菜的生长与温度息息相关,对于蔬菜大棚来说,最重要的一个管理因素是温度控制。温度不合适,蔬菜则停止生长或者生长速度减慢,从而造成不可估量的损失。所以要将温度始终控制在适合蔬菜生长的范围内。如果仅靠人工控制既耗人力,又容易造成误差。为此,在现代化的蔬菜大棚管理中通常有温度自动控制系统,以控制蔬菜大棚温度,适应生产需要。 单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。单片机具有体积小、集成度高、

5、性能稳定、控制功能强、易扩展、低功耗、价格便宜等特点,所以单片机市场前景广阔。本设计是通过单片机控制,来实现对蔬菜大棚温度进行自动控制。系统以 AT89C52 单片机为基础,通过数字及模拟式对温度进行采集并检测,通过显示屏显示当前温度。当采集到的温度高于系统设定值,马达将带动风扇的转动,实现自动控制大棚里的温度。【关键词】大棚温度控制系统 AT89C52 DS18B20 LCD1602 直流马达The Greenhouse Temperature Control SystemBased on AT89C52 MCUAbstractThe growth of vegetables and tem

6、perature are closely related, for vegetable shed, one of the most important management factor is the temperature control. Temperature not appropriate, then stop the vegetable growth or growth slowed, causing the immeasurable loss. So will always control temperature in vegetable growth for the range.

7、 If only on artificial control both human consumption, and easy to cause the error. Therefore, in modern management of vegetable shed, usually with temperature automatic control system, to control the vegetables canopy temperature, to adapt to the requirements of production.Single chip microcomputer

8、s are microcomputer as an important branch, is also a vitality of the model. Single chip microcomputer hereinafter referred to as the single chip microcomputer, is particularly applicable to control field, so it is also called the micro controller. Single chip microcomputer with small size, high lev

9、el of integration, stable performance, easy to control function expansion, low power consumption, price cheap and so on, so the single chip microcomputer wide prospect of market.This design is through the single-chip microcomputer control, to realize the canopy temperature vegetables for automatic c

10、ontrol. System based on single chip microcomputer AT89C52, through the digital and analog temperature in acquisition and detection, through the screen shows the current temperature. When the collected temperature higher than system setting, motors will drive the rotation of the fan, and realize the

11、automatic control the temperature of the shelter.【Key words】Temperature control of the greenhouses system AT89C52 DS18B20 LCD1602 DC motor第第 1 1 章章 绪绪 论论我国南方温度严热而漫长,只有大力推广大棚蔬菜的种植来满足人们日常生活对蔬菜的需要。随着人们生活水平的日益增长,对蔬菜的要求也较高,对大棚蔬菜的温度控制就是一个重要因素。温度过高,蔬菜就会停止生长或者糜烂。本系统仿真就基于单片机 AT89C52 实现对大棚温度的自动化控制(实物焊接时则采用存储器

12、更强大的 AT89S52) 。用数字温度计 DS18B20 采集,将采集到的温度用显示屏显示,再根据采集到的温度作分析来控制马达的转或停,从而实现对大棚温度的控制。1.1 系统的概述应用自动控制和电子计算机实现农业生产和管理的自动化,是农业现代化的重要标志之一。近年来电子技术和信息技术的飞速发展,带来了温室控制与管理技术方面的一场革命,随着“设施农业” 、 “虚拟农业”等新名称的出现。温度计算机控制与管理系统正在不断吸收自动控制和信息管理领域的理论和方法,结合温室作物种植的特点,不断创新,逐步完善,从而使温室种植业实现真正意义上的现代化,产业化。国内外度计算机控制技术的发展善计算机的发展最早可

13、以追溯到上个世纪的 40 年代,但将计算机用于环境控制则开始于 20 世纪 60 年代。20 世纪 80 年代初诞生了第一批温室控制计算机,此后温度计算机控制及管理技术便函先在发达国家得到广泛应用,后来各发展中国家也都纷纷引进,开发出适合自己的系统。这在给各国带来了巨大的经济效益的同时,也极大地推动了各国农业的现代化进程。本系统以 AT89C52 单片机为控制核心,主要是为了对蔬菜大棚内的温度的检测与控制而设计的。该测控仪具有检测精度高、使用简单、成本较低和工作稳定可靠等特点,所以具有一定的应用前景。1.21.2 系统的要求系统的要求 本系统通过单片机 AT89C52 控制,用 DS18B20

14、 数字温度计采集温度。通过 LCD1602液晶显示屏显示当前温度,当检测到温度高于系统设定温度值,马达将带动风扇的转动,实现自动控制降低大棚里的温度。本设计将实现大棚温度的自动化控制。 用 protues7.7 仿真软件绘制电路原理图,再根据电路原理图焊接电路板。1.3 系统的主要模块1.3.1 本系统的主要组成部分本系统为一个全自动温度检测与控制系统,由以下几个部分组成:AT89C52单片机,复位电路,温度检测电路,显示电路,马达。组成图如图1-1。图 1-1 温度自动控制主要组成部分 由图1-1所示,本系统的核心部分是AT89C52,此芯片是该电路的枢纽。由它先控制着温度的检测,用检测到的

15、温度实现马达的自动控制,以及显示。若检测到的温度高于设定的值则驱动马达转动。1.3.2 各部分的功能AT89C52单片机:它是系统的中央处理器,担负着系统的控制和运算。温度检测装置:DS18B20数字温度计对大棚内温度进行采集,将温度转换成数字。显示设备:主要是用于显示检测到的大棚温度。马达:主要用于带动风扇的转动。按键电路:设置系统时间和参考温度值。1.3.3 工作原理首先对硬件系统端口定义,DS18B20 定义端口为 P1.7, P0 口控制液晶 LCM1602 的显示,定义端口 P3.7 为马达控制端口。首先对温度采集,将采集到的温度转换数字,采集到的温度由 LCM 液晶显示屏显示。再将

16、采集到的温度与系统设定温度值进行比较,而控制P3.7 的电平输出。 温度检测装置AT89C52显示设备马达控制复位电路电源电路第第 2 2 章章 设计的理论基础设计的理论基础整个控制系统分为硬件电路设计和软件程序设计两部分。根据系统具体要求,可以对每一个具体部分进行分析设计。但要实现对各部分的设计,需要充分了解各部分的理论基础。本设计系统的基本组成单元包括:单片机控制单元,复位电路,按键电路,DS18B20温度检测电路,LCD1602 显示电路,直流马达。本章将逐一进行介绍。2.1 AT89C52 的工作原理2.1.1 CPU 的结构CPU 是单片机内部的核心部分,是单片机的指挥和执行机构,它

17、决定了单片机的主要功能特性。从功能上看,CPU 包括两个基本部分:运算器和控制器。下面说明控制器和运算器1。运算器包括算术逻辑运算部件 ALU、累加器 ACCC、B 寄存器、暂存寄存器 TMP1 和TMP2、程序状态寄存器 PSW、BCD 码运算调整电路等。为了提高数据处理和位操作能力,片内设有一些专用的寄存器,而且还增强了为处理逻辑电路的功能。在进行位操作是,进位位 CY 作为位操作累加器,整个位操作系统构成一台布尔处理机。2.1.2 CPU 的结构 I/O 口结构AT89C52 单片机有 4 个 8 位并行 I/O 接口,记作 P0、P1、P2 和 P3,每个端口都是 8位准双向口,共占

18、32 根引脚。每一条 I/O 线都能独立地用作输入或输出。每个端口都包括一个锁存器,一个输出驱动器和输入缓冲器,作输出时数据可以锁存,作输入时数据可以缓冲,但是这四个通道的功能完全不同。在无片外扩展存储器的系统中,这四个端口的每一位都可以作为准双向 I/O 端口使用,在具有片外扩展存储器系统中,P2 口送出高 8 位地址,P0 口为双向总线,分时送出低 8位地址和数据的输入/输出。2.1.3 程序存储器程序存储器用于存放编好的程序和表格常数,通常该区域具有不同的保护措施,以防止该区域的内容被破坏。程序存储器通过 16 位程序计数器寻址,寻址能力为 64K 字节。这似的能在 6K 地址空间内任意

19、寻址,但没有指令使程序能控制从程序存储器空间转移到数据存储空间。对 AT89C52 芯片来说,片内有 4K 字节 ROM/EPROM,片外可扩展 60K字节 EPROM,片内和片外程序存储器统一编址。在程序存储器中,有 6 个地址单元被保留用于某些特定的地址。 如表 2.1 所示:表 2.1 AT89C52 的复位、中断入口地址入口地址说明0000H复位后,PC=0000H0003H外部中断入口000BH定时器 T0 溢出中断入口0013H外部中断入口001BH定时器 T1 溢出中断口0023H串行口中断入口数据存储器用于存放运算的中间结果、数据暂存和缓冲以及标志位等。AT89C51 数据存储

20、器空间也分为内片和外片两大部分,即片内数据存储器 RAM 和片外数据存储器RAM。片内数据存储器最大可以寻址 256 个单元,片外最大可扩展 64K 字节 RAM,并且片内使用的是 MOV 指令,片外 64K ROM 空间专门为 MOVX 指令所用。2.1.4 定时器AT89C51 单片机的内部有两个 16 位可变成定时器 0 和定时器 1,它们都有定时或是事件计数的功能,可用于定时控制、延时、对外部事件计数和检测等场合。它们具有计数和定时两种工作方式以及四种工作模式。两个特殊功能寄存器用于确定定时器/计数器的功能和操作方式。定时器 T0 的核心是一个加 1 计数器,它由 8 位寄存器 TH0

21、 和 TH1 组成,可被变成为 13 位、16 位、两个分开的 8 位等不同的结构。计数器的输入脉冲源可以是外部脉冲源或系统时钟震荡器,计数器对着两个输入脉冲之一进行递增计数。定时器 T0 具有方式 0、方式 1、方式 2 和方式 3 四种工作方式。T1 具有方式 0、方式1 和方式 2 三种工作方式。不管是定时工作方式还是计数方式,定时器 T0 和 T1 在对内部时钟或对外部时间计数时,不占用 CPU 时间,除非定时器/计数器溢出,才可能中断 CPU的当前操作。由此可见,定时器是单片机中效率最高而且工作灵活的部件。2.1.5 中断系统中断是指中央 CPU 正在处理某事情的时候,外部发生了某一

22、事件,请求 COU 迅速去处理,于是,CPU 暂时中断当前的工作,转入处理所发生的事件;中断服务处理完成以后,再回到原来被中断的工作,这样的过程称为中断2。AT89C52 单片机有五个中断请求源。其中,两个外部中断源;两个片内定时器/计数器的溢出中断源 TE0 和 TF1;一个片内串行口接受或发送中断源 RI 或 TI。这些中断请求分别由单片机的特殊功能寄存器 TCON 和 SCON 的相应位锁存。当几个中断源同时向 CPU请求中断,要求 CPU 提供服务的时候,就存在 CPU 优先响应哪一个中断请求,于是一些微处理器和单片机规定了每个中断源的优先级别。2.2 单总线数字温度传感器 DS18B

23、20 检测电路由于传统的热敏电阻等测温元件测出的一般都是电压,再转换成对应的温度,需要比较多的外部元件支持,且硬件电路复杂,制作成本相对较高。这里采用DALLAS公司的数字温度传感器DS18B20作为测温元件。2.2.1 DS18B20 简单介绍DALLAS 最新单线数字温度传感器DS18B20是一种新型的“一线器件” ,其体积更小、更适用于多种场合、且适用电压更宽、更经济。DALLAS 半导体公司的数字化温度传感器DS18B20是世界上第一片支持“一线总线”接口的温度传感器。温度测量范围为-55+125 摄氏度,可编程为9位12 位转换精度,测温分辨率可达0.0625摄氏度,分辨率设定参数以

24、及用户设定的报警温度存储在EEPROM 中,掉电后依然保存。被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可以在远端引入,也可以采用寄生电源方式产生;多个DS18B20可以并联到3 根或2 根线上,CPU只需一根端口线就能与诸多DS18B20 通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便3。2.2.2 DS18B20 的性能特点独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。DS18B20支持多点组网功能,多个DS1

25、8B20可以并联在唯一的三线上,实现组网多点测温。DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。适应电压范围更宽,电压范围:3.05.5V,在寄生电源方式下可由数据线供电。温范围55125,在-10+85时精度为0.5。零待机功耗。可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温。在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快。用户可定义报警设置。报警搜索命令识别并标志超过程序限定温度的器件。测量结果直接输出数字温度

26、信号,以一线总线串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。以上特点使DS18B20非常适用与多点、远距离温度检测系统。DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列、各种封装形式如图 4 所示,DQ 为数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源;GND为地信号;VDD为可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。 2.2.3 DS18B20 的测温原理DS1

27、8B20的测温原理,低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量.计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55 所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55 所对应的一个基数值4。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器 1

28、的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。斜率累加器用于补偿和修正测温过程中的非线性其输出用,于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理。另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20发ROM功能命令发存储器操作命令处理数据5。2.3 LCD1602 液晶显示器2

29、.3.1 LCD1602 简介字符型LCD1602通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,引脚定义如表2.2所示: 表 2.2 引脚接口说明表编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极 第 1 脚:VSS 为地电源。第 2 脚:VDD 接 5V 正电源。第 3 脚:VL 为液晶

30、显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影” ,使用时可以通过一个 10K 的电位器调整对比度。第 4 脚:RS 为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第 5 脚:R/W 为读写信号线,高电平时进行读操作,低电平时进行写操作。当 RS 和 R/W共同为低电平时可以写入指令或者显示地址,当 RS 为低电平 R/W 为高电平时可以读忙信号,当 RS 为高电平 R/W 为低电平时可以写入数据。第 6 脚:E 端为使能端,当 E 端由高电平跳变成低电平时,液晶模块执行命令。第 714 脚:D0D7 为 8 位双向数据线。第 15 脚:背

31、光源正极。第 16 脚:背光源负极。2.3.2 1602LCD 的指令说明及时序 1602 液晶模块内部的控制器共有 11 条控制指令6,如表 2.3 所示:表 2.3 控制命令表序号指令RSR/WD7D6D5D4D3D2D1D01清显示00000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L*6置功能00001DLNF*7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志或地址01BF 计数器地址10写数到 CGRAMDDRAM)10要写的

32、数据内容11CGRAM 或 DDRAM 读数11读出的数据内容 1602 液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。1 为高电平、0 为低电平。指令 1:清显示,指令码 01H,光标复位到地址 00H 位置。指令 2:光标复位,光标返回到地址 00H。指令 3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令 4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平

33、不闪烁。指令 5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。指令 6:功能设置命令 DL:高电平时为 4 位总线,低电平时为 8 位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示 5x7 的点阵字符,高电平时显示5x10 的点阵字符。指令 7:字符发生器 RAM 地址设置。指令 8:DDRAM 地址设置。指令 9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令 10:写数据。指令 11:读数据。 LCD1602 读写时序如表 2.4 所示:表 2.4 基本操作时序表读状态输入RS=L,R/

34、W=H,E=H输出D0D7=状态字写指令输入RS=L,R/W=L,D0D7=指令码,E=高脉冲 输出无读数据输入RS=H,R/W=H,E=H输出D0D7=数据写数据输入RS=H,R/W=L,D0D7=数据,E=高脉冲输出无 2.42.4 直流马达直流马达电动马达,又称为马达或电动机,是一种将电能转化成机械能,并可再使用机械能产生动能,用来驱动其他装置的电气设备。 电动机种类非常繁多,但可大致分为交流电动机及直流电动机以用于不同的场合。2.4.12.4.1 马达工作的原理马达的旋转原理的依据为佛来明左手定则,当导线置放于磁场内,若导线通上电流,则导线会切割磁场线使导线产生移动。 电流进入线圈产生

35、磁场,利用电流的磁效应,使电磁铁在固定的磁铁内连续转动的装置,可以将电能转换成力学能。 与永久磁铁或由另一组线圈所产生的磁场互相作用产生动力 直流马达的原理是定子不动,转子依相互作用所产生作用力的方向运动7。 电枢:可以绕轴心转动的软铁芯缠绕多圈线圈。 场磁铁:产生磁场的强力永久磁铁或电磁铁。 集电环:线圈约两端接至两片半圆形的集电环,随线圈转动,可供改变电流方向的变向器。每转动半圈,线圈上的电流方向就改变一次。 电刷:通常使用碳制成,集电环接触固定位置的电刷,用以接至电源。 2.4.22.4.2 马达的基本构造电动机的种类很多,以基本结构来说,其组成主要由定子和转子所构成。 定子在空间中静止

36、不动,转子则可绕轴转动,由轴承支撑。 定子与转子之间会有一定空气间隙,以确保转子能自由转动。 定子与转子绕上线圈,通上电流产生磁场,就成为电磁铁,定子和转子其中之一亦可为永久磁铁8。第第 3 3 章章 系统的硬件组成电路设计系统的硬件组成电路设计系统的硬件组成部分包括:主控制器AT89C52单片机、温度传感器DS18B20、显示电路LCD1602、马达、报警装置等构成。AT89C52连接各模块的主控制端口,初步选定将要运用到的电子元器件,再用Protues绘制原理图,再根据原理图焊接电路板。3.1 系统总硬件设计 首先对硬件系统 18B20 定义端口为 P1.3,P2.4,P2.5,P2.6

37、和 P0 口控制液晶 LCM1602 的显示,定义端口 P1.5 为马达控制端口,P1.7 为喇叭控制端口。首先对温度采集,将采集到的温度转换数字,采集到的温度由 LCM 液晶显示屏显示。再将采集到的温度所属软件设置的哪个范围,而控制 P1.5 的电平输出。电路原理图如 3-1 所示:图 3-1 电路原理图 电路原理图用 Protues7.7 电路仿真软件绘制而成。用 Protues7.7 电路仿真软件软件绘制电路原理图方便,快捷。Protues7.7 电路仿真软件有丰富的元件库,智能的器件搜索,智能化的连线,可输出高质量的图纸。电路原理图清晰明了9。3.2 时钟电路AT89C52 芯片内部有

38、一个高增益反向放大器,用于构成震荡器。反向放大器的输入端为 XTAL1,输出端为 XTAL2。在 TXAL1 和 XTAL2 两端跨接由石英晶体及两个电容构成的自激震荡器10,如图 3-2 所示。电容器 C1 和 C2 取 22pF,选用不同的电容量对震荡频率有微调作用。但石英晶体本身的标定频率才是单片机震荡频率的决定因素。图 3-2 时钟电路 时钟电路中,两个电容都选择 22pF 的电容,电容各一端接与晶振相连,各一端接地。选择的晶振是频率为 12MHZ。此模块就是产生像时钟一样准确的振荡电路。3.3 AT89C52 的复位电路AT89C52 单片机通常采用上电自动复位和开关手动复位两种方式

39、。本系统采用上电复位电路,如图 3-3 所示,所谓上电复位,是指单片机只要一上电,便自动地进入复位状态。在通电瞬间,电容 C 通过电阻 R 充电,RST 端出现正脉冲,用以复位10。图 3-3 复位电路复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。RC 复位电路可以实现上述基本功能,但解决不了电源毛刺和电源缓慢下降等问题,而其调整 RC 常数改变延时会令驱动能力变差。3.4 单总线数字温度传感器 DS18B20 检测电路DQ 为数据输入/输出引脚,连接

40、 P1.7。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源,GND 为地信号;VCC 为电源信号。图 3-4 为 DS18B20 检测电路。图 3-4 DS18B20 检测电路3.5 LCD1602 显示模块用 AT89C52 的 P0 口作为数据线,用 P2.1、P2.2、P2.3 分别作为 LCD 的RS 、R/W、E。其中 E 是下降沿触发的片选信号,连接 P2.3,R/W 是读写信号,连接 P2.2,RS 是寄存器选择信号,连接 P2.1。图 3-5 为 LCD1602 的硬件连接。 图 3-5 LCD1602 的硬件连接 VEE 用连接一阻值为 10K 的电阻,主要用

41、于调节对比度的调整。接高电源时对比度最低,接低电源时,对比度最高。对比度过高时,会产生“鬼影” 。因此连接一 10K 的电阻用以调整。当 P0 口作为 I/O 用时需要上拉电阻,如图 3.5 接一排阻,用于上拉11。3.6 驱动电路系统使用的是直流马达,包含周围磁场、电刷、整流子等元件,电刷和整流子將外部所供应的直流电源,持续地供应给转子的线圈,並适时地改变电流的方向,使转子能以同一方向持续旋转。直流马达的优点有速度调整容易,启动转矩较大等,但是电刷与整流子保养维修不易。直流马达广泛的用在消费电子产品及玩具,如电动刮胡刀、录音机、CD 唱机等,而大输出功率的直流电动机则是用在电车,快速电梯,工

42、作母机等。图 3-6 为硬件连接图。 图 3-6 驱动电路第第 4 4 章章 系统软件的设计系统软件的设计 一个应用系统要完成各项功能,首先必须有较完善的硬件作保证。同时还必须得到相应设计合理的软件的支持,尤其是微机应用高速发展的今天,许多由硬件完成的工作,都可通过软件编程而代替。甚至有些必须采用很复杂的硬件电路才能完成的工作,用软件编和有时会变得很简单。因此充分利用其内部丰富的硬件资源和软件资源。程序设计语言有三种:机器语言、汇编语言、高级语言。本系统运用的是高级语言所编写,也就是 C 语言。4.1 主程序设计从软件的功能不同可分为四大类:一是检测软件,它是用来检测温度。二是显示部分,用来显

43、示所检测到的温度。三是控制部分,用来控制马达。每一个执行软件也就是一个小的功能执行模块。这里将各执行模块一一列出,并为每一个执行模块进行功能定义。图 4-1 为软件设计流程图。图 4-1 软件设计流程图4.2 温度检测4.2.1 读取温度设计DSl8B20 可以从单总线获取电源,当信号线为高电平时,将能量贮存在内部电容器中;当单信号线为低电平时,将该电源断开,直到信号线变为高电平重新接上寄生电源为止。此外,还可外接 5 V 电源,给 DS18B20 供电12。图 4-2大于设定值?开始初始化DS18B20 温度检测LCD1602 显示电机带动风扇转动DS18B20 的初始化跳过读序列号的操作读

44、取温度寄存器启动温度转换跳过读序列号的操作开 始DS18B20 的初始化RETLOW-低八位 HIGH-高八位 图 4-2 18B20 读取温度流程图读取温度子程序的主要功能是读出 RAM 中的 9 个字节,在读出时需进行 CRC 校验,校验有错时不进行温度数据的改写。DS18B20 的各个命令对时序的要求特别严格,所以必须按照所要求的时序才能达到预期的目的,同时,要注意读进来的是高低位在后,低位在前,共 12 位数,小数 4 位,整数 7 位,还有一位符号位。读取温度的主程序如下:void ReadTemperature(void)unsigned char a=0;unsigned cha

45、r b=0;unsigned char t=0;Init_DS18B20();WriteOneChar(0 xCC); / 跳过读序号列号的操作WriteOneChar(0 x44); / 启动温度转换delay_18B20(100); / this message is very importantInit_DS18B20();WriteOneChar(0 xCC); /跳过读序号列号的操作WriteOneChar(0 xBE); /读取温度寄存器等(共可读 9 个寄存器)前两个就是温度delay_18B20(100);a=ReadOneChar(); /读取温度值低位b=ReadOneCh

46、ar(); /读取温度值高位temp1=b4;temp2=a&0 x0f; temp=(b*256+a)4); /当前采集温度值除 16 得实际温度值4.2.2 温度数据处理设计读出温度数据后,TempL 的低四位为温度的小数部分,可以精确到 0.0625,TempL 的高四位和 TempH 的低四位为温度的整数部分,TempH 的高四位全部为 1 表示负数,全为 0 表示正数。所以先将数据提取出来,分为三个部分:小数部分、整数部分和符号部分。小数部分进行四舍五入处理:大于 0.5的话,向个位进 1;小于 0.5的时候,舍去不要。当数据是个负数的时候,显示之前要进行数据转换,将其整数部

47、分取反加一。还因为 DS18B20 最低温度只能为-55,所以可以将整数部分的最高位换成一个“-” ,表示为负数。图 4-3 为温度数据处理流程图。开始提取整数部分存入HT提取小数部分存入 TempLTempL 右移三位,将精度降低到 0.5 摄氏度TempH +将小数部分整数化提取符号部分存入 signTempL 是否大于5temp=?0XF0RETflag=1 TempH=TempH+1YNNY 图 4-3 温度数据处理流程由于 DS18B20 转换后的代码并不是实际的温度值,所以要进行计算转换。温度高字节高 5 位是用来保存温度的正负,高字节低 3 位和低字节来保存温度值。其中低字节的低

48、 4位来保存温度的小数位。由于本程序采用的是 0.0625 的精度,小数部分的值,可以用后四位代表的实际数值乘以 0.0625,得到真正的数值,数值可能带几个小数位,所以采取小数舍入,保留一位小数即可。也就说,本系统的温度精确到了 0.1 度13。温度数据处理主程序如下:str0=TempH/100; /十位温度 str1=(TempH%100)/10; /十位温度 str2=(TempH%100)%10; /个位温度,带小数点 str3=TempL; if(flag_get=1) /定时读取当前温度 temp=ReadTemperature(); if(temp&0 x8000) s

49、tr0=0 x40;/负号标志 temp=temp; / 取反加 1 temp +=1; else str0=0; TempH=temp4; TempL=temp&0 x0F; TempL=TempL*6/10;/小数近似处理 flag_get=0;4.3 液晶显示器 LCM16024.3.1 LCM1602LCM1602 初始化 LCM1602 显示函数如下14 端口定义如下:#define DATAPORT P0 /定义 P0 口为 LCD 通讯端口sbit LCM_RS=P20;/数据/命令端sbit LCM_RW=P21;/读/写选择端sbit LCM_EN=P22;/*液晶显

50、示子函数 1 正常显示*/void displayfun1(void)WriteCommandLCM(0 x0c,1); /显示屏打开,光标不显示,不闪烁,检测忙信号DisplayListChar(0,0,str0);DisplayListChar(0,1,str1); DisplayOneChar(3,0,hour/10+0 x30); /液晶上显示小时DisplayOneChar(4,0,hour%10+0 x30);DisplayOneChar(6,0,minite/10+0 x30);/液晶上显示分DisplayOneChar(7,0,minite%10+0 x30);DisplayO

51、neChar(9,0,seconde/10+0 x30); /液晶上显示秒DisplayOneChar(10,0,seconde%10+0 x30);DisplayOneChar(4,1,K/10+0 x30); /液晶上显示设定的温度DisplayOneChar(5,1,K%10+0 x30); DisplayOneChar(11,1,temp1/10+0 x30); /液晶上显示测得的温度 DisplayOneChar(12,1,temp1%10+0 x30);DisplayOneChar(14,1,temp2/10+0 x30);if(ON_OFF=0) /若温控标志为 0Display

52、OneChar(14,0,0 x4f); / 液晶上显示不控温的标志DisplayOneChar(15,0,0 x46);elseDisplayOneChar(14,0,0 x4f); / 液晶上显示控温的标志DisplayOneChar(15,0,0 x4e);if(outflag=1) DisplayOneChar(0,0,0 x7c); elseDisplayOneChar(0,0,0 xef);/*液晶显示子函数 2*/void displayfun2(void)WriteCommandLCM(0 x0c,1); /显示屏打开,光标不显示,不闪烁,检测忙信号DisplayListCha

53、r(0,0,str0);DisplayListChar(0,1,str1);DisplayOneChar(6,0,minite/10+0 x30);DisplayOneChar(7,0,minite%10+0 x30);DisplayOneChar(9,0,seconde/10+0 x30);DisplayOneChar(10,0,seconde%10+0 x30);DisplayOneChar(4,1,K/10+0 x30); DisplayOneChar(5,1,K%10+0 x30); DisplayOneChar(11,1,temp1/10+0 x30); DisplayOneChar

54、(12,1,temp1%10+0 x30);DisplayOneChar(14,1,temp2/10+0 x30); WriteCommandLCM(0 x0f,1); /显示屏打开,光标显示,闪烁,检测忙信号 DisplayOneChar(3,0,hour/10+0 x30);DisplayOneChar(4,0,hour%10+0 x30);/*液晶显示子函数 3*/void displayfun3(void)WriteCommandLCM(0 x0c,1); /显示屏打开,光标不显示,不闪烁,检测忙信号DisplayListChar(0,0,str0);DisplayListChar(0

55、,1,str1);DisplayOneChar(3,0,hour/10+0 x30);DisplayOneChar(4,0,hour%10+0 x30); DisplayOneChar(9,0,seconde/10+0 x30);DisplayOneChar(10,0,seconde%10+0 x30);DisplayOneChar(4,1,K/10+0 x30); DisplayOneChar(5,1,K%10+0 x30); DisplayOneChar(11,1,temp1/10+0 x30); DisplayOneChar(12,1,temp1%10+0 x30);DisplayOne

56、Char(14,1,temp2/10+0 x30); WriteCommandLCM(0 x0f,1); /显示屏打开,光标显示,闪烁,检测忙信号DisplayOneChar(6,0,minite/10+0 x30);DisplayOneChar(7,0,minite%10+0 x30);/*液晶显示子函数 4 */void displayfun4(void)WriteCommandLCM(0 x0c,1); /显示屏打开,光标不显示,不闪烁,检测忙信号DisplayListChar(0,0,str0);DisplayListChar(0,1,str1);DisplayOneChar(3,0,

57、hour/10+0 x30);DisplayOneChar(4,0,hour%10+0 x30); DisplayOneChar(6,0,minite/10+0 x30);DisplayOneChar(7,0,minite%10+0 x30);DisplayOneChar(9,0,seconde/10+0 x30);DisplayOneChar(10,0,seconde%10+0 x30); DisplayOneChar(11,1,temp1/10+0 x30); DisplayOneChar(12,1,temp1%10+0 x30);DisplayOneChar(14,1,temp2/10+

58、0 x30); WriteCommandLCM(0 x0f,1); /显示屏打开,光标显示,闪烁,检测忙信号DisplayOneChar(4,1,K/10+0 x30); DisplayOneChar(5,1,K%10+0 x30);4.4 马达的控制 当被测温度低于系统设定温度值时,P3.7 角的输出信号为 1,马达不转动。当被测温度高于系统设定温度值时,P3.7 角的输出信号为 0,马达开始转动。 马达的控制主程序如下:if(ON_OFF=1) /若温控标志位 1, 控制 LAMP 动作if(temp1=K+1)outflag=1;OUT=0;if(temp1K) delay_LCM(10

59、00);if(temp1K)outflag=0;OUT=1; /elseoutflag=0;OUT=1; 第第 5 5 章章 系系统统调调试试第 5 章 系统调试在 Keil 软件中调试程序,生成 Hex 文件。AT89C52 加载 Keil 下生成的 HEX 文件,调试硬件电路。点击按钮能够随意调试时间和设定系统温度值。当调节 DS18B20 使测量温度值大于系统温度设定值时,继电器吸合电机开始转动。图 5-1 为系统调试成功图。图 5-1 protues 软件中仿真运行 第第 6 6 章章 总结与展望总结与展望 这次设计硬件已完成,且能基本实现要求。5.1 总结通过这次对大棚温度自动控制的

60、设计与制作,让我自主完成了一个完整的设计,虽然这次的实习做的温度显示以及马达的控制都相对比较简单,但是也给将来进入硬件开发有了一个起点的基础。在这次毕业设计的过程,刚开始的时候,真的有点不知所措,因为学习完单片机已有数日,以及微机原理课程,一些知识已忘记。幸好有几个星期的时间来准备。画电路原理图,一开始就觉得有无从下手,因为涉及到软件和硬件的结合调式,做起来非常的费时又费力,一些芯片从来没有接触过。画电路图,自己学习焊接电路板,电路板焊接完成后,硬件调试过程中芯片被烧坏了。研究数日后才发现是一些线路焊接不良导致电路连接出现错误,后来重新开始动工,才焊接成功。常常有解决不了的问题,就上网查询,或者阅览资料书。虽此项工

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论