编号:
毕业设计说明书
题 目:电冰箱温度测控系统设计
题目类型:理论研究 实验研究 工程设计 工程技术研究 软件开发
2012年5月20日
桂林电子科技大学毕业设计(论文)报告用纸 第1页 共2页
摘 要
随着电子技术、传感技术、计算机控制技术的发展以及对冰箱节能保鲜的要求,变频冰箱得到了快速发展。变频冰箱使用了变频压缩机,通过调节变频压缩机的转速,以此来控制制冷量,温度波动小,制冷效率高,节能明显。
电冰箱温度测控系统设计采用单片机产生PWM信号控制功率模块来实现电机的变频控制。具体是利用DS18B20温度传感器对周围的环境温度进行监测,获取的当前温度,并输入到整个系统的核心部件——ATC51单片机中,再与预先设定的温度相比较,单片机通过对信号加以判断,根据当前温度与预设的温度的温差来改变工作的频率,当现温度与预设温度相差较大时,工作频率较高,当现温度与预设温度相差较小时,工作频率较低,通过变频来达到节能的效果。同时系统还选用了LCD1602液晶屏来显示温度,有较好的可视化效果。
本次设计的电冰箱温度测控系统能够根据温度检测反馈的信号来调节工作频率,按键可调节预设温度的高低,当环境温度低于预设温度时,变频模块停止工作,当环境温度高于预设温度时,工作频率变高,电机转速变快。频率范围30-150HZ。温度变化差值以1°作为改变频率的界限,当环境温度高于预设温度5°以上时,则以最高的工作频率工作。本次设计能够通过改变电机转速,根据温度差值的变化而变化,从而减小频繁开停机损失、降低耗电量。
关键词:变频冰箱; DS18B20传感器;ATC51单片机
桂林电子科技大学毕业设计(论文)报告用纸 第2页 共2页
Abstract
With electronic technology, sensor technology, the development of computer control technology, and preservation of the refrigerator energy saving requirements, has been a rapid development in the inverter refrigerator. The use of variable speed compressor for inverter refrigerator, by regulating the speed of the inverter compressor, in order to control the cooling capacity, temperature fluctuations, high efficiency refrigeration, energy saving is obvious. The refrigerator temperature control system design uses a microcontroller's PWM signal to control the power module to the motor inverter control. Specific DS18B20 temperature sensor monitoring the temperature of the surrounding environment, access to the current temperature, and entered into the heart of the system components - ATC51 microcontroller, and then compared with pre-set temperature, the microcontroller through the signal to be judged, change the frequency of work according to the temperature difference between the current temperature and the preset temperature, when the current temperature and preset temperature difference between the larger, higher operating frequency, when the current temperature and preset temperature difference between the smaller, lower operating frequency, by frequency to achieve the energy saving effect. The system also selected LCD1602 LCD screen to display temperature, a better visualization.
The design of the refrigerator temperature control system according to the temperature sensing feedback signal to adjust the operating frequency, button adjustable preset high and low temperature, when ambient temperature is below a preset temperature, the conversion module to stop working when the ambient temperature is higher than when the preset temperature, the operating frequency becomes higher, the motor speed becomes faster. Frequency range of 30-150HZ. Temperature difference of 1 ° as the boundaries to change the frequency when the ambient temperature is higher than 5 ° above the preset temperature, while the maximum operating frequency. This design by changing the motor speed varies according to changes of temperature difference, thereby reducing the frequent opening of downtime, lower power consumption.
Keywords: frequency refrigerator;the DS18B20 sensor;ATC51 single-chip microcontroller
桂林电子科技大学毕业设计(论文)报告用纸 第1页 共1页
目 录
引言 ....................................................................................................................... 1 1 绪论 ................................................................................................................. 1
1.1 基于单片机的电冰箱温度测控系统介绍 ........................................................................ 1 1.1.1变频技术概述 ................................................................................................................. 1 1.1.2变频技术在冰箱中的应用 ............................................................................................. 2 1.2 课题的意义及目的 ............................................................................................................ 3
2 设计方案 ......................................................................................................... 3
2.1 设计方案论证 .................................................................................................................... 3 2.2 设计思路 ............................................................................................................................ 4
3 硬件设计 ......................................................................................................... 5
3.1 系统原理框图 .................................................................................................................... 5 3.1.1检测模块部分 ................................................................................................................. 5 3.1.2主控模块部分 ................................................................................................................. 9 3.1.3变频模块部分 ............................................................................................................... 12 3.1.4显示模块部分 ............................................................................................................... 14 3.2 原理图和PCB设计 .......................................................................................................... 17 3.2.1原理图设计 ................................................................................................................... 17 3.2.2 PCB设计 ....................................................................................................................... 18
4 软件设计 ....................................................................................................... 19
4.1 软件设计思想 .................................................................................................................. 19 4.2 软件设计及流程图 .......................................................................................................... 19
5 功能与调试 ................................................................................................... 23
5.1 系统调试 .......................................................................................................................... 23 5.1.1系统调试使用的方案 ................................................................................................... 23 5.1.2系统调试过程中解决的问题 ....................................................................................... 23 5.2 系统功能 .......................................................................................................................... 24
6 总结 ............................................................................................................... 24 谢 辞 ................................................................................................................. 26 参考文献 ............................................................................................................. 27 附 录 ................................................................................................................. 28
桂林电子科技大学毕业设计(论文)报告用纸 第1页 共39页
引言
随着工业自动化水平的不断提高和电力电子技术的发展,家电产品中采用变频调速技术越来越多,号召节约资源、企业需要降低生产成本、市场呼吁节能技术和产品,而变频技术被认为是最有效的节能方式之一,使用变频技术不仅能达到科学用能、节能降耗的目的,而且能够提高自动化水平,改善工艺。以低能耗、低污染为基础的“低碳经济”成为全球热点。低能耗、低污染为基础的绿色经济已经逐渐成为社会发展的必然趋势,节能减排势在必行。提高能效技术、节约能源技术、可再生能源技术和温室气体减排技术的开发和运用,能够促进整个社会经济朝向高能效、低能耗和低碳排放的模式转型。
目前我国生产的电冰箱绝大多数是定转速式电冰箱, 普通家用冰箱中的电机启动频繁、噪声大、寿命短、温度稳定性差、能耗高。而变频调速式电冰箱与其相比较,具有明显的节能效果和降噪效果,同时整机寿命有明显提高。变频冰箱以其节能、静音、速冻能力强、温度控制准确、高效节能、工作电压范围宽等被业界视为电冰箱的发展趋势。变频冰箱的研制,不仅是电冰箱发展的要求,而且也代表着国内冰箱企业的技术水平和开发能力。本次设计的电冰箱温度测控系统采用ATC51单片机作为控制器核心,对电机的工作过程进行控制。通过DS18B20温度传感器对环境温度进行检测,把数据发送到单片机中,单片机经过数据处理,把实时检测到的温度与预设的温度进行比较,根据温差大小产生不同脉冲宽度的PWM信号,输入到专用驱动芯片IR2302,控制驱动功率管,输出交变电压,从而改变电机的转速,从而达到节能效果。
1 绪论
1.1 基于单片机的电冰箱温度测控系统介绍 1.1.1变频技术概述
“变频”在机电领域原指电源逆变器输出的电压频率能够根据需要变化。通过改变交流电频率的方式实现交流电控制的技术就叫变频技术。对由逆变电源供电的感应电动机、永磁无刷电动机来讲,逆变器输出电压频率的改变,能使电机的转速也跟着作相应的变化。
在家用电器如空调、冰箱、洗衣机等中,所说的“变频”可以通俗地理解为其压缩机或电机的转速能够根据控制的需要而变化,进而提供不同的制冷量、制热量或洗涤能力。
变频技术采用新型变频器,将50HZ的固定供电频率转换为30-130HZ的变化频率,实现电动机运转速率的自动调节,达到节能和提高效率的目的。
桂林电子科技大学毕业设计(论文)报告用纸 第2页 共39页
变频技术随着微电子学、电力电子技术、电子计算机技术、自动控制理论等的不断发展而发展,现已进入一个崭新时代,其应用也越来越普及。从起初的整流、交直流可调电源等已发展至高压直流输电、不同频率电网系统的连接、静止无功功率补偿和谐波吸收、超导电抗器的电力储存等。在运输业、石油业、家用电器、军事等领域得到了广泛的应用。如变频空调、变频洗衣机、变频冰箱、变频微波炉、军事通信、导航、雷达等设备的小型化电源等。
上世纪50 年代末,由于晶闸管(SCR)的研究成功,电力电子器件开始运用于工业生产,可控整流直流调速便成了调速系统中的主力军。但由于直流电机结构复杂,造价比交流电机高,直流电动机在运行中,炭刷接触产生炭粉而易引起环火,须经常维护,而且直流调速系统线路复杂,维修十分不便。因而便促进了世界各国对交流调速技术的开发和研制。
20 世纪80年代中期,随着第三代电力电子器件,如门极可关断晶闸管(GTO)、大功率晶体管(GTR)、绝缘栅双极型晶体管(IGBT)等全控型电力电子器件的研制成功,以及电力电子器件从电流驱动型到电压驱动型全控器件等的发展,同时随着控制理论、微电子技术和计算机技术的发展,使交流电机变频调速技术取得了突破性进展,并以其优越的调速性能和良好的节能效果逐渐取代了直流调速系统和其他的调速方式,如变极调速、串级调速、滑差电机调速、整流子电机调速等。
随着全球能源短缺趋势的加剧以及交流变频技术及变频器产品的性能和功能日趋完善,变频技术越来越广泛地应用在工业生产的各个领域中。 1.1.2变频技术在冰箱中的应用
变频调速技术用于冰箱控制系统,具有调速性能好、节能效果显著、运行安全可靠等优点。在大力提倡节约能源的今天,推广使用这种集现代先进电力电子技术和计算机技术于一体的高科技节能装置,对于提高效率、降低能耗具有重大的现实意义。可以说,变频调速技术是一项利国利民、有广泛应用前景的高新技术。
变频冰箱,通过传感器及电子智能控制系统,压缩机根据冰箱冷藏室或冷冻室的需要改变转速。定频冰箱维持冷冻温度是通过测温控制自动开关机来实现的,每次自动开机制冷实际上是对食品进行反复的温度冲击。变频冰箱则通过5摄氏度、0摄氏度等温控点的转速调节,使食品温度冲击变小,减少食品水分流失,保鲜期也可延长3~5天,节能效果也相应提高。
不论是节能还是保鲜,变频冰箱在技术原理上都有着独到的优势。此外,变频冰箱的噪音还很低。有关企业的测试结果表明,变频冰箱的速冻能力比普通冰箱提高20%,节能效果显著,常规运行时噪音大大降低。冰箱压缩机的效率随着冰箱容积的增大而降低,而变频冰箱在冰箱负载较大时压缩机可以高速运转实现快速降温,通过连续调节压缩机转速可使冰箱内的温度控制比较精确和稳定。容积超过300L的普通冰箱,即使压
桂林电子科技大学毕业设计(论文)报告用纸 第3页 共39页
缩机能效比再高也不会随着制冷负荷的大小而节电。但变频压缩机变速制冷的工作原理会在这种情况下比普通压缩机的工作效率提高很多,即使压缩机的COP值与高效压缩机相同,而通过变频控制,变频冰箱也能节能约30%。 变频冰箱可以在很短的时间内通过改变压缩机频率可以在很短的时间内打温度打下来,在温度降低后以低频率保持低温,不用停机.这样冰箱的温度的波动范围大大减小,不用频繁开机,同等情况下也可以省电。
变频优势明显,变频冰箱的主要特点有:由于制冷量可调节,使得冰箱的制冷量可以与冰箱的负载良好地匹配,避免无谓的能量消耗;当冰箱所需制冷量较小时,压缩机可以低速运转,减少冰箱的启动次数。
与常规冰箱相比,具有两方面的节能优势,一是减少了冰箱频繁停机/启动所造成的开停机损失;二是减少了冰箱停机造成系统高低压平衡、在开机时又必须重新建立这一高低压所造成的能量损失。
采用变频技术主要是从冰箱的运行、使用过程实现节能,通过改变压缩机转速来改变冰箱的制冷量,使制冷量能够根据负荷的变化而变化,从而减小开停机损失、降低耗电量。同时,在变频冰箱中使用的直流调速压缩机又减小了压缩机电机的励磁损失,压缩机效率得到进一步提高。 1.2 课题的意义及目的
本课题“电冰箱温度测控系统设计”主要是将所学的单片机原理、计算机控制技术、传感器技术等知识运用到实际的生活中,真正做到理论与实践相结合。
在社会大力提倡节能减排,低碳生活的今天,普通家用冰箱中的电机启动频繁、噪声大、寿命短、温度稳定性差、能耗高等问题,是需要我们亟待解决的。近几年随着科学技术的发展,特别是电子技术和计算机控制产业的发展,变频技术在家电领域的应用逐步普及。随着人们生活质量的提高,人们对家电提出了更高的要求,在能够实现原有功能的同时,还要符合社会节能减排的要求。针对于这种情况,本课题介绍的电冰箱温度测控系统,能对冰箱中的温度进行检测,并与设定的温度相比较,根据温差的大小来改变工作频率,完全符合了现代家庭对于家电节能的要求,既能保持原有冰箱的制冷功能,又能达到节能的效果。这个课题研究将使得我们的生活更加节能环保。
2 设计方案
2.1 设计方案论证
根据要求,本次毕业设计重要的部分是测温元件的选用,温控器的选择决定外围电路的设计。根据查阅资料,温控器的选择有如下两种:
方案一:采用传统的测温元件,如热电偶、热电阻。温控器可以选择热电偶和热电
桂林电子科技大学毕业设计(论文)报告用纸 第4页 共39页
阻,他们测出的一般都是电压,再转换成对应的温度,但是需要比较多的外部硬件支持,电路复杂,软件调试复杂,精确度不高。
方案二:采用高性能的数字智能温度传感器DS18B20,DS18B20数字温度计提供9到12位分辨率的温度测量,DS18B20作为检测元件, 操作温度范围在-55°C到+125°C变化。-10°C到+85°C范围的温度精度可达±0.5°C,最高分辨率可达0.0625°C。DS18B20可以直接读出被检测温度值,而且采用三线制与单片机相连,通过1-Wire总线来通信,减少了外部的硬件电路,具有低成本和易使用的特点。
本次毕业设计中采用方案二,采用DS18B20数字智能传感器作为温度检测元件。 显示部分的方案选择有三种
方案一:采用数码管动态显示。本次设计的显示内容主要为数字,利用LED数码管可基本满足使用要求,且成本较低,但是数码管显示不利于显示字符,而且亮度低,可视性较差,所以不用此种作为显示。
方案二:采用点阵式数码管显示。点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示.
方案三:采用LCD1602液晶显示。液晶显示模块具有体积小、功耗低、显示内容丰富等特点,由于液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。现在字符型液晶显示模块已经是单片机应用设计中最常用的信息显示器件了。1602液晶模块内部存储有不同的点阵字符图形,这些字符有阿拉伯数字、英文字母的大小写、常用的符号和日文假名等,其内部还有自定义字符(CGRAM),可用于存储自已定义的字符。采用LCD液晶显示可以更好的显示效果。
故显示部分采用方案三,采用LCD1602作为显示元件。
综合上述,本次设计采用温度传感器DS18B20作为温度检测元件,用LCD1602液晶显示,配合单片机ATC51进行设计,由以下模块组成:主控制器、测温电路、显示电路、变频控制电路。 2.2 设计思路
通过分析研究课题的要求以及难点,本次设计将整个系统大致分为四大模块进行设计。即检测模块、显示模块、主控模块和变频模块;检测模块是用温度检测传感器DS18B20,DS18B20作为检测元件,操作温度范围在-55°C到+125°C。在-10°C到+85°C范围的温度精度可达±0.5°C,最高分辨率可达0.0625°C。DS18B20可以直接读出被检测温度值,其作用主要是用来实时检测环境的温度。传感器检测到的数据送到主控模块进行处理判断。主控模块是整个系统的核心,它主要用来控制传感器、液晶显示屏和变频模块的工作。主控模块主要由ATC51单片机构成,ATC51是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000
桂林电子科技大学毕业设计(论文)报告用纸 第5页 共39页
次。可以用来判断传感器通过信号处理电路以后发送过来的电信号,并且通过命令产生脉冲,实现变频控制。主控单元还要用来处理温度的显示,这个功能主要通过对LCD1602液晶显示的控制来实现,变频模块主要是用4个场效应管及一个驱动芯片组成变频器,实现变频。
课题重点是对环境的温度进行实时监测,并根据温度变化的范围大小来改变工作频率,达到节能的效果。本课题的难点在于如何实现变频。其次是能驱动液晶显示屏,显示所要求显示的内容。
3 硬件设计
3.1 系统原理框图
本系统由检测模块部分、主控模块部分、变频模块部分、显示模块部分组成,原理为:通电后DS18B20温度传感器及液晶显示LCD1602进行初始化,若温度传感器没有连上,则显示DS18B20 ERROR,当传感器连接上时,显示当前温度及预设温度。键盘可以设置预设温度。传感器将检测到的温度送入单片机中进行数据处理,若当前温度高于预设温度,则进行制冷提示。根据当前温度与预设温度的差值高低输出不同周期的脉冲,输入到变频器中,控制工作频率变化。其原理框图如图3-1所示。
温度检测传感器(DS18B20) 键盘控制 单 片 机 系 统 液晶显示LCD1602 变频器 变频电机 图3-1 原理框图
3.1.1检测模块部分
温度检测模块采用数字温度芯片DS18B20测量温度,输出信号全数字化。便于单片机处理,简化了使用传统的测温元件的很多外围电路。且该元件的线形较好,物理化学性很稳定,能用于工业测温。
DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有耐磨耐碰,线路简单,体积小的特点。封装形式多样,适用于各种狭小空间设备数字测温和控制领
桂林电子科技大学毕业设计(论文)报告用纸 第6页 共39页
域。用它来组成一个测温系统,线路简单, DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。十分方便。DS18B20的特点如下:
(1)测量温度范围在-55℃到+125℃之间。
(2)在DS18B20中的每个器件上都有独一无二的序列号。 (3)实际应用中不需要外部任何元器件即可实现测温。 (4)温度转换为12位数字格式最大值为750毫秒。
(5)数字温度计的分辨率可以从9位到12位选择。 (6)只要有一个端口即可实现通信。 图3-1-1 DS18B20 (7)内部有温度上、下限告警设置。
(8)可用数据线供电,也可外部电源,无需备份电源 DS18B20其引脚排列如图3-1-1所示。引脚功能如表3-1-1所示。
表3-1-1 DS18B20详细引脚功能描述
序号 1 2 名称 引脚功能描述 GND 地信号 DQ 数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。 3 VDD 可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。 由于DS18B20采用的是1-Wire总线协议方式,即在一根数据线实现数据的双向传
输,而对ATC51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。DS18B20的温度采集电路如图3-1-2所示。
图3-1-2 DS18B20电路图
桂林电子科技大学毕业设计(论文)报告用纸 第7页 共39页
DS18B20完成温度转换须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求单片机将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,单片机收到此信号表示复位成功
DS18B20内部结构框图如图3-1-3所示,主要由四部分组成:位光刻ROM,温度传感器,温度报警触发器TH和TL,配置寄存器。
图3-1-3 DS18B20内部结构图
DS18B20测温原理如图3-1-4所示,图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55℃所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1 ,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。
图3-1-4中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。在正常测温情况下,DS18B20的测温分辩率为0.0625℃,以12位数据格式表示。12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。 例如+125℃的数字输出为07D0H,+125乘以0.0625℃的数字输出为0191H,-25乘以0.0625℃的数字输出为FE6FH,-55℃的数字输出为FC90H 。
桂林电子科技大学毕业设计(论文)报告用纸 第8页 共39页
图3-1-4 DS18B20测温原理图
DS18B20在出厂时以配置为12位,读取温度时共读取16位,所以把后11位的2进制转化为10进制后在乘以0.0625便为所测的温度,还需要判断正负。前5个数字为符号位,当前5位为1时,读取的温度为负数;当前5位为0时,读取的温度为正数。16位数字摆放是从低位到高位。不同的温度转化位对应不同的转化时间,9位,10位,11位,12位的温度显示对应的四种配置的分辨率分别为0.5℃,0.25℃,0.125℃和0.0625℃。
DS18B20使用中需要注意DS18B20虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题:
(1) 较小的硬件开销需要相对复杂的软件进行补偿,由于DS18B20与微处理器间采用串行数据传送,因此,在对DS18B20进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。
(2)DS18B20从测温结束到将温度值转换成数字量需要一定的转换时间,这是必须保证的,不然会导致转换错误,使温度输出总是显示85℃。
(3)在实际使用中发现,应使电源电压保持在5V左右,若电源电压过低,会使所测得的温度与实际温度出现偏高现象。
(4) 在实际应用中单总线上所挂DS18BB20有数量。当单总线上所挂DS18B20超过8个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。
(5)在DS18B20测温程序设计中,向DS18B20发出温度转换命令后,程序总要等待DS1820的返回信号,一旦某个DS18B20接触不好或 断线,当程序读该DS18B20时,将没有返回信号,程序进入死循环。这一点在进行DS18B20硬件连接和软件设计时也要
桂林电子科技大学毕业设计(论文)报告用纸 第9页 共39页
给予一定的重视。 3.1.2主控模块部分
根据课题设计的要求,本次设计选用的主控模块为ATC51单片机。
ATC51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。ATC51是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
ATC51 提供以下标准功能:4k 字节Flash 闪速存储器,128字节内部RAM,32 个I/O 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,ATC51可降至0Hz的静态逻辑操作,并支持两种节电工作模式,空闲模式和掉电模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
引脚图如图3-1-5:
图3-1-5 ATC51原理图
MCS-51是标准的40引脚双列直插式集成电路芯片,其中:
P0.0~P0.7为P0口,8位双向口线(在引脚的39~32号端子);P1.0~P1.7为P1口,8位双向口线(在引脚的1~8号端子);P2.0~P2.7为P2口8位双向口线(在引脚
桂林电子科技大学毕业设计(论文)报告用纸 第10页 共39页
的21~28号端子);P3.0~P3.7为P3口8位双向口线(在引脚的10~17号端子)。
VCC:供电电压。 GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为低八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为ATC51的一些特殊功能口,如下表所示:
表3-1-2 P3口第二功能
引脚号 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 第二功能 RXD(串行输入) TXD(串行输出) INT0(外部中断 0) INT1(外部中断 1) T0(定时器0外部输入) T1(定时器1外部输入) WR(外部数据存储器写选通) RD(外部数据存储器写选通) P3口同时为闪烁编程和编程校验接收一些控制信号。
桂林电子科技大学毕业设计(论文)报告用纸 第11页 共39页
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 下图3-1-6为单片机接口图:
图3-1-6 C51单片机接口图
桂林电子科技大学毕业设计(论文)报告用纸 第12页 共39页
在主控模块中,单片机P0口控制液晶显示LCD1602的数据端,P2.0~P2.1控制LCD1602的读写及使能端,P2.3接温度传感器DS18B20的数据端,接受传感器采集到的数据。复位电路采用了10K的电阻,10UF的电容,晶振采用12M,配合两个30PF的电容,组成单片机的复位电路。 3.1.3变频模块部分
变频模块采用单片机产生脉冲,根据实时温度与预设温度的温差产生不同周期的脉冲信号,输入到MOSFET驱动芯片IR2302,控制由4个MOSFET组成的桥式逆变电路,产生交变电压,控制电机的转速,实现频率变换。在设计中使用了MOSFET专用驱动芯片IR2302,简化电路设计。
早期的电力半导体器件是晶闸管,它的电压降比较高,产生的功率损耗比较大,使变频效率很低,晶闸管属于电流控制器件,控制电路也需要消耗较大的功率,随着新型电力器件的出现,变频器才有了今天的这样普及。
目前常用的电力器件主要有绝缘栅晶体管IGBT(Insulated Gate Bipolar Transistor)、功率场效应管MOSFET(Metal-Oxide-Semiconductor Field-Effect Transistor),它们都属于电压控制器件,控制电路只需要提供控制电压,不需要电流,控制电路的功耗就大为降低了。
本次设计采用四个IRF840 MOSFET管,电流8A\\电压500V\\功率125W\\导通电阻0.85欧姆,是很理想的开关元件。
驱动MOSFET管采用了专用驱动芯片IR2302。
MOSFET(IDBT)驱动芯片IR2302是国际整流公司IR推出的多功能600V半桥驱动集成电路,这种适用于功率MOSFET、IGBT驱动的自举式集成电路。
IR2302的性能特点
(1)芯片体积小(DIP8),集成度高,可同时驱动同一桥臂的上、下两只开关器件;
(2)动态响应快,典型通断延迟时间220/220ns、内部死区时间100ns、匹配延迟时间50ns;
(3)驱动能力强,可驱动600V主电路系统,具有60mA/130mA输出驱动能力,栅极驱动输入电压宽达10~20V;
(4)工作频率高,可支持100kHZ或以下的高频开关,可与IRF8系列等较小巧的MOSFET或IGBT配合使用;
(5)输入输出同向设计,提供高端和低端控制驱动输出,可通过两个兼容3.3V、5V和15V输入逻辑的CMOS或TTL输入来控制,为设计带来了很大的灵活性;
(6)低功耗设计,坚固耐用且防噪性能高,IR2302采用高压集成电路技术,整合设计降低成本和简化电路,又降低设计风险和节省电路板上的空间,相比于其它分立
桂林电子科技大学毕业设计(论文)报告用纸 第13页 共39页
式、脉冲变压器及光耦合解决方案,IR2302更能节省组件数量和空间,并提高可靠性;
(7)具有电源欠压保护和关断逻辑IR2302具有交叉传导保护功能,整合了专为驱动电机的半桥MOSFET或IGBT电路而设的保护功能,当电源降至4.7V时,欠压锁定功能会立即关掉两个输出,以防止穿通电流及器件故障。当电源电压大于5V时则会释放输出。综合滞后一般为0.3V,过压及防闭锁CMOS技术使IR2302非常坚固耐用。
IR2302管脚图:
图3-1-7 IR2302管脚图
1脚——工作电源6~25V,2脚——PWM脉冲输入;3脚——中断输入;4脚——公共端,接地;5脚——下MOSFET管驱动;6脚——接上下MOSFET管中间;7脚——上MOSFET管驱动;8脚——自举端
图3-1-8 变频电路方框图
变频电路的设计如图3-1-8所示,我们先使用整流电路,将交流变为平滑的直流,单片机输出脉冲信号到驱动芯片上,驱动逆变器,把直流变为交流,控制电机转速,从而达到变频的目的。
桂林电子科技大学毕业设计(论文)报告用纸 第14页 共39页
图3-1-9 变频部分原理框图
变频部分原理框图如图3-1-9所示,交流电由P4输入,经过由D6、D7、D10、D11组成的桥式整流,C5、C6 滤波,得到较为平滑的直流电,施加到由四个功率管Q1、Q3、Q4、Q5组成的桥式逆变电路上,在单片机控制下,采用专用驱动模块,让Q1/ Q4、 Q3/ Q 5轮流导通,在电机上获得交变电压。
PWM脉冲由IR2302的2脚输入,通过内部倒相,分别由Hout、Lout输出,以驱动MOSFET管。
MOSFET的栅极驱动电压需要高于漏极电压,在图所示电路中,Q4的驱动是足够的,而Q3需要通过自举电路才能获得高压。当Q4导通时,C9由VCC经过D14、Q4充电到VCC;当T2关闭,Q3开始导通时,IR2302的Hout端输出电压为DC+VCC,满足了Q3的驱动要求。
SD是使能端,该端输入高电平时,IR2302关闭,禁止输出。 3.1.4显示模块部分
显示模块部分采用LCD1602液晶显示器,该液晶显示器微功耗、显示内容丰富、体积小、超薄轻巧,界面友好,控制方面,电路简单,寿命长。
LCD1602分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图3-1-10所示:
桂林电子科技大学毕业设计(论文)报告用纸 第15页 共39页
图3-1-10 LCD1602尺寸图
1602LCD主要技术参数:显示容量:16×2个字符;芯片工作电压:4.5—5.5V;工作电流:2.0mA(5.0V);模块最佳工作电压:5.0V;字符尺寸:2.95×4.35(W×H)mm
图3-1-11 LCD1602管脚图
各引脚接口说明如表3-1-3所示:
表3-1-3 LCD1602引脚图
编号 1 2 3 4 5 6 7 8 符号 VSS VDD VL 引脚说明 电源地 电源正极 液晶显示偏压 编号 9 10 11 12 13 14 15 16 符号 D2 D3 D4 D5 D6 D7 BLA BLK 引脚说明 数据I/O口 数据I/O口 数据I/O口 数据I/O口 数据I/O口 数据I/O口 背光源正极 背光源负极 RS 数据/命令选择端 R/W E D0 D1 读/写选择端 使能信号 数据I/O口 数据I/O口
桂林电子科技大学毕业设计(论文)报告用纸 第16页 共39页
第1脚:VSS为地电源。 第2脚:VDD接5V正电源。
第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 第7~14脚:D0~D7为8位双向数据线。 第15脚:背光源正极。 第16脚:背光源负极。
1602液晶模块内部的字符发生存储器(CGROM)已经存储了不同的点阵字符图形,这些字符有阿拉伯数字、英文字母的大小写、常用的符号和日文假名等,每一个字符都有一个固定的代码,其中数字与字母同ASCII码兼容。其内部还有自定义字符(CGRAM),可用于存储自已定义的字符。1602模块的设定、读写与光标控制都是通过指令来完成,共有11条指令,如表3-2所示。
表3-1-4 1602指令集
1 2 3 4 5 6 7 8 9 指令 清屏 光标返回 输入模式 显示控制 光标/字符移位 功能 置字符发生器地址 置数据存贮器地址 读忙标志和地址 RS 0 0 0 0 0 0 0 0 0 RW 0 0 0 0 0 0 0 0 1 D7 0 0 0 0 0 0 0 1 BF D6 0 0 0 0 0 0 1 D5 0 0 0 0 0 1 D4 0 0 0 0 1 DL D3 0 0 0 1 D2 0 0 1 D D1 0 1 I/D C D0 1 * S B * * S/C R/L * N F * 字符发生存贮器地址 显示数据存贮器地址 计数器地址
桂林电子科技大学毕业设计(论文)报告用纸 第17页 共39页
10 11 写数据到指令7.8所设地址 1 从指令7.8所设的地址读数据 1 0 1 要写的数据 读出的数据
显示模块部分如图3-1-12所示,LCD的数据端接单片机的P0口,控制数据的输出显示。P2.0接LCD1602的数据/命令选择端RS,P2.1接LCD1602读/写选择端,P2.2接LCD1602的使能端。
图3-1-12 显示模块电路图
3.2 原理图和PCB设计 3.2.1原理图设计
本次设计使用的是软件Protel99。
通常的电路原理图设计流程包括以下6个步骤:
(1)设置原理图设计环境;比如设置电路图纸尺寸以及版面,用户可以设置图纸的尺寸、方向、网格大小以及标题栏等。
(2)放置元件;用户根据实际电路的需要,从元器件库里取出所需元器件放置到工作平面上,并对元器件的位置进行调整、修改。
(3)原理图布线;将工作平面上的器件用有电气意义的导线、符号连接起来,构成一个完整的电路原理图。
(4)编辑和调整;为了保证原理图的美观和正确,就需要对元件位置进行重新调整。导线位置进行删除、移动、更改图形尺寸、属性及排列等。
桂林电子科技大学毕业设计(论文)报告用纸 第18页 共39页
(5)检查原理图;检查原理图保证电性能可靠性,选择Tools下面 的ERC,在\"Rule Matrix\"种选择要进行电气检查的项目,设置好各项后,在\"Setup Ele ctrical Rlues Check\"对话框上选择\"OK\"即可运行电气规则检查,检查结果将被显示到界面上。 (6)生成网络表。当我们设计好原理图,在进行了ERC电气规则检查正确无误后,就要生成网络表,为PCB布线 做准备。原理图一般作为PCB设计的基础环节和前提,而网络表则是联系电路原理图设计与PCB设计的纽带。根据生成的网表,我们就可以进入下一步的PCB设计。
根据总体设计,采用PROTEL 99 SE 进行硬件电路的设计,在遵守布局和布线规则的前提下,保证电路的安全可靠,还要兼顾电路的美观。进行总体综合布局布线. 在PCB设计中,布线是完成产品设计的重要步骤,可以说前面的准备工作都是为它而做的, 在整个PCB中,以布线的设计过程限定最高,技巧最细、工作量最大。 3.2.2 PCB设计 PCB设计原则:
(1)在组装密度许可的情况下,尽量选用低密度的布线设计,并且信号走线尽量粗细一致,有利于阻抗匹配。所有走线应远离PCB的边框至少2mm,以防PCB制板时造成断线的隐患。
(2)元件的布局应便于信号流通,使信号尽可能保持一致的方向。在保证电气性能的前提下,元件应放置在栅格上且相互平行或垂直排列,以求整齐、美观,一般情况下不允许元件重叠;元件排列要紧凑,输入和输出元件尽量远离。多数情况下,信号的流向安排为从左到右或从上到下,与输入、输出端直接相连的元件应当放在靠近输入、输出接插件或连接器的地方。
(3)电源线要尽可能宽,同时使电源线,地线的走向和数据传递的方向一致,信号线要尽可能短,并减少信号过孔的数目。
(4)尽量避免平行走线,尽量使正反两面信号线互相垂直,需要拐角的地方应尽量以1350为宜,不宜拐直角。
(5)布线时与焊盘直接相连的线条不宜太宽,走线应尽量离开不相连的元器件,以免短路。
(6)一些功耗大的集成块、大或中功率管、电阻等元件,要布置在容易散热的地方,并与其它元件隔开一定距离。
(7)地线是引起干扰噪声最大的地方,当电流流过地线时,会在地线上产生环路电压,从而产生地线环路电流,造成干扰。地线设计要注意:数字地和模拟地要分离,最后接于电源地;为每个模块提供一个公共电位参考点;各部分内部电路的接地要安装单点接地的原则,尽量减小电路的环路面积,并与相应的滤波电路就近接地;空间允许
桂林电子科技大学毕业设计(论文)报告用纸 第19页 共39页
的情况下,各模块应尽量以地线隔离。
图3-2-1 系统的PCB图
4 软件设计
4.1 软件设计思想
本系统软件主要是通过ATC51单片机程序控制实现全部功能的。单片机初始化液晶显示器等,然后再初始化DS18B20温度传感器,单片机从传感器中读取温度,显示到液晶屏上,然后根据实际测量的温度与预设温度的差值大小,反馈回单片机中,改变单片机输出的脉冲的周期,进而实现频率的变换。 4.2 软件设计及流程图
当系统通电之后,主机程序开始初始化,之后初始化LCD1602及 DS18B20温度传感器之后,传感器开始检测温度,单片机对于传感器端口不停扫描,传感器向主机单片机反馈电信号,当单片机检测到温度和预设温度差值的改变大于1°时,输出的脉冲宽度改变,从而改变工作的频率。整个系统程序流程图如图3-2-2所示。微处理器ATC51是整个系统的核心。它在系统中完成采集的数据处理和显示模块显示两个部分的功能,程序可以分为三个模块:主程序模块,温度采集数据处理模块和显示模块。
为了完成复杂的交互和控制功能,ATC51的开发使用的是Keil C,使程序简洁,
桂林电子科技大学毕业设计(论文)报告用纸 第20页 共39页
可移植性好,编程效率高。
ATC51的主程序模块,以主函数的形式出现,它的功能是协调其他功能模块的关系,使整个系统以及各模块进入合适的工作模式,控制整个系统的正常运行。
系统开始运行后,进入主函数,首先完成的是初始化工作。初始化工作主要是完成三个方面的初始化:
(1)ATC51的初始化:主要完成ATC51中定时器0的初始化。系统中用到了它的定时器0,用于产生PWM脉冲。
(2)LCD1602的初始化:整个1602的初始化模块包括了定义LCD1602管脚:包括RS,R/W,E,这里定义是指这些管脚分别接在单片机哪些I/O口上;显示初始化:包括设置显示方式、延时、清理显示缓存、设置显示模式等;检测1602是否处于忙状态;写显示字符的数据,写显示字符串的数据等。
(3)DS18B20的初始化:先把总线拉低大于480us然后再释放总线,即完成其初始化。 系统对各个模块的初始化完成之后,就进入无限循环,等待中断的产生,进而进入相应的处理程序,完成数据采集、数据处理,最后将显示数据在显示模块中显示。 主程序流程图:
开始 初始化单片初始化DS18B20 初始化LCD1602 读DS18B20 否 是否高于预设温度 是 改变频率 结束
图4-1 程序流程图
桂林电子科技大学毕业设计(论文)报告用纸 第21页 共39页
温度采集数据处理模块如图4-2所示:
开始 初始化18B20 跳过读序列号,启动温度转换 跳过读序列号,读取温度值 温度是否为正 是 否 正负温度标志位置1 正负温度标志位置0 数据转换处理 显示 返回
图4-2 温度数据处理流程图
单片机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作,复位要求主CPU将数据线下拉500微秒,然后释放,当DS18B20收到信号等待16~60微秒左右,发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。
如果测得的温度大于0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,测到的数值需要取反加1再乘于0.0625即可得到实际温度。在本次设计中将测得温度乘以0.625,扩大了十倍,换算出温度值,显示一位小数。
显示模块的流程图如图4-3所示
桂林电子科技大学毕业设计(论文)报告用纸 第22页 共39页
开始 初始化LCD1602 1602是否忙 否 写地址 是 写数据 返回 图4-3 显示部分流程图
KeilC51的使用
(1)建立一个新工程
进入KeilC51的编辑界面后,单击Project菜单,在弹出的下拉菜单中选择New Project选项。选择你要保存的路径,输入工程文件的名字,然后点击保存。这时会出现一个对话框,要求选择单片机的型号,在这个工程中,我选择ATC51。选择完成后点击确定。
(2)建立一个新程序文件
单击File菜单,在下拉菜单中选择New,这样就新建了一个空白的文件,单击File菜单,在下拉菜单中选择Save As,在文件名栏右侧的编辑框中键入欲使用的文件名,同时键入正确的扩展名。如果使用C语言进行编程,则扩展名为.c,如果使用汇编语言进行编程,则扩展名为.asm。本次设计采用的是C语言进行编写,所以选择扩展名为.C,然后点击保存。
(3)在工程中添加程序文件
回到编辑界面后,单击Target1前面的+号,然后在Source Group1单击右键,然后单击Add File to Group‘Source Group 1’选中刚才建的程序文件,点击Add,就把程序文件添加到工程里来了。然后就可以在程序文件中输入你编的程序了。
(4)程序的编译
桂林电子科技大学毕业设计(论文)报告用纸 第23页 共39页
程序编好后,就开始编译。点击Project菜单,在下拉菜单中选择Build Target选项,就实现了程序的编译。编译成功后,在Project的下拉菜单中选择Start/Stop Debug Session,就可以进入程序调试界面进行程序的调试了。
5 功能与调试
5.1 系统调试
5.1.1系统调试使用的方案
在完成系统的原理图设计与PCB设计后,便开始转印,腐蚀,钻孔,制作电路板实物。对制作好的PCB板,按照原理图进行器件装配,在装配过程中特别注意电阻器的阻值,电解电容器,二极管的极性等,避免因元件的值大小问题或者极性的问题导致电路工作不正常。装配好之后进行电路的调试。
调试规则为:打开电源之前,先用万用表按照系统原理图检查制作好的电路板的通断情况。在电路板的制作过程中,由于是手工制作,难免会有些意想不到的疏漏,焊点的好坏以及电路的连通性直接影响到电路功能的实现,漏焊和虚焊会导致器件的工作不正常,两个焊点接近的地方容易出现桥接,造成短路,为此我用万用表对焊点和电路板线路逐一认真检查。我先把万用表打到蜂鸣器档,然后按照原理图进行检查。在检查过程中,我发现两个相距较近的焊点由于焊锡过多,连在一起,对照原理图,发现这两个焊点不该连在一起,于是我用烙铁把焊锡剔除一些,然后再用小刀刮开,再用万用表检测,确定没有连起来。经过仔细检查最后终于把所有线路连接好。 5.1.2系统调试过程中解决的问题
硬件调试按照电路图连好电路,电路板输入电压为5V。先检查晶振的震荡频率是否为12MHZ来判断单片机是否正常工作。
(1)按键不正常
在调试读键程序时,我也遇到了一些问题,刚开始是不能正常读键,无论按哪个键都没有出现预期的温度加减的效果,检查了电路板,没有发现有问题,检查了程序端口的定义也没有问题,为尽快找到问题出处只读取一个按键,拿万用表测读入脚的电压,结果一直为低电平,即无论按不按键都为低电平,这显然是不行的,检查电路板上读入脚有无跟地短路,但并没有短路,那只有一个可能就是读键之前肯定读键口肯定是赋值为低电平,我用查找对读键引脚赋值的那条语句,结果发现在初始时给读键口赋了低电平。改好之后再通电,测试可以正常读键了。
(2)继电器不能吸合
在调试时,不管温度如何变化,继电器都不能吸合,用万用表检查继电器引脚电压,
桂林电子科技大学毕业设计(论文)报告用纸 第24页 共39页
发现电压过低,可能是单片机的驱动能力不足,所以就在三极管的基极加了个10K的上拉电阻,结果继电器能够正常吸合。
(3)温度采集偶尔出现错误
在读取温度的时候,偶尔采集到的温度会出现错误,有较大的跳变,开始以为是延时的问题,就修改了程序,加大了延时的时间,但是还是会偶尔出现温度较大的跳变,后面查阅了相关设计的资料,找到解决方法,在软件上加了一条语句,把温度突变超过5°的值排除掉,这样,温度采集就没有再出现错误了。 5.2 系统功能
经过一个学期的学习和努力,终于实现了本次设计的全部功能。通电后,液晶屏开始初始化,显示当前的温度值,及预设的温度值,可以通过按键改变预设的温度值。当用手指捏住DS18B20温度传感器,显示屏上的温度显示就会随着上升,当温度超过预设温度时,系统会根据温度与预设温度的温差大小,改变输入脉冲的周期,进而改变工作的频率。能检测温度-30°C ~30°C,频率变化范围为30~150HZ,达到了本次设计的任务要求。
6 总结
经过一个学期的学习和努力,我终于成功的完成了本次课题的设计任务。通过这次毕业设计,加强了我们动手、思考和解决问题的能力,在刚开始拿到这个课题的时候,我毫无头绪,不知道从何入手,后面去图书馆及网络上查看了很多资料,慢慢理清了思路,确定了方案。在设计过程中,也遇到了很多的问题,由于对模电基础理论知识掌握得不怎么牢固,造成连接电路图时遇到些许麻烦,经常会遇到这样那样的情况,就是心里想老着这样的接法可以行得通,但实际接上电路,总是实现不了,因此耗费在这上面的时间用去很多。还有就是在设计显示部分的电路图时,刚开始对51单片机的各个端口分配不怎么合理,造成PCB布线时非常困难,有很多跳线,后来经过更正,布线时就容易了很多,结果还是用了几根跳线才完成了布线。再有就是在调试的过程中我遇到了最大的麻烦,在确定了硬件设计没有问题后,剩下来主要是对程序的编写了。编程我是用C语言结合着找来的参考资料来编写的,在实际调试过程中,有些功能的实现又不得不通过反复更改程序来实现,期间花费了大量的时间和精力才完成了设计任务。因为心中始终有一个信念,我相信只要通过自己的不断努力,就一定能克服种种困难。
毕业设计是对课本知识的巩固和加强,由于课本上的知识太多,平时课间的学习并不能很好的理解和运用所学的知识,而且考试内容有限,所以在这次毕业设计过程中,我们了解了很多元件的功能,并且对于其在电路中的使用有了更多的认识。
平时看课本时,对芯片元件的理解不是很透彻,做完毕业设计,很多问题就迎刃而
桂林电子科技大学毕业设计(论文)报告用纸 第25页 共39页
解了。而且还可以记住很多东西。比如一些芯片的功能,平时看课本,这次看了,下次就忘了,通过动手实践让我们对各个元件印象深刻。认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。
通过这次毕业设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从而提高自己的实际动手能力和思考的能力。在设计的过程中难免会遇到过各种各样的问题,但是这也培养了自己解决问题的能力,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。通过完成本次毕业设计,使我对变频冰箱的原理有了进一步的理解,培养了电路设计的兴趣与信心 。
在以后的学习、工作、生活的过程中,我会着力加强自己的理论联系实际的能力,通过理论认识与实际研究,不断地加强自己各方面能力,不断锻炼自己发现问题,解决问题的能力。
桂林电子科技大学毕业设计(论文)报告用纸 第26页 共39页
谢 辞
在毕业设计的整个研究、制作和调试过程中,我首先要感谢侯杏娜老师的悉心指导。在选题之后,老师引导我走向正确的资料查询的方法、完成毕设的过程规划,从简单开始,由简到难,使我能对课题的研究快速上手,在课题的研究过程中,感谢老师及时的督促与关心、了解我们遇到的困难,给出合理的建议来帮助我。在此,谨向侯老师表示最衷心的感谢!
在我调试的过程中,还得到了班上很多同学的支持、帮助,感谢在我整个毕设期间对我提供过帮助和指导的同学们。同学之间的团结合作使我的毕设更加顺利和良好的完成。
再次感谢所有在整个毕设期间对我提供过帮助的老师、同学们。正是有了你们的关心和支持,我的毕业设计才能顺利的进行,再次感谢你们!在临近毕业之际,我还要借此机会向在这四年中给予了我帮助和指导的所有老师表示由衷的谢意,感谢他们四年来的辛勤栽培。同时感谢各位任课老师教学的认真负责,在你们的悉心帮助和支持下,我能够很好的掌握和运用专业知识,并在设计中得以体现,顺利完成毕业设计的任务。
桂林电子科技大学毕业设计(论文)报告用纸 第27页 共39页
参考文献
[1] 吕汀、石红梅.变频技术原理及应用[M].北京:机械工业出版社2003
[2] 李朝青.单片机&DSP外围数字IC技术手册[M]. 北京:北京航空航天大学出版社,2003. [3] 李群芳.单片微型计算机与接口技术[M].北京:电子工业出版社,2002.
[4] 李晶皎. 嵌入式语音技术及凌阳16位单片机应用[M].北京: 北京航空航天大学出版社,2003. [5] 刘文涛.单片机应用开发实例[M].北京:清华大学出版社,2005.
[6] 刘天旺,王培开,张晖。Protel 99SE电路设计应用教程.北京:电子工业出版社.2007. [7] 白驹珩,雷哓平.单片机计算机及其应用[M].成都:电子科技大学出版社,2001. [8] 赵佩华.单片机接口技术及应用[M].北京:机械工业出版社,2003. [9] 张燕宾.变频调速应用实践[M].北京:机械工业出版社2001.
[10] 先锋工作室.单片机程序设计实例[M]. 北京:清华大学出版社,2003.
[11] Donald A. Neamen. Electronic Circuit Analysis and Design (Second Edition) [M]. McGraw-Hill Companies,2001.
[12] Anant Agarwal, and Jeffrey Lang. Foundations of Analog and Digital Electronic Circuits,July 2005.
桂林电子科技大学毕业设计(论文)报告用纸 第28页 共39页
附 录
系统程序
#include #include < intrins.h > #define uchar unsigned char #define uint unsigned int #define H 0xf3 #define L 0x80 uchar ZKB,key; uint f=0,set_temp_dat; int temp_value,set_temp_value,temp_dat,n; //温度值变量 uchar code cdis1[ ] = {\"SETTING: C \ uchar code cdis2[ ] = {\" WENDU: . C \uchar code cdis3[ ] = {\" DS18B20 ERR0R \ uchar code cdis4[ ] = {\" PLEASE CHECK \ unsigned char data temp_data[2] = {0x00,0x00} ; //用于存放从18b20读取的温度 unsigned char data display[5] = {0x00,0x00,0x00,0x00,0x00} ; //用于显示温度值 unsigned char data display_limit[2] = {0x00,0x00} ; //用于显示温度设定值 unsigned char code ditab[8] = {0x0C,0x12,0x12,0x0C,0x00,0x00,0x00,0x00} ; /*小数位表,四舍五入*/ unsigned char code mytab[8] = {0x0C,0x12,0x12,0x0C,0x00,0x00,0x00,0x00} ; //摄氏度左上角的“。” bit presence ; //18b20初始化返回信号,0=presence(成功),1= no presence (失败) //bit LED_flag ; //bit tflag=0 ; sbit d_out=P1^3; sbit sd=P1^2; sbit DQ = P2^3 ; //定义DS18B20端口DQ sbit LCD_RS = P2^0 ; sbit LCD_RW = P2^1 ; sbit LCD_EN = P2^2 ; sbit key_up = P2^4 ; 桂林电子科技大学毕业设计(论文)报告用纸 第29页 共39页 sbit key_down = P2^5 ; sbit SW = P3^1 ; sbit LED0 = P1^0 ; sbit LED1 = P1^1 ; sbit INT_0=P3^2; #define delayNOP() ; {_nop_() ;_nop_() ;_nop_() ;_nop_() ;} ; // 延时子程序 /*********************************************************/ /*******************************************************************/ void delay1(int ms) { unsigned char y ; while(ms--) { for(y = 0 ; y<250 ; y++) { _nop_() ; _nop_() ; _nop_() ; _nop_() ; } } } /******************************************************************/ /*检查LCD忙状态 */ /*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。 */ /******************************************************************/ bit lcd_busy() { bit result ; LCD_RS = 0 ; LCD_RW = 1 ; LCD_EN = 1 ; delayNOP() ; result = (bit)(P0&0x80) ; LCD_EN = 0 ; return(result) ; } /*写指令数据到LCD */ 桂林电子科技大学毕业设计(论文)报告用纸 第30页 共39页 /*RS=L,RW=L,E=高脉冲,D0-D7=指令码。 */ /*******************************************************************/ void lcd_wcmd(uchar cmd) { while(lcd_busy()) ; LCD_RS = 0 ; LCD_RW = 0 ; LCD_EN = 0 ; _nop_() ; _nop_() ; P0 = cmd ; delayNOP() ; LCD_EN = 1 ; delayNOP() ; LCD_EN = 0 ; } /*******************************************************************/ /*写显示数据到LCD */ /*RS=H,RW=L,E=高脉冲,D0-D7=数据。 */ /*******************************************************************/ void lcd_wdat(uchar dat) { while(lcd_busy()) ; LCD_RS = 1 ; LCD_RW = 0 ; LCD_EN = 0 ; P0 = dat ; delayNOP() ; LCD_EN = 1 ; delayNOP() ; LCD_EN = 0 ; } /* LCD初始化设定 */ /*******************************************************************/ void lcd_init() { delay1(15) ; lcd_wcmd(0x01) ; //清除LCD的显示内容 lcd_wcmd(0x38) ; //16*2显示,5*7点阵,8位数据 delay1(5) ; lcd_wcmd(0x38) ; delay1(5) ; lcd_wcmd(0x38) ; delay1(5) ; 桂林电子科技大学毕业设计(论文)报告用纸 第31页 共39页 lcd_wcmd(0x0c) ; //显示开,关光标 delay1(5) ; lcd_wcmd(0x06) ; //移动光标 delay1(5) ; lcd_wcmd(0x01) ; //清除LCD的显示内容 delay1(5) ; } /* 设定显示位置 */ /*******************************************************************/ void lcd_pos(uchar pos) { lcd_wcmd(pos | 0x80) ; //数据指针=80+地址变量 } /*自定义字符写入CGRAM */ /*******************************************************************/ void writetab() { unsigned char i ; lcd_wcmd(0x40) ; //写CGRAM for (i = 0 ; i< 8 ; i++) lcd_wdat(mytab[ i ]) ; } /*us级延时函数 */ /*******************************************************************/ void Delay(unsigned int num) { while( --num ) ; } /*初始化ds1820 */ /*******************************************************************/ Init_DS18B20(void) { DQ = 1 ; //DQ复位 Delay(8) ; //稍做延时 DQ = 0 ; //单片机将DQ拉低 Delay(90) ; //精确延时 大于 480us DQ = 1 ; //拉高总线 Delay(8) ; 桂林电子科技大学毕业设计(论文)报告用纸 第32页 共39页 presence = DQ ; //如果=0则初始化成功 =1则初始化失败 Delay(100) ; DQ = 1 ; return(presence) ; //返回信号,0=presence,1= no presence } /* 从18b20读一个字节 */ /*******************************************************************/ ReadOneChar(void) { unsigned char i = 0 ; unsigned char dat = 0 ; for (i = 8 ; i > 0 ; i--) { DQ = 0 ; // 给脉冲信号 dat >>= 1 ; DQ = 1 ; // 给脉冲信号 if(DQ) dat |= 0x80 ; Delay(4) ; } return (dat) ; } /* 向18b20写一个字节 */ /*******************************************************************/ void WriteOneChar(unsigned char dat) { unsigned char i = 0 ; for (i = 8 ; i > 0 ; i--) { DQ = 0 ; DQ = dat&0x01 ; Delay(5) ; DQ = 1 ; dat>>=1 ; } } 桂林电子科技大学毕业设计(论文)报告用纸 第33页 共39页 /* 读取温度 */ /*******************************************************************/ void Read_Temperature(void) { Init_DS18B20() ; WriteOneChar(0xCC) ; // 跳过读序号列号的操作 WriteOneChar(0x44) ; // 启动温度转换 Init_DS18B20() ; WriteOneChar(0xCC) ; //跳过读序号列号的操作 WriteOneChar(0xBE) ; //读取温度寄存器 temp_data[0] = ReadOneChar() ; //温度低8位 temp_data[1] = ReadOneChar() ; //温度高8位 } /* 数据转换与温度显示 */ /*******************************************************************/ void Disp_Temperature() { temp_value=temp_data[1]; //整合温度值的低8位与高8位: temp_value<<=8; //左移8位,即将温度值的高8位数据移入16位整形变量tvalue的高位, temp_value|=temp_data[0]; //再与温度值的低8位相或,即将低8位数据存入tvalue低位中,完成数据整合 if(temp_value<0xfff) //正 { temp_dat=temp_value*0.625; lcd_pos(0x48) ; lcd_wdat(0x20) ; } else //负 { temp_value=(~temp_value)+1; temp_dat=0-temp_value*0.625; lcd_pos(0x48) ; lcd_wdat(0x2d) ; } /* if(n++==10) { n=0; INT_0=0; 桂林电子科技大学毕业设计(论文)报告用纸 第34页 共39页 } */ temp_value=temp_value*0.625;//扩大10倍,换算出温度值,显示一位小数。(若扩大100倍,则可通过换算显示出2位小数) display[2]=(temp_value/100)%10+0x30; //温度十位 display[1]=(temp_value%100)/10+0x30; //温度个位 display[0]=temp_value%10+0x30; //温度小数位 if(display[2]==0x30) //高位为0,不显示 { display[2]=0x20 ; //0x20对应的ASCII码值为32,它对应的字符为 空 } lcd_pos(0x49) ; lcd_wdat(display[2]) ; //十位数显示 lcd_pos(0x4a) ; lcd_wdat(display[1]) ; //个位数显示 lcd_pos(0x4c) ; lcd_wdat(display[0]) ; //小数位数显示 } /* DS18B20 OK 显示菜单 */ /*******************************************************************/ void Ok_Menu () { uchar m ; lcd_init() ; //初始化LCD lcd_pos(0) ; //设置显示位置为第一行的第1个字符 m = 0 ; while(cdis1[m] != '\\0') { //显示字符,\"SETTING: . C\" lcd_wdat(cdis1[m]) ; m++ ; } lcd_pos(0x40) ; //设置显示位置为第二行第1个字符 m = 0 ; while(cdis2[m] != '\\0') { lcd_wdat(cdis2[m]) ; //显示字符,\" WENDU: . C \" m++ ; } writetab() ; //自定义字符写入CGRAM ,摄氏度左上角的“。” 桂林电子科技大学毕业设计(论文)报告用纸 第35页 共39页 delay1(5) ; lcd_pos(0x0b) ; //设置显示位置为第一行第14个字符 lcd_wdat(0x00) ; //显示自定义字符 ,,摄氏度左上角的“。” lcd_pos(0x4d) ; //设置显示位置为第二行第14个字符 lcd_wdat(0x00) ; //显示自定义字符 ,,摄氏度左上角的“。” } /* DS18B20 ERROR 显示菜单 */ /*******************************************************************/ void Error_Menu () { uchar m ; lcd_init() ; //初始化LCD lcd_pos(0) ; //设置显示位置为第一行的第1个字符 m = 0 ; while(cdis3[m] != '\\0') { //显示字符,\" DS18B20 ERR0R \" lcd_wdat(cdis3[m]) ; m++ ; } lcd_pos(0x40) ; //设置显示位置为第二行第1个字符 m = 0 ; while(cdis4[m] != '\\0') { lcd_wdat(cdis4[m]) ; //显示字符,\" PLEASE CHECK \" m++ ; } } /******************按键扫描****************************************/ void key_scan() { if(key_up==0) { delay1(30) ; //延时消抖 if(key_up==0) { key=1; } while(!key_up); //等待按键松开 } if(key_down==0) 桂林电子科技大学毕业设计(论文)报告用纸 第36页 共39页 { delay1(30) ; //延时消抖 if(key_down==0) { key=2; } while(!key_down); //等待按键松开 } } /*****************按键设置温度及其显示*************************************/ void setting_limit_temp() { if(key==1) { key=0; set_temp_value++; } if(key==2) { key=0; set_temp_value--; } if(set_temp_value<0) { set_temp_dat=0-set_temp_value; lcd_pos(0x08) ; lcd_wdat(0x2d) ; } else { set_temp_dat=set_temp_value; lcd_pos(0x08) ; lcd_wdat(0x20) ; } display_limit[0]=set_temp_dat/10+0x30 ; display_limit[1]=set_temp_dat%10+0x30 ; lcd_pos(0x09) ; lcd_wdat(display_limit[0]) ; //温度设定十位数显示 lcd_pos(0x0a) ; lcd_wdat(display_limit[1]) ; //温度设定个位数显示 } 桂林电子科技大学毕业设计(论文)报告用纸 第37页 共39页 / /***************************************/ void init_sys() { TH0=H; TL0=L; TMOD=0x01; //EX0=1; //IT0=1; ET0=1; TR0=1; EA=1; n=0; set_temp_value=25; } /*************************************** 设定频率 ****************************************/ void frequency_set() { if(((n-temp_dat)<5)&&((temp_dat-n)<5)) { if((set_temp_value*10) // LED0=0;LED1=1; if(((temp_dat-set_temp_value*10)>50)) f=2; else if(((temp_dat-set_temp_value*10)<=50)&&((temp_dat-set_temp_value*10)>40)) f=4; else if(((temp_dat-set_temp_value*10)<=40)&&((temp_dat-set_temp_value*10)>30)) f=6; else if(((temp_dat-set_temp_value*10)<=30)&&((temp_dat-set_temp_value*10)>20)) f=8; else 桂林电子科技大学毕业设计(论文)报告用纸 第38页 共39页 if(((temp_dat-set_temp_value*10)<=20)&&((temp_dat-set_temp_value*10)>10)) f=10; else if(((temp_dat-set_temp_value*10)<=10)&&((temp_dat-set_temp_value*10)>0)) f=20; else f=20; } if((set_temp_value*10)-temp_dat>2) {SW=0;LED0=1;LED1=0; } //保持 else {SW=1;LED0=0;LED1=1; } //制冷 } n=temp_dat; } /***************************************/ //主函数 /***************************************/ void main() { sd=1; init_sys(); while(1) { Ok_Menu (); while(!presence) { Read_Temperature(); Disp_Temperature(); key_scan(); setting_limit_temp(); frequency_set(); } Error_Menu () ; do { 桂林电子科技大学毕业设计(论文)报告用纸 第39页 共39页 Init_DS18B20() ; } while(presence) ; } } /*********************************************************/ // 中断服务程序. /*********************************************************/ void timer() interrupt 1 { static uchar click=0; // TH0=H; // TL0=L; ++click; if (click>=f) { click=0; } if (click<(f/2)) //而实现占空比的调整 d_out=0; else d_out=1; } 中断次数计数器变量 恢复定时器初始值 当小于占空比值时输出低电平,高于时是高电平,从 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务