基于单片机的数字温度控制系统设计说明Word格式.docx
- 文档编号:18128221
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:30
- 大小:467.41KB
基于单片机的数字温度控制系统设计说明Word格式.docx
《基于单片机的数字温度控制系统设计说明Word格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的数字温度控制系统设计说明Word格式.docx(30页珍藏版)》请在冰豆网上搜索。
数字温度传感器DS18B20输出信号全数字化,便于单片机处理及控制,省去传统测温方法的很多外围电路。
且该芯片的物理性、化学性很稳定,能用做工业测温元件。
采用51单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,硬件实现简单,体积小,安装方便。
所以该系统利用AT89C51芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度,并可根据需要设定上下限控制及报警温度。
2系统组成
本设计是以AT89S52单片机为核心的一种数字温度显示控制系统,系统整体硬件电路包括:
采集模块、显示模块、设置模块和单片机最小系统模块四大模块组成。
系统框图如图2-1所示。
图2-1系统基本方框图
第3章系统硬件设计
1AT89S52单片机的介绍
AT89S52有40个引脚,4个8位并行I/O口,1个全双工异步串行口,同时含5个中断源,2个优先级,2个16位定时/计数器。
AT89S52的存储器系统由4K的程序存储器(掩膜ROM),和128B的数据存储器(RAM)组成,具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计,使用系统可用USB供电。
AT89S52单片机的基本组成框图见图3-1。
图3-1AT89S52单片机结构
由图3-1可见,AT89S52单片机主要由以下几部分组成:
1.CPU系统
8位CPU,含布尔处理器;
时钟电路;
总线控制逻辑。
2.存储器系统
4K字节的程序存储器(ROM/EPROM/Flash,可外扩至64KB);
128字节的数据存储器(RAM,可再外扩64KB);
特殊功能寄存器SFR。
3.I/O口和其他功能单元
4个并行I/O口;
2个16位定时计数器;
1个全双工异步串行口;
中断系统(5个中断源,2个优先级)。
2显示电路
1602液晶简介
LCD1602分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如图3-2所示。
图3-2LCD1602规格
引脚功能
LCD1602采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表3.1所示。
表3.1LCD1602引脚说明
编号
符号
引脚说明
1
VSS
电源地
9
D2
数据
2
VDD
电源正极
10
D3
3
VL
液晶显示偏压
11
D4
4
RS
数据/命令选择
12
D5
5
R/W
读/写选择
13
D6
6
E
使能信号
14
D7
7
D0
15
BLA
背光源正极
8
D1
16
BLK
背光源负极
指令说明
LCD1602液晶模块部的控制器共有11条控制指令,如表3.2所示。
表3.2LCD1602部控制器
序号
指令
清显示
光标返回
*
置输入模式
I/D
S
显示开/关控制
D
C
B
光标或字符移位
S/C
R/L
置功能
DL
N
F
置字符发生存贮器地址
字符发生存贮器地址
置数据存贮器地址
显示数据存贮器地址
读忙标志或地址
BF
计数器地址
写数到CGRAM或DDRAM)
要写的数据容
从CGRAM或DDRAM读数
读出的数据容
3DS18B20介绍
DS18B20引脚如图3-3所示。
图3-3DS18B20引脚图
数字温度传感器DS18B20是一种新型的“一线器件”,采用单总线的数据传输,其体积小,输出信号全数字化,便于单片机处理及控制,在0—100摄氏度时,其最大线形偏差小于1摄氏度。
工作电源既可以在远端引入,也可以采用寄生电源方式产生。
多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。
因此用它来组成一个测温系统,线路十分简单。
3.1温度传感器测温原理
低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。
高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。
计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。
其部结构图如图3-4所示。
图3-4DS18B20部结构
4系统工作原理
温度传感器DS18B20将模拟温度值经过DS18B20处理后转换为数字值,然后送到单片机中进行数据处理,单片机将处理后的数据通过LCD1602显示屏显示出来,同时判断测得的温度和设置控制及报警的温度限进行比较,超过限度则通过蜂鸣器发出报警声音。
5系统整体电路
图3-5系统电路
第4章系统软件设计
1主程序设计
整个系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软件的功能也就基本定下来了。
从软件的功能不同可分为两大类:
一是监控软件(主程序),它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。
二是执行软件(子程序),它是用来完成各种实质性的功能如测量、计算、显示、通讯等。
每一个执行软件也就是一个小的功能执行模块。
这里将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义。
主程序流程见图4-1。
图4-1主程序流程图
主程序如下:
voidmain(void)
{
unsignedchari=0;
P2=0xef;
P1=0x00;
BEEP=1;
LCD_Initial();
//LCD初始化
Read_Temperature();
//读取温度值
writestring(1,0,"
DS18B20Alarmer"
);
//显示"
delayms(1000);
//延时1S
writestring(0,0,"
CurrentT="
writestring(0,1,"
Low=10Top=30"
NG=0;
while
(1)
{
Read_Temperature();
////读取温度值
Display_Temperature();
//显示温度值
SetFun();
Alarm();
}
}
2DS18B20初始化
DS18B20初始化流程图见图4-2。
图4-2DS18B20初始化流程图
初始化子程序:
voidds1820rst(void)/*ds1820复位*/
unsignedcharx=0;
DQ=1;
//DQ复位
delay_18B20(4);
//延时
DQ=0;
//DQ拉低
delay_18B20(100);
//精确延时大于480us
//拉高
delay_18B20(40);
3DS18B20温度传感器与单片机的接口电路
当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。
传感器与单片机接口如图4-3所示:
图4-3DS18B20与单片机的接口电路
uchards1820rd(void)/*读数据*/
unsignedchari=0;
unsignedchardat=0;
for(i=8;
i>
0;
i--)
{
DQ=0;
//给脉冲信号
dat>
>
=1;
DQ=1;
//给脉冲信号
if(DQ)
dat|=0x80;
delay_18B20(10);
}
return(dat);
voidds1820wr(ucharwdata)/*写数据*/
{
i>
i--)
{
DQ=0;
DQ=wdata&
0x01;
wdata>
unsignedintRead_Temperature(void)/*读取温度值并转换*/
uchara,b;
ds1820rst();
ds1820wr(0xcc);
//*跳过读序列号*/
ds1820wr(0x44);
//*启动温度转换*/
//*跳过读序列号*/
ds1820wr(0xbe);
//*读取温度*/
a=ds1820rd();
b=ds1820rd();
tvalue=b;
tvalue<
<
=8;
tvalue=tvalue|a;
if(tvalue<
0x0fff)tflag=0;
else{tvalue=~tvalue+1;
tflag=1;
tvalue=tvalue*(0.625);
//温度值扩大10倍,精确到1位小数
CurrentT=tvalue;
return(tvalue);
4数码管显示与单片机对接
如图4-4所示。
用AT89S5的P0口作为数据端口,P2.5-P2.7为液晶显示使能控制端。
P0口接上上拉电阻,拉高信号使液晶显示。
图4-4LCD1602显示屏与AT89S52对接
LCD1602显示程序:
voidDisplay_Temperature()//显示温度
ucharflagdat;
disdata[0]=tvalue/1000+0x30;
//百位数
disdata[1]=tvalue%1000/100+0x30;
//十位数
disdata[2]=tvalue%100/10+0x30;
//个位数
disdata[3]=tvalue%10+0x30;
//小数位
disdata[4]=tvalue%1+0x30;
if(tflag==0)flagdat=0x20;
//正温度不显示符号
elseflagdat=0x2d;
//负温度显示负号:
-
if(tflag==1)
writeChar(10,0,flagdat);
//wr_(0x8a);
wr_dat(flagdat);
//显示符号位
writeChar(11,0,disdata[0]);
//wr_(0x8b);
wr_dat(disdata[0]);
//显示百位
writeChar(12,0,disdata[1]);
//wr_(0x8c);
wr_dat(disdata[1]);
//显示十位
writeChar(13,0,disdata[2]);
//wr_(0x8d);
wr_dat(disdata[2]);
//显示个位
writeChar(14,0,0X2E);
//wr_(0x8e);
wr_dat(0x2e);
//显示小数点
writeChar(15,0,disdata[3]);
//wr_(0x8f);
wr_dat(disdata[3]);
//显示小数位
writeChar(16,0,disdata[4]);
else
writeChar(10,0,disdata[0]);
writeChar(11,0,disdata[1]);
writeChar(12,0,disdata[2]);
writeChar(13,0,0X2e);
writeChar(14,0,disdata[3]);
wr_dat(disdata[3]);
writeChar(15,0,disdata[4]);
}
5仿真结果
设置温度上限为38度,温度下限为8度。
1.如图4-5所示。
此时温度为6度,低于下限温度,蜂鸣器实现报警,加温器指示灯D3亮,表示加温器工作。
图4-5仿真图1
2.如图4-6所示。
此时温度为31度,超过上限温度,蜂鸣器实现报警,降温器指示灯D2亮,表示降温器工作。
图4-6仿真图2
3.如图4-7所示。
此时温度为26度,在所设围,蜂鸣器没有报警,说明温度正常。
图4-7仿真图3
6总程序
#include<
reg52.h>
intrins.h>
#defineuintunsignedint
#defineucharunsignedchar
sbitDQ=P2^3;
//ds18b20与单片机连接口
sbitRS=P2^5;
sbitRW=P2^6;
sbitEN=P2^7;
sbitLED1=P3^6;
sbitLED2=P3^7;
uchardatadisdata[5];
uinttvalue,CurrentT=0;
//温度值
uchartflag;
//温度正负标志
#defineLCD_BUSP0
sbitSetKey=P2^2;
sbitUpKey=P2^1;
sbitDnKey=P2^0;
sbitBEEP=P2^4;
unsignedcharAlarmTempLow=10,AlarmTempTop=30,Set=0,NG=0;
voiddelayms(uintms)//延时xx毫秒
uchari;
while(ms--)
for(i=0;
i<
120;
i++);
voidcommand(uint)//LCD写指令
RS=0;
//RS为0
LCD_BUS=;
//装载指令
delayms(5);
//延时5ms
EN=1;
//LCD使能
EN=0;
//LCD不使能
voidwrite_dat(uchardat)//LCD写数据
RS=1;
//RS为1
LCD_BUS=dat;
//装载数据
//延时5ms
//LCD使能
//LCD不使能
voidwritestring(ucharx,uchary,uchar*s)//LCD写字符串
if(y==0)command(0x80+x);
//表示第一行
elsecommand(0xC0+x);
//表示第二行
while(*s)//判断是否字符串的结尾
{
write_dat(*s);
//显示当前字符
s++;
//字符串地址加1
}
voidwriteChar(ucharx,uchary,uchars)//LCD写字符串
//表示第二行
write_dat(s);
voidLCD_Initial()//LCD初始化
RW=0;
//RW为0
command(0x38);
//发送初始化指令
command(0x0c);
command(0x06);
//发送初始化指令
command(0x01);
command(0x80+0x02);
//发送LCD初始位置
/*************************DS1820程序****************************/
voiddelay_18B20(unsignedinti)//延时1微秒
while(i--);
dat|=0x80;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 数字 温度 控制系统 设计 说明