温度检测报警器―单片机课程设计_第1页
温度检测报警器―单片机课程设计_第2页
温度检测报警器―单片机课程设计_第3页
温度检测报警器―单片机课程设计_第4页
温度检测报警器―单片机课程设计_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、温度检测报警器单片机课程设计21、1系统总体方案21、2硬件系统设计21、2、1 单片机简介21、2、2 温度传感器工作原理41、2、3 时钟电路设计61、2、4 复位电路设计62软件模块设计72、1主程序72、2主程序流程图82、3DS18B20软件设计流程图82、3、1 读温度子程序设计流程图82、3、2 温度转换命令程序设计93系统调试103、1 硬件系统调试103、1、1不加电源检测103、1、2静态检测103、2软件系统调试103、2、1 静态调试103、2、2动态调试104设计总结11附录12参考文献19前言温度是一个分重要的物理量,对它的测量与控制有分重要的意义。随着现代工农业技

2、术的发展及人们对生活环境要求的提高,人们也迫切需要检测与控制温度。在控制领域中,对温度的控制有着举足轻重的作用。例如陶瓷的烧烤,只有控制住温度的适度,才能制作出一件完美的艺术品,否则只是一件废品;还有如酿酒的过程,也需要对温度进行控制。可见,在生活的许多方方面面都有着对温度进行感知和控第 1 页 共 1 页制的需要。本次设计的目的就是基于 AT89C51单片机设计一个温度检测,报警的系统,该系统能实时采集周围的温度信息进行显示,程序内部设定有报警上下限,根据应用环境不同可设定不同的报警上下限。该系统实现了对温度的自动监测,为设备的正常运行提供了条件,在工业中具有一定的实用价值和广泛的应用前景。

3、1 硬件设计与系统总体方案 系统总体方案本设计的题目为温度监测报警系统,因为要用单片机去完成程序控制以及数据转换,故外围电路设计较简单。硬件设计可分为:核心控制 环境温度采集、数码管显示、超限报警灯。其系统框图如图 1 所示。图 1、1-1 温度监测报警设计系统框图基于图 1、1-1 框图介绍,可了解到温度监测报警设计的各个模块。每个模块均由一个核心器件,对于该器件的选择在某种程度上决定了设计方案的选择。由于是利用单片机控制电路,因此在电路中,单片机控制处理器为核心器件。在本设计中可使用 STC89C2051、STC89C51以及凌阳公司生产的 16位单片机等。考虑到各种因素,本设计选用 ST

4、C89C51单片机作为核心控制 CPU。要设计温度监测便要有温度采集,可以采集温度的途径较多,文中采用达拉斯公司生产的单线数字温度传感器 DS18B20,其可使温度信号直接转换成串行数字信号供微处理器处理,且外围电路简单、实现方便。显示技术是传递视觉信息的技术,由于 LED数码管显示器的寿命较长、价格低廉且显示清晰,所以在设计中选择 LED显示环境温度。1、2 硬件系统设计 本设计硬件系统主要包括温度第 1 页 共 1 页传感器、时钟电路、复位电路以及控制核心单片机等几个模块,下面将对所涉及的模块进行逐一介绍。1、2、1单片机简介本设计采用STC89C51单片机作为控制核心,STC89C51单

5、片机是采用8051核的ISP在系统可编程芯片,片内含8KB的可反复擦写1000次的Flash只读程序存储器,器件兼容标准MCS-51指令系统及8051引脚结构。此款单片机是单时钟的兼容8051内核单片机,是高速/低功耗的新一代8051单片机。其引脚图如图1、2、1-1所示。图1、2、1-1 STC89C51单片机引脚功能图单片机STC89C52引脚说明:VCC:供电电压。GND:接地。P0口:P0口为一个8位漏极开路双向I/O口,每脚可吸收8TTL门流。当P1口的管脚第一次写1时,定义为高阻输入。P0口能够用于外部程序数据存储器,它可以被定义为数据/地址的八位。在FLASH编程时,P0口作为原

6、码输入口;当FLASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个P1口是一个具有内部上拉电阻的8位双向I/O 口,P1输出缓冲器能驱动4 个TTL逻辑电平。当对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。当作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1、0和P1、2 分别作为定时器/计数器2 的外部计数输入(P1、0/T2)和定时器/计数器2的触发输入(P1、1/T2EX)。在Flash编程和校验时,P1口接收低8位地址字节。P2口:P2口是一个具有内部上拉电阻的8 位双向I/O口,P2输出缓冲器能驱动4

7、 个TT逻辑电平。对P2第 1 页 共 1 页端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。当作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(如执行MOVX DPTR)时,P2口送出高8位地址。在这种应用中,P2口使用很强的内部上拉发送1。在使用8位地址(如MOVX RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在Flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。P3口:P3口是一个具有内部上拉电阻的8位双向I/O 口,P2输出缓冲器能驱动4 个TTL逻辑电平。对P3端口

8、写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。当作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口也作为AT89S52 特殊功能(第二功能)使用。RST:复位输入。在晶振工作时,RST脚持续两个机器周期高电平将使单片机复位。看门狗计时完成后,RST脚输出96个晶振周期的高电平。特殊寄存器8EH)上的DISRTO位可以使此功能无效。在DISRTO默认状态下,复位高电平有效。ALE/PROG:地址锁存控制信号(ALE)在访问外部程序存储器时,锁存低8位地址的输出脉冲。在Flash编程时,此引脚(PROG)也用做编程输入脉冲。PSEN:外部程序存储器选通信

9、号(PSEN)是外部程序存储器选通信号。当AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。EA/VPP:访问外部程第 1 页 共 1 页序存储器控制信号。为使能从 0000H 到FFFFH 的外部程序存储器读取指令,EA必须接 GND。为了执行内部程序指令,EA 应该接VCC。在Flash 编程期间,EA也接收 12伏VPP 电压。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。1、2、2 温度传感器工作原理 DS18B20数字温度计提供 9-12位摄氏温度测量而且有一个

10、由高低电平触发的可编程的不因电源消失而改变的报警功能。DS18B20通过一个单线接口发送或接受信息,因此在中央处理器和 DS18B20之间仅需一条连接线(加上地线)。它的测温范围为-55125,并且在-1085精度为 5。除此之外,DS18B20能直接从单线通讯线上汲取能量,除去了对外部电源的需求。每个 DS18B20都有一个独特的 64位序列号,从而允许多只 DS18B20同时连在一根单线总线上;因此,很简单就可以用一个微控制器去控制很多覆盖在一大片区域的 DS18B20。这一特性在 HVAC环境控制、探测建筑物、仪器或机器的温度以及过程监测和控制等方面非常有用。表 2-1 详细引脚说明序号

11、名称引脚功能描述 1VCC可选择的 Vcc引脚。当工作于寄生电源时,此引脚必须接地。2DQ地信号。3GND将数据写入暂存器的 TH、TL字节图1、2、2-1是表示DS18B20 的方框图,表 1、2、2-1已经给出了引脚说明。64位只读存储器储存器件的唯一片序列号。高速暂存器含有两个字节的温度寄存器,这两个寄存器用来存储温度传感器输出的数据。除此之外,高速暂存器提供一个直接的温度报警值寄存器(TH和TL),和一第 1 页 共 1 页个字节的的配置寄存器。配置寄存器允许用户将温度的精度设定为9,10,11或12位。TH,TL和配置寄存器是非易失性的可擦除程序寄存器(EEPROM),所以存储的数据

12、在器件掉电时不会消失。图1、2、2-1 DS18B20方框图DS18B20的核心功能是它的直接读数字的温度传感器。温度传感器的精度为用户可编程的10,11或12位,分别以0、5,0、25,0、125和0625增量递增。在上电状态下默认的精度为12位。DS18B20启动后保持低功耗等待状态;当需要执行温度测量和AD转换时,总线控制器必须发出44h命令。在那之后,产生的温度数据以两个字节的形式被存储到高速暂存器的温度寄存器中,DS18B20继续保持等待状态。当DS18B20由外部电源供电时,总线控制器在温度转换指令之后发起“读时序”(见单总线系统节),DS18B20正在温度转换中返回0,转换结束返

13、回1。如果DS18B20由寄生电源供电,除非在进入温度转换时总线被一个强上拉拉高,否则将不会由返回值。寄生电源的总线要求在DS18B20供电节详细解释。1、2、3时钟电路设计MCS-51内部有一个用于构成震荡器的高增益反向放大器,此放大器的输入端和输出端分别是XTAL1和XTAL2,在XTAL1和XTAL2上外接晶振可构成时钟电路。时钟电路在单片机系统中起着非常重要的作用,是保证系统正常工作的基础。晶振频率的大小决定了单片机系统工作的快慢。本次设计采用内部方式的外部时钟接法。为达到振荡周期是12MHZ的要求,这里要采用12MHZ的晶振,电容C第 1 页 共 1 页1、C2对频率有微调作用,故外

14、接晶振时,C1和C2在本设计中选择30pF,振荡频率取12MHz。晶振的两个引脚分别连到XTAL1和XTAL2振荡脉冲输入引脚。具体连接图如图1、2、3-1所示:图1、2、3-1时钟电路原理图1、2、4 复位电路设计MCS-52单片机通常采用上电自动复位、按钮电平复位、外部脉冲复位、上电+按钮电平复位、程序运行监视复位等方式。本设计采用上电复位,其原理图如图1、1、4-1所示,上电复位是利用电容充电来实现的,即上电瞬间RST/Vpd端的电位与Vcc相同,随着充电电流的减少,最后被嵌位在0V,采用3、3uF的CR1和10K的R29可以保证加在引脚上的高电平持续2个机器周期,即使单片机有效地复位。

15、图1、2、4-1复位电路原理图2软件模块设计 主程序系统程序主要包括延时子程序、外部中断0服务子程序、外部中断1服务子程序、显示温度子程序、报警子程序、主程序等。主程序的功能为:按下开关键,使处于开的状态后,4位LED数码直接读出温度。若按一下设置键,则可设置温度的上限,蜂鸣器滴滴滴报警,当所测的温度低于所设置的下限,二极管闪烁亮,蜂鸣器滴滴滴报警。2、2 主程序流程图图2、2-1 主程序流程图设计在主程序流程图中,当开关键按下时,DS18B20开始工作,读出其温度值后,进行数据转换,下一步进行判断,是否超过所设定的温度上限和温度下限,若超过,则蜂鸣器发出声音,并在数码管上进行显示;若没有超过

16、,则蜂鸣器不响,并在数码管上进行显示,然后重复上述步骤。2、3 DS18B20软件设计流程第 1 页 共 1 页图 DS18B20器件要求采用严格的通信协议,以保证数据的完整性。该协议定义了几种信号类型:复位脉冲、应答脉冲时隙;写0,写 1时隙;读 0,读 1时隙。与DS18B20 的通信,是通过操作时隙完成单总线上的数据传输。发送所有的命令和数据时,都是字节的低位在前,高位在后。2、3、1 读温度子程序设计流程图读出温度子程序的主要功能是读出 RAM中的 9字节,在读出时需进行 CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图 2、3、1-1所示。2、3、1-1 读出温度子程序流

17、程图 3、2 温度转换命令程序设计温度转换命令程序主要是发温度转换开始命令,当采用 12位分辨率时转换时间约为 750ms,在本程序设计中采用 1s显示程序延时法等待转换的完成。如图 2、3、2-1所示。图 2、3、2-1 温度转换命令子程序流程图 3 系统调试 硬件系统调试对板子的安装和调试在整个设计过程中是很重要的一个过程,是把设计转换成实际物体的过程,也是对理论知识的一个实际应用。对产品进行检测的过程中使用检测仪器有:万用表、电源、示波器等器材。其检测步骤有下述几类。3、1、1 不加电源检测对照设计原理图以及实物,检查线路是否连线正确,包含是否存在误接、虚焊等;用万用表检测焊接是否良好,

18、元器件之间是否存在短路,各元件(三极管、点解电容、发光二极管等)极性是否正确。3、1、2 静态检测 将直流稳压电源准确输出,并连入电路板中,观察是否存在不正常现象,如元器件发烫,空气中产生难闻气味等。如有上述现象,立即断开电源,检第 1 页 共 1 页查各线路,各连接点,排除故障;如没有发现异常现象,则用万用表检测各个连接点是否有满足需求的电压,如静态工作点、各个输入输出端、放大电路连接点等。如与理论电压值相差较大,则检查是否存在元器件损坏等问题。最终的目的是让整个电路工作在一个合适的状态。3、2 软件系统调试软件调试是保证设计成果正常运作必不可少的步骤,通常软件调试分为静态调试和动态调试。3

19、、2、1 静态调试在静态调试中,第一种办法是输出寄存器的内容,在测试过程中出现问题,设法保留现场信息。把所有寄存器和主存中有关部分的内容打印出来,进行分析。还有一种方法是为取得关键变量的动态值,在程序中插入打印语句。这是取得动态信息的简单方法,并可检验在某时间后某个变量是否按预期要求发生了变化。此方法的缺点是可能输出大梁需要分析的信息,必须修改源程序才能插入打印语句,这可能改变关键的时序关系,引入新的错误。3、2、2 动态调试通常利用程序语言提供的调试功能或专门的调试工具来分析程序的动态行为。一般程序语言和工具提供的调试功能有检查主存和寄存器;设置断点,即当执行到特定语句或改变特定变量的值时,

20、程序停止执行,以便分析程序此时的状态。4 设计总结本温度报警器,通过单片机实时检测温度传感器 DS18B20的状态,并将 DS18B20得到的数据进行处理。上电后数码管显示当前的环境温度,当检测到的温度高于设置的报警值的时候,蜂鸣器报警同时报警灯闪烁,温度检测精确到 0、1度。并具有掉电保存功能,数据保存在单片机内部第 1 页 共 1 页EEPOM中,进入设置界面后如果没有键按下系统会在15秒后自动退出设置界面。由于采用了4节干电池供电使系统的抗干扰性得到加强。在软件上,充分利用了STC89C52的系统资源,系统运行流畅。本设计结构简单,调试方便,系统反映快速灵活,经实验测试,该温度报警系统设

21、计方案正确、可行,各项指标稳定、可靠。附录附录1:电路原理图附录2:PCB图附录3:仿真图附录4:实物图附录5:程序#include config、h #include #include #define DQP00#define BuzzerP01#define LEDP02unsigned char TPH; /存放温度值高字节unsigned char TPL; /存放温度值低字节unsigned char x1,y1,y2,x2,y3,y4; unsigned char codetable1=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,

22、0 x80,0 x90; /段码unsigned char code table2=0 xef,0 xdf; /位码unsigned char count_led; bitfalg=0;/*延时X微妙不同的工作环境,需要调整此函数此延时函数是使用1T的指令周期进行计算,与传统的12T的MCU不同*/void DelayXus(unsigned char n) while (n-) _nop_();_nop_(); /*第 1 页 共 1 页*复位DS18B20,并检测设备是否存在*/void DS18B20_Reset() falg =1; while(falg) DQ = 0; /送出低电平

23、复位信号 DelayXus(240); 至少480us DelayXus(240); DQ =1; /释放数据线 DelayXus(60);/等待60us falg = DQ; /检测存在脉冲 DelayXus(240); 待设备释放数据线DelayXus(180); /*从DS18B20读1字节数据*/unsigned char DS18B20_ReadByte() unsignedchar i; unsigned char dat = 0; for (i=0; i=1; DQ = 0; /开始时间片DelayXus(1); /延时等待 DQ =1; DelayXus(1); /接收延时 if (DQ=1)dat |= 0 x80; /读取数据 DelayXus(60); /接收延时 returndat;/*向DS18B20写1字节数据*/void DS18B20_WriteByte(unsigned chardat) char i; for (i=0; i=1; /*/void Ds18b20_Convert(void)DS18B20_Reset();/设备复位DS18B20_WriteByte(0 xCC); /跳过ROM命令DS18B20_Wri

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论