.
1/32
基于电子温控方式的电冰箱控制电路的设计方案
1.引言
1.1课题背景及意义
冰箱是深刻改变了人类生活的现代奇迹之一。在人们发明冰箱之前,保存肉类的唯一
方法是腌制,而在夏季喝到冰镇饮料更是一种奢望。
随着国民经济的日益发展,人民的生活水平有了很大的提高,冷冻器具在家庭,医院,
旅馆,餐厅和科研单位得到了广泛的应用。
电冰箱作为应用较为普及的家用电器,近年来,随着微电子技术、传感器技术以及控制
理论的发展,其呈现迅猛发展,电冰箱向大容量、多功能、无氟、节能、智能化、人性化方
向发展,因此传统的机械式、简单的电子控制难以满足现代冰箱的发展要求。电冰箱一般
设有冷冻室和冷藏室。冷冻室的温度为:-16~-24℃。冷藏室的温度为:2~8℃。电
冰箱控制的主要任务就是保持箱食品最佳温度,达到食品保鲜的目的。而此次设计的目的
则是熟悉温控器的原理,并通过开发板模拟实现电冰箱温控器。
1.2国外研究背景
长期以来,在电子行业,温控器正快速发展。温控器是控制末端装置,实现分室温度控
制和节能运行的关键。
普通电冰箱温控器基本上是一个独立的闭环温度调节系统,主要由温度传感器、控制
器、温度设定机构等装置组成。其控制原理是电冰箱温控器根据温度传感器测得的室温与
设定值的比较结果发生控制信号,控制电冰箱压缩机电源的开关,即用切断和打开压缩机
电源的方式,调节电冰箱温度。
第一代空调温控器主要是电气式产品,空调温控器的温度传感器采用双金属片或气
动温包,通过"给定温度盘"调整预紧力来设定温度,风机三速开关和季节转换开关为泼档
式机械开关。这类温控器产品普遍存在"温度设定分度值过粗"、"时间常数太大"、"机械
开关易损坏"等问题。
第二代空调温控器为电子式产品,温度传感器采用热敏电阻或热电阻,部分产品的温
.
2/32
度设定和风速开关通过触摸键和液晶显示屏实现人机交互界面,冷热切换自动完成,运算
放大电路和开关电路实现双位调节。这类智能空调温控器产品改善了人机交互界面,解决
了"温度设定分度值过粗"等问题,但仍存在"控制精度不高"、"时间常数大"、"操作较复杂
"等问题。
目前国外生产厂家正在研究开发第三代智能型温控器,如DS18B20。个别厂家积
极响应国家的政策,应用新型控制模型和数控芯片实现智能控制。现在已有国厂家生产出
了智能型温控器,并已应用于实际工程。这一生产带动电子行业的发展。
1.3课题要求
在本次课题研究中我将参考从各个方面收集到的文献,博取其精华。研究方法则是采
用C51单片机开发板模拟电冰箱工作环境,并模拟设定电冰箱各项参数,以研究电冰箱温
控器的工作原理及设计。
研究的容主要包括以下方面:
1.设计容:
设计一种基于电子温控方式的电冰箱控制电路。
2.设计要求:
1用Protel99SE等电子CAD软件设计出原理图,并设计出相应的PCB印制板
图
2用仿真软件仿真出效果,要有仿真图证明其仿真过程。。
3.设计参数:
1该电路至少具有温度指示、双温双控、瞬间断电压缩机延时保护、敞门报警、
速冻等多种功能。
2一定要具有电源部分的电路图。
1.4课题设计的目的
1、熟悉掌握单片机程序的编写,并养成好的程序编写习惯;
2、学习传感器的工作原理及其应用、学习温度控制的基本原理;
3、熟练应用相应的绘图软件并制板,提高自己的动手能力;
4、熟练掌握系统的调试方法,提高自己分析问题的能力以及解决问题的能力;
2.方案研究与主要器件选择
2.1系统方案的设计
本系统要求设计一个基于电子温控方式的电冰箱控制系统,该系统是通过液晶显示所
设定的温度,温度能随意调节,能自动控制电冰箱工作,使其通过制冷达到所设定的温度。
系统原理图如图2-1所示。
图2-1系统原理图
2.2各个模块的设计方案
2.2.1主控芯片的选择
方案一:采用STM32F103ZET6作为本系统的主控芯片。ARMCortex-M3核的32位处理
器,72M主频,LQFP144脚封装,片Flash容量为512K,片SRAM容量为64KB。拥有2个I2C
接口,5个USART接口,3个SPI接口,一个CAN接口,功能特别强大,如果这款芯片用在本系
统中就真的是大材小用了,而且成本高。
方案二:采用STC89C52作为本系统的主控芯片。STC89C52是片含有8KFlash容量
的程序存储器,拥有32个I/O口,软件编程的自由度大,能够通过编程实现各种各样的算术
算法和逻辑控制。体积足够小,硬件电路设计简单,调试方便,而且价格便宜,非常适合本系
统。
综上所诉,采用STC89C52作为本系统的主控芯片,性价比最高。
2.2.2显示器件的选择
方案一:使用数码管。数码管按段数分为七段数码管和八段数码管,八段数码
管比七段数码管多一个发光二极管单元〔多一个小数点显示;按能显示多少个"8"可
分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和
共阴极数码管。由于本电路要求。要4位一体的数码管才行,但其硬件电路复杂,且
只能显示单纯的数字,不能显示电机运转状态。
方案二:使用液晶LCD1602.1602是能显示2行,每行16个字符,字符包括英文
.
4/32
字符及阿拉伯数字,但其不能显示汉字,价格便宜。
方案三:使用液晶12864.带中文字库的128X64是一种具有4位/8位并行、2线
或3线串行多种接口方式,部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;
其显示分辨率为128×64,置8192个16*16点汉字,和128个16*8点ASCII字符集.利用
该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以
显示8×4行16×16点阵的汉字.也可完成图形显示.低电压低功耗是其又一显著特点。
由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构
或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。
兼于方案三显示性能优良、价格适中、使用围广、使用简单,因此本设计采用方案三。
2.2.3温度传感器的选择
方案一:采用传统的测温元件,即热电耦和热电阻。温控器的第一选择就可以选择热
电耦和热电阻,他们测出的一般都是电压,再转换成对应的温度,但是需要比较多的外部硬
件支持。因此这种选择就有如下主要缺点:
●硬件电路复杂;
●软件调试复杂;
●制作成本高;
方案二:采用美国DALLAS半导体公司生产的高性能数字智能温度传感器DS18B20。
DS18B20作为检测元件,测温围为-55~125℃,最高分辨率可达0.0625℃。DS18B20可以直
接读出被测温度值,而且采用三线制与单片机相连,减少了外部的硬件电路,具有低成本和
易使用的特点。
综上所诉,采用DS18B20为本设计的温度传感器器最合适不过。
2.2.4按键电路的选择
方案一:采用独立按键作为键盘电路。硬件电路设计方法非常简单,一端接地,另一端
与单片机的I/O口相连。程序一旦检测到I/O变为低电平时,则说明按键被按下,然后单片
会执行相应的指令[1]。当某单片机系统需要较多按键时,如果继续使用独立按键的话,便会
占用过多的I/O口资源。
方案二:采用矩阵键盘作为键盘电路。4×4矩阵键盘采用的是行扫描和列扫描的方
式来实现对键盘的识别的。它有效的减少了对单片机I/O口资源的暂用,大大的降低了硬
.
5/32
件电路设计的负担。同时在程序的编写上,有了更大的可操作性。
综上所述,采用矩阵键盘作为键盘电路对于本系统来说是最好的选择。
2.3主要器件的介绍
2.3.1STC89C52简介
MCS-51单片机STC89C52其部基本组成为:一个8位的中央处理器〔CPU,256byte
片RAM单元,4Kbyte掩膜式ROM,2个16位的定时器/计数器,四个8位的并行I/O口
〔P0,P1,P2,P3,一个全双工串行口5个中断源,一个片振荡器和时钟发生电路,可编程串
行通道,有低功耗的闲置和掉电模式。这种结构特点决定了单片机具有体积小、成本低、
可靠性高、应用灵活、开发效率高、易于被产品化等优点,使其具有很强的面向控制的能
力,在工业自动化控制、家用电器、智能化仪表、机器人、军事装置等领域获得了广泛的
应用。STC89C52的主要功能如表2-1所示、图2-2为STC89C52的引脚图。
图2-2单片机引脚分布图
表2-1STC89C52主要功能
管脚说明:
VCC:供电电压。
GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管
脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为
数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输
出原码,此时P0外部必须被拉高。
主要功能特性
兼容MCS51指令系统8K可反复擦写FlashROM
32个双向I/O口256x8bit部RAM
3个16位可编程定时/计数器中断时钟频率0-24MHz
2个串行中断可编程UART串行通道
2个外部中断源共6个中断源
2个读写中断口线3级加密位
低功耗空闲和掉电模式软件设置睡眠和唤醒功能
.
6/32
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口也可作为8051的一些特殊功能口,如下所示:
口管脚备选功能
P3.0RXD〔串行输入口
P3.1TXD〔串行输出口
P3.2/INT0〔外部中断0
P3.3/INT1〔外部中断1
P3.4T0〔记时器0外部输入
P3.5T1〔记时器1外部输入
P3.6/WR〔外部数据存储器写选通
P3.7/RD〔外部数据存储器读选通
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉
冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输
出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,
该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
.
7/32
/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期
两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器〔0000H-FFFFH,不管是否
有部程序存储器。注意加密方式1时,/EA将部锁定为RESET;当/EA端保持高电平时,此
间部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源〔VPP。
XTAL1:反向振荡放大器的输入及部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
2.3.2稳压芯片简介
本系统中以+5电压供电为主,系统所需的+5V电压是由LM2940提供的。LM2940是输
出电压固定的低压差三端稳压器,外围电路简单,只需要外加两个滤波电容就行,便可达到
稳定的+5V电压输出,其典型电路如图2-3所示,LM2940引脚分布图如图2-4所示。
1、LM2940的主要性能有以下几点:
〔1输出电压5V;
〔2输出电流1A;
〔3输出电流1A时,最小输入输出电压小于0.8V;
〔4最大输入电压26V;
〔5工作温度-40~+125℃;
〔6含静态电流降低电路、电流限制、过热保护、电池反接和反插入保护电路;
图2-3LM2940的典型稳压电路
图2-4LM2940引脚分布图
2.3.3DS18B20简介
温度传感器是本系统不可或缺的元件,其性能的好坏直接影响系统的性能,因此温度
传感器采用DALLAS公司生产的高性能数字温度传感器DS18B20。
DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO-92小体积封
装形式;温度测量围为-55℃~+125℃,可编程为9位~12位A/D转换精度,测温分辨率
可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可在远
端引入,也可采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,CPU只需
.
8/32
一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻
辑电路。以上特点使DS18B20非常适用于远距离多点温度检测系统。
DS18B20部结构如图3-3所示,主要由4部分组成:64位ROM、温度传感器、非挥发
的温度报警触发器TH和TL、配置寄存器。如图2-5所示。
图2-5DS18B20的外部封装图
DQ:为数字信号输入/输出端;
GND:为电源地;
VDD:为外接供电电源输入端
ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码,每个
DS18B20的64位序列号均不相同。64位ROM的排的循环冗余校验码〔CRC=X8+X5+X4+1。
ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20
的目的。
图2-6DS18B20的部结构
DS18B20用12位存贮温度值,最高位为符号位。以下图表为DS18B20的温度存储方式,
负温度S=1,正温度S=0,如:0550H为+85℃,0191H为25.0625℃,FC90H为-55℃。
23222
温度值低字节LSB
SSSSS262524
温度值高字节MSB
高低温报警触发器TH和TL、配置寄存器均由一个字节的EEPROM组成,使用一个存储
器功能命令可对TH、TL或配置寄存器写入。其中配置寄存器的格式如下:
0R1R011111
R1、R0决定温度转换的精度位数:R1R0=00,9位精度,最大转换时间为
93.75ms,R1R0=01,10位精度,最大转换时间为187.5ms,R1R0=10,11位精度,最大转换时间
为375ms,R1R0=11,12位精度,最大转换时间为750ms;未编程时默认为12位精度。
高速暂存器是一个9字节的存储器。开始两个字节包含被测温度的数字量信息;第3、
4、5字节分别是TH、TL、配置寄存器的临时拷贝,每一次上电复位时被刷新;第6、7、8
字节未用,表现为全逻辑1;第9字节读出的是前面所有8个字节的CRC码,可用来保证通
信正确。
.
9/32
DS18B20的一线工作协议流程是:初始化→ROM操作指令→存储器操作指令→数据传
输。
2.3.4LCD1602简介
LCD12864是一款特别经典的点阵式LCD,由于其强大的功能以及高性价比因而被广泛
运用于日常生活中各种各样的人机交互场合,LCD12864的实物图见图3-9所示。LCD12864
是带中文字库的液晶显示器,满屏时可以显示4行8列共32个汉字,也能显示英文字母的
大小写、专用的符号,多样的图案和曲线等,而且每个字符都对应相应的ASCII码。如果我
们想显示中文字符,只需要设定显示字符位置,即设定显示地址,再写入中文字符编码即
可。显示ASCII字符过程与显示中文字符过程相同。不过在显示连续字符时,只需设定一
次显示地址,由模块自动对地址加1指向下一个字符位置,否则,显示的字符中将会有一个
空的ASCII字符位置。
图2-7LCD12864实物图
3.硬件电路详细设计
本设计是关于电子温控方式的电冰箱控制设计与实现,硬件电路主要包括:单片机最
小系统电路设计、整流电路设计、稳压电路设计、测温电路、过欠电压检测电路等,以下
则是硬件电路的详细介绍。
3.1显示电路设计
在本设计中采用LCD12864作为人机交互界面[2],用来显示设定转速值以及实际转速值,
以下是对该显示电路的简单介绍。
在原理图设计时将LCD12864的A0-A7接到单片机的P0口,因为P0口部并没有自带的
上拉电阻,因此需要外加1KΩ的排阻,LCD12864的第三管脚是液晶显示器清晰度的调整端,
接正电源时清晰度最低,接地时清晰度最高。清晰度过高时会产生"鬼影",这里通过一个
10KΩ的电位器来调整液晶显示器的清晰度,因为不管是接地还是接电源都会使得
LCD12864的清晰度比较方便系统的调试,电路图如图4-3所示。LCD12864的EN、RW、RS、
RET、PSB管脚分别连接到单片机的P1.0-P1.4,通过对P1.0-P1.4管脚的操作就能对
LCD12864进行显示控制。
图3-1LCD12864显示电路图
3.2矩阵键盘电路设计
矩阵键盘的电路图如图3-2所示,采用的是4*4的非编码键盘。图中列线通过串接上
拉电阻接入单片机的高四位I/O口[3]作为输入端,而行线接单片机第四位I/O口作为输出
端。那么,如果按键没有被按下的话,行线跟列线之间是不会倒通的。如果第N行第M列的
按键被按下的话,那么第N行与第M列之间就会导通。通常我们都是在行线上逐行追加一
个扫描信号〔一般选用低电平用来判断按键的具体位置。
图3-2矩阵键盘电路图
3.3整流电路设计
把交流电变成直流电的过程,称为整流。通常的整流电路有单相全波整流、单相半波
.
11/32
整流、单相桥式整流、倍压整流及多相整流等几种[4]。虽然单相桥式整流电路所需的二极
管个数是全波整流电路的双倍,但是由于电路中两只二极管一起分担反向电压,所以每只
二极管只需承受一半的电压,而且其流过的电流也比较小,因此在实际的电路设计中被广
泛使用。
本系统采用的是单相桥式整流电路,如图3-3所示。变压器将220V的交流电降压成
12V的交流电,再通过单相桥式整流电路,整成直流电。
图3-3整流电路
由于图中变压器的额定功率是5W,工作频率是50HZ,且次级电压为+12V,因此整流二
极管只需要用普通的二极管就行。这里使用的是IN4007,整流出来的直流电压是+16V,滤
波电路用一个2200uF的电解电容和一个瓷片104电容。
3.4基本稳压电源电路设计
基本稳压电路如图3-4所示,由于电路对电压的稳定性要求较高,所以稳压电路中使
用的是LM2940系列的稳压芯片,其含静态电流降低电路、电流限制、过热保护、电池反接
和反插入保护电路。LM2940的1脚为输入端,2脚接地,3脚为输出端。
图3-4基本稳压电源电路
3.5测温电路设计
DS18B20硬件电路图如图3-5所示。
图3-5测温电路
3.6报警电路设计
报警电路如图3-6所示,主要是利用S8550三极管〔PNP型[5]来驱动蜂鸣器,从而实现
高低电平控制发声。S8550三极管属于PNP管,发射极串接蜂鸣器线圈接至+5V,集电极直
接接地,基集通过一个1K的限流电阻接至单片机的P1.7口。JP是跳线,可接跳线冒,作为
测试点,主要是方便调试使用。当S8550三极管的基集接收到低电平时,三极管导通,蜂鸣
器得电工作;当S8550三极管接收到高电平时,三极管截止,蜂鸣器失电停止工作。本系统
中,当实测误差值超过设定误差围时,蜂鸣器报警。
图3-6报警电路
.
12/32
3.7过欠压检测电路
如图3-7所示即为过欠压检测电路,也称为电压窗口比较器。在图3-7中,A1,A2是专
用电压比较器LM119。LM119的部采用射级接地、集电极开路的三极管集电极输出方式。
在使用时,必须外接上拉电阻[6]。过欠压检测电路只有检测出电压是否稳定便可,而这种电
路允许输出端并接在一起。
此电路的工作原理是:
当输入电压Ui
口比较器的输出电平将由比较器A2输出电平确定为低电平。
当输入电压Ui>UR1时,比较器A1的输出管导通,而比较器A2的输出管截止,此窗口
比较器的输出电平将由比较器A1输出电平确定为低电平。
只有当输入电压处于窗口电压之,即UR2
止,窗口比较器输出电平是由上拉负载电阻拉向高电平。
图3-7过欠压检测电路
3.8总电路图
图3-8系统原理图
图3-9系统PCB图
4.软件设计
基于单片机的电冰箱温控器软件设计主要由显示子程序[7]、读出并处理DS18B20的测
量温度值程序、预置温度调节程序、温度判断控制程序、电冰箱开启延时程序、还有软件
复位程序等组成。软件程序设计总体流程图如图4-1所示。
由于51系列的单片机没有停机的指令,所以可以利用主程序设置死循环反复运行各
个任务。于是就把有实时要求的部分放在最层的循环中。
图4-1软件程序设计总体流程图
4.1显示子程序
在本次设计中,显示子程序包括三部分:往LCD液晶显示屏发送一个字节的数据或指
令子程序,LCD液晶屏初始化子程序,显示数据处理程序。
1)往LCD液晶显示屏发送一个字节的数据或指令子程序
其调用的函数是voidTransferData
择为写的状态,然后选择将要传送的是指令还是数据,再将数据送到P1口,打开并行口的
使能端,等待数据输出完毕后关闭并行口使能。其流程图如图4-2所示。
图4-2传送数据流程图
图4-3LCD液晶初始化程序流程图
2)LCD液晶屏初始化子程序
其使用的函数是voidinitinal
屏的一些状态,包括设置液晶总线模式,芯片复位,功能设定,关闭芯片显示,设置芯片动态
显示,清屏,设置起始行0行0列;液晶初始化结束返回。LCD液晶屏初始化完成后就可以
显示各种字符了,即进入正常工作状态。具体流程图4-3所示。
3)显示数据处理程序
调用方式:voidlcd_mesg
函数说明:显示全屏的容
调用方式:voidlcd_mesg2
函数说明:显示某一行的容
.
14/32
调用方式:voidLCD_w_wd
函数说明:温度显示处理并送入LCD的指定区域
这些函数的使用可以使得显示容时,非常合适的处理好了页切换和列切换,只要通过
查表送至12864液晶显示屏RAM中便可显示自如。
4.2DS18B20程序
整个DS18B20程序调用方式是uintReadTemperature
DS18B20的初始复位,读温度,温度转换,计算温度等子程序,并将转换后的数据扩大10倍
返回主函数,提供给下一个函数使用。读DS18B20程序流程图如图4-4。
图4-4读DS18B20程序流程图
1)对DS18B20操作时,首先要将它复位将DQ线拉低480至960s,再将数据线拉高
15至60s,然后DS18B20发出60至此240s的低电平作为应答信号,这时主机才能对
它进行其它操作[11]。
2)读温度子程序的主要功能是读出DS18B20的RAM中的9个字节[8]。前两个就是
温度,将高低字节分别放入b和a中。在读出时须进行CRC校验,校验有错时不进行
温度数据的改写。读操作:主机将数据线从高电平拉至低电平1s以上,再使数据线
升为高电平,从而产生读起始信号从主机将数据线从高电平拉至低电平起15s至60s,
主机读取数据每个读周期最短的持续期为60s周期之间必须有1s以上的高电平恢
复期[11]。
3)温度转换命令子程序主要是发送温度转换开始命令。当采用12位分辨率时,转
换的时间约为750ms。在本程序中,采用2s显示程序延时法等待转换完成。发送温
度转换命令的写操作:将数据线从高电平拉至低电平,产生写起始信号从DQ线的下
降沿起计时,在15s到60s这段时间对数据线进行检测,如数据线为高电平则写1;
若为低电平,则写0,完成了一个写周期在开始另一个写周期前,必须有1s以上的高
电平恢复期每个写周期必须要有60s以上的持续期[11]。
4)计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的
判定。因为从DS18B20中读出的二进制值必须先转换成十进制值,才能用于字符的
显示。DS18B20的转换精度为9~12位可选,为了提高精度采用12位。在采用12位
转换精度时,温度寄存器里的值是以0.0625为步进的,即温度值为温度寄存器里的
.
15/32
二进制值乘以0.0625,就是实际的十进制温度值。扩大十倍,四舍五入后便可将精度
精确到0.1℃。
4.3预置温度调节程序
在本次设计中,可预置的温度围可以从-20~20℃。在编写程序过程中,如果直接对代表温度
值的变量yskey的值在-20~20操作对数据的转换将很复杂和麻烦。于是我将其yskey值
的围移至1-40间,进而就不需要去处理yskey复杂的数据类型转换的问题了。程序的详细
设计流程图如下图4-5:
图4-5预置温度调节程序流程图
yskey返回给主函数中的ys后,要得到真实的温度值,只需要判断ys是大于等于20,
还是小于20的。若其值大于则减去20即为要预设的实际正数温度值;若是其值小于则
20减去其值,再加上一个负数符号便是要预设的负温度值。将其值送入指定的温度显示区
域,我们便能够适时的看到调节的预置温度了。
4.4判断控制程序
判断控制程序是根据用户设定的温度值和DS18B20实时测得温度值[9]相比较,从而决
定是否需要制冷,并在液晶屏上显示其工作状态。而对压缩机的控制则是通过控制继电器
的通断决定是否给压缩机通电工作来实现的。当ysj=1,也就是P1.1脚为高电平的时候,
继电器闭合,压缩机通电工作;当ysj=0时,继电器断开,压缩机停止工作。
若当压缩机的工作电压不正常时,压缩机将有被烧坏的危险,程序自动进入故障处理
部分,在液晶显示屏上显示故障原因,压缩机停止工作。直到故障解除,然后重行启动电冰
箱程序。图4-6所示的就是该程序的流程图。
为了避免冷气泄露,节约电能需要进行电冰箱门关好与否的检查,因此在程序中又设
置一判断门是否关好的语句能够及时地提醒用户门没关好。这一部分将不再图4-6中画
出。
图4-6判断控制程序流程图
.
16/32
4.5开启延时程序
该功能要求压缩机停机时间超过5分钟才能启动,以延长压缩机的寿命,这就要求在每
次电冰箱上电时,都要检查压缩机停机是否到5分钟。若未达到需延时到5分钟后才能启
动,因此在设计时应有判断与延时功能。
按功能要求,电冰箱无论是自动停机还是强制停机。为了延长压缩机的寿命,都要延时
5分钟后压缩机才能启动。即在每次接通压缩机时,单片机计时,利用单片机将计数值保存
在软件设计时,每次上电都要检查此数据是否到5分钟。若时间不到,延时后才能接通压缩
机。为了在单片机延时期间不耽搁其他程序的执行和处理,在此使用定时器T1计时,并且
使用工作组2,循环定时延迟5分钟。但在本程序中压缩机的开启延时时间为30秒,方便
演示。图4-7为开启延时程序流程图[10]。
图4-7开启延时程序流程
5.仿真调试
5.1PROTEUS介绍
Proteus是目前最好的模拟单片机外围器件的工具,真的很不错。可以仿真51系列、
AVR,PIC等常用的MCU及其外围电路〔如LCD,RAM,ROM,键盘,马达,LED,AD/DA,部分SPI
器件,部分IIC器件,Proteus与其它单片机仿真软件不同的是,它不仅能仿真单片机CPU
的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。因此在
仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器容的改变,而是
从工程的角度直接看程序运行和电路工作的过程和结果。对于这样的仿真实验,从某种意
义上讲,是弥补了实验和工程应用间脱节的矛盾和现象。
5.2电路仿真图
如图5-1、5-2分别为温度传感器采集仿真图、温度显示仿真图。该仿真是在protues
软件里进行的,系统仿真图见附录1。
图5-1温度传感器采集仿真图
图5-2温度显示仿真图
结论
本设计综合运用了stc89c52强大的开发应用功能,成功实现了LCD12864的中文显示
和矩阵键盘的编译。实现了温控电冰箱电路的设计,该电路具有温度指示、双温双控、瞬
间断电压缩机延时保护、敞门报警、速冻等多种功能。
通过这次毕业设计,使我对51单片机的认识更为深刻,更能够在LCD12864液晶上随意
显示中文字符,对矩阵键盘的编译也有了深刻的认识。在今后的学习过程中,相信通过自己
的学习,能够编译出更为美观更为简洁的程序
参考文献
[1]雷建龙.单片机c语言实践教程[M].:电子工业,2012.
[2]吉红.单片机系统设计与调试[M].:化学工业出版,2010.
[3]王用伦.微机控制技术.第2版[M].:大学,2010.
[4]伟.单片机原理及应用[M].:机械工业,2001.
[5]王栓柱.PROTEL99SE—印刷电路板设计技术[M].:西北工业大学,2001.
[6]钱金发.电子设计自动化技术[M].:机械工业,2005
致
首先感学院能够给我可以让我把自己所学的知识总结起来的机会,通过这次毕业设计,
我对温度系统有了一个整体上的了解,也让我对单片机有了更深的认识,尤其是对12864
液晶中文显示有了更为深刻的研究,对矩阵键盘的功能设计也有了很深刻的认识。
这次毕业设计在周老师的指导下完成,在老师的指导下使我对自己所学知识有了深入
了解,让我受益匪浅。
在此我还要感我的同组同学。在做毕业设计时,正是在这些同学的帮助下,我克服了一
个又一个困难,直到本文的顺利完成。他们此次设计中做了很多工作,在这里请接受我诚挚
的意!
附录
附录1系统仿真图:
系统仿真图
附录2源代码:
#include
#include
#include
#include
#defineuintunsignedint
#defineucharunsignedchar
ucharcodetable[];
uintdoor;
ucharfushu;
ucharfushu1;
uinttemp;
ucharys;
ucharyskey=20;
uintn=0;
sbitRS=P2^4;
sbitWRD=P2^5;
sbitE=P2^6;
sbitPSB=P2^1;
sbitRES=P2^3;
sbitDQ=P1^7;//ds18b20端口
sbitysj=P1^1;//控制继电器
sbitKEY_1=P3^3;//上
sbitKEY_2=P3^1;//下
sbitKEY_3=P3^2;//
sbitKEY_4=P1^2;//模拟电压是否正常
voidlcd_w_gzztpd
voidlcd_w_menkg
voidLCD_w_wd
voidTransferData
.
23/32
voiddelayms
voiddelay
voidlcd_mesg
voidlcd_mesg2
voidlcd_w_hz
uintReadTemperature
voidInit_DS18B20
ucharReadOneChar
voidWriteOneChar
voiddelayds
ucharkey
voidsoft_ret
voidznkzysj
ucharcodetable[]={
"航天职业技术学院"
"----王韵涕------"
"应用电子技术1班"
};
ucharcodetable1[]={
"预设:℃"
""
"当前:℃"
"工作状态:"
};
ucharcodemen[]={"----门已打开----"};
ucharcodemen1[]={"----门已关闭----"};
ucharcodegzzt0[]={"--电冰箱工作中--"};
ucharcodegzzt1[]={"--电冰箱未工作--"};
ucharcodegzzt2[]={
"压缩机工作电压不"
.
24/32
"电压是否正常!"
"正常,请检查电源"
"然后重启电冰箱!"
};
/*********************************************************************************/
voidinitinal
{
delay<40>;//大于40MS的延时程序
PSB=1;//设置为8BIT并口工作模式
delay<1>;//延时
RES=0;//复位
delay<1>;//延时
RES=1;//复位置高
delay<10>;
TransferData<0x30,0>;//ExtendedFunctionSet:8BIT设置,RE=0:basic
instructiont,G=0:graphicdisplayOFF
delay<100>;//大于100uS的延时程序
TransferData<0x30,0>;//FunctionSet
delay<37>;////大于37uS的延时程序
TransferData<0x08,0>;//DisplayonControl
delay<100>;//大于100uS的延时程序
TransferData<0x10,0>;//CursorDisplayControl光标设置
delay<100>;//大于100uS的延时程序
TransferData<0x0C,0>;//DisplayControl,D=1,显示开
delay<100>;//大于100uS的延时程序
TransferData<0x01,0>;//DisplayClear
delay<10>;//大于10mS的延时程序
TransferData<0x06,0>;//EnryModeSet,光标从右向左加1位移动
delay<100>;//大于100uS的延时程序
delay<100>;//大于100uS的延时程序
.
25/32
lcd_mesg
留言与评论(共有 0 条评论) |