基于51单片机数字温度报警器_第1页
基于51单片机数字温度报警器_第2页
基于51单片机数字温度报警器_第3页
基于51单片机数字温度报警器_第4页
基于51单片机数字温度报警器_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、.1摘要电子技术在日常生活中得到了广泛的应用,各类转换电路的不断推出以及电子产品的快速更新,电子技术已成为世界开展和人们生活中必不可少的工具。同时伴随传感器在生产生活中更加广泛的应用,一种新型的数字式温度传感器实现对温度的测试与控制得到了更快的开发,本文设计了一种基于单片机AT89C51的温度检测及报警系统。该系统将温度传感器DS18B20接到单片机的一个端口上,单片机对温度传感器进展循环采集。将采集到的温度值与设定的上下限进展比较,当超出设定围的上下限时,通过单片机控制的报警电路就会发出报警信号,从而实现了本次课程设计的要求。本次设计同时应用到许多我们用过的软件设计,将前面所学的知识融汇在一

2、起实现温度监测及其报警的功能。该系统设计和布线简单、构造紧凑、体积小、重量轻、抗干扰能力较强、性价比高、扩展方便,在工农业等领域的温度检测中有广阔的应用前景。关键字 温度传感器;单片机;报警;数码管显示.1目 录TOC o 1-3 h u HYPERLINK l _Toc13542 1绪论 PAGEREF _Toc13542 1 HYPERLINK l _Toc23750 1.1温度报警系统简介 PAGEREF _Toc23750 1 HYPERLINK l _Toc24817 1.2课题背景与研究意义 PAGEREF _Toc24817 1 HYPERLINK l _Toc8379 1.3

3、课题设计主要研究目的 PAGEREF _Toc8379 1 HYPERLINK l _Toc32107 2系统整体方案设计 PAGEREF _Toc32107 2 HYPERLINK l _Toc20577 2.1系统的根本方案 PAGEREF _Toc20577 2 HYPERLINK l _Toc9434 2.2各模块方案选择 PAGEREF _Toc9434 2 HYPERLINK l _Toc26131 2.2.1 单片机的选择 PAGEREF _Toc26131 2 HYPERLINK l _Toc12913 2.2.2 温度传感器的选择 PAGEREF _Toc12913 2 HY

4、PERLINK l _Toc31082 2.2.3 显示模块的选择 PAGEREF _Toc31082 3 HYPERLINK l _Toc19379 3系统的硬件设计与实现 PAGEREF _Toc19379 4 HYPERLINK l _Toc7406 3.1系统硬件概述 PAGEREF _Toc7406 4 HYPERLINK l _Toc22510 3.2电路模块 PAGEREF _Toc22510 4 HYPERLINK l _Toc17930 3.2.1 单片机 PAGEREF _Toc17930 4 HYPERLINK l _Toc23758 3.2.2复位电路模块 PAGERE

5、F _Toc23758 5 HYPERLINK l _Toc31208 3.2.3显示电路模块 PAGEREF _Toc31208 6 HYPERLINK l _Toc12382 3.2.4传感器电路模块 PAGEREF _Toc12382 6 HYPERLINK l _Toc3549 4.系统的软件设计 PAGEREF _Toc3549 9 HYPERLINK l _Toc13355 4.1软件设计应用环境与设计语言 PAGEREF _Toc13355 9 HYPERLINK l _Toc143 4.2系统设计设计流程图 PAGEREF _Toc143 9 HYPERLINK l _Toc1

6、0856 5系统仿真设计 PAGEREF _Toc10856 10 HYPERLINK l _Toc22784 5.1 Proteus 软件介绍 PAGEREF _Toc22784 10 HYPERLINK l _Toc32063 5.2 Proteus 仿真图 PAGEREF _Toc32063 10 HYPERLINK l _Toc8984 5.3 硬件调试 PAGEREF _Toc8984 11 HYPERLINK l _Toc20926 5.4调试结果 PAGEREF _Toc20926 11 HYPERLINK l _Toc7532 结论 PAGEREF _Toc7532 12 HY

7、PERLINK l _Toc19189 参考文献 PAGEREF _Toc19189 13 HYPERLINK l _Toc2641 附 录 PAGEREF _Toc2641 14 HYPERLINK l _Toc18245 附录1 元件清单与仿真图 PAGEREF _Toc18245 14 HYPERLINK l _Toc26242 附录2 源程序 PAGEREF _Toc26242 16.11绪论1.1温度报警系统简介温度报警系统广泛的用于工业农业等领域,是一种最根本的环境参数,人民的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的

8、测量方法和装置具有重要的意义。温度报警系统在农业蔬菜大棚中起到重要作用,温度报警器探测到温度超标时,温度报警器发出报警信号。1.2课题背景与研究意义温度是一个十分重要的物理量,对它的测量与控制有十分重要的意义。随着现代工农业技术的开展及人们对生活环境要求的提高,人们也迫切需要检测与控制温度:如大气及空调房中温度的上下,直接影响着人们的身体安康;粮仓温度的检测,防止粮食发霉,最大限度地保持粮食原有新鲜品质,到达粮食保质保鲜的目的;工业易燃品的存放。测温技术在生产过程中,在产品质量控制和监测以及节约能源等方面发挥了着重要作用。本实验设计实现了工业测温根本功能,同时,在设计实验过程中,运用到单片机、

9、模电、数电、传感器和C+程序设计等知识,这既能加强我们的理论知识与实践的结合,也能够提高我们应用穿插学科知识进展综合设计的能力。1.3 课题设计主要研究目的本温度报警器以AT89C51单片机为控制核心,由一数字温度传感器DS18B20测量被控温度,结合7段LED以及驱动LED的74LS245组合而成。当被测量值超出预设围则发出警报,且精度高。利用现代虚拟仿真技术可对设计进展仿真实验,与单片机仿真联系严密的为proteus仿真,利用keil软件设计单片机控制系统,然后与proteus进展联合调试,可对设计的正确性进展检验。2系统整体方案设计2.1系统的根本方案本次设计通过使用AT89C51单片机

10、芯片、和温度传感器、蜂鸣器实现功能效果,传感器可以承受周围的温度数据,并且通过数码管显示具体温度数值,通过按键可以设置温度的上限下限,假设采集到的温度高于温度上限,蜂鸣器报警提示,同样低于下限也报警。系统设计框图如图2-1所示:图2-1 系统总框图通过温度传感器采集环境温度,通过按键控制主控程序,实现数码管度温度上下限的设置,将温度数值显示在LED数码光上,假设温度超出上限或下限,驱动发光二极管点亮,同时蜂鸣器报警提示。2.2各模块方案选择2.2.1单片机的选择采用STC89C51单片机,它是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵

11、巧的8 位CPU 和在系统可编程Flash,使得STC89C51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。2.2.2 温度传感器的选择温度传感器选用达拉斯公司的单线数字温度传感芯片DS18B20。它将地址线、数据线和控制线合为一根双向串行传输数据的信号线,允许在这根信号线上挂接多个DS18B20。每个芯片有一个64位的ROM,其中存有各个器件自身的序列号,作为器件独有的ID。其测温围是-55128,测温分辨率在12位时精度为0.0625。DS18B20简化了温度器件与计算机的接口电路,使得电路简单,使用更加方便。2.2.3 显示模块的选择采用数码管显示模块,采集温度超出或低于上下限

12、时,相应的发光二极管点亮。3系统的硬件设计与实现3.1系统硬件概述本设计包括温度数据采集和显示两个局部,数据采集通过温度传感器实现,显示有发光二极管,LED数码管实现。报警功能由蜂鸣器实现,系统的复位以及温度上下限的调整分别由三个按键实现。3.2电路模块3.2.1 单片机AT89C51单片机部主要由9个部件组成:1个8位中央处理器;4KBFlash存储器;128B的数据存储器;32条I/O口线;2个定时器/计数器;1个具有6个中断源、4个优先级的中断嵌套构造;用于多处理机通信、I/O扩展或全双工UART的串行口;特殊功能存放器;1个片振荡器和时钟电路。AT89S51系列单片机完全继承了MCS-

13、51的指令系统,共有111条指令,按其功能可分为五大类:数据传送类指令、算术运算类指令、逻辑运算类指令、控制转移类指令、布尔操作。AT89C51单片机引脚如图3-1所示。图3-1 AT89C51单片机引脚图管脚说明:P0口:8位、漏极开路的双向I/O口。P0能够用于外部程序数据存储器。它可以被定义为数据/地址的第八位。P0口在应用时必须外接上拉电阻,作为输入时,首先应将引脚置1。P1口:8位双向I/O口,部含上拉电阻。作为输入时,应先将引脚置高;假设负载为低电平,则通过部上拉电阻向外输出电流。P2口:8位双向I/O口,部含上拉电阻。作为输入时,应先将引脚置高;假设负载为低电平,则通过部上拉电阻

14、向外输出电流。P3口:8位双向I/O口,部含上拉电阻。作为输入时,应先将引脚置高;假设负载为低电平,则通过部上拉电阻向外输出电流。P3口除了通用I/O口功能外,还有第二功能。P3口的第二功能定义如表3-1所示。表3.1 P3口第二功能定义引脚定义功能引脚定义功能P3.0-R*D串行输入口P3.1-T*D串行输出口P3.2-外部中断0P3.3-外部中断1P3.4-T0计时器0外部输入P3.5-T1计时器1外部输入P3.6-外部数据存储器写选通P3.7-外部数据存储器读选通RST:复位输入,低电平有效。ALE/PROG:地址锁存允许信号输出。在正常操作状态下,该引脚端口输出恒定频率的脉冲。其频率为

15、晶振频率的1/6,可用作外部定时或其他触发信号。如果需要,可通过SFR的第0位置制止ALE操作,但ALE的制止位不影响对外部存储器的。:片外程序存储器选通信号,低电平有效。当AT89S51执行来自外部程序存储器的指令代码时,PSEN/每个机器周期两次有效。在外部数据存储器时,PSEN/无效。:片外程序存储器允许信号,低电平有效。*TAL1:外接晶振。在单片机部是反相放大器的输入及端。*TAL2:外接晶振。在单片机部是反相放大器的输出端,输入到部时钟发生器。3.2.2复位电路模块复位是单片机的初始化操作,复位信号是高电平有效,复位操作有上电自动复位、按键电平复位、外部脉冲复位和自动复位四种方式。

16、在本设计中复位采用.1上电自动复位,当接通电源的瞬间,RST端与Vcc同电位,随着电容的电压逐渐上升,RST端的电压也逐渐下降,于是在RST端便形成了一个正脉冲,只要该正脉冲的宽度持续两个周期的高电平,就可以实现系统的自动复位,复位电路原理图如图3-2所示。 图3-2 上电复位电路3.2.3显示电路模块显示电路由单片机的P0、P2端口控制。显示模块如图3-3。图3-3 温度显示模块3.2.4传感器电路模块1DS18B20部构造DS18B20是Dallas公司继DS1820后推出的一种改进型智能数字温度传感器,与传统的热敏电阻相比,只需一根线就能直接读出被测温度值,并可根据实际需求来编程实现91

17、2位数字值的读数方式。DS18B20的外形如一只三极管,引脚名称及作用如下:GND:接地端,DQ:数据输入/输出脚,与TTL电平兼容,VDD:可接电源,也可接地。因为每只DS18B20都可以设置成两种供电方式,即数据总线供电方式和外部供电方式。采用数据总线供电方式时VDD接地,可以节省一根传输线,但完成数据测量的时间较长;采用外部供电方式则VDD接+5V,多用一根导线,但测量速度较快,部构造如图3-4。2DS18B20供电方式DS18B20可以采用外部电源供电和寄生电源供电两种模式。外部电源供电模式是将DS18B20的GND直接接地,DQ与但单总线相连作为信号线,VDD与外部电源正极相连。如图

18、3-5所示。图中DS18B20的DQ端口通过接入一个4.7K的上拉电阻到VCC,从而实现外部电源供电方式。寄生电源供电模式如图3-6所示:从图中可知,DS18B20的GND和VDD均直接接地,DQ与单总线相连,单片机其中一个I/O口与DS18B20的DQ端相连。(3)DS18B20的测温原理 DS18B20的测温原理如图3-7所示, 其主要由斜率累加器、温度系数振荡器、减法计数器、温度存储器等功能部件组成。图3-7 DS18B20的测温原理DS1820 是这样测温的:用一个高温度系数的振荡器确定一个门周期,部计数器在这个门周期对一个低温度系数的振荡器的脉冲进展计数来得到温度值。计数器被预置到对

19、应于-55的一个值。如果计数器在门周期完毕前到达0,则温度存放器同样被预置到-55的值增加,说明所测温度大于-55。同时,计数器被复位到一个值,这个值由斜坡式累加器电路确定,斜坡式累加器电路用来补偿感温振荡器的抛物线特性。然后计数器又开场计数直到0,如果门周期仍未完毕,将重复这一过程。斜坡式累加器用来补偿感温振荡器的非线性,以期在测温时获得比较高的分辨率。DS18B20部对此计算的结果可提供0.5的分辨率。温度以16bit带符号位扩展的二进制补码形式读出,DS18B20遵循单总线协议,每次测温时都必须有4个过程:初始化、传送ROM 操作命令、传送ROM操作命令、数据交换。.14.系统的软件设计

20、4.1软件设计应用环境与设计语言本设计软件的设计是在Keil C51的环境下编译的。Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。Keil C51标准C编译器为8051微控制器的软件开发提供了C语言环境,同时保存了汇编代码高效、快速的特点。4.2系统设计设计流程图系统的流程图如图4-1所示。 开场初始化采集温度TNT上限,T下限.Y二极管亮,报警数码管显示 完毕图4-1系统设计流程图.15系统仿真设计5.1 Proteus 软件介绍Proteus软件是英国Labcenter

21、 electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:*.HE*,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。使用Proteus 软件进展单片机系统仿真设计,是虚拟仿真技术和计算机多媒体技术相结合的综合运用,有利于培养学生的电路设计能力及仿真软件的操作能力;实践

22、证明,在使用 Proteus 进展系统仿真开发成功之后再进展实际制作,能极大提高单片机系统设计效率。因此,Proteus 有较高的推广利用价值。5.2 Proteus 仿真图图5-1 温度报警软件仿真图5.3 硬件调试所有器件按电路原理图焊接完成后,接上导线,放入三节电池,接通电源,按下开关。相应的从机对应的发光二极管点亮,按下键盘,相应数码管上显示键值。调试过程中先检查pcb版各个点是否焊接错,连线正确,确保线没有绕道一起,硬件原理图如图5-2。 图5-2 焊接实物硬件图5.4调试结果刚开场调试并不是很顺利,虽然很小心但调试过程中仍出现了很多的问题,首先电路比较难焊接,必须再加小心以免出现问

23、题难以排查。还有电路中需接电源正负极的线比较多也要很仔细的去焊接。刚开场调试按键控制出错,经过同学帮助大家努力后终于正确的调试出了结果 。结论这次课程设计不光是要掌握模单片机书本上的理论根底,还需要我们锻炼自己的动手能力。用时2周,需要用到Proteus ISIS绘图,同时也用到keil编程,仿真验证程序正确。最后一步焊接硬件有点困难,因为平时没练过焊接,刚开场的矩阵键盘就焊错了,之后又重新用吸锡器吸掉,列线扫描用导线代替了。焊接过程遇到许多问题,终于焊接完成后,又发现按键不响应,又返回去重新改程序,给单片机刷入程序第2次验证,还是没有调试正确。最后终于发现了问题,原来是硬件焊接时,把接口焊错

24、了,修改之后果然调试正确。调试成功后真的很开心,因为自己焊接,硬件后面显得很粗糙,最后总结发现各个元器件的布局真的很重要,这次做单片机硬件,确实让我学到了很多东西,很感这次的实践时机。这次实验从开场准备到焊接硬件完成,充实了我们的生活,让我们增长了知识,提高了学习能力,一些软件的使用,芯片的管教,电解电容的正负极,等等一些细微的东西,都需要自己去图书馆或者网上找相应的资料。这次小课程设计对以后的课程设计都有帮助,提前锻炼了我们的能力,同时也感实验室的同学的指导以及高教师的指导,让我顺利的完成了课程设计。参考文献【1】 高玉芹 单片机原理与应用及C51编程技术 【M】.:机械工业。【2】泉溪 单

25、片机原理与应用实验教程 【M】航空航天大学。【3】 育才. MCS-51系列单片微型计算机及其应用【M】 东南大学【4】叶景,基于单片机的温度控制系统的设计 经历与交流,2021【5】光友.单片机微型计算机原理及接口技术M.:中国水利水电,2002附 录附录1 元件清单与仿真图1.元件清单万用板7*9 开关2.2K电阻*6stc89C51单片机40脚IC座DS18B20温度传感器10K排阻10K电阻*210uF电容按键*312M晶振30P电容*29012三极管*5led灯蜂鸣器四位一体共阳数码管系统仿真图附录2 源程序*include *define uint unsigned int*def

26、ine uchar unsigned char /宏定义*define SET P3_1 /定义调整键*define DEC P3_2 /定义减少键*define ADD P3_3 /定义增加键*define BEEP P3_6 /定义蜂鸣器*define ALAM P1_2/定义灯光报警*define DQ P3_7 /定义DS18B20总线I/Obit shanshuo_st; /闪烁间隔标志bit beep_st; /蜂鸣器间隔标志sbit DIAN = P05; /小数点uchar *=0; /计数器signed char m; /温度值全局变量uchar n; /温度值全局变量uch

27、ar set_st=0; /状态标志signed char shang*ian=38; /上限报警温度,默认值为38signed char *ia*ian=5; /下限报警温度,默认值为38/uchar code LEDData=0*C0,0*F9,0*A4,0*B0,0*99,0*92,0*82,0*F8,0*80,0*90,0*ff;uchar code LEDData=0*5F,0*44,0*9D,0*D5,0*C6,0*D3,0*DB,0*47,0*DF,0*D7,0*CF,0*DA,0*9B,0*DC,0*9B,0*8B;/*延时子程序*/void Delay_DS18B20(int

28、 num) while(num-) ;/*初始化DS18B20*/void Init_DS18B20(void) unsigned char *=0; DQ = 1; /DQ复位 Delay_DS18B20(8); /稍做延时 DQ = 0; /单片机将DQ拉低 Delay_DS18B20(80); /准确延时,大于480us DQ = 1; /拉高总线 Delay_DS18B20(14); * = DQ; /稍做延时后,如果*=0则初始化成功,*=1则初始化失败 Delay_DS18B20(20);/*读一个字节*/unsigned char ReadOneChar(void) unsign

29、ed char i=0; unsigned char dat = 0; for (i=8;i0;i-) DQ = 0; / 给脉冲信号 dat=1; DQ = 1; / 给脉冲信号 if(DQ) dat|=0*80; Delay_DS18B20(4); return(dat);/*写一个字节*/void WriteOneChar(unsigned char dat) unsigned char i=0; for (i=8; i0; i-) DQ = 0; DQ = dat&0*01; Delay_DS18B20(5); DQ = 1; dat=1; /*读取温度*/unsigned int R

30、eadTemperature(void) unsigned char a=0; unsigned char b=0; unsigned int t=0; float tt=0; Init_DS18B20(); WriteOneChar(0*CC); /跳过读序号列号的操作 WriteOneChar(0*44); /启动温度转换 Init_DS18B20(); WriteOneChar(0*CC); /跳过读序号列号的操作 WriteOneChar(0*BE); /读取温度存放器 a=ReadOneChar(); /读低8位 b=ReadOneChar(); /读高8位 t=b; t=8; t=

31、t|a; tt=t*0.0625; t= tt*10+0.5; /放大10倍输出并四舍五入 return(t);/*延时子程序*/void Delay(uint num) while( -num );/*初始化定时器0*/void InitTimer(void)TMOD=0*1;TH0=0*3c;TL0=0*b0; /50ms晶振12M/*读取温度*/void check_wendu(void)uint a,b,c;c=ReadTemperature()-5; /获取温度值并减去DS18B20的温漂误差a=c/100; /计算得到十位数字b=c/10-a*10; /计算得到个位数字m=c/10

32、; /计算得到整数位n=c-a*100-b*10; /计算得到小数位if(m99)m=99;n=9; /设置温度显示上限 /*显示开机初始化等待画面*/void Disp_init(void) P0 = 0*80; /显示P2 = 0*7F;Delay(200);P2 = 0*DF;Delay(200); P2 = 0*F7;Delay(200);P2 = 0*FD;Delay(200);P2 = 0*FF; /关闭显示/*显示温度子程序*/void Disp_Temperature(void) /显示温度P0 = 0*98; /显示CP2 = 0*7F;Delay(400);P0=LEDDa

33、tan; /显示个位P2 = 0*DF;Delay(400);P0 =LEDDatam%10; /显示十位DIAN = 0; /显示小数点P2 = 0*F7;Delay(400);P0 =LEDDatam/10; /显示百位P2 = 0*FD;Delay(400);P2 = 0*ff; /关闭显示/*显示报警温度子程序*/void Disp_alarm(uchar baojing)P0 =0*98; /显示CP2 = 0*7F;Delay(200);P0 =LEDDatabaojing%10; /显示十位P2 = 0*DF;Delay(200);P0 =LEDDatabaojing/10; /显示百位P2 = 0*F7;Delay(200);if(set_st=1)P0 =0*CE;else if(set_st=2)P0 =0*1A; /上限H、下限L标示P2 = 0*FD;Delay(200);P2 = 0*ff; /关

温馨提示

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

评论

0/150

提交评论