基于STC单片机恒温控制系统的设计及C语言程序Word文档格式.doc
《基于STC单片机恒温控制系统的设计及C语言程序Word文档格式.doc》由会员分享,可在线阅读,更多相关《基于STC单片机恒温控制系统的设计及C语言程序Word文档格式.doc(17页珍藏版)》请在冰豆网上搜索。
总电路图…………………………………………………………………………………6
第4章系统软件设计………………………………………………………………………6
4.1
原理框图…………………………………………………………………………………6
4.2
详细程序…………………………………………………………………………………8
结论………………………………………………………………………………………………16
参考文献…………………………………………………………………………………………16
第1章恒温控制系统完成的功能
本恒温控制系统设计采用现在流行的51系列单片机,配以DS18B20数字温度传感器,能够较精确的控制温度,并显示设定温度与当前温度。
单片机将实时检测到的温度与设定的温度进行比较,根据两者差值决定是否让加热电阻加热以及加热多长时间。
实现了基本的温度控制功能:
当温度低于设定温度1℃时,单片机输出高电平,控制大功率三极管导通,进而使得加热电阻通电,加热电阻加热,温度快速上升,同时红灯亮。
当温度上升到与设定温度差值小于1℃时,单片机输出高低电平的时间不相等,也就是加热电阻的通断时间不等,使得温度缓慢上升,同时红、绿灯都亮。
当温度上升到设定温度时,单片机输出低电平,三极管截止,加热电阻停止加热,同时绿灯亮。
数码管实时显示温度,精确到小数点后一位,同时可以通过2个按键调节设定温度。
第2章
总体设计方案
系统总体框图如图1所示。
单
片
机
被
控
制
对
象
温度测量
人机
交互
模块
温度控制
2.1
单片机主控制电路
主控制电路采用STC
89C52的单片机作为控制主机。
89C52作为51系列单片机的一种,其使用性能稳定,价格便宜,完全能够满足此次设计的需求。
89C52内部集成了程序存储器,可以装载用户程序,方便使用。
外
部
接
口
电
路
电源
STC
89C52
单
片
机
时钟电路
复位电路
烧录口
2.2
温度测量与控制模块
温度测量模块采用美国DALLAS半导体公司的DS18B20温度传感器。
该传感器与传统的热敏电阻等测温元件相比,它能直接读出被测温度。
这一部分主要完成对温度信号的采集和转换工作,由DS18B20数字温度传感器及其与单片机的接口部分组成。
数字温度传感器DS18B20把采集到的温度通过数据引脚P1.3传到单片机,单片机接受温度并存储。
温度控制模块采用FAIRYCHILD的8N60C开关管、10W10Ω的水泥电阻。
由单片机根据设定温度与测量温度之差决定输出高低电平,控制8N60C开关管的通断,近而控制水泥电阻加热。
STC89C52
单
片
机
被控制
对象
DS18B20温度传感器
控制信号
8N60C开关管
10W1Ω的水泥电阻
10V直流电
人机交互模块
人机交互模块主要包括键盘、数码管、LED指示灯,其中键盘用于供用户输入温度期望值,数码管用于显示用户设定温度及控制对象中温度,LED指示灯用于指示系统工作状态(加热中,加热过高时)。
键盘
数码管
LED指示灯
第3章
硬件电路详细设计
3.1
单片机最小系统:
包括电源电路、复位电路、时钟电路、烧录口共四个单元,其中电源电路与烧录口省略。
电路图如下:
其中,31端口接高电平,表明单片机复位后访问内部程序存储器;
由于P0口作为输出口时处于漏极开路状态,所以必须外接上拉电阻,如果后期实验中不使用其作为输出口,则此处可省略。
3.2
人机交互模块:
(1)、数码管:
其中,采用8段共阴数码管,P0、P2口输出段码、位码,P1.4和P1.6为段锁存,P1.5和P1.7为位锁存。
数码管上面四位显示用户测量温度,下面四位显示用户设定温度。
(2)、LED指示灯:
其中,指示灯绿色用于指示加热温度过高、红色用于指示加热中,当两个LED均亮起时,表示当前温度接近设定温度,也可理解成保温状态。
(3)、按键
其中,上面的按键表示温度上升1℃、下面的按键表示温度下降1℃。
3.3
测温模块:
测温模块采用美国DALLAS半导体公司的DS18B20温度传感器。
其输出与P1.3相连。
3.4
温度控制模块:
8N60C是仙童公司出品的一款N沟道的MOSFET,最小开启电压为4V,最大关断电压为2V,故可以直接接在单片机IO口,由高低电平控制通断。
8N60C的栅极(G)与P1.2相连,源级(S)接地(注意与单片机控制端共地,否则将导致无法关断),漏极(D)接水泥电阻,水泥电阻另一端接10V直流电。
水泥电阻是将电阻线绕在无碱性耐热瓷件上,外面加上耐热、耐湿及耐腐蚀材料,并把绕线电阻体放入方形瓷器框内,用特殊不燃性耐热水泥充填密封而成。
水泥电阻的外侧主要是陶瓷材质。
3.5
总电路图:
第4章系统软件设计
4.1
原理框图:
(1)、主程序
开始
按键输入端口置高,定时器初始化
调用读温度子程序
显示被测温度和用户设定温度
Y
是否按下加温度设定键?
设定温度加1
N
是否按下减温度设定键?
设定温度减1
初始设定温度为20
当前温度<
设定温度—1
P1.2置高电平,加热电阻加热,红灯亮
当前温度>
=设定温度?
P1.2置低电平,加热电阻停止加热,绿灯亮
调节P1.2的高低电平时间长短的比例,红绿灯同时亮
系统是否断电?
结束
(2)、定时器T0中断程序
定时器T0中断
定时器初始化
调用数码管显示子程序
计数>
300?
读温度标志置1
中断返回
4.2
详细程序:
(1)、主程序
/*----------------------------------------------------------------------------------------------------------
名称:
恒温控制系统采用DS18b20并用数码管显示当前测的温度
和用户设定的温度,用户可用按键增加或减小温度。
编写:
1013105班小组
日期:
2013.10
内容:
精确到小数点后一位,显示格式符号xxx.xC
------------------------------------------------------------------------------------------------------------*/
#include<
reg52.h>
//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#include"
18b20.h"
delay.h"
#defineDataPort0P0//定义数据端口程序中遇到DataPort0则用P0替换
#defineDataPort1P2//定义数据端口程序中遇到DataPort1则用P1替换
sbitLED_Green=P1^0;
//定义绿色指示灯
sbitLED_Red=P1^1;
//定义红色指示灯
sbitPWM=P1^2;
// 定义加热端口
sbitLATCH1=P1^4;
//定义锁存使能端口段锁存
sbitLATCH2=P1^5;
//位锁存
sbitLATCH3=P1^6;
sbitLATCH4=P1^7;
sbitKEY_ADD=P3^2;
//定义按键输入端口增加1度
sbitKEY_DEC=P3^3;
//减小1度
bitReadTempFlag1;
//定义读时间标志1
unsignedcharcodeDuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//显示段码值0~9
unsignedcharcodeWeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
//分别对应相应的数码管点亮,即位码
unsignedcharTempData1[8];
//存储显示值的全局变量1
unsignedcharTempData2[8];
//存储显示值的全局变量2
/*-----------------------------------------------------------------------