基于单片机的温度控制显示系统设计Word格式文档下载.docx
《基于单片机的温度控制显示系统设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于单片机的温度控制显示系统设计Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。
![基于单片机的温度控制显示系统设计Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2023-2/5/3037c17e-12fc-450a-9a11-72cff42f3f9b/3037c17e-12fc-450a-9a11-72cff42f3f9b1.gif)
第2章系统概述
2.1系统方案
数字温度传感器DS18B20输出信号全数字化,便于单片机处理及控制,省去传统测温方法的很多外围电路。
且该芯片的物理性、化学性很稳定,能用做工业测温元件。
采用51单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,硬件实现简单,体积小,安装方便。
所以该系统利用AT89C51芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度,并可根据需要设定上下限控制及报警温度。
2.2系统组成
本设计是以AT89C51单片机为核心的一种数字温度显示控制系统,系统整体硬件电路包括:
采集模块、显示模块、设置模块和单片机最小系统模块四大模块组成。
系统框图如图2-1所示。
图2-1系统基本方框图
第3章系统硬件设计
3.1AT89C51单片机的介绍
AT89C51有40个引脚,4个8位并行I/O口,1个全双工异步串行口,同时内含5个中断源,2个优先级,2个16位定时/计数器。
AT89C51的存储器系统由4K的程序存储器(掩膜ROM),和128B的数据存储器(RAM)组成,具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计,使用系统可用USB供电。
AT89C51单片机的基本组成框图见图3-1。
图3-1AT89C51单片机结构
由图3-1可见,AT89C51单片机主要由以下几部分组成:
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个优先级)。
3.2显示电路
3.2.11602液晶简介
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
背光源负极
3.2.2指令说明
LCD1602液晶模块内部的控制器共有11条控制指令,如表3.2所示。
表3.2LCD1602内部控制器
序号
指令
清显示
光标返回
*
置输入模式
I/D
S
显示开/关控制
D
C
B
光标或字符移位
S/C
R/L
置功能
DL
N
F
置字符发生存贮器地址
字符发生存贮器地址
置数据存贮器地址
显示数据存贮器地址
读忙标志或地址
BF
计数器地址
写数到CGRAM或DDRAM)
要写的数据内容
从CGRAM或DDRAM读数
读出的数据内容
3.3DS18B20介绍
DS18B20引脚如图3-3所示。
图3-3DS18B20引脚图
数字温度传感器DS18B20是一种新型的“一线器件”,采用单总线的数据传输,其体积小,输出信号全数字化,便于单片机处理及控制,在0—100摄氏度时,其最大线形偏差小于1摄氏度。
工作电源既可以在远端引入,也可以采用寄生电源方式产生。
多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。
因此用它来组成一个测温系统,线路十分简单。
3.3.1温度传感器测温原理
低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。
高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。
计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。
其内部结构图如图3-4所示。
图3-4DS18B20内部结构
3.4系统工作原理
温度传感器DS18B20将模拟温度值经过DS18B20处理后转换为数字值,然后送到单片机中进行数据处理,单片机将处理后的数据通过LCD1602显示屏显示出来,同时判断测得的温度和设置控制及报警的温度限进行比较,超过限度则通过蜂鸣器发出报警声音。
3.5系统整体电路
图3-5系统电路
第4章系统软件设计
4.1主程序设计
整个系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软件的功能也就基本定下来了。
从软件的功能不同可分为两大类:
一是监控软件(主程序),它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。
二是执行软件(子程序),它是用来完成各种实质性的功能如测量、计算、显示、通讯等。
每一个执行软件也就是一个小的功能执行模块。
这里将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义。
主程序流程见图4-1。
图4-1主程序流程图
主程序如下:
voidmain()
{
ReadTemperature();
init_lcd();
//初始化液晶1602
disp_start();
//显示字符
while
(1)
{
Display();
disp_t_h();
//显示温度
key_scan();
bijiao();
}
}
4.2DS18B20初始化
DS18B20初始化流程图见图4-2。
图4-2DS18B20初始化流程图
初始化子程序:
unsignedcharx=0;
DQ=1;
Delay(8);
DQ=0;
Delay(80);
Delay(14);
x=DQ;
Delay(20);
4.3DS18B20温度传感器与单片机的接口电路
当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。
传感器与单片机接口如图4-3所示:
图4-3DS18B20与单片机的接口电路
温度读取子程序:
unsignedchara=0;
unsignedcharb=0;
unsignedintt=0;
floattt=0;
Tmpchange();
Init_DS18B20();
WriteOneChar(0xCC);
WriteOneChar(0xBE);
a=ReadOneChar();
b=ReadOneChar();
t=b;
t<
<
=8;
t=t|a;
tt=t*0.0625;
t=tt*100+0.5;
return(t);
4.4数码管显示与单片机对接
如图4-4所示。
用AT89C51的P0口作为数据端口,P2.5-P2.7为液晶显示使能控制端。
P0口接上上拉电阻,拉高信号使液晶显示。
图4-4LCD1602显示屏与AT89C51对接
显示子程序:
voiddisp_t_h()
write_cmd(0xcc);
write_dat(tab_lcd_num[a]);
//显示温度十位
write_cmd(0xcd);
write_dat(tab_lcd_num[b]);
//显示温度个位
write_cmd(0xce);
write_dat(tab_lcd_xsd[0]);
//显示小数点
write_cmd(0xcf);
write_dat(tab_lcd_num[c]);
//显示温度小数位
4.5仿真结果
设置温度上限为38度,温度下限为8度。
1.如图4-5所示。
此时温度为7度,低于下限温度,蜂鸣器实现报警,加温器指示灯D2亮,表示加温器工作。
图4-5仿真图1
2.如图4-6所示。
此时温度为39度,超过上限温度,蜂鸣器实现报警,降温器指示灯D3亮,表示降温器工作。
图4-6仿真图2
3.如图4-7所示。
此时温度为30度,在所设范围内,蜂鸣器没有报警,说明温度正常。
图4-7仿真图3
总结
本文介绍了基于AT89C51单片机的数字温度计控制系统的设计,对整个硬件电路和软件程序设计做了分析。
并介绍了本设计中的几大模块和设计软件仿真,更直观地反映设计的正确性。
通过这次设计,不仅巩固了知识,而且让所学的知识通过实践的形式转化为相应的产品和成果,提高了自己的动手能力。
参考文献:
[1]杨素行.模拟电子技术基础[M].北京:
高等教育出版社,2006:
77-78.
[2]阎石著.数字电子技术基础[M].北京:
23-26.
[3]李全利,仲伟峰,徐军著.单片机原理及应用[M].北京:
清华大学出版社
2006:
46-48.
[4]何立民著.单片机高级教程[M].北京:
航空航天大学出版社,2000:
55-57.
[5]杨路明著.C语言程序设计教程[M].北京:
邮电大学出版社,2005:
124-132.