多路温度检测系统Word格式.docx
《多路温度检测系统Word格式.docx》由会员分享,可在线阅读,更多相关《多路温度检测系统Word格式.docx(28页珍藏版)》请在冰豆网上搜索。
通过按键解除报警。
3.硬件设计根据设计的任务选定合适的单片机,根据控制对象设计接口电路。
设计的单元电路必须有工作原理,器件的作用,分析和计算过程;
4.软件设计根据电路工作过程,画出软件流程图,根据流程图编写相应的程序,进行调试并打印程序清单;
5.原理图设计根据所确定的设计电路,利用Protel、Proteus或EWB等有关工具软件绘制电路原理图;
第二章方案论证
此次设计的多路温度检测系统是以AT89S51单片机为控制核心,温度传感器DS18B20可以直接将被测温度转化为串行数字信号,最后送给单片机并通过8位共阳极LED数码管显示出来。
控制系统可以通过控制电路对超出温度范围的通过LED闪烁报警,通过按键解除报警。
2.1单片机的选择
AT89S51是一个低功耗,高性能CMOS8位单片机,片内含8kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。
AT89S51具有如下特点:
40个引脚,4kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。
空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。
同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。
由于系统控制方案简单,数据量也不大,考虑到电路的简单和成本等因素,因此在本设计中选用ATMEL公司的AT89S51单片机作为主控芯片。
主控模块采用单片机最小系统是由于AT89S51芯片内含有4kB的E2PROM,无需外扩存储器,电路简单可靠,其时钟频率为0~24MHz,并且价格低廉,批量价在10元以内。
其主要功能特性:
兼容MCS-51指令系统4k可反复擦写(>
1000次)ISPFlashROM
32个双向I/O口4.5-5.5V工作电压
2个16位可编程定时/计数器时钟频率0-33MHz
全双工UART串行中断口线128x8bit内部RAM
2个外部中断源低功耗空闲和省电模式
中断唤醒省电模式3级加密位
看门狗(WDT)电路软件设置空闲和省电功能
灵活的ISP字节和分页编程双数据寄存器指针
可以看出AT89S51提供以下标准功能:
4K字节Flash闪速存储器,128字节内部RAM,32个I/O口线,看门狗(WDT),两个数据指针,两个16位定时器/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟。
同时,AT89S51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式何在RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直接到一个硬件复位。
AT89S51引角功能说明
Vcc:
电源电压
GND:
地
P0口:
P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口,作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端口。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1口:
P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号校验期间,P1接收低8位地址。
表4-1为P1口第二功能。
表4-1P1口第二功能
端口引脚
第二功能
P1.5
MOSI(用于ISP编程)
P1.6
MISO(用于ISP编程)
P1.7
SCK(用于ISP编程)
P2口:
P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流I。
在访问8位地址的外部数据存储器(如执行:
MOVX@Ri指令)时,P2口线上的内(也即特殊功能寄存器,在整个访问期间不改变。
Flash编程或校验时,P2也接收高位地址和其它控制信号。
)
P3口:
P3口是一组带有内部上拉电阻的8位双向I/O口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。
作输入端口时,被外部拉低的P3口将用上拉电阻输出电流I。
P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,P3口的第二功能如下表4-2。
表4-2P3口的第二功能
端口功能
RXD(P3.0)
串行输入口
T0(P3.4)
定时/计数器0外部输入
TXD(P3.1)
串行输出口
T1(P3.5)
定时/计数器1外部输入
INT0(P3.2)
外中断0
WR(P3.6)
外部数据存储器写选通
INT1(P3.3)
外中断1
RD(P3.7)
外部数据存储器读选通
RST:
复位输入。
当振荡工作时,RST引脚出现两个机器周期上高电平将使单片机复位。
WDT益出将使该引脚输出高电平,设置SFRAUXR的DISRTO位(地址8EH)可打开或关闭该功能。
DISRTO位缺省为RESET输出高电平打开状态。
ALE/PROG:
当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出的正脉冲信号,因此它可对外输出时钟或用于定时目地,要注意的是:
第当访问外部数据存储器时将跳过一个ALE脉冲。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。
该位禁位后,只有一条MOVX和MOVC指令ALE才会被激活。
此外,该引脚伎被微弱拉高,单片机执行外部程序时,应设置ALE无效。
PSEN:
程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。
当访问外部数据存储器,高有两次有效的PSEN信号。
EA/VPP:
外部访问允许。
欲使CPU公访问外部程序存储器(地址0000H-FFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。
Flash存储器编程时,该引脚加上+12V的编程电压Vpp。
XTAL1:
振荡器反相放大器及内部时钟发生器的输入端。
XTAL2:
振荡器反相放大器的输出端。
AT89S51单片机内部构造及功能:
特殊功能寄存器:
特殊功能寄存器的片内空间分存如下图3-2所示。
这些地址并没有全部占用,没有占用的地址不可使用,读这些地址将得到一个随意的数值。
而写这些地址单元将不能得到预期的结果。
中断寄存器:
各中断允许控制位于IE寄存器,5个中断源的中断优先级控制位于IP寄存器。
图4-2为AUXR辅助寄存器。
图4-2AUXR辅助寄存器
双时钟指针寄存器:
为方便地访问内部和外部数据存储器,提供了两个16位数据指针寄存储器:
PD0位于SFR区块中的地址82H、83H和DP1位于地址84H、85H,当SFR中的位DPS=0时选择DP0,而DPS=1时选择DP1。
在使用前初始化DPS。
图4-3双时钟指针寄存器
电源空闲标志:
电源空闲标志(POF)在特殊功能寄存储器SFR中PCON的第4位(PCON.4),电源打开时POF置“1”,它可由软件设置睡眠状态并不为复位所影响。
存储器结构:
MCS-51单片机内核采用程序存储器和数据存储器空间分开的结构,均具有64KB外部程序和数据的寻址空间。
程序存储器:
如果EA引脚接地(GND),全部程序均执行外部存储器。
在AT89S51,假如接至Vcc(电源+),程序首先执行从地址0000H-0FFFH(4KB)内部程序存储器,再执行地址为1000H-FFFFH(60KB)的外部程序存储器。
数据存储器:
在AT89S51的具有128字节的内部RAM,这128字节可利用直接或间接寻址方式访问,堆栈操作可利用间接寻址方式进行,128字节均可设置为堆栈区空间。
看门狗定时器(WDT):
WDT是为了解决CPU程序运行时可能进入混乱或死循环而设置,它由一个14bit计数器和看狗复位SFR(WDTRST)构成。
外部复位时,WDT默认为关闭状态,要打开WDT,必按顺序将01H和0E1H写到WDTRST寄存器,当启动了WDT,它会随晶体振荡器在每个机器周期计数,除硬件复位或WDT溢出复位外没有其它方法关闭WDT,当WDT溢出,将使RST引脚输出高电平的复位脉冲。
引脚图详见图4-4
图4-4AT89S51单片机引脚图
2.2温度传感器的选择
DS18B20是DALLAS公司生产的一线式数字温度传感器,它具有微型化、低功耗、高性能抗干扰能力、强易配处理器等优点,特别适合用于构成多点温度测控系统,可直接将温度转化成串行数字信号(按9位二进制数字)给单片机处理,且在同一总线上可以挂接多个传感器芯片,它具有三引脚TO-92小体积封装形式,温度测量范围-55~+125℃,可编程为9~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出,其工作电源既可在远端引入,业可采用寄生电源方式产生,多个DS18B20可以并联到三根或者两根线上,CPU只需一根端口线就能与多个DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。
从而可以看出DS18B20可以非常方便的被用于远距离多点温度检测系统。
综上,在本系统中我采用温度芯片DS18B20测量温度。
该芯片的物理化学性很稳定,它能用做工业测温元件,且此元件线形较好。
在0—100摄氏度时,最大线形偏差小于1摄氏度。
该芯片直接向单片机传输数字信号,便于单片机处理及控制。
温度低位
温度高位
TH
TL
配置
保留
8位CRC
高速暂存器8字节分配图
高速暂存器除了配置寄存器外,其他还有8字节,其分配如上图所示。
其中温度信息第1,2字节;
TH和TL值第3,4字节;
第6字节~~8字节未用,表现为全逻辑1;
第9字节读出的是前面所有的8字节的CRC码,可以来保证通信正确。
S18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比较,若T>
TH或T<
TL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令作出响应。
因此,可用多只DS18B20同时测量温度并进行报警搜索。
如图所示,图中低温度系数振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;
高温度系数振荡器随温度变化七振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入.
图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的脉冲进行计数,进而完成温度测量.技术们的开启时间由高温度系数振荡器来决定,每次测量前,首先将10℃所对应的一个基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在10℃所对应的一个基数值.
减法计数器1对低温度系数振荡器产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度寄存器的值将加1,减法计数器1的预置值将重新被装入,并重新开始对低温度系数振荡器产生的脉冲信号进行计数.如此循环,知道减法计数器2计数到0时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值.图中的斜率累加器用于补偿和修正测温度过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直到温度寄存器值达到被测温度值.
表1—1温度—数据的对应关系
温度/℃
数字输出(二进制)
数字输出(十六进制)
+125
0000011111010000
07D0H
+85
0000010101010000
0550H
+25.0625
0000000110010001
0191H
+10.125
0000000010100010
00A2H
+0.5
0000000000001000
0008H
0000000000000000
0000H
-0.5
1111111111111000
FFF8H
-10.125
1111111101011110
FF5EH
-25.0625
1111111001011111
FE6FH
-55
1111110010010000
FC90H
温度与数据的对应关系见表1—1。
欲测量华氏温度(0F),需进行下述换算:
t(0F)=9/5(0C)+32
DS18B20中温度字节中的位定义
低八位
23
22
21
20
2-1
2-2
2-3
2-4
高八位
S
26
25
24
DSl8B20型单线智能温度传感器典型的测温误差在0~70℃范围内,DSl8B20的上、下限测温误差分别为+0.5℃、-0.5℃,而典型产品的误差仅为±
0.25℃。
(4)高速暂存器(简称暂存器)
它由便笺式RAM、非易失性电擦写E2RAM所组成,后者用来存储tH和tL值。
图1-4暂存器的操作命令流程图
数据先写入RAM,经校验后再传给E2RAM。
便笺式RAM占9个字节,第0、1字节是测量出的温度信息,第2、3字节分别是tH、tL值,第4、5字节不用。
第6、7字节为计数寄存器,可用于提高温度分辨力。
第8字节用来存储上述8字节的循环冗余校验码。
详见表3—2。
暂存器的命令集见表3—3。
6条命令分别为温度转换、读暂存器、写暂存器、复制暂存器、重新调出E2RAM、读电源供电方式。
表1—2暂存器的内容
便笺式RAM
字节
E2RAM
温度低字节
温度高字节
1
报警上限/用户定义字节1
2
报警下限/用户定义字节2
3
4
5
计数余数值
6
每度计数值
7
CRC
8
表1—3暂存器命令集
指令
说明
约定代码
发生约定代码后单线总线
温度转换
启动DSl8B20进行温度转换
44H
主CPU读DSl8B20的“忙状态”
读暂存器
读暂存器9个字节的内容
BEH
主CPU读9个字节的数据
写暂存器
将数据写入暂存器的TH和TL字节
4EH
主CPU给DSl8B20发出两个字节的数据
复制暂存器
把暂存器的TH、TL字节写入E2RAM中
48H
重新调E2RAM
把E2RAM中的TH、'
FL字节分别调入暂存器TH、TL字节
B8H
读电源供电方式
启动DSl8B20发送电源供电方式的信号给主CPU
B4H
主CPU读DSl8B20的“电源状态”
(5)初始化
对DSl8B20的操作是首先进行初始化,然后执行ROM操作命令,再执行暂存器操作命令,最后完成数据处理。
(6)报警信号
在完成温度转换之后,DSl8B20就把测得的温度值,同tH、tL作比较。
若t>
tH或t<
tL,则将该器件的报警标志置位,并对主CPU发出的报警搜索命令做出响应。
因此可用多片DSl8B20同时测量温度并进行报警搜索。
一旦某个测温点越限,主CPU用报警搜索命令即可识别正在报警的DSl8B20,并且读出其序号,而不必考虑其他未报警的DSl8B20。
左侧图为主程序:
主要负责温度的实时显示、读出并处理DS18B20的测量温度值。
温度测量每1S进行一次。
右侧图为读出温度子程序:
主要功能是读出RAM中的9字节。
再读出时须进行CRC校验,校验有错时不进行温度数据的改写。
图为温度转换命令子程序:
主要是温度转换开始命令。
当采用12位分辨率时,转换时间约为750MS。
在本程序设计中,采用1S显示程序延时法等待转换完成。
计算温度子程序:
计算温度子程序将RAM中读取值进行BCD码得转换运算,并进行温度值正负的判断。
此图为显示数据刷新子程序:
主要是对显示缓冲器中的显示数据进行刷新操作,当最高数据显示位为0时,将符号显示位移入下一位。
三章硬件设计
3.1工作原理
1.主控制器:
AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。
2.显示电路:
显示电采用8位共阳极LED数码管,从P1口输出段码,列扫描用P3.0~P3.7口来实现,列驱动用9012三极管。
3.温度传感器的工作原理:
具有独特的单总线接口方式,支持多节点,使分布式温度传感器设计大为简单化。
测温度时无需任何外围元件,可以通过数据线直接供电,具有超低功耗工作方式。
测温范围为-55℃~~125℃,精度为0.5℃,可以直接将温度转换值以16位二进制数码管的方式串行输出,因此特别适合单线多点温度测量系统。
由于传送的是串行数据,可以不需要放大器和A/D转换器,因此这种测温度方式大大提高了各种温度测控系统的可靠性,降低了成本、缩小了体积。
3.2单元电路
1.键盘单元
单片机应用系统中除了复位按键有专门的复位电路,以及专一的复位功能外,其它的按键或键盘都是以开关状态来设置控制功能或输入数据。
键开关状态的可靠输入:
为了去抖动我采用软件方法,它是在检测到有键按下时,执行一个10ms的延时程序后,再确认该键电平是否仍保持闭合状态电平,如保持闭合状态电平则确认为真正键按下状态,从而消除了抖动影响
在这种行列式矩阵键盘非编码键盘的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。
当确认有按键按下后,下一步就要识别哪一个按键按下。
对键的识别通常有两种方法:
一种是常用的逐行扫描查询法;
另一种是速度较快的线反转法。
对照图示的4*4键盘,说明线反转法工作原理。
首先辨别键盘中有无键按下,有单片机I/O口向键盘送全扫描字,然后读入行线状态来判断。
方法是:
向行线输出全扫描字00H,把全部列线置为低电平,然后将列线的电平状态读入累加器A中。
如果有按键按下,总会有一根行线电平被拉至低电平从而使行线不全为1。
判断键盘中哪一个键被按下是通过将列线逐列置低电平后,检查行输入状态来实现的。
依次给列线送低电平,然后查所有行线状态,如果全为1,则所按下的键不在此列;
如果不全为1,则所按下的键必在此列,而且是在与零电平行线相交的交点上的那个键。
键盘共有16个按键,用于方便设定温度。
…,数字按键,输入数字0----9;
,设置的确认,修改设置温度时进行确认;
设置的清除,修改设置温度时进行删除;
开启电源
关闭电源
显示及设置转换到温度点1,按此按键后,显示预设置温度的数码管
闪烁;
显示及设置转换到温度点2,按此按键后,显示预设置温度的数码管
表5-1键盘的按键分布
P2.0
P2.1
P2.2
9
F1
F2
P2.3
清除
开启
关闭
确定
P2.4
P2.5
P2.6
P2.7
2.温度控制及超温和超温警报单元
当采集的温度经处理后超过规定温度上限时,单片机通过P1.4输出控制信号驱动三极管D1,温度传感器感应到超出温度范围将会传送到单片机,单片机通过三极管驱动LED灯闪烁报警。
3.温度测试单元
采用温度芯片DS18B20。