单片机数字温度计.docx
- 文档编号:4726932
- 上传时间:2022-12-08
- 格式:DOCX
- 页数:25
- 大小:222.01KB
单片机数字温度计.docx
《单片机数字温度计.docx》由会员分享,可在线阅读,更多相关《单片机数字温度计.docx(25页珍藏版)》请在冰豆网上搜索。
单片机数字温度计
单片机数字温度计
摘要:
本设计单片机采用AT89C52芯片,数字温度传感器采用美国DALASS公司的1–Wire器件DS18B20,即单总线器件DS18B20,与单片机组成一个测温系统,当系统上电时,温度传感器就会读出当前环境的温度,并在三位LED数模显示管上显示出当前的温度,该测温仪的测温范围为0℃~110℃,按此要求设计硬件和软件以实现这一功能。
关键词:
STC89C52单片机;DS18B20;温度;测量
1、引言
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
概括的讲:
一块芯片就成了一台计算机。
它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
同时,学习使用单片机是了解计算机原理与结构的最佳选择。
目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
单片机在检测和控制系统中得到广泛的应用,温度则是系统常需要测量、控制和保持的一个量。
本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,该设计控制器使用单片机STC89C52,测温传感器使用DS18B20,用4位共阳极LED数码管以串口传送数据,实现温度显示,能准确达到以上要求。
2、总体设计方案
2.1设计思路:
(1)本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。
(2)从中考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。
从以上两种方案,很容易看出,采用方案
(2),电路比较简单,软件设计也比较简单,故采用了方案
(2)。
图1 总体设计方框图
2.2设计方框图
根据设计的所需要求分析单片机的工作原理,可得出来温度计电路设计总体设计方框图如图1所示,控制器采用单片机STC89S52,温度传感器采用DS18B20,用4位LED数码管以串口传送数据实现温度显示。
2.3设计主元件电气性能:
1.STC89C52的主要性能:
●与MCS-51单片机产品兼容
●8KFlash字节闪速存储器
●1000次擦写周期
●全静态操作:
0Hz~88Hz
●32个可编程I/O口线
●三个16位定时器/计数器
●八个中断源
●全双工UART串行通道
●低功耗空闲和掉电模式
●掉电后中断可唤醒
●看门狗定时器
●双数据指针
VCC:
电源
GND:
地
P0口:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,P0具有内部上拉电阻。
在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。
程序校验时,需要外部上拉电阻。
P1口:
是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。
对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(1.1/T2EX),具体如下表1所示。
在flash编程和校验时,P1口接收低8位地址字节。
P2口:
P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。
在这种应用中,P2口使用很强的内部上拉发送1。
在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。
在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
表1P1口功能
表2P3口功能
P3口:
P3口是一个具有内部上拉电阻的8位双向I/O口,p2输出缓冲器能驱动4个TTL逻辑电平。
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
P3口亦作为AT89S52特殊功能(第二功能)使用,如上表2所示。
在flash编程和校验时,P3口也接收一些控制信号。
RST:
复位输入。
晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。
看门狗计时完成后,RST脚输出96个晶振周期的高电平。
特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。
DISRTO默认状态下,复位高电平有效。
XTAL1:
振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2:
振荡器反相放大器的输出端。
存储器结构
MCS-51器件有单独的程序存储器和数据存储器。
外部程序存储器和数据存储器都可以64K寻址。
程序存储器:
如果EA引脚接地,程序读取只从外部存储器开始。
对于89S52,如果EA接VCC,程序读写先从内部存储器(地址为0000H~1FFFH)开始,接着从外部寻址,寻址地址为:
2000H~FFFFH。
数据存储器:
STC89C52有256字节片内数据存储器。
高128字节与特殊功能寄存器重叠。
也就是说高128字节与特殊功能寄存器有相同的地址,而物理上是分开的。
当一条指令访问高于7FH的地址时,寻址方式决定CPU访问高128字节RAM还是特殊功能寄存器空间。
直接寻址方式访问特殊功能寄存器(SFR)
晶振特性
如图2所示,STC89C52单片机有一个用于构成内部振荡器的反相放大器,XTAL1和XTAL2分别是放大器的输入、输出端。
石英晶体和陶瓷谐振器都可以用来一起构成自激振荡器
图2自激振荡器原理图
定时器0和定时器1
在STC89C52中,定时器0和定时器1的操作与89C51一样。
定时器2
定时器2是一个16位定时/计数器,它既可以做定时器,又可以做事件计数器。
其工作方式由特殊寄存器T2CON中的C/T2位选择(如表2所示)。
定时器2有三种工作模式:
捕捉方式、自动重载(向下或向上计数)和波特率发生器。
工作模式由T2CON中的相关位选择。
定时器2有2个8位寄存器:
TH2和TL2。
在定时工作方式中,每个机器周期,TL2寄存器都会加1。
由于一个机器周期由12个晶振周期构成,因此,计数频率就是晶振频率的1/12。
中断
STC89C52有6个中断源:
两个外部中断(INT0和INT1),三个定时中断(定时器0、1、2)和一个串行中断每个中断源都可以通过置位或清除特殊寄存器IE中的相关中断允许控制位分别使得中断源有效或无效。
IE还包括一个中断允许总控制位EA,它能一次禁止所有中断。
定时器2可以被寄存器T2CON中的TF2和EXF2的或逻辑触发。
程序进入中断服务后,这些标志位都可以由硬件清0。
实际上,中断服务程序必须判定是否是TF2或EXF2激活中断,标志位也必须由软件清0。
2.DS18B20的主要性能
本次设计使用到了由dallas半导体公司生产的ds18b20型单线智能温度传感器,属于新一代适配微处理器的智能温度传感器,可广泛用于工业、民用、军事等领域的温度测量及控制仪器、测控系统和大型设备中。
它具有体积小,接口方便,因而设计中采用了此元器件。
DS1820数字温度计提供9位温度读数,指示器件的温度
特性:
●独特的单线接口只需1个接口引脚即可通信
●多点multidrop能力使分布式温度检测应用得以简化
●不需要外部元件
●可用数据线供电
●不需备份电源
●测量范围从-55至+125增量值为0.5等效的华氏温度范围是-67F至257F
●增量值为0.9F
●以9位数字值方式读出温度
●在1秒典型值内把温度变换为数字
●用户可定义的非易失性的温度告警设置
●告警搜索命令识别和寻址温度在编定的极限之外的器件温度告警情况
●应用范围包括恒温控制工业系统消费类产品温度计或任何热敏系统
图3的方框图表示DS1820的主要部件DS1820有三个主要的数据部件164位激光laseredROM;2温度灵敏元件和3非易失性温度告警触发器TH和TL
图3DS18B20内部结构
64位ROM的结构开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。
温度报警触发器TH和TL,可通过软件写入户报警上下限。
在单线接口情况下在ROM操作未定建立之前不能使用存贮器和控制操作主机必须首先提供五种ROM操作命令之一1ReadROM(读ROM)2MatchROM(符合ROM),3)SearchROM(搜索ROM),4)SkipROM(跳过ROM),或5AlarmSearch(告警搜索)这些命令对每一器件的64位激光ROM部分进行操作如果在单线上有许多器件那么可以挑选出一个特定的器件并给总线上的主机指示存在多少器件及其类型在成功地执行了ROM操作序列之后可使用存贮器和控制操作然后主机可以提供六种存贮器和控制操作命令之一.
一个控制操作命令指示DS1820完成温度测量该测量的结果将放入DS1820的高速暂存便笺式存贮器Scratchpadmemory通过发出读暂存存储器内容的存储器操作命令可以读出此结果每一温度告警触发器TH和TL构成一个字节的EEPROM如果不对DS1820施加告警搜索命令这些寄存器可用作通用用户存储器使用存储器操作命令可以写TH和TL对这些寄存器的读访问通过便笺存储器所有数据均以最低有效位在前的方式被读写.
DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:
用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。
表4DS18B2012位温度数据
表4是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。
如下表为18B20的温度/数据关系
表5DS18B20的温度/数据关系
每一DS1820包括一个唯一的64位长的ROM编码开绐的8位是单线产品系列编码DS1820编码是10h接着的48位是唯一的系列号最后的8位是开始56位CRC见表6,64位ROM和ROM操作控制部分允许DS1820作为一个单线器件工作并遵循单线总线系统一节中所详述的单线协议直到ROM操作协议被满足DS1820控制部分的功能是不可访问的此协议在ROM操作协议流程图中叙述单线总线主机必须首先操作五种ROM操作命令之一1ReadROM(读ROM),2)MatchROM(匹配ROM),3)SearchROM(搜索ROM),4)SkipROM(跳过ROM),或5)AlarmSearch告警搜索在成功地执行了ROM操作序列之后DS1820特定的功能便可访问然后总线上主机可提供六个存贮器和控制功能命令之一.
表664位激光ROM
暂存存储器包含了8个连续字节,前两个字节是测得的温度信息,第一个字节的内容是温度的低八位,第二个字节是温度的高八位。
第三个和第四个字节是TH、TL的易失性拷贝,第五个字节是结构寄存器的易失性拷贝,这三个字节的内容在每一次上电复位时被刷新。
第六、七、八个字节用于内部计算。
第九个字节是冗余检验字节。
表7DS18B20暂存寄存器分布
该字节各位的意义如下:
TMR1R011111
R1
R0
分辨率
温度最大转换时间
0
0
9位
93.75ms
0
1
10位
187.5ms
1
0
11位
375ms
1
1
12位
750ms
表8分辨率设置表
低五位一直都是1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。
在DS18B20出厂时该位被设置为0,用户不要去改动。
R1和R0用来设置分辨率,如上表8所示:
(DS18B20出厂时被设置为12位)
由表9可见,DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。
因此,在实际应用中要将分辨率和转换时间权衡考虑。
高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。
第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。
当DS18B20接收到温度转换命令后,开始启动转换。
转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。
单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625℃/LSB形式表示。
当符号位S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。
表9DS18B20温度转换时间表
DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比较。
若T>TH或T<TL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令作出响应。
因此,可用多只DS18B20同时测量温度并进行报警搜索。
在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。
主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。
ROM操作命令
一旦总线主机检测到从属器件的存在它便可以发出器件ROM操作命令之一所有ROM操
作命令均为8位长这些命令列表如下参见图6的流程图
ReadROM(读ROM)[33h]
此命令允许总线主机读DS1820的8位产品系列编码唯一的48位序列号以及8位的CRC
此命令只能在总线上仅有一个DS1820的情况下可以使用如果总线上存在多于一个的从属器件那么当所有从片企图同时发送时将发生数据冲突的现象漏极开路会产生线与的结果
MatchROM(符合ROM)[55h]
符合ROM命令后继以64位的ROM数据序列允许总线主机对多点总线上特定的DS1820
寻址只有与64位ROM序列严格相符的DS1820才能对后继的存贮器操作命令作出响应所有与64位ROM序列不符的从片将等待复位脉冲此命令在总线上有单个或多个器件的情况下均可使用SkipROM(跳过ROM)[CCh]
在单点总线系统中此命令通过允许总线主机不提供64位ROM编码而访问存储器操作来节省时间如果在总线上存在多于一个的从属器件而且在SkipROM命令之后发出读命令那么由于多个从片同时发送数据会在总线上发生数据冲突漏极开路下拉会产生线与的效果
earchROM(搜索ROM)[F0h]
当系统开始工作时总线主机可能不知道单线总线上的器件个数或者不知道其64位ROM编码
搜索ROM命令允许总线主机使用一种消去elimination处理来识别总线上所有从片的64位。
3、系统整体硬件电路
系统整体硬件电路包括,传感器数据采集电路,温度显示电路,单片机主板电路等,通过利用电路CAD工具pretelDXP可画出如图4所示的电路图。
图4电路原理图
4、原件清单
序号 名称 数量
1 40脚活动IC座 1
2 DIP16针IC座 1
3 3.5MMDC座 1
4 10针简易牛角座 1
5 插入式USB公接头 1
6 HX1838红外接收头 1
7 DB9串口接头 1
8 MAX232通讯芯片 1
9 40针2.54间距排母 1
10 40针2.54间距单排针 1
11 2针2.54间距排针 1
12 3针2.54间距排针 1
13 4X2电源外接双排针 1
14 跳线帽 2
15 10K电位器 1
16 3MM发光二极管 1
17 3MM三色发光二极管 8
18 12M无源晶振 1
19 晶振圆孔插座 3
20 33PF瓷片电容 2
21 钽电容 4
22 10uF电解电容 1
23 2K直插电阻 1
24 10K直插电阻 3
25 330欧直插电阻 1
26 27欧贴片电阻 1
27 轻触按键 3
28 自锁电源开关 1
29 1K限流排阻 1
30 10K上拉排阻 1
31 最小系统PCB板 1
32 100UF电解电容 1
5、主程序
//DS18B20温度检测及其液晶显示
#include
#include
unsignedcharcodedigit[10]={"0123456789"};//定义字符数组显示数字
unsignedcharcodeStr[]={"TestbyDS18B20"};//说明显示的是温度
unsignedcharcodeError[]={"Error!
Check!
"};//说明没有检测到DS18B20
unsignedcharcodeTemp[]={"Temp:
"};//说明显示的是温度
unsignedcharcodeCent[]={"Cent"};//温度单位
/*******************************************************************************
以下是对液晶模块的操作程序
*******************************************************************************/
sbitRS=P0^5;//寄存器选择位,将RS位定义为P2.0引脚
sbitRW=P0^6;//读写选择位,将RW位定义为P2.1引脚
sbitE=P0^7;//使能信号位,将E位定义为P2.2引脚
sbitBF=P2^7;//忙碌标志位,,将BF位定义为P0.7引脚
/*****************************************************
函数功能:
延时1ms
(3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是1毫秒
***************************************************/
voiddelay1ms()
{
unsignedchari,j;
for(i=0;i<4;i++)
for(j=0;j<33;j++)
;
}
/*****************************************************
函数功能:
延时若干毫秒
入口参数:
n
***************************************************/
voiddelaynms(unsignedcharn)
{
unsignedchari;
for(i=0;i delay1ms(); } /***************************************************** 函数功能: 判断液晶模块的忙碌状态 返回值: result。 result=1,忙碌;resul
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 数字 温度计