温度检测系统设计说明书Word下载.docx
- 文档编号:16341277
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:22
- 大小:216.09KB
温度检测系统设计说明书Word下载.docx
《温度检测系统设计说明书Word下载.docx》由会员分享,可在线阅读,更多相关《温度检测系统设计说明书Word下载.docx(22页珍藏版)》请在冰豆网上搜索。
RST引脚是复位信号的输入端。
复位信号是高电平有效,其有效时间应持续24个振荡周期(即二个机器周期)以上。
若使用颇率为6MHz的晶振,则复位信号持续时间应超过4us才能完成复位操作。
整个复位电路包括芯片内、外两部分。
外部电路产生的复位信号(RST)送至施密特触发器,再由片内复位电路在每个机器周期的S5P2时刻对施密特触发器的输出进行采样,然后才得到内部复位操作所需要的信号。
复位操作有上电自动复位相按键手动复位两种方式。
复位电路如图四所示:
图四复位电路
3.2温度采集模块
3.2.1温度传感器的选择
DS18B20是常用的温度传感器,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。
DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms。
DS18B20测温原理如图3所示。
图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。
高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。
计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。
斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。
3.2.2DS18B20管脚功能及接线方法
管脚功能:
GND为电源地、DQ为数字信号输入/输出端、VDD为外接供电电源输入端(在寄生电源接线方式时接地)
接线方法:
面对着平的那一面,左负右正,一旦接反就会立刻发热,有可能烧毁!
同时,接反也是导致该传感器总是显示85℃的原因。
实际操作中将正负反接,传感器立即发热,液晶屏不能显示读数,正负接好后显示85℃。
另外,如果使用51单片机的话,那么中间那个引脚必须接上4.7K—10K的上拉电阻,否则,由于高电平不能正常输入/输出,要么通电后立即显示85℃,要么用几个月后温度在85℃与正常值上乱跳。
DS18B20管脚如图五所示。
图五DS18B20管脚
DS18B20与单片机的连接电路,如图六所示。
图六DS18B20与单片机的连接电路
3.3显示模块
3.3.1LCD的选择
LCD是一种工业型字符液晶,它能够显示32个字符(16列×
2行),工作电压为3.3V或5V,对比度可自行调节,LCD的内部内部含有复位电路,用来提供各种控制命令,如:
清屏、字符闪烁、光标闪烁、显示移位等多种功能。
由于LCD1602功耗低、体积小、显示多样,常用在微型仪表和低功耗应用中。
市面上字符液晶绝大多数是基于HD44780液晶芯片,LCD1602控制原理也基于HD44780。
LCD1602采用标准14脚(无背光)或16脚(有背光)接口。
3.3.2LCD1602显示器的管脚功能
LCD1602采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明
如下表一所示。
表一LCD1602显示器引脚说明
编号
符号
引脚说明
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管脚图
第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脚:
背光源负极。
液晶与单片机的连接电路如图八所示。
图八液晶与单片机的连接电路
3.4硬件总体仿真图
本设计大体可分为三个部分,即CPU处理模块、温度采集模块、显示模块。
CPU处理模块采用单片机STC89C52RC,包括时钟电路、复位电路;
温度采集模块采用温度传感器DS18B20进行温度采集,通过P3.6管脚发送到CPU进行处理;
显示模块采用16管脚的LCD1602,数据通过单片机的P2口传输到LCD1602,最终LCD1602将温度显示出来。
如图九所示。
图九硬件总体仿真图
主要参数计算与分析
DS18B20的主要参数
(1)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
(2)测温范围-55℃~+125℃,固有测温误差(注意,不是分辨率,这里之前是错误的)1℃。
(3)支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,实现多点测温,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定。
(4)工作电源:
3.0~5.5V/DC(可以数据线寄生电源)
(5)在使用中不需要任何外围元件
(6)测量结果以9~12位数字量方式串行传送
(7)不锈钢保护管直径Φ6
(8)适用于DN15~25,DN40~DN250各种介质工业管道和狭小空间设备测温
(9)标准安装螺纹M10X1,M12X1.5,G1/2"
任选
(10)PVC电缆直接出线或德式球型接线盒出线,便于与其它电器设备连接。
STC89C52RC的主要参数
(1)增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051.[2]?
(2)工作电压:
5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机)
(3)工作频率范围:
0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz
(4)用户应用程序空间为8K字节
(5)片上集成512字节RAM
(6)通用I/O口(32个),复位后为:
P0/P1/P2/P3是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。
(7)ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片
(8)具有EEPROM功能
(9)具有看门狗功能
(10)共3个16位定时器/计数器。
即定时器T0、T1、T2
(11)外部中断4路,下降沿中断或低电平触发电路,PowerDown模式可由外部中断低电平触发中断方式唤醒
(12)通用异步串行口(UART),还可用定时器软件实现多个UART
(13)工作温度范围:
-40~+85℃(工业级)/0~75℃(商业级)
LCD1602的主要参数
显示容量:
16×
2个字符
芯片工作电压:
4.5—5.5V
工作电流:
2.0mA(5.0V)
模块最佳工作电压:
5.0V
字符尺寸:
2.95×
4.35(W×
H)mm
1软件设计
1.1主程序流程图
图十主程序流程图
1.2温度测量系统各子模块
5.2.1DS18B20读取温度部分
读温度值模块需要调用4个子程序,分别为:
DS18B20初始化子程序:
让单片机知道DS18B20在总线上且已准备好操作
DS18B20写字节子程序:
对DS18B20发出命令
DS18B20读字节子程序:
读取DS18B20存储器的数据
延时子程序:
对DS18B20操作时的时序控制
读温度值模块流程,如图十一所示:
图十一读温度值模块流程
DS18B20初始化子程序流程图,如图十二所示:
图十二DS18B20初始化子程序流程
本系统中液晶显示器初始化程序流程,如图十三所示:
图十三液晶显示器初始化程序流程
2心得体会
经过两周时间的努力,基于单片机的简易温度系统设计基本完成。
但设计中的不足之处仍然存在。
这次设计是我第一次设计电路,并用Proteus实现了仿真。
在这过程中,我对电路设计,单片机的使用等都有了新的认识。
通过这次设计学会了Proteus和KeilC51软件的使用方法,掌握了从系统的需要、方案的设计、功能模块的划分、原理图的设计和电路图的仿真的设计流程,积累了不少经验。
基于单片机的简易温度系统设计使用性强、结构简单、成本低、外接元件少。
在实际应用工作应能好,测量温度准确,精度高。
系统功能、指标达到了课题的预期要求、系统在硬件设计上充分考虑了可扩展性,经过一定的改造,可以增加功能。
本文设计主要实现了简易温度测量的功能,详细说明了从原理图的设计、电路图的仿真再到软件的调试。
通过本次设计,我对单片机这门课有了进一步的了解。
无论是在硬件连接方面还是在软件编程方面。
本次设计采用了STC89C52RC单片机芯片,以前在学单片机课程时只是对其理论知识有了初步的理解。
通过这次设计,对它的工作原理有了更深的理解。
在调试过程中遇到很多问题,硬件上的理论知识学得不够扎实,对电路的仿真方面也不够熟练。
总之这次电路的设计和仿真,基本上达到了设计的功能要求。
在以后的实践中,我将继续努力学习电路设计方面的理论知识,并理论联系实际,争取在电路设计方面能有所提升。
参考文献
[1]单片机原理及应用.张兰红,邹华主编.机械工业出版社,2016.
[2]数字电子技术基础(第5版).阎石编.高等教育出版社,2006.
[3]模拟电子技术基础(第五版).童诗白编.高等教育出版社,2006.
[4]电路(第5版).邱关源编.高等教育出版社,2006.
[5]电子技术课程设计指导.彭介华编.高等教育出版社,2005年出版.
[6]电子技术基础实验-电子电路实验、设计、仿真.陈大钦主编.高等教育出版社,2002年出版.
附录
实物图
元件清单
温度检测单机用元器件明细表
名称
封装
型号
参数
数量
瓷片电容
直插
30PF
石英晶体
11.0592MHZ
电阻
1/4W
10K
电解电容
22UF/16V
CPU
双列直插
STC89C52RC
HD
CPU座
DIP-40
4.7K
温度传感器
DS18B20
电位器
3296W-103
液晶显示器
LCD1602
1P杜邦线彩色
母对母两头插好杜邦头
孔对孔40根一排
单根长度20cm
30针
排针
脚距2.54高11
1X40单排插针
30线
最小系统板
洞洞板
9X7CM
单面
2.1C语言程序
#include"
reg51.h"
intrins.h"
#defineucharunsignedchar
#defineuintunsignedint
ucharcodetable1[]={"
"
};
//欢迎显示
ucharcodetable2[]={"
//欢迎显示
ucharcodestr1[]={"
Temperature"
ucharcodestr2[]={"
//************管脚定义************************
sbitlcd_rs=P3^0;
//液晶数据命令选择端
sbitlcd_en=P3^1;
//液晶使能
sbitDQ=P3^6;
//************参数定义************************
uinttvalue;
//温度值
uchartflag;
//温度正负标志
uchardatadisdata[5];
//************子函数定义************************
voiddelay(uintz);
//delay延时子程序
voidinit_lcd();
//LCD1602初始化函数
voidwrite_com(ucharcom);
//LCD1602写指令函数
voidwrite_data(uchardate);
//LCD1602写数据函数
voidlcd1602_display(uchar*q,uchar*p);
//LCD1602显示函数
voidwelcome_1();
//LCD1602显示欢迎函数1
voiddelay_DS18B20(uinti);
//delay_DS18B20函数
voidInit_DS18B20_display();
//DS18B20初始化显示
voidInit_DS18B20();
//DS18B20初始化
ucharReadOneByte();
//DS18B20读一字节
voidWriteOneByte(uchardat);
//DS18B20写一字节
Read_Temperature();
//DS18B20读取温度值并转换
voidDS18B20_display();
//DS18B20温度显示
//************主函数************************
voidmain()
{
welcome_1();
Init_DS18B20_display();
while
(1)
{
Read_Temperature();
DS18B20_display();
}
}
//************delay延时子程序************************
voiddelay(uintz)
{
uintx,y;
for(x=0;
x<
z;
x++)
for(y=0;
y<
114;
y++);
//************LCD1602初始化函数************************
voidinit_lcd()
write_com(0x38);
//设置16*2显示,5*7点阵,8位数据接口
write_com(0x08);
//写一个字符后地址指针加1
write_com(0x01);
//显示清零,数据指针清零
write_com(0x06);
//写一个字符后地址指针加1
write_com(0x0c);
//关显示,光标不显示不闪烁
//************LCD1602写指令函数************************
voidwrite_com(ucharcom)
delay(5);
lcd_rs=0;
//选择写指令
lcd_en=0;
//将使能端置0
P2=com;
//将要写的命令送到数据总线上
//延时5ms,待数据稳定
lcd_en=1;
//由于初始化已将lcd_en置为0,使能端给一个高脉冲,
//将使能端置0以完成脉冲
//************LCD1602写数据函数************************
voidwrite_data(uchardate)
lcd_rs=1;
//选择写数据
P2=date;
//将要写的数据送到数据总线上
//由于初始化已将lcd_en置为0,使能端给一个高脉冲,
//************LCD1602显示函数******************
voidlcd1602_display(uchar*q,uchar*p)
write_com(0x80);
//现将数据指针定位到第一行第一个字处
while(*q!
='
\0'
)
write_data(*q);
q++;
delay
(1);
}
write_com(0xc0);
//现将数据指针定位到第二行第一个字处
while(*p!
write_data(*p);
p++;
//************LCD1602显示欢迎函数1******************
voidwelcome_1()
init_lcd();
lcd1602_display(table1,table2);
delay(300);
//************DS18B20初始化显示**************
voidInit_DS18B20_display()
lcd1602_display(str1,str2);
}
voiddelay_DS18B20(uinti)
while(i--);
//************DS18B20初始化******************
voidInit_DS18B20()
DQ=1;
//DQ复位
delay_DS18B20(4);
//延时
DQ=0;
//DQ拉低
delay_DS18B20(100);
//拉高
delay_DS18B20(40);
//************DS18B20读一字节******************
ucharReadOneByte()
uchari,dat=0;
for(i=8;
i>
0;
i--)
DQ=0;
//给脉冲信号
dat>
>
=1;
DQ=1;
//给脉冲信号
if(DQ)dat|=0x80;
delay_DS18B20(10);
return(dat);
//************DS18B20写一字节******************
voidWriteOneByte(uchardat)
uchari;
DQ=dat&
0x01;
//************DS18B20读取温度值并转换******************
Read_Temperature()
uchara,b;
Init_DS18B20();
WriteOneByte(0xcc);
//跳过读序列号
WriteOneByte(0x44);
//启动温度转换
WriteOneByte(0xbe);
//读取温度
a=ReadOneByte();
b=ReadOneByte();
tvalue=b;
tvalue<
<
=8;
tvalue=tvalue|a;
if(tvalue<
0xfff)
tflag=0;
else
tvalue=~tvalue+1;
tflag=1;
tvalue=tvalue*(0.625)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 温度 检测 系统 设计 说明书