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

基于单片机的温度空调控制器设计

2017-09-25 50页 doc 665KB 37阅读

用户头像

is_841159

暂无简介

举报
基于单片机的温度空调控制器设计基于单片机的温度空调控制器设计 基于单片机的空调温度控制器设计 学生姓名: 学生学号: 院(系): 电气信息工程学院 年级专业: 电子信息工程 指导教师: 助理指导教师: 二〇一五年五月 摘 要 摘 要 随着国民经济的发展和人民生活水平的不断提高,空调已然成为了绝大多数家庭必备的家用电器。目前,虽然我国大量生产空调制冷产品,但由于我国人口众多,地区气候差异较大,再加上人们的使用不当,温度不能很好的控制在一定的范围内。夏天室内温度过低,冬天温度过高。这样不但造成电能的浪费,而且对人们正常生活带来不利的影响。 ...
基于单片机的温度空调控制器设计
基于单片机的温度空调控制器 基于单片机的空调温度控制器设计 学生姓名: 学生学号: 院(系): 电气信息工程学院 年级专业: 电子信息工程 指导教师: 助理指导教师: 二〇一五年五月 摘 要 摘 要 随着国民经济的发展和人民生活水平的不断提高,空调已然成为了绝大多数家庭必备的家用电器。目前,虽然我国大量生产空调制冷产品,但由于我国人口众多,地区气候差异较大,再加上人们的使用不当,温度不能很好的控制在一定的范围内。夏天室内温度过低,冬天温度过高。这样不但造成电能的浪费,而且对人们正常生活带来不利的影响。 本文主要从硬件和软件两方面介绍了单片机温度控制系统的设计。该系统以AT89C51单片机为核心,主要由温度检测电路、按键与显示电路、输出控制电路等构成。软件由主程序、显示模块主程序、DS18B20主程序、LCD1602主程序组成。利用Proteus7.6进行了可行性的仿真,利用单片机开发板验证在实际电路中能起到的效果。 本次设计通过温度传感器DS18B20对室内温度进行采样,将采集到温度信号传给单片机,再由单片机控制液晶1602显示。并比较擦剂到的温度值与设定的温度值是否一致。然后驱动空调机的加热或降温,从而实现对室内温度的调节。 关键词 DS18B20,单片机 ,温度控制, 1602液晶显示 I ABSTRACT ABSTRACT With the development of economy and the improvement of living standards, air conditioning has become the most necessary home appliances. At present, although a large number of air conditioning refrigeration products in China, but due to the large population in our country, regional differences in climate, coupled with the improper use of people, not good control within a certain range of temperature. Low indoor temperature in summer, winter temperature is too high. Such not only wastes the energy, and unfavorable influence on the normal life. This article mainly from two aspects of hardware and software, this paper introduces the single chip microcomputer temperature control system design. The system USES AT89C51 microcontroller as the core, mainly by the temperature detection circuit, buttons and display circuit, output control circuit, etc. Software consists of the main program, display module of the main program, DS18B20, LCD1602 main program of the main program. Using single chip computer simulation, the feasibility of using Proteus7.6 development board verification can play an effect in the practical circuit. The design of indoor temperature by temperature sensor DS18B20 sample, will be collected temperature signals to single chip microcomputer, again by single-chip microcomputer control liquid crystal display 1602. And compare the liniment to temperature and setting temperature value is consistent. Then drive air conditioning heating or cooling, so as to realize the indoor temperature regulation. Keywords DS18B20, microcomputer, temperature control, 1602 liquid crystal II 目 录 目 录 摘 要............................................................................................................................ I ABSTRACT ................................................................................................................. II 1 绪论.......................................................................................................................... 1 1.1 课题背景............................................................................................................ 1 1.2 国内外研究现状、水平 ...................................................................................... 1 1.3 本课题的发展趋势 ............................................................................................. 2 1.4本课题的研究内容和任务 .................................................................................... 2 4.1 本设计实现的技术指标 .............................................................................. 2 1. 1.4.2 本设计的创新点 ........................................................................................ 2 2 论证与选择 ..................................................................................................... 3 2.1系统方案设计 ...................................................................................................... 3 2.2系统方案选择 ...................................................................................................... 3 3 系统的硬件设计 ....................................................................................................... 5 3.1单片机的选择与其性能分析 ................................................................................. 5 3.1.1 单片机概述 ............................................................................................... 5 1.2 单片机AT89C51的介绍 ............................................................................ 5 3. 3.2各模块电路设计 ................................................................................................... 7 3.2.1 时钟电路设计 ............................................................................................ 7 3.2.2 复位电路设计 ............................................................................................ 9 3.2.3 按键电路设计 .......................................................................................... 10 3.2.4 温度采集电路设计 ................................................................................... 11 3.2.5 显示电路设计 .......................................................................................... 14 3.2.6 输出控制电路设计 ................................................................................... 15 4 软件设计................................................................................................................ 16 4.1 整体设计思想 ................................................................................................... 16 4.2 主要程序模块 ................................................................................................... 17 4.2.1 按键模块程序设计 ................................................................................... 17 4.2.2 湿度采集模块程序设计 ............................................................................ 18 4.2.3显示块程序设计 ....................................................................................... 20 5 仿真设计与结果分析 ........................................................................................... 23 5.1 程序仿真 .......................................................................................................... 23 5.1.1 keil uVision4编程开发工具的简介............................................................. 23 5.1.2 软件仿真流程 .......................................................................................... 23 5.2 硬件电路仿真 ................................................................................................... 27 5.2.1 Proteus软件简介 .................................................................................. 27 5.2.2 Proteus仿真流程图 .............................................................................. 27 6 PCB设计................................................................................................................. 33 6.1 PCB设计软件简介 ............................................................................................. 33 6.2 设计流程 .......................................................................................................... 33 1 目 录 6.2.1 原理图设计流程..................................................................................... 33 6.2.2 PCB设计流程 ......................................................................................... 34 6.2.3 新建一个新的工程 ................................................................................. 35 7 组装与调试............................................................................................................ 37 7.1系统组装 ........................................................................................................... 37 7.2硬件调试 ........................................................................................................... 37 7.3软件调试 ........................................................................................................... 38 7.4软硬联调 ........................................................................................................... 38 结 论............................................................................................................................ 40 参 考 文 献................................................................................................................ 41 附录A:空调温度控制器源程序代码 ...................................................................... 42 附录B:仿真原理图 .................................................................................................. 45 附录C:PCB原理图 ................................................................................................... 46 附录D:实物展示 ...................................................................................................... 47 致 谢.............................................................................................. 错误~未定义书签。 2 1 绪论 1 绪论 1.1 课题背景 随着国民经济的发展和人民生活水平的不断提高,空调已然成为了绝大多数家庭必备的家用电器,于此同时空调也成为家庭中的用电大户。然而这就与当今以节能环保和低碳的生活方式相违背。低碳生活不仅是当今世界的潮流,更是维护世界持续健康发展的必然,作为能耗大户的空调,节能减排迫在眉睫。空调作为家用电器中的用电大户,应从设计、运行等多方面进行完善和提高,在不降低空调运行能力和舒适度的情况下,使空调更加地节能环保。 目前,虽然我国大量生产空调制冷产品,但由于我国人口众多,地区气候差异较大,再加上人们的使用不当。温度不能很好的控制在一定的范围内,夏天室内温度过高,冬天温度过低。这样不但造成电能的浪费,而且对人们正常生活带来不利的影响,温度、湿度均达不到人们的要求。以前温度控制主要利用机械通风设备进行室内、外空气的交换来达到降低室内温度。通风设备的开启和关停,均是由人手动控制的,即由人们定时查看室内外的温度、湿度情况,按要求开关通风设备,这样人们的劳动强度大,可靠性差,而且消耗人们体力,劳累成本过高。为此,我设计了一款基于单片机的空调温度控制系统。 1.2 国内外研究现状、水平 温度控制器是一种温度控制装置,它根据用户所需温度与设定温度之差值来控制中央空调末端之水阀(风阀)及风机,从而达到改变用户所需温度的目的。实现以上目的的方法理论上有很多,但目前业界主要有机械式温度控制器及智能电子式两大系列。 普通的机械式温度控制器基是一个独立的度调节系统,主要由热敏电阻式温度检测器、手动开关、温度设置器和冷热切换开关构成。这种控制器的控制原理是根据温度传感器测得的当前温度与设定的温度值的比较结果进而产生双向控制信号,双向控制信号控制冷热水循环管路电动水阀的开关。 第一代空调温控器主要是电气式产品,空调温度控器的温度传感器采用双金属片或气动温包,通过“给定温度盘”调整预紧力来设定温度,风机三速开关和季节转换开关为泼档式机械开关。这类空调温控器产品普遍存在“温度设 [13]定分度值过粗”、“时间常数太大”、“机械开关易损坏”等问题。 第二代空调温控器为电子式产品,温度传感器采用热敏电阻或热电阻,部分产品的温度设定和风速开关通过触摸键和液晶显示屏实现人机交互界面,冷 1 1 绪论 热切换自动完成,运算放大电路和开关电路实现双位调节。这类智能空调温控器产品改善了人机交互界面,解决了“温度设定分度值过粗”等问题,但仍存 [13]在“控制精度不高”、“时间常数大”、“操作较复杂”等问题。 1.3 本课题的发展趋势 目前国内外生产厂家正在研究开发第三代智能型室温空调温控器,应用新型控制模型和数控芯片实现智能控制。现在已有国内厂家生产出了智能型室温 [12]空调温控器,并已应用于实际工程。 1.4本课题的研究内容和任务 设计一个AT89C51单片机作为核心控制器件空调温度控制器,通过温度传感器DS18B20对室内温度进行采样,将采集到温度信号传给单片机,再由单片机控制液晶1602显示。并比较擦剂到的温度值与设定的温度值是否一致。然后驱动空调机的加热或降温。 1.4.1 本设计实现的技术指标 输入直流电压5V 控制精度:?1? 温度显示精度:0.5? 工作环境:-45-45? 1.4.2 本设计的创新点 本设计以DS18B20为温度传感器,其输出数字信号可与单片机直接通信,减少A/D转换电路,提高了测量精度。以LCD1602作为显示器,人机交互性好。 2 2 方案论证与选择 2 方案论证与选择 2.1系统方案设计 方案一 该方案采用AT89C51单片机作为核心控制器件,通过温度传感器DS18B20对室内温度进行采样,将采集到温度信号传给单片机,再由单片机控制液晶1602显示。并比较擦剂到的温度值与设定的温度值是否一致。然后驱动空调机的加热或降温,从而实现对室内温度的调节。在整个设计中,涉及到温度检测电路,显示电路,键盘电路等电路,而单片机的控制程序是起到各个电路之间的相互协调,控制各个电路正常工作。其方框图如下: 键盘输入 液晶显示 单 晶振时序 DS18B20 片 机 复位电路 输出控制 图 2.1 方案一框图 方案二 该方案采用AT89C51单片机作为核心控制器件,用它来处理各个 单元电路的工作及检测其运行情况。首先通过热敏电阻组成的温度采集电路对空气进行采样。将采集到的温度信号转换成数字信号,然后输出给单片机,再由单片机控制显示。并比较擦剂到的温度值与设定的温度值是否一致。然后驱动空调机的加热或降温。其原理结构图如图2.1所示: 3 2 方案论证与选择 数码管键盘输入 8段 译码 单 晶振时序 8段 片数码管 译码 复位电路 机 温度采 A/D转 输出控制 样电路 换电路 图 2.2 方案二框图 2.2系统方案选择 方案一:该方案通过温度传感器对空气进行温度采集,将采集到的温度信号输给单片机,再由单片机控制液晶显示,并比较采集到的温度与设定温度是否一致,然后驱动空调机的制冷或制热,从而实现对室内温度的调节。在整个设计中,涉及到温度检测电路、显示电路、键盘电路、输出控制电路等电路。 优点:控制简单,思路简单,各个单元模块的相互连接比较简单,同时成本较低廉,用的所有元件都是常用元件,更具有实用性。 方案二:该方案采用与方案一的设计思路是基本相同,主要区别在温度采集方式上。本方案采用AT89C51单片机作为核心控制器件,用它来处理各个单元电路的工作以及检测器运行情况。首先通过由热敏电阻构成的温度采集电路对室内温度进行采集,将采集的温度进行A/D转换,使模拟的温度信号转变成数字的温度信号。然后输给单片机,再由单片机控制显示当前温度值和设定的温度值,并比较采集到的温度与设定温度是否一致,最后驱动空调机的制冷或制热,从而模拟空调温度控制单元的工作情况。 优点:该方案易控制,系统原理比较简单,电路可靠。 缺点:该方案中的温度采集是由热敏电阻构成的温度采集电路完成,精确度不高,且需要A/D转换电路使电路变复杂。容易产生误差,由于电路复杂从而导致设备使用寿命低等一系列问题。 最终方案选择: 选择方案一:控制简单,思路清晰,各个单元模块连接简单,同时成本低廉,所有元器件都是常用器件,更具实用性。 4 3 系统的硬件设计 3 系统的硬件设计 3.1单片机的选择与其性能分析 3.1.1 单片机概述 单片机又称单片微控制器,是一种集成电路芯片。它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。它体积小、重量轻、价格便宜,为学习、应用和开发提供了便利条件。单片机就是在一块半导体上集成了定时/计数器、时钟电路系统、中断系统、串并行I/O口、存储器(RAM、ROM)、CPU及总线的微型计算机。随着微电子技术和集成技术的进步,人们在单片机中还集成了A/D转换器、PWM、HSO等“片内外设”的特殊功能的部件。些这电路能在软件的控制下准确迅速高效地完成程序设计者事先规定的任务。 单片机的出现是集成电路技术与微型计算机技术高速发展的产物,它的发展与运用在工业自动化等领域带来了一场重大的工业革命和技术进步。由于单片机具有软件与硬件相结合、体积小、稳定可靠、可以很容易地嵌入到各种系统中的特点,所以单片机可以在各个领域得到广泛的运用。如工业检测与控制、通信、汽车电子设备、各种终端机计算机外部设备、仪器仪表、消费类电子产品等领域。 3.1.2 单片机AT89C51的介绍 AT89C51是美国ATMEL公司生产的一种带4K字节Flash存储器的低电压,高性能CMOS8位单片机。AT89C51是一种带2K字节闪存可编程、可擦除、只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。 AT89C51可提供以下标准功能:4K字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU工作,但允许RAM,定时/计数器,停止串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一硬件复位。AT89C51的管脚图如图3.1所示。 5 3 系统的硬件设计 图3.1 AT89C51管脚图 AT89C51各引脚功能介绍如下: 1.VCC:电源引脚,接+5V电源; 2.GND:接地; 3.P0口:8位,漏级开路双向I/O口。当AT89C51外部存储器及I/O口接芯片时,P0口作为地址总线(低8位)及数据总线的时分复用端口。P0口也可以作为通用I/O口使用,但需要加上拉电阻,这时为准双向口。当作为通用I/O输入时,应先向端口输出锁存器写入1 。P0口可驱动8个LS型TTL负载。 4.P1口:8位,准双向I/O口,具有内部上拉电阻。P1口是专为用户使用的准双向I/O口。当作为通用的I/O口输入时,应先向端口锁存写入1。P1口可驱动4个LS型TTL负载。 5.P2口:8位,准双向I/O口,具有内部上拉电阻。P2口缓冲器可接收,输出4个TTL门电流,当P2口被写入“1”时,其管脚电位被内部上拉电阻拉高,且作为输入时,P2口的管脚电位被外部拉低将电流输出,这是由于内部有上拉电阻的缘故。 6.P3口:8位,准双向I/O口,具有内部上拉电阻,可接收输出4个TTL门电流。P3口还可提供第二功能。其第二功能定义见表2-1。 7.RST:复位信号输入端,高电平有效。在此引脚加上持续时间大于2个机器周期的高电平,就可以使单片机复位。 6 3 系统的硬件设计 8.ALE / PROG :在单片机拓展外部RAM时,ALE用于控制把P0口到输出低位地址送到锁存器锁存起来,从而可以把数据和低位地址区分开来。ALE可为高电平也可为低电平,当ALE是高电平时,允许地址锁存信号,当访问外部存储器时,ALE信号负跳变将P0口上低8位地址信号送入锁存器;当ALE是低电平时,P0口上的内容和锁存器输出一致。在没有访问外部存储器期间,ALE以1/6的振荡周期输出频率;当访问外部存储器时,以1/12的振荡周期输出频率。PROG为编程脉冲的输入端,单片机的内部程序存储器,它的作用是来存放用户需要执行的程序。 9.PSEN:全称是程序存储器允许输出控制端。在读外部程序存储器时PSEN低电平有效,以实现外部程序存储器单元的读操作。内部ROM读取时,PSEN无动作。外部ROM读取时,在每个机器周期会动作两次。外部ROM读取时,两个PSEN脉冲被跳过不会输出。外接ROM时,与ROM的OE脚相接。 10.EA/VPP:当EA保持低电平时,访问外部ROM;注意加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,访问内部ROM。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP); 11.XTAL1:外接时钟引脚,片内振荡电路的输入端。 12.XTAL2:外接时钟引脚,片内振荡电路的输出端。 表3.1 P3口的第二功能 引脚 第二功能 说明 P3.0 RXD 串行输入口 P3.1 TXD 串行输出口 INT0P3.2 外部中断0 P3.3 外部中断1 INT1 P3.4 T0 定时器/计数器0外部输入端 P3.5 T1 定时器/计数器1外部输入端 WRP3.6 外部数据存储器写脉冲 P3.7 外部数据存储器读脉冲 RD 3.2各模块电路设计 3.2.1 时钟电路设计 时钟电路产生AT89C51单片机工作时所必需的控制信号。AT89C51单的 内部电路正是在时钟信号的控制下,严格地按时序执行指令工作。单片机执行 7 3 系统的硬件设计 的指令均是在CPU控制器的时序控制电路的控制下进行的,各种时序均与时钟周期有关。时钟周期:时钟周期是单片机时钟控制信号的最小时间单位。机器周期:CPU执行一个基本操作的时间,单片机的每12个时钟周期为一个机器周期。指令周期:指了周期是执行一条指令所需要的时间。 AT89C51单片机各功能部件的运行都以时钟控制信号为基准,它们在时钟信号的控制下有条不紊、一拍一拍地工作。因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。常用的时钟电路有两种方式,一种是内部时钟方式,另一种是外部时钟方式。 1. 内部时钟方式 AT89C51内部有一个由于构成振荡器的高增益反向放大器,它的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。这两个引脚跨接石英晶体和微调电容,构成一个稳定的自激振荡器,如图3.2所示。 晶振有一个重要的参数,那就是负载电容值,选择与负载电容值相等的并联电容,就可以得到晶振标称的谐振频率。电路中的电容C1和C2的典型值通常选择为30pF。该电容的大小会影响振荡器频率的高低、振荡器的稳定性和起振的快速性。晶体振荡频率的范围通常是在1.2,12MHz。晶体的频率越高,系统的时钟频率越高,单片机的运行速度也就越快。但反过来,运行速度快对存储器的速度要求就高,对印制电路板的工艺要求也越高,即要求线间的寄生电容要小。晶体和电容应尽可能安装得与单片机机芯片靠近,以减少寄生电容,更好地保护振荡器稳定、可靠性。 XTAL1 30pF C1 晶振 AT89C51 C2 30pF XTAL2 图3.2 AT89C51内部时钟方式电路 2. 外部时钟方式 外部时钟方式使用现成的外部振荡器产生的脉冲信号,常用于多片AT89C51单片机同时工作,以便于多片AT89C51单片机之间的同步,一般为低于12MHz的方波。外部时钟源直接接到XTAL1端,XTAL2悬空,其电路如图3.3所示。 8 3 系统的硬件设计 AT89C51 外部振荡信号 XTAL1 悬空 XTAL2 GND 图 3.3 AT89C51外部时钟方式电路 根据查阅空调温度控制器的相关资料和电路的相关知识,使用在本次设计中采用内部时钟方式,两个电容为30pF,晶振为12MHz。设计电路如图3.4所示。 图 3.4 时钟电路 3.2.2 复位电路设计 AT89C51进行复位时,PC初始化为0000H,使AT89C51单片机从程序存储器的0000H单元开始执行程序。除了进入系统的正常初始化之外,当程序运行出错(如程序“跑飞”)或操作错误使系统处于“锁死”状态时,也需要按复位键即RST脚为高电平,使AT89C51摆脱“跑飞”或“锁死”状态而重新启动程序。 AT89C51的复位电路是通过外部电路实现的。复位引脚RST通过一个施密特触发器与复位电路相连,施密特触发器用来抑制噪声,在每个机器周期的S5P2,施密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作是需要的信号。复位电路通常采用上电自动复位和按钮自动复位。 最简单的上电自动复位如图3.5所示。对于CMOS型单片机,由于在RST引脚内部有一个下拉电阻,故将电阻R去掉,而将电容C选为10uF。上电的瞬间,RST端的电位与Vcc相同,随着外部复位电路充电电流的减小,RST的电位下降, 9 3 系统的硬件设计 只要RST保持10ms以上的高电平就能使单片机复位。复位电路中的电容和电阻可以根据实际需要来进行调整。当设计的电路需要单片机的振荡频率为6MHz时,电容就要选择22uF的,电阻选用10 KΩ的,就能够实现单片机的自动复位。 C +5V RST + AT89C51 R 图 3.5 上电复位电路图 按键手动电平复位是通过RST端经电阻与电源Vcc接通来实现的,如图3.6所示。 RST +5V + 10uF AT89C51 R 2KΩ 图 3.6 按键电平复位电路 根据查阅空调温温度控制器的相关资料和本次设计的实际需要,决定本设计采用按键电平复位电路。同时选用的晶振为12MHz,所以根据经验可将电阻值分别定为10 KΩ和8.2 KΩ,电容值为10μF,这样,就能保证复位信号高电平持续时间大于2 个机器周期,即可使系统的复位。设计电路如图3.7所示。 图 3.7 复位电路图 3.2.3 按键电路设计 按键在单片机应用系统中,除了完成基本的功能外,另一个重要的任务是设计优秀的人机交互接口。人机交互接口用来实现控制命令及数据的输入,并 10 3 系统的硬件设计 且将系统运行信息反映给操作者。键盘以按键的形式来设置控制功能或数据,是人机交互的最基本途径。在键盘中,按键输入状态本质上是一个开关量。 常用的两种键盘:独立式按键和矩阵式按键。其中独立式按键比较简单,适合于较少开关量的输入场合;而矩阵式键盘则适合输入命令或者数据较多、功能复杂的系统。采用矩阵式键盘结构可以最大限度地节省单片机的引脚资源,因此应用十分广泛。 按键为常开型按钮开关,可分为两大类:一类是触点式开关按键,另一类是无触点式开关按键。由于前者价格低廉,后者使用时间长。在本次实验中使用触点式开关。 按键输入电路由按键K1 和K2 组成。这2 个按键分别连接到单片机的输入引脚P3.2和P3.3。键K1 为“升温”控制键;K2 为“降温”控制键,分别对应于2 个LED灯。按键用于设置两位温度值,而两个LED灯则由于模拟空调机的制冷和制热。 当按键K1、K2 按下时,相应的单片机输入引脚P3^2 和P3^3 只能监测到低电平。因为P^2 和P3^3 只高电平有效所以需要要将按键与一个反相器串接后再与单片机相连。按键电路设计如图3.8所示。 K1 K2 3.8 按键电路设计 图 3.2.4 温度采集电路设计 本系统的温度测量采用DS18B20来实现。DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实9,12位的数字值读数方式。DS18B20是第一个采用“一总线”接口的温度传感器。它具有微型化、低功耗、高性能、抗干扰能力强、易配微处理器等优点,可直 11 3 系统的硬件设计 接将温度转化成串行数字信号供处理器处理。DS18B20的性能及特点如下: , 采用单总线的接口方式与单片机相连。仅需一条线即可实现单片机与 DS18B20的双向通信。单总线具有经济性好,抗干扰能力强,能够在环 境恶劣的测控现场进行温度测量,使用十分的简单方便。使用者可以用 多个DS18B20组成传感器网络,为人们带来了全新的测量系统概念。 , 温度测量的范围宽,温度测量的精确度很高。DS18B20的处理范围为 ~~-55?+125?,在范围-10?+85?内,精度为?0.5?。 , 用DS18B20组成才温度测量电路简单,在使用中只需加一个上拉电阻。 , 可以实现多点组网功能,多个DS18B20可以并联在单总线上,实现多点 测温。 , DS18B20具有多种供电方式。它可以通过内部寄生电路从数据线上获取 电源,即寄生电源供电方式;也可以由单片机VDD供电,但要加上拉电 阻,即外部电源供电方式。 , 测量参数可配置。DS18B20的测量辨率在可通过程序设定为9~12位。 在9位分辨率时,最多可以在93.75ms内把所测得的温度值转换为数字, 12位分辨率时最多可以在750ms内把所测得的温度值转换为数字,速 度快。 , 测量结果直接输出数字温度信号,不需要外加A/D转换器,同时还可以 传送循环冗余校验码,有非常强的抗干扰能力。 , 负压保护特性。当正负极接反时,传感器不会被烧毁,但是会影响传感 器的正常工作。 , 掉电保护功能。DS18B20内部含有EEPROM,在系统掉电以后,它仍可保 存分辨率及报警温度的设定值。 DS18B20有两种封装:三角PR-35直插式(用的最多、最普遍的封装)如图3.9所示。在本次设计中采用三角SOSI直插式DS18B20。 图 3.9 DS18B20的两种封装 DS18B20的三角PR-35直插式引脚定义如表3.2所示: 12 3 系统的硬件设计 表3.2 DS18B02引脚定义是 引脚 定义 GND 电源负极 DQ 信号输入输出 VDD 电源正极 NC 空 温度检测系统原理图如图3.10所示。采用外接电源供电方式。为保证在有效的DS18B20时钟周期内提供足够的电流,用一个电阻和单片机的一个I/O口来完成对DS18B20总线的上拉。当DS18B20处于写存储操作和温度A/D变换操作时,总线上必须有强的上拉,上拉开启时间最大为10微秒。采用外接电源供电方式时Vcc接外部电源,GND接地,I/O与单片机I/O口相连。 在本次设计中采用单个DS18B20测室内温度,并把它直接接于单片机的I/O口相连,将测得的温度值送入CPU与键盘输入的设定值竞选比较,然后通过CPU来控制负载电路的工作。CPU对DS18B20的访问流程是:先对DS18B20进行初始化,再进行ROM操作命令,最后才能对存储器操作,数据操作。DS18B20的每一步操作都要严格遵循工作时序和通信协议。 引脚 定义 GND 电源负极 DQ 信号输入输出 VDD 电源正极 NC 空 图 3.10 温度测量电路 DS18B20 虽然具有测温系统简单、测量精度高、连接方便、占用I/O口少等优点,但在实际应用中也应注意以下几方面的问题: 1. DS18B20 从测温结束到将温度值转换成数字量并不是瞬间完成的,所以DS18B20需要一定的转换时间,在编写程序时必须考虑到这一点,不然会出现温度测量错误的现象。 13 3 系统的硬件设计 2. 在实际应用电路中,应使DS18B20的供电电源电压保持在5V 左右,如果电压过低,就会使DS18B20的测量精度降低。 3. 较小的硬件开销需要相对复杂的软件进行补偿,由于DS1820与微处理器间采用串行数据传送,因此,在对DS1820进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。 4. DS18B20的单总线上可以挂多个DS18B20,但是在相关的资料中并没有说明可以挂多少个的问题,这就容易使人误认为可以任意挂多个DS18B20,而经过实践证明事实并非如此,当DS18B20的单总线上所挂超过8个时,就会出现单片机不能驱动DS18B20的问题,当组建多点测温系统设计时必须要注意这一问题。 3.2.5 显示电路设计 显示器是单片机常用的功能单元之一,显示器的主要功能是为单片机系统使用者提供必要的单片机工作信息,或者提供工作状态的提示信息,显示器的工作是由单片机通过显示接口驱动的。以往的测控仪器的显示装置大多采用LED数码管,这种显示器显示的信息量小、人机交互性差、形式单一。而液晶显示器具有功耗低、质量小及可编程驱动等特有优点。液晶显示器不仅可以显示数字,字符而且能显示文字和图像,人机交互界面更加友好。本系统的显示部分选用LCD1602液晶显示器,该液晶为5V电压驱动,带背光功能,可通过一个滑动变阻器进行调节,可显示两行,每行有16个字符。但是不能显示汉字,内置有128个字符的ASCII字符集字库。只有并行接口,无串行接口。LCD1602液晶显示器功耗低、体积小、显示内容丰富、超薄轻巧,常用在袖珍式仪表和低功耗应用系统中。LCD1602型液晶接口说明如表3.3所示: 表3.3 1602液晶接口信号说明 编号 符号 引脚说明 编号 符号 引脚说明 1 V 电源地 9 D2 数据口 SS 2 V 电源正极 10 D3 数据口 D 3 VO 晶显示器对比度调整 11 D4 数据口 4 RS 数据/命令选择端 12 D5 数据口 5 R/ 读写选择端 13 D6 数据口 W 6 E 使能信号 14 D7 数据口 7 D0 数据口 15 BLA 背光电源正极 8 D1 数据口 16 BLK 背光电源负极 本次设计中LCD1602接口说明如下: (1)液晶1,2端为电源;15,16为背光电源。 (2)液晶3端为液晶对比度调节端,通过一个10千欧姆的滑动变阻器然后接在地来调节LCD1602的对比度。第一次使用的时候,液晶上在通电的状态下, 14 3 系统的硬件设计 调节滑动变阻器直至液晶的第一行显示出黑色小格为止。 (3)液晶4端为向液晶控制器写数据/写命令选择端,接单片机的P2.5口。 (4)液晶5端为读/写选择段,因为我们不从液晶读取任何数据,只向其写入命令和显示数据,因此始终选择为写状态。 (5)液晶6端为使能信号,是操作时必需的信号,接单片机的P2.4口。 电路连接如图3.11所示: 图 3.11 显示电路设计 3.2.6 输出控制电路设计 温度控制器的输出控制的是空调电机的运行,由于本次设计只是涉及控制器,为了能够更好地模拟出控制系统的效果。故采用一个红色LED灯和一个蓝色LED灯,分别来模拟空调的制热和制冷。当前室温低于设定温度时,能够自动驱动加热系统工作,在当前室温高于设定温度时能够自动驱动制冷系统工作。本系统在复位后即置P2^6脚和P2^7脚为低电平,在当前室温低于设定温度时,通过置P2^7脚为高电平来驱动后级加热系统,点亮红色LED来代替加热系统;在当前室温高于设定温度时,通过置P2^6脚高电平来驱动后级制冷系统,点亮蓝色LED灯来代替制冷系统。当设定温度与当前室内温度相同时,输出电路无动作,即红色LED灯和蓝色LED灯均灭。如图3.12所示。 图 3.12 输出控制电路 15 4 软件设计 4 软件设计 4.1 整体设计思想 一个完整的系统,除了必须的硬件条件外,还需要相应的软件配合才能完 成其功能。因此,这一部分内容将在硬件结构的基础上进行系统软件的设计, 全面阐述各部分软件的设计思想和具体实现方法。整个软件采用模块化设计结 构,并利用C51语言编制。整个程序由主程序、显示、按键、测量、控制等子 程序模块组成。 开 始 初始化子程序 Y N 判断初始化是否成功 执行测温程序 序 显示温度 Y 是否高于设定温度 制冷 Y 是否低于设定温度 制热 Y 是否与设定温度相同 无动 作 图4.1 主要程序框图 16 4 软件设计 4.2 主要程序模块 4.2.1 按键模块程序设计 键盘是人与微机打交道的主要设备,按键的读取容易引起错误动作。按键按下后,并不像理想的那样,马上由高电平变为低电平,而是有一个前沿抖动,大约为10ms。这段时间因为按键弹片的作用,会交替地产生数个高低电平。接着是按键稳定的过程,此时就是要读取按键状态,该过程持续时间和按键按下的时间有关。前沿抖动和按键稳定两个过程,都是包含在按键按下的。当按键释放时,会产生一个延后的抖动,该抖动和前沿抖动类似,持续时间也为10ms左右,因为按键弹片的作用,会交替产生数个高低电平。整个过程如图所示。如果不采取妥善的处理方法,将会引起按键命令错误或重复执行。 理想波形 实际波形 释放抖动 按下抖动 稳定闭合 图4.2 按键过程分析图 消除抖动的方法通常有两种。一种是通过软件的方法来实现的,其基本思想是:在软件检测到外部电路有按键按下时,该按键所对应的单片机的I/O口为低电平,这时就需要在这里加入一个延时10ms的子程序,然后再确认该输出口是否任然是低电平,如果还是低电平,则认为按键按下。当按键松开时,该I/O由低电平变为高电平,这时也需要加入一个延时10ms的子程序,检测其确实为高电平,就说明按键已经松开。采取以上的可以消除两个抖动期,由于这种方法简单易实现,故在多数情况下都采用软件去抖动的方法。另外一种方法就是使用专用的键盘接口芯片,在芯片中有专门的去抖动硬件电路。相较于前一种方法,这种成本较高,硬件电路较为复杂,不经常使用。 单片机检测按键的原理是:单片机的I/O口既可以作为输出端口,也可以作为输入端口。检测按键时是利用单片机的输入功能,把按键的一端接地,另一端和单片机的某个I/O口连接。首先给单片机I/O端口赋值为高电平,然后让单片机不断检测该I/O口是否变为低电平。当按键按下时,该I/O端口会被 17 4 软件设计 拉低为低电平;当按键没有按下或按下后释放了,该I/O口电平为高电平。 开 始 扫描I/O N 按键是否按下, Y 延时20ms 重新扫描按下的I/O N 按键是否仍按下 Y 判断按键被按下 图 4.3 按键程序框图 4.2.2 湿度采集模块程序设计 湿度检测是通过DS18B20来实现的。访问一个DS18B20必须经过初始化、ROM命令和功能命令着三个步奏,且缺一不可,否则DS18B20不会响应主机的任何命令。 首先对DS18B20进行初始化,接着发送跳过ROM命令(CCH),然后再发一个启动温度转换命令(44H)。这时温度数据已经被存到了暂存寄存器的第0、1地址。这时不能直接发送读暂存寄存器指令(BEH),因为DS18B20操作的3个步奏缺一不可。 接着,再次对DS18B20进行初始化,如果DS18B20有应答,直接发送跳过ROM命令(CCH),然后发送一个读暂存寄存器指令(BEH))。这时,DS18B20的温度数据被取出μs。 图4.4为DS18B20的初始化时序图。前半部分为单片机操作,后半部分为DS18B20操作。初始化成功的标志就是能否读到DS18B20在后半部分的先低后高的操作时序。指令定义单片机控制DS18B20的相应引脚为DQ。初始化过程如下: ? 首先给DQ赋值为低电平。 ? 延时600μs,该时间范围是480,960μs ? 接着给DQ赋值高电平。 18 4 软件设计 ? 延时75μs。超过规定延时的15,60μs,精确地检测到DS18B20的存 在脉冲 ? 这时可以检测DQ的高低电平,如果为低电平,则表示DQ存在,存在脉 冲会持续60,240μs;为高电平则复位失败。 ? 从第4步开始,延时最小480μs。这时初始化过程结束。 ? 最后给DQ赋值为高电平。 控制器Tx“复位脉冲” 控制器Rx μs μs 最小值480最小值480 等待 最大值960μs DS18B20Tx 15,60μs 60,240μs VCC GND 图 4.4 DS18B20写时序图 由图4.4可以看出,读时序的采样是在15μs内完成的,使用在12μs时读取数据就可以得到时序高低电平。 ? 首先给DQ赋值为低电平; ? 延时时间3μs; ? 给DQ置高电平; ? 延时8μs; ? 在12μs时,读取总线上的电平; ? 延时60μs; ? 最后把DQ置为高电平; 控制器读“0”时间隙 控制器读“0”时间隙 >1μs 控制器采样 15μs 15μs 30μs 15μs 图4.5 读数据时序图 19 4 软件设计 经过对DS18B20读时序图和写时序的分析后,先对DS18B20进行初始化,再进行ROM操作命令,最后才能对存储器操作,数据操作。根据DS18B20的工作时序和通信协议,设计的温度采集模块程序框图如图4.6所示: 开始 初始化DS18B20 读DS18B20的序列号 Y 检测DS18B20存在 发送跳过ROM指令 温度转换 I=1,等待 初始化DS18B20 读取温度数据 图4.6 LCD1602显示程序框图 4.2.3显示块程序设计 1602液晶的控制器内部带有80字节的RAM缓冲区,它内部RAM地址映射表如图4.7所示。当向00H,0FH、40H,4FH地址中的任何一个地址写入显示数据时,液晶都可以立即显示出来;当写入到10H,27H或50H,67H地址时,必须通过移屏指令将他们移到正常区域才能显示出来。 LCD 16字×2行 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 … … 27 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 40 … … 67 图 4.7 1602内部RAM地址映射图 20 5 仿真设计与结果分析 从1602液晶的RAM地址映射表可以知道,每个显示的数据对应一个地址。同时控制器内部设有一个数据地址指针,要显示数据就需要设置好数据指针。用户可以通过它们访问内部的全部80字节的RAM地址,数据指针如表所示。 表 4.1 1602液晶的数据指针 指针设置 说 明 80H+地址码(00H,27H) 显示第一行数据 80H+地址码(40H,67H) 显示第二行数据 1602液晶显示初始化过程 ? 延时15ms,写指令18;。 ? 延时5ms,写指令38H; ? 延时5ms,写指令38H,延时5ms; (以上都不检测忙信号) (以下都要检测忙信号) ? 写指令38H; 写指令08H(关闭显示); ? ? 写指令01H(显示清屏); ? 写指令06H(光标移动设置); ? 写指令0CH(显示开及光标设置)。 对1602液晶状态进行忙状态检测时要用到读操作时序,如图4.8所示。 Tsp1 Tpw Thd1 Ta Tsp2 有效数据 Tc 图4.8 1602液晶写操作时序图 21 5 仿真设计与结果分析 经过对LCD1602工作原理和写操作时序的分析后,先对LCD1602进行初始 化,在检测液晶是否忙碌后,然后写指令和写数据。设计的LCD1602显示模块 程序框图如图4.9所示: 开 始 初始化 Y 是否忙碌 写指令 写数据 设置显示 显示 结束 图 4.9 显示模块程序设计流程图 22 5 仿真设计与结果分析 5 仿真设计与结果分析 5.1 程序仿真 5.1.1 keil uVision4编程开发工具的简介 Keil uVision4是Keil Software 动手开发的8051系列单片机的软件开发平台。由于内嵌多种符合当前工业标准的开发工具,非常适合大型项目的开发。它可以完成工程开发的一系列流程,源程序代码的编译链接、项目监管、目标代码的生成、预期效果的调试、软硬件仿真等完整的开发流程,尤其是其C编译工具在产生代码的准确性和效率方面达到了很好的水平,而且可以附加灵活的控制选项。可以说Keil的出现,极大地提高了8051系列单片机与其他系列单片机相比 的一个非常重要的优势。 Keil uVision4内包含了功能强大的编辑器和调试器(如器、源程序器调节器等)。编辑器可以像文本编辑那样对程序源代码进行编辑,而且还可以让用户在编辑的时候设置程序断点。用户还可以在编辑器中观察变量和存储器的值,以此来检测源程序是否完成了预先设置的功能。Keil uVision环境下还可以进行串口调试,便于能够在电脑端看到单片机的数据,在Keil uVision环境下无需安装串口调试软件,可以直接运行这个软件。 5.1.2 软件仿真流程 首先启动Keil软件,单击Project然后在下拉菜单中找到New Project,单击它弹出如图5.1对话框。 图 5.1 新建项目文件对话框 23 5 仿真设计与结果分析 在新建项目文件对话框中的“文件名”文本框中输入项目名称,然后在左侧的文件保存路径的地方选择自己的保存路径,最后单击“保存”按钮。 在单击“保存”按钮后,会弹出一个如图5.2所示的单片机型号选择对话框。整理几乎包含了所有的8051系列单片机,用户可以根据实际使用的单片机型号来选择。本次毕业设计中选择AT89C51单片机。选择单片机型号后,右边Description栏中就会显示出所选择的单片机的基本说明,最后单击“确定”按钮。 图 5.2 单片机型号选择对话框 至此,一个新的项目文件创建完成。此时的项目文件只是一个空壳,里面还没有任何源代码。因此下一步要新建源代码文件。单击File|New,弹出如图5.3所示的空白程序文本框。 图5.3 弹出的空白程序文本框 24 5 仿真设计与结果分析 单击File|Save,弹出如图5.4所示的文件保存对话框。在弹出的对话框中选择要保存的路径,在“文件名”文本框中输入文件名。注意一定要输入文件扩展名,如果是C程序文件,扩展名为.C;如果是汇编程序文件,扩展名为.asm。在本次毕业设计中用到的是C语言使用文件名为“hwkz.c”。单击“保存”按钮,完成源代码文件的新建。 图 5.4 文件保存对话框 此时,虽然新建了一个项目文件,也新建了源代码文件,但是这时候的项目文件和源代码文件还没有什么关系。下面需要将源代码文件加入到项目文件中。单击Target1前面的“+”号,展开里面的内容Source Group1,用右键单击Source Group1,弹出如图5.5所示的菜单。 图 5.5 右键单击Source Group1的弹出菜单 25 5 仿真设计与结果分析 在弹出的快捷菜单中,选择“ Add Files to Group ‘ Source Group 1 ’”选项,选择所需的文件,单击“Add”按钮将其添加到项目中。至此,完成了一个工程项目的创建。由于本次设计中有多个子程序,所有需要多次重复以上步骤。建立文件名为“ds18b20.c”、“lcd1602.c”、“delay.c”的源程序文件,再分别添加到文件中去。这时就可以输入C语言程序代码,如图5.6所示。 图 5.6 输入程序后效果图 当完成程序的录入后就当进行程序的编译与调试,进过多次的调试与修改程序无误后,就要生成可执行文件以用于后面硬件电路仿真。右击Source Group1然后选中“Options for Target’Target 1”就会出现图5.7所示界面。 图 5.7 HEX 文件生成对话框 26 5 仿真设计与结果分析 本设计采用通用的高级编程语言C语言进行编程。C语言是一种十分流行的编程开发语言,它既可以用来编写计算机的系统程序,也可以用来编写一般的应用程序。它既具有一般高级语言的特点,又能直接对计算机和单片机的硬件进行操作,表达和运算能力较强。采用uvision4开发51系列单片机应用程序一般需要以下步骤。首先:在uVision2集成开发环境中创建一个新项目(Project),并为该项目选定合适的单片机器件(比如AT89S52)。其次:利用uVision2的文件编辑器编写C语言源程序文件,将文件保存并添加到项目中去。再次:检查文件无误后进行编译、连接、调试等功能,并选择生成单片机可执行文件HEX文件。最后:将调试成功后的HEX文件写入到单片机应用系统的EPROM中,单片机就可以按照我们设计的功能执行任务了。 5.2硬件电路仿真 5.2.1 Proteus软件简介 Proteus软件是英国Lab Center Electronics公司出版的EDA工具软件。Proteus是世界上著名的EDA工具(仿真软件),包含原理图设计、源程序代码 单片机与外围电路协同仿真,同时可以进行PCB板的设计,可以化概念测试到 为产品。不但可以把许多抽象的单片机实例功能形象化,而且可以把那些抽象的单片机实例运行过程形象的展示出来。前一个特点可以在一定程度上实现实物演示的实验效果,后一个则是Proteus的最大作用的体现,它能实现实物演示实验不可达到的效果。Proteus的线路连接、元器件功能等和实际的单片机硬件对应,这在很大程度上替代了原来的单片机实践操作的功能。 使用Proteus软件进仿真,是计算机技术和虚拟仿真技术相结合的产物,当今世界电子产品研发的趋势。运用Proteus进行仿真有利于提高学生对兴趣爱好,有利于培养学生的电路设计能力,有利缩短研发周期、节约研发成本。在仿真技术的帮助下,我们摆脱了以前那种在课堂上学习枯燥的理论知识的模式。现在运用Proteus,在不需要硬件投入的条件下,就可以让学生进行实践操作。学生对单片机的学习比单纯学习书本知识更容易理解、更容易接受。 5.2.2 Proteus仿真流程图 系统在proteus软件的仿真设计中,可以通过利用温度传感器DS18B20对室内的温湿度进行测量,通过单片机AT89C51对采集到的数据进行处理,用液晶显示器LCD1602来显示出当前室内的温湿度测量值,其中温度可以由操作人员根据不同需求进行调节,当环境温度高于设置的最适宜温度时,蓝灯就会亮模拟降温。当温度过设置的最适宜温度时LED绿灯亮,模拟升温。当环境温度与设置的最适宜温度相同时,单片机无动作。以此来模拟控制系统对室内温度 27 5 仿真设计与结果分析 的调节。 首先启动Proteus软件,则会出现5.8图。 图 5.8 Proteus界面图 Proteus 仿真图设计的第一步就是拾取仿真所需要的元器件, 单击图5.8 所示界面预览窗口下面的P 按钮, 弹出Pick Devices( 元器件拾取) 对话框如图5.9所示。然后, 在Keywords 文本框内分别输入DS18B20、LM041L ( 4 行× 16 字符型LCD) 、PIC16F877A、RES( 电阻) 。在检索出来的结果中,选中所要的元器件并双击, 该元器件就会出现在左侧预览窗口中。 元器件拾取完毕后, 关闭Pick Devices 窗口回到主设计页面。在左侧预览窗口中, 选中元器件放置到合适的位置。然后, 在最左侧选中图标( t erminals mode) , 分别选中POWER( 电源) 和GROUND( 地) , 放置在合适的位置, 并进行连接。欲改变元器件的参数, 双击该元器件, 然后在出现的属性框中直接修改即可。 28 5 仿真设计与结果分析 图 5.9 元件拾取图 完成元件的拾取后,然后放置元件并调整方向和位置以及参数设置,按照预先设计的电路原理图进行连线。如图5.10所示。 图 5.10 整体电路图 当电路连接无误后,就将进行电路仿真。在仿真之前还需将程序导入AT89C51内,其方法为:双击AT89C51则会出现程序导入对话框如图5.11所示。 29 5 仿真设计与结果分析 图 5.11 程序导入界面 程序导入后就可以进行仿真了,首先点击运行按钮,软件开始运行。可以看见LCD1602上面显示了当前室内温度和设定的室内最适宜温度,如图5.12所示。通过两个设定按钮可以重新设定最适宜温度值,单片机就可以比较设定温度值和所测温度值的大小,从而控制输出电路,就可模拟出空调的制冷和制热。 图 5.12 LCD1602显示 30 5 仿真设计与结果分析 当室内温度高于设定温度时,模拟制冷仿真图: 图 5.13 制冷仿真图 当室内温度低于设定温度时,模拟制热仿真图: 图 5.14 制热仿真图 31 5 仿真设计与结果分析 当室内温度与设定温度相同时仿真图: 图 5.15 无动作仿真图 32 6 PCB设计 6 PCB设计 6.1 PCB设计软件简介 Protel DXP 2004拓展了原来该软件原有的设计范围,Protel DXP的功能更加强大、风格越发独特,同时界面也越发的好用,特别在PLD电路的设计和仿真领域有了很大进步,Protel 以前包含的作用它都继承。Protel现在已经是国内使用最广的EDA软件,它把设计设计PCB板图、仿真电路、电路原理图和设计PLD等许多实用功能组合在一起来完成EDA的工作,她是第一个吧EDA软件做成基于操作系统的应用产品。和Protel 99SE软件比较,Protel DXP有着更加完善的功能和更加成熟的风格,更加灵活的界面,尤其是在设计PLD电路和仿真方面有了重大改进。摆脱了Protel前期版本基于PCB设计的产品定,显露出一个普及型全线EDA产品崭新的面貌。 6.2 设计流程 6.2.1 原理图设计流程 在Protel DXP中,原理图的设计大致要分为7个步骤,如图6.1所示:: 新 设载建放检置入后 原置测布期图元理元和 线纸器处 图器修理参件 文件改 数库 件 图 6.1 原理图的设计流程 1. 新建原理图文件 这是绘制一张原理图的第1步,建立一个新的原理图文件,将其命名并保存。 2. 设置图纸参数 在这一步中,可以根据个人的绘图习惯或者设计的要求设置原理图图纸大小、方向、标题栏等相关参数。还可以输入原理图的相关设计信息。 3. 载入元器件库 Protel DXP中有大量的元器件,它们都被放置在不同的元器件库中,必须把含有想要使用元器件的元器件库加载到系统中去。这样才能在绘图的时候找到需要的元器件 4. 放置元器件 33 6 PCB设计 在这一步中,将原理图上涉及到的所有元器件从元器件库中找出,并将它们放置到图纸上去。然后再根据需要调整元器件的位置,并对元器件的序号、封装形式和显示状态等进行设置。 5. 布线 将放置好的元器件各个引脚用具有电气意义的导线、网络标号等连接起来,另外还要放置总线和总线入口等。 6. 检查和修改 利用Protel DXP所提供的各种校验工具,根据规则对原理图进行检查,根据检查的结果对其进行调整和修改。 7. 后期处理 确保原理图正确无误后,对原理图进行一些后续的处理,包括打印、各种报表的输出等。为原理图向PCB图转换进行相关的准备。 6.2.2 PCB设计流程 PCB设计一般要经过以下几个步骤,如图6.2所示。 格准 备 网检保电元原参络查存路器 理数表与与板件布图的格手输线的的 设的工出和规布置导调文网 划局 入整件 络 表 图 6.2 PCB设计步骤 1. 准备原理图和网络表格 原理图与网络表格的设计和生成是电路板设计的前期工作,但有时候也可以不用绘制原理图,而直接进行PCB设计。 2. 电路板的 电路板的规划包括了电路板的规格、功能、成本限制、工作环境等诸多要素。在这一步要确定板材的物理尺寸、元器件的封装和电路板的层次,这是及其重要的工作,只有决定了这些,才能决定电路板的具体框架。 3. 参数设置 需要设置的参数包括布置参数、板层参数、布线参数等。 4. 网络表的导入 网络表是自动布线PCB的灵魂,是原理图和PCB图之间连接的纽带。在导入网络表格的时候,要尽量随时保持原理图与PCB图的一致,减少出错的可能。 5. 元器件布局 网络表格导入后,所有元器件都会重叠在工作区的零点处,需要把这些元 34 6 PCB设计 器件分开,按照一些规则排列,元器件布局可有Protel DXP自动完成,也可以手动完成。 6. 布线 不限的方式也有两种,手动布线和自动布线。Protel DXP的自动布线功能十分强大,采用了Altium公司最新的Situs技术,通过生成拓扑图的方式来解决自动布线时遇到的困难。通常我们可以采用两种方式搭配的布线方式。 7. 检查与手工调整 可以检查的项目包括线间距、连接性、电源层等,如果在检查中出现了错误,则必须手工对布线进行调整。 8. 保存及输出文件 PCB板完成后,要保存PCB文件,可能还需要利用图形输出设备等输出电路的布线图如果是多层板,还可以分层打印。 6.2.3 新建一个新的工程 步骤1:选择File/New/PCB Project命令,如图6.3所示。也可以在设计窗口的Pick a task栏中单击Create a new Board Level Design Project快捷图标,还可以在Files面板的New选区选择Blank Project(PCB)项。如果Files工作面板没有显示,可以单击工作面板标签中的File项将其打开。此时会建立一个空的项目文件PCB Project1.PrjpPCB,其中没有包含任何文件。 图 6.3 建立新项目 步骤2:新建了项目文件,接下来就需要新建一个原理图文件,将其添加到空的项目中去。选择File/New/Schematic命令,同样也可以在File工作面板的New区域中单击Schematic Sheet项。这时,系统打开原理图编辑器,并且将新建的原理图文件自动添加到PCB Project1.PrjpPCB项目文件中,即 35 6 PCB设计 Sheet.SchDoc文件,如图6.4所示。 图 6.4 加入原理图文件后的项目文件 步骤3:选择File/Save Project命令,打开如图6.5所示的对话框。选取项目文件保存在计算机磁盘的保存路径,然后在“文件名”文本框中输入项目文件的名称Filter,单击“保存”按钮,将项目文件保存。用同样的方法,将新建的原理图文件Sheet.SchDoc更名为Filter.SchDoc后保存。 图 6.5 保存项目文件对话框 36 7 组装与调试 7 组装与调试 完成了对硬件电路的的设计、PCB板的制作、源程序代码编写,软硬件经仿真程序调试无误且其结果达到了预期效果的情况下就可以系统组装。完成组装后并不意味着就圆满成功了,由于在电路焊接过程中难免会出现差错,所以必须进行系统调试。系统调试包括硬件调试和软件调试两个部分。不过,作为一个计算机系统,其运行是软硬件结合的,也就是软件和硬件是不可能分开的,硬件的调试常常需要利用软件,而软件的调试也可能需要通过对硬件的控制和测试来进行。 7.1系统组装 硬件的组装电路要按照整体的电路图进行组装,将预先准备好的元器件一一对应地焊接到PCB板对应的位置。本次设计将系统分为:复位电路、时钟电路、按键电路、显示电路、按键电路、输出控制电路,6大模块。我们在进行组装时可按照这6大模块进行。 为了保证电路组装接焊接的质量应遵守以下基本要求: 1. 焊接前应对电路原理图、元器件目录表熟悉以后再着手进行操作。 2. 焊接时若发现印制电路板与电路图有不符之处,应在印制电路板上标 记出来,待更正后再进行操作。 3. 当PCB板面不干净时,焊接前可用脱脂棉蘸少量无水乙醇轻轻擦洗干 净后再焊接元器件。 4. 带引脚的元器件在焊接前,应具有良好的可焊性,否则应对其进行蘸 锡处理,以保证焊接的可焊性。 5. 在整个PCB焊接过程中应采用防静电、可调温的电烙铁,烙铁头的温 度一般应保持在250??5?范围内。 6. 在焊接同类型的印制电路组件时,要求元器件排列整齐,标识向上、 向外,方向力求一致,便于检查和维修。 7. 对PCB上的焊点,在焊接时要求一次焊成。若一次未焊好,应等待焊 点冷却后再复焊。以防止在连续焊接时造成印制盘脱落或损坏元器件。 7.2硬件调试 1. 排除逻辑故障 这类故障往往由于设计和加工制板过程中工艺性错误所造成的。主要包括错 37 7 组装与调试 线、开路、短路。排除的方法是首先将加工的印制板认真对照原理图,看两者是否一致。应特别注意电源系统检查,以防止电源短路和极性错误,并重点检查系统总线(地址总线、数据总线和控制总线)是否存在相互之间短路或与其它信号线路短路。必要时利用数字万用表的短路测试功能,可以缩短排错时间。 2. 排除元器件失效 造成这类错误的原因有两个:一个是元器件买来时就已坏了;另一个是由于安装错误,造成器件烧坏。可以采取检查元器件与设计要求的型号、规格和安装是否一致。在保证安装无误后,用替换方法排除错误。 3. 排除电源故障 在通电前,一定要检查电源电压的幅值和极性,否则很容易造成集成块损坏。加电后检查各插件上引脚的电位,一般先检查VCC与GND之间电位,若在5V,4(8V之间属正常。若有高压,联机仿真器调试时,将会损坏仿真器等,有时会使应用系统中的集成块发热损坏。 7.3软件调试 本系统的软件系统较大,全部采用汇编语言编写,除语法与逻辑差错外,当确认程序没问题时,直接下载到单片机仿真调试。采取自下到上的方法,单独调好每一个模块,最后完成一个完整的系统调试。 软件调试在Keil编译器下进行,源程序编译及仿真调试应分段或以子程序为单位一个一个进行,最后可结合硬件实时调试。 Keil4软件在以前的版本基础上做了增加了许多功能,特别是在窗口管理、项目管理和源文件编辑工具上做了较大改进,在Keil环境下的所有窗口均可以放在窗口的同一块区域,各窗口可以直接切换,节省了窗口的面积,使窗口管理更有效。Keil4还增强了项目管理和源文件编辑方面的功能,使得项目、文件切换更方便,有效地后退、前进功能使得修改程序更方便。新增加的书签窗口和断点窗口可以有效地管理断点和书签,使得程序员无需在众多的代码和断点中逐行查询,断点信息和书签信息在各自的窗口中显示一目了然。应用Keil4软件进行编译调试程序, 使程序生成十六进制文件。 7.4软硬联调 系统做好后,进行系统的完整调试。联机仿真必须借助仿真开发装置、示波器、万用表等工具。这些工具是单片机开发的最基本工具。 信号线是联络80C51和外部器件的纽带,如果信号线连结错误或时序不对,那么都会造成对外围电路读写错误。51系列单片机的信号线大体分为读、写信 38 7 组装与调试 号线、片选信号线、时钟信号线、外部程序存贮器读选通信号(PSEN)、地址锁存信号(ALE)、复位信号等几大类。这些信号大多属于脉冲信号,对于脉冲信号借助示波器(这里指通用示波器)用常规方法很难观测到,必须采取一定措施才能观测到。应该利用软件编程的方法来实现。 1. 初始化后,开始运行。 2. 如果运行过程中出现问题,按复位键后,重新开始。 39 7 组装与调试 结 论 本次设计的空调温度控制系统,通过对室内温度采集,由单片机进行处理,并与设定的温度值进行比对。当室内温度大于设定温度值时,单片机控制输出电路点亮蓝色LED灯,以此来模拟空调的制冷。当室内温度低于设定的温度时,单片机控制输出电路点亮红色LED灯,以此来模拟空调系统的制热。由于本次设计的空调温度控制系统主要用于了解空调温度控制系统的基本原理,而所制作的设计空调温度控制系统只是在理解基本原理后根据自我的理解制作的一个实验物品。其实用价值并不大,仅限于帮助理解空调温度控制系统的原理及工作方式。在研究过程中,所完成的主要工作如下: (1) 首先设计系统整体框图。 (2)对框图中的各个模块分开研究设计,主要包括温湿度数据采集电路设计、单片机芯片选择及外围电路设计、LCD1602的简介及外围电路设计、整体电路连接等。 (3)系统软件设计,分别设计各个子模块的源代码程序,利用这些子程序构成一个完整的系统源代码程序。最后在keil uVision4中进行软件仿真。 (4)电路仿真,在Proteus中按照预先设计的电路图完成电路的连接,导入源代码程序就可进行仿真,直至达到预期效果。 (5)在仿真成功的情况下,依据仿真结果完成实物制作。 由于时间和经验的不足,技术水平有限,只涉及硬件设计,具体设计还有不足之处,本设计还需要不断的完善。 40 参 考 文 献 参 考 文 献 [1] 何立民. 单片机应用系统设计[M].北京:清华大学出版社,2005 [2] 吴金戎. 8051单片机实践与应用[M].北京:清华大学出版社,2005 [3] 黄正祥,邓怀雄,郭延文,周书. 基于MCS-51单片机的温度控制系统[J].现代电子技 术,2005,6:20-21 [4]党峰、王敬农、高国旺.基于DS18B20的数字式温度计的实现[J].山西电子技术,2007(3) [5]赵海兰、赵祥伟(智能温度传感器DS18B20的原理与应用[J].现代电子技术,2003,26(14) [6]王福泉、万频、冯孔淼、张昱(DS18B20在空调检测系统温度采集模块中的应用[J].电子技术应用,2011,37(8) [7]程院莲.基于单总线器件DS18B20的智能温度测量[J].现代教育装备,2010(23) [8]宋起超 赵洪涛.基于DSl8B20的多点温度巡回检测系统研制[J].交通科技与经济,2007 [6]刘雪松 程显侠.新型温度传感器DS18B20高精度测温的实现[J].微处理机 2002(2) [9] 刘勤鹿. 基于单片机的时钟万年历设计 [J]. 商品与质量?建筑与发展, 2013 [10] 李鑫. 基于AT89C52智能温度控制器的设计 [D]. 山东科技大学, 2009 [11] 郝学军. 智能温控器在风机盘管空调系统中的应用与节能分析 [J]. 家电科技, 2004 [12] 郝学军. 模糊推理智能温控器在半集中式空调系统中的应用 [D]. 制冷与空调, 2003 [13] 李鑫. 基于Zigbee无线通讯协议的温度控制系统研究 [D]. 天津大学, 2008 41 附录A:空调湿度控制系统源程序代码 附录A:空调温度控制器源程序代码 /******************主程序***************/ #include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的 定义 #include #include #include "18b20.h" #include "1602.h" #include "delay.h" #include "beep.h" sbit keyup = P3 ^ 2; sbit keydown = P3 ^3 ; sbit led1 = P1 ^ 0; sbit led2 = P2 ^ 0; sbit led3 = P2 ^ 1; unsigned int init_temp = 30; bit ReadTempFlag;//定义读时间标志 void key_init(void); void Init_Timer0(void);//定时器初始化 /*******************串口通信初始化序***********************/ void UART_Init(void) { SCON = 0x50; // SCON: 模式 1, 8-bit UART, 使能接收 TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit 重装 TH1 = 0xFD; // TH1: 重装值 9600 波特率 晶振 11.0592MHz TR1 = 1; // TR1: timer 1 打开 //EA = 1; //打开总中断 //ES = 1; //打开串口中断 TI=1; } 42 附录A:空调湿度控制系统源程序代码 void key_init() { EX0 = 1; EX1 = 1; EA = 1; IT0 = 1; IT1 = 1; } void main (void) { int temp; float temperature; char displaytemp[16];//定义显示区域临时存储数组 char settemp[16]; LCD_Init(); //初始化液晶 DelayMs(20); //延时有助于稳定 LCD_Clear(); //清屏 Init_Timer0(); key_init(); UART_Init(); Lcd_User_Chr(); //写入自定义字符 P2=0; //sprintf(settemp,"Set Temp: %d",init_temp); //LCD_Write_String(0,0,settemp); //LCD_Write_Char(13,0,0x01);//写入温度右上角点 //LCD_Write_Char(14,0,'C'); //写入字符C while (1) //主循环 { //LCD_Clear(); sprintf(settemp,"Set Temp: %d",init_temp); LCD_Write_String(0,0,settemp); LCD_Write_Char(13,0,0x01);//写入温度右上角点 LCD_Write_Char(14,0,'C'); //写入字符C if(ReadTempFlag==1) 43 附录A:空调湿度控制系统源程序代码 { ReadTempFlag=0; temp=ReadTemperature(); temperature=(float)temp*0.0625; sprintf(displaytemp,"Now Temp%5.1f",temperature);//打印温度值 LCD_Write_Char(13,1,0x01);//写入温度右上角点 LCD_Write_Char(14,1,'C'); //写入字符C LCD_Write_String(0,1,displaytemp);//显示第二行 if (init_temp <= temperature) { //beep_start(); led2=1; led3=0; } else { //beep_end(); led3=1; led2=0; } //DelayMs(254); //DelayMs(254); //DelayMs(254); //DelayMs(254); } } } /******************ds18b20***************/ #include"delay.h" #include"18b20.h" /******************18b20初始化**************/ bit Init_DS18B20(void) 44 附录A:空调湿度控制系统源程序代码 { bit dat=0; DQ = 1; //DQ复位 DelayUs2x(5); //稍做延时 DQ = 0; //单片机将DQ拉低 DelayUs2x(200); //精确延时 大于 480us 小于960us DelayUs2x(200); DQ = 1; //拉高总线 DelayUs2x(50); //15~60us 后 接收60-240us的存在脉冲 dat=DQ; //如果x=0则初始化成功, x=1则初始化失败 DelayUs2x(25); //稍作延时返回 return dat; } /******************lcd1602**************/ #include "1602.h" #include "delay.h" sbit RS = P2^6; //定义端口 sbit RW = P2^5; sbit EN = P2^7; #define RS_CLR RS=0 #define RS_SET RS=1 #define RW_CLR RW=0 #define RW_SET RW=1 #define EN_CLR EN=0 #define EN_SET EN=1 #define DataPort P0 /******************写入命令函数**************/ void LCD_Write_Com(unsigned char com) { // while(LCD_Check_Busy()); //忙则等待 DelayMs(5); RS_CLR; RW_CLR; EN_SET; 45 附录A:空调湿度控制系统源程序代码 DataPort= com; _nop_(); EN_CLR; } /******************初始化函数**************/ void LCD_Init(void) { LCD_Write_Com(0x38); /*显示模式设置*/ DelayMs(5); LCD_Write_Com(0x38); DelayMs(5); LCD_Write_Com(0x38); DelayMs(5); LCD_Write_Com(0x38); LCD_Write_Com(0x08); /*显示关闭*/ LCD_Write_Com(0x01); /*显示清屏*/ LCD_Write_Com(0x06); /*显示光标移动设置*/ DelayMs(5); LCD_Write_Com(0x0C); /*显示开及光标设置*/ } void Lcd_User_Chr(void) { //第一个自定义字符 LCD_Write_Com(0x40); //"01 000 000" 第1行地址 (D7D6为地址设定命令形式 D5D4D3为字符存放位置(0--7),D2D1D0为字符行地址(0--7)) LCD_Write_Data(0x00); //"XXX 11111" 第1行数据(D7D6D5为XXX,表示为任意数 (一般用000),D4D3D2D1D0为字符行数据(1-点亮,0-熄灭) LCD_Write_Com(0x41); //"01 000 001" 第2行地址 LCD_Write_Data(0x04); //"XXX 10001" 第2行数据 LCD_Write_Com(0x42); //"01 000 010" 第3行地址 LCD_Write_Data(0x0e); //"XXX 10101" 第3行数据 LCD_Write_Com(0x43); //"01 000 011" 第4行地址 LCD_Write_Data(0x0e); //"XXX 10001" 第4行数据 LCD_Write_Com(0x44); //"01 000 100" 第5行地址 LCD_Write_Data(0x0e); //"XXX 11111" 第5行数据 46 附录A:空调湿度控制系统源程序代码 LCD_Write_Com(0x45); //"01 000 101" 第6行地址 LCD_Write_Data(0x1f); //"XXX 01010" 第6行数据 LCD_Write_Com(0x46); //"01 000 110" 第7行地址 LCD_Write_Data(0x04); //"XXX 11111" 第7行数据 LCD_Write_Com(0x47); //"01 000 111" 第8行地址 LCD_Write_Data(0x00); //"XXX 00000" 第8行数据 } ******************延时函数*****************/ void DelayUs2x(unsigned char t) { while(--t); } void DelayMs(unsigned char t) { while(t--) { //大致延时1mS DelayUs2x(245); DelayUs2x(245); } } 47 攀枝花学院本科毕业设计(论文) 附录B:仿真原理图 附录B:仿真原理图 48 附录C:PCB原理图 附录C:PCB原理图 图1 空调温度控制器电路原理图 图2 空调温度控制器PCB 49 附录D:实物展示 50
/
本文档为【基于单片机的温度空调控制器设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索