计算机接口技术(课程设计).docx
《计算机接口技术(课程设计).docx》由会员分享,可在线阅读,更多相关《计算机接口技术(课程设计).docx(33页珍藏版)》请在冰点文库上搜索。
研 究 生 课 程 论 文
(2010-2011学年第二学期)
基于DS18B20的单片机温度测控系统设计
研究生:
张仲国
学 号
8
学 院
机械与汽车工程学院
课程编号
S
课程名称
计算机测控系统与接口技术
学位类别
硕士
任课教师
李阳
教师评语:
成绩评定:
分 任课教师签名:
年 月 日
提交日期:
2011年5月12日 研究生签名:
基于DS18B20的单片机温度测控系统设计
0.引言
温度是工业控制中主要的被控参数之一,对典型的温度控制系统进行研究具有很广泛的意义。
传统的测温元件如热敏电阻,AD590,虽然成本低,但因其后续电路处理复杂﹑可靠性相对较差,测量准确度低,因此逐渐被新型温度传感器所代替。
而以新型的“一总线”可编程数字温度传感器(DS18B20) 为代表的新型单总线数字式温度传感器集温度测量和GHD 转换于一体,直接输出数字量,与单片机接口几乎不需要外围元件,使得硬件电路结构简单,广泛使用于距离远,节点分布多的场合。
具有较强的推广应用价值。
在温度控制系统中,单片机更是起到了不可替代的核心作用。
在工业生产如:
用于热处理的加热炉、用于融化金属的钳锅电阻炉等,在日常生活中如:
热水器、电热毯等等,都用到了电阻加热的原理。
随着生产的发展,在工业中,上述设备对温度的控制要求越来越高,随着人们生活水平的提高,对日常用品的自动化也提出了更高的要求,单片机的不断更新换代,满足了上述的要求,达到自动控制品质的目的。
本系统采用了美国DALLAS公司推出的DS18B20数字式温度传感器作为温度传感单元,以STC90C516RD+单片机为控制核心,采用发热灯泡充当控制对象,可根据实际需要设定温度值,并进行自动控制。
1.系统组成
整个系统主控部分采用STC90C516RD+构成单片机应用系统;温度检测部分采用
DS18B20单总线数字温度传感器对温度进行检测;控制部分由三极管控制加热灯泡的通断。
工作时,由键盘输入设定温度值,通过单片机AT89S52的开关量控制三极管的通断,以调节发热灯泡周边温度至设定值,稳态误差在+(-)0.1℃以内。
液晶实时显示发热灯泡周边温度和设定温度值。
单片机温度控制系统原理图如图
(1)所示:
33
单片机STC89C516RD+
温度传感器
键盘设定值
三极管
加热灯泡
液晶显示
图1 单片机温度控制系统原理图
1.1单片机(STC89C516RD+)
1.1.1STC89C516RD+简介
STC89C516RD+单片机是宏晶科技推出的新一代超强抗干扰/高速/低功耗的单片机,指令全兼容传统的8051单片机,
12时钟/机器周期和6时钟/机器周期可任意选择,最新的D版本内部集成
MAX810专用复位电路。
该系列的单片机为真正的看门狗,缺省为关闭(冷启动),启动后无法关闭,可放心省去外部看门狗。
内部Flash擦写次数为100
000以上,其加密性强,出厂时就已经
加密。
图2
其封装的电路图如图2所示:
普通89C51系列单片机的内部RAM只有128(89C51)/256(89C52)供用户使用
1)低128字节的内部RAM(地址:
00H~7FH),可直接寻址或间接寻址。
2)高128字节的内部RAM(地址:
80H~FFH),只能间接寻址。
3)特殊功能寄存器SFR(地址:
80H~FFH)只能直接寻址。
特殊功能寄存器SFR和高128字节的内部RAM是通过寻址方式来区分的,传统的8051系列单片机只有128-256字节RAM供用户使用,在此情况下STC公司响
应广大用户的呼声,在一些单片机内部增加了扩展RAM。
STC89C516RD+单片机扩展256个字节RAM,共512字节的RAM。
访问内部扩展RAM时,不影响P0口
/P2口/P3.6/P3.7/ALE。
1.1.2STC89C516RD+单片机的特点
1.增强型6时钟/机器周期12时钟/机器周期8051CUP
2.工作电压:
5.5V-3.4V(5V单片机)。
3.工作频率范围:
0—40 MHz相当于普通8051的0—80 MHz,实际工作频率可达48MHz。
4. 用户应用程序空间4K/8K/13K/16K/20K/32K/64K字节
5.片上集成1280字节/512字节RAM。
6.通用I/O口(32/36个),复位后为:
P1/P2/P3/P4/是准双向口/弱上拉
(普通8051,传统I/O口)P0口是开漏输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。
7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器/仿真器,可通过串口(P3.0/P3.1)直接下载用户程序,8K程序3秒即可完成一片。
8.EEPROM功能。
9.看门狗。
10.内部集成MAX810专用复位电路,外部晶体20M以下时,可省外部复位电路。
11.共3个16位定时器/计数器,其中定时器0还可以当成2个8位定时器使
用。
12.外部中断4路,下降沿中断或低电平触发中断,Power Down模式可由外部中断低电平触发中断方式唤醒。
13.通用异步串口(UART),还可用定时器软件实现多个UART。
14.工作温度范围:
0—75℃/-40—+85℃。
15.封装:
LQFP-44,PDIP-40,PLCC-44,PQFP-44。
1.1.3选择STC89C516RD+单片机的理由
(1)加密性强。
(2)超强抗干扰:
1.高抗静电(ESD保护);2.轻松过2KV/4KV快速脉冲干扰(EFT测试);3.宽电压,不怕电源抖动;4.宽温度范围,-40℃~85℃。
(3)三大减低单片机时钟对外部电磁辐射的措施:
1.禁止ALE输出;2.如选
6时钟/机器周期,外部时钟频率可降低一半;3.单片机时钟震荡器增益可设为
1/2gain。
(4)超低功耗:
1.掉电模式:
典型功耗<0.1uA;2.正常工作模式:
典型功耗:
4mA~7mA;3.掉电模式可由外部中断唤醒,适用于电池供电系统,如:
水表,气表,便携式设备等。
(5)在系统可编程,无需要编程器,无需仿真器。
(6)可送STC-ISP下载编程器,1万片/人/天。
(7)可供应内部集成MAX810专用复位电路的单片机,有内部集成专用复位电路,原复位电路可以保留,也可以不用,不用时RESET脚接1K电阻到地线。
选择STC89C516RD+单片机其高速,高可靠,可在线编程,功耗更低,降低了成本,提升了性能。
1.2温度传感器(DS18B20)
1.2.1DS18B20简介
DS18B2O是美国DALLAS半导体公司继DS18B2O之后最新推出的一种数字化单总线器件,属于新一代适配微处理器的改进型智能温度传感器。
与传统的热敏电阻相
比,它能够直接读出被测温度,并且可根据实际要求通过简单的编程实现弘12位的数字读数方式。
可以分别在9375ms和750Ins 内完成9位和12位的数字量,并且从DSl8B20读出的信息或写入DSl8B2O的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额
外电源。
因而使用DS18B20可使系统结构更趋简单,可靠性更高.同时其“一线总线”
独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入了全新的概念。
DSl8B20“一线总线”数字化温度传感器支持“一线总线”接口,测量温度范围为一55℃到+125℃,在一10℃到+85℃范围内,精度为度为±5℃。
现场温度直接以“一线总线”的数字方式传输,用符号扩展的16位数字量方式串行输出,大大提高了系统的抗干扰性。
因此,数字化单总线器件DSISB加适合于恶劣环境的现场温度测量,如:
环境控制、设备或过程控制、测温类消费电子产品等。
它在测温精度、转换时间、传输距离、分辨率等方面较Dsl820 都有了很大的改进,给用户带来了更方便和更令人满意的效果。
可广泛用于工业、民用、军事等领域的温度测量及控制仪器、测控系统和大型设备中.
1.2.2DSl8B20的性能特点
(1)采用DALLAS公司独特的单线接口方式:
DSl8B20与微处理器连接时仅需要一条口线即可实现微处理器与Ds18B20的双向通讯。
(2)在使用中不需要任何外围元件。
(3)可用数据线供电,供电电压范围:
十3.0V一+5.5V。
(4)测温范围:
一5℃—+125℃。
固有测温分辨率为0.5℃。
在一10℃到
+85℃范围内,可确保测量误差不超过0.5℃,在一55s+125℃范围内,测量误差也不超过2℃。
(5)通过编程可实现9~12位的数字读数方式。
(6)用户可自设定非易失性的报警上下限值。
(7)支持多点组网功能,多个DSl8B20可以并联在唯一的三线上,实现多点测温。
(8)负压特性,即具有电源反接保护电路.当电源电压的极性反接时,能保护
DS18B20不会因发热而烧毁。
但此时芯片无法正常工作。
(9)DS18BZO的转换速率比较高,进行9位的温度转换仅需3975ms。
(10)适配各种单片机或系统。
(11)内含46位激光修正的只读存储ROM,扣除8位产品系列号和8位循环冗余校验码(CRC)之后,产品序号占48位。
出厂前产品序号存入其ROM中。
在构成大型温控系统时,允许在单线总线上挂接多片DS18B20。
1.2.3DS18B20的管脚排列
DS18B20采用3脚PR35封装或8脚SOIC封装。
其管脚排列如图3所示。
图3管脚排列图
I/O为数据输入/输出端(即单线总线),它属于漏极开路输出,外接上拉电阻后,常态下呈高电平。
UDD是可供选用的外部电源端,不用时接地,CND为地,NC空脚。
1.2.4DS18B20的内部结构
DS18B20的内部结构框图如图5所示。
它主要包括7部分:
1、寄生电源;2、温度传感器;3、64位激光(loser)ROM与单线接口;4、高速暂存器,即便筏式RAM,用于存放中间数据;5、TH触发寄存器和TL触发寄存器,分别用来存储用户设定的温度
上下限值;6、存储和控制逻辑;7、8位循环冗余校,验码(CRC)发生器。
图4 内部结构框图
(1)64位闪速ROM的结构如表3下:
表1ROM的结构
高8位是CRC校验码,接着是每个器件的惟一的序号,共有48位,低8位是产品类型的编号,前56位的这也是多个DS18B20可以采用一线进行通信的原因。
(2)非易失性温度报警触发器,TH和TL,可通过软件写入用户报警上下限。
(3)高速暂存存储器
DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的E2ZRAM.后者用于存储TH,TL值。
数据先写入RAM,经校验后再传给E2ZRAM。
而配置寄存器为高速暂存器中的第5个字节,它的内容用于确定温度值的数字转换分辨率,DS18B20工作时按此寄存器中的分辨率将温度转换为相应精度的数值。
该字节各位的定义如下:
低5位一直都是1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。
在DS18B20出厂时该位被设置为0,用户不要去改动,RI和RO决定温度转换的精度位数,即用来设置分辨率,如表4所示(Dsl8B20出厂时被设置为12位)。
表2
由表可见,设定的分辨率越高,所需要的温度数据转换时间就越长。
因此,在实际应用中要在分辨率和转换时间两者中权衡考虑。
高速暂存存储器除了配置寄存器外,还有其他8个字节组成,其分配如表3所示。
表3
其中第1、2字节是温度信息,第3、4字节是TH和LT值,第6~8字节未用,表现为全逻辑1;第9字节读出的是前面所有8个字节的CRC码,可用来保证通信正确。
当DS18B20接收到温度转换命令后,开始启动转换。
转换完成后的温度值就以
16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1,2字节。
单片机可通过单线接口读到该数据,读取时低位在前,高位在后。
温度值格式如表4下:
表4温度值格式
以12位转化为例说明温度高低字节存放形式及计算:
12位转化后得到的12位数据,存储在DSl8B20的两个高低8位的RAM中,二进制中的前面5位是符号位。
如果测得的温度大于0,这5位为0,即符号位S=0,这时只要直接将测到的数值二进制位转换为十进制,再乘以0.0625即可得到实际温度;如果温度小于0,这5位为1,即符号位S=1,这时先将补码变换为原码,也就是测到的数值需要取反加1再计算十进制值,最后乘以0.0625才能得到实际温度。
下表是对应的一部分温度值如表5:
DSl8B20完成温度转换后,就把测得的温度值T与TH、LT作比较,若T>TH或T因此,可用多只DS18B2O同时测量温度并进行告警搜索。
(4)CRC的产生
在46位ROM的最高有效字节中存储有循环冗余校验码(CRC)。
主机根据ROM的前56位来计算CRC值,并和存入DS18B20中的CRC值做比较,以判断主机收到的
ROM数据是否正确。
表5温度值
1.2.5DS18B2O的控制方法
在硬件上,DS18B20与单片机的连接有两种方法。
一种是将DS18B20的VDD接外部电源,GND接地,其I/0与单片机的I/0线相连;另一种是用寄生电源供电,此时
DS18B20的VDD、GND接地,其I/0接单片机工I/0。
无论是内部寄生电源还是外部供电,
DS18B2O的I/0口线要接5K左右的上拉电阻。
DS18B20有六条控制命令,如表6所示:
表6六条控制命令
CPU对DS18B20的访问流程是:
先对DS18B20初始化,再进行ROM操作命令,最后才能对存储器操作和对数据操作.DSl8B20每一步操作都要遵循严格的工作时序和通信协议。
例如主机控制DS18B20完成温度转换这一过程,根据DS18B20的通讯协议,必须经历三个步骤:
每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DSl8B20进行预定的操作。
1.2.6DSl8B20的测温原理
DS18B2O的测温原理如图4所示。
图中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振的振荡频率随温度变化而明显改变,所产生的信号作为减法计数器2的脉冲输入。
图中还隐含着计数门,当计数门打开时,
DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数,进而完成温度测量。
计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在一5℃所对应的一个基数值。
减法计数器1对低温度系数晶振
图4测温原理图
产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数
晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。
图中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理。
1.2.7DS18B20的时序
由于DS18B2O采用的是1一Wier总线协议方式,即在一根数据线实现数据的双向传输,单线通信功能是分时完成的,有严格的时序概念,因此读写时序很重要。
系统对DSl8B20的各种操作必须按协议进行。
操作协议为:
初始化DSl8B20(发复位脉冲)
→发ROM功能命令→发存储器操作命令→处理数据。
各种操作的时序图与DSl8B20相同,DSl8B20的复位时序图如图5所示。
图5 复位时序图
DSl8B20的读时序分为读0时序和读1时序两个过程。
DS18B20的读时序是从主机把单总线拉低之后,在15us之内就得释放单总线,以让DSl8B20把数据传输到单总线上。
DSl8B20在完成一个读时序过程,至少需要6Ous才能完成。
DS18B20的读时序图如图6所示。
图6读时序图
DS18B20的写时序仍然分为写0时序和写1时序两个过程,但对写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B2O能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。
DS18B2O的写时序图如图7所示。
图7 写时序图
所有时序都是将主机作为主设备,单总线器件作为从设备。
而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。
数据和命令的传输都是低位在先。
1.2.8DS18B20使用中的注意事项
DS18B2O虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,
但在实际应用中也应注意以下几方面的问题:
(1)较小的硬件开销需要相对复杂的软件进行补偿,由于DS18B20与微处理器间
采用串行数据传送,因此,在对DSl8B20进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。
在使用PL∕M、C等高级语言进行系统程序设计时,
对DSl8B2O操作部分最好采用汇编语言实现。
(2)在DS18B20的有关资料中均未提及单总线上所挂DS18B20数量问题,容易使人误认为可以挂任意多个DS18B20,在实际应用中并非如此。
当单总线上所挂DS18B20超过8个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。
(3)连接DS18B20的总线电缆是有长度限制的。
试验中,当采用普通信号电缆传输长度超过50m时,读取的测温数据将发生错误。
当将总线电缆改为双绞线带屏蔽电缆时,正常通讯距离可达150m,当采用每米绞合次数更多的双绞线带屏蔽电缆时,正常通讯距离进一步加长。
这种情况主要是由总线分布电容使信号波形产生畸变造成的。
因此,在用DS18B20加进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问题。
测温电缆线建议采用屏蔽4芯双绞线,其中一对线接地线与信号线,另一组接VD和地线,屏蔽层在源端单点接地。
(4)在DS18B20测温程序设计中,向DS18B20发出温度转换命令后,程序总要等待
DS18B20的返回信号,一旦某个DS18B20接触不好或断线,当程序读该DS18B20时,将没有返回信号,程序进入死循环。
这一点在进行DS18B20硬件连接和软件设计时也要给予一定的重视。
1.31602字符液晶显示器
工业字符型液晶,能够同时显示16x02即32个字符。
(16列2行)
图81602引脚说明
1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线。
VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,其中:
引
脚
符
号
功能说明
1
VSS
一般接地
2
VDD
接电源(+5V)
3
V0
液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比
度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
4
RS
RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
5
R/W
R/W为读写信号线,高电平
(1)时进行读操作,低电平(0)时进行写操作。
6
E
E(或EN)端为使能(enable)端,下降沿使能。
7
DB0
低4位三态、双向数据总线0位(最低位)
8
DB1
低4位三态、双向数据总线1位
9
DB2
低4位三态、双向数据总线2位
10
DB3
低4位三态、双向数据总线3位
11
DB4
高4位三态、双向数据线4位
12
DB5
高4位三态、双向数据总线5位
注:
关于E=H脉冲——开始时初始化E为0,然后置E为1,再清0.busy
flag(DB7):
在此位为被清除为0时,LCD将无法再处理其他的指令要求。
字符集
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:
阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母
“A”。
因为1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编
程中还可以用字符型常量或变量赋值,如'A’。
指令集
1602通过D0-D7的8位数据端传输数据和指令。
显示模式设置:
(初始化)
00111000[0x38]设置16×2显示,5×7点阵,8位数据接口;显示开关及光标设置:
(初始化)
00001DCBD显示(1有效)、C光标显示(1有效)、B光标闪烁(1有效)
000001NSN=1(读或写一个字符后地址指针加1&光标加1),
N=0(读或写一个字符后地址指针减1&光标减1),
S=1且N=1(当写一个字符后,整屏显示左移)
s=0当写一个字符后,整屏显示不移动数据指针设置:
数据首地址为80H,所以数据地址为80H+地址码(0-27H,40-67H)
其他设置:
01H(显示清屏,数据指针=0,所有显示=0);02H(显示回车,数据指针=0)。
通常推荐的初始化过程:
延时15ms写指令38H延时5ms写指令38H延时5ms写指令38H延时5ms
(以上都不检测忙信号)
(以下都要检测忙信号)写指令38H
写指令08H关闭显示写指令01H显示清屏