多路温度检测系统.docx
- 文档编号:8563830
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:28
- 大小:283.01KB
多路温度检测系统.docx
《多路温度检测系统.docx》由会员分享,可在线阅读,更多相关《多路温度检测系统.docx(28页珍藏版)》请在冰豆网上搜索。
多路温度检测系统
单片机课程设计任务书
设计题目:
多路温度检测系统
系部:
电子信息工程
班级:
学生姓名:
学号:
________________________
指导教师:
2011年6月7日
目录
第一章绪论…………………………………………3
1.1设计的目的及意义…………………………………3
1.2设计要求……………………………………………3
第二章方案论证………………………………………4
2.1单片机的选择…………………………………………4
2.2温度传感器的选择……………………………………5
第三章硬件设计………………………………………16
3.1工作原理……………………………………………16
3.2单元电路……………………………………………17
3.3电源输入部分……………………………………………21
第四章软件设计………………………………………22
4.1软件流程……………………………………………22
4.2软件程序……………………………………………23
第五章课程设计体会…………………………………30
第一章绪论
1.1设计的目的及意义
1、通过温度报警控制系统的设计,了解数字式温度传感器DS18B20的工作原理及其控制方法;
2、通过温度报警控制系统的设计,掌握单片机AT89C51的结构原理及其控制指令的应用,熟练应用AT89C51完成一个系统的控制;
3、通过温度报警控制系统的设计,使学生了解一个控制系统设计的基本步骤,程序设计的基本方法,培养学生分析问题和解决问题的能力,将理论联系到实践中去,提高我们的动脑和动手的能力,通过课程设计,还可以使学生树立正确的世界观,培养实事求是、严肃认真、具有高度责任感的工作作风;
4、学习完成控制系统的硬件设计、软件设计、仿真调试的过程。
1.2设计要求
1.应用MCS-51单片机设计一个8路温度检测系统;
2.8个键盘、8个LED数码管显示电路,用于循环显示每一路的温度值(显示精确到小数点后一位),通过按键还可以选择任意一路显示;设温度值的正常范围为10℃--50℃,若当前温度值超过此范围,则LED闪烁报警;通过按键解除报警。
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 因此,可用多只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 0 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 S S S 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 温度低字节 0 温度高字节 1 报警上限/用户定义字节1 2 报警上限/用户定义字节1 报警下限/用户定义字节2 3 报警下限/用户定义字节2 保留 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 主CPU读DSl8B20的“忙状态” 重新调E2RAM 把E2RAM中的TH、'FL字节分别调入暂存器TH、TL字节 B8H 主CPU读DSl8B20的“忙状态” 读电源供电方式 启动DSl8B20发送电源供电方式的信号给主CPU B4H 主CPU读DSl8B20的“电源状态” (5)初始化 对DSl8B20的操作是首先进行初始化,然后执行ROM操作命令,再执行暂存器操作命令,最后完成数据处理。 (6)报警信号 在完成温度转换之后,DSl8B20就把测得的温度值,同tH、tL作比较。 若t>tH或t 因此可用多片DSl8B20同时测量温度并进行报警搜索。 一旦某个测温点越限,主CPU用报警搜索命令即可识别正在报警的DSl8B20,并且读出其序号,而不必考虑其他未报警的DSl8B20。 左侧图为主程序: 主要负责温度的实时显示、读出并处理DS18B20的测量温度值。 温度测量每1S进行一次。 右侧图为读出温度子程序: 主要功能是读出RAM中的9字节。 再读出时须进行CRC校验,校验有错时不进行温度数据的改写。 图为温度转换命令子程序: 主要是温度转换开始命令。 当采用12位分辨率时,转换时间约为750MS。 在本程序设计中,采用1S显示程序延时法等待转换完成。 计算温度子程序: 计算温度子程序将RAM中读取值进行BCD码得转换运算,并进行温度值正负的判断。 此图为显示数据刷新子程序: 主要是对显示缓冲器中的显示数据进行刷新操作,当最高数据显示位为0时,将符号显示位移入下一位。 三章硬件设计 3.1工作原理 此次设计的多路温度检测系统是以AT89S51单片机为控制核心,温度传感器DS18B20可以直接将被测温度转化为串行数字信号,最后送给单片机并通过8位共阳极LED数码管显示出来。 控制系统可以通过控制电路对超出温度范围的通过LED闪烁报警,通过按键解除报警。 1.主控制器: AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。 空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。 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 0 1 2 3 P2.1 4 5 6 7 P2.2 8 9 F1 F2 P2.3 清除 开启 关闭 确定 P2.4 P2.5 P2.6 P2.7 2.温度控制及超温和超温警报单元 当采集的温度经处理后超过规定温度上限时,单片机通过P1.4输出控制信号驱动三极管D1,温度传感器感应到超出温度范围将会传送到单片机,单片机通过三极管驱动LED灯闪烁报警。 3.温度测试单元 采用温度芯片DS18B20。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 温度 检测 系统