ImageVerifierCode 换一换
格式:DOC , 页数:26 ,大小:17.85MB ,
资源ID:8856001      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-8856001.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于51单片机的数字温度报警器.doc)为本站会员(wj)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

基于51单片机的数字温度报警器.doc

1、郑州科技学院单片机课程设计题 目: 基于51单片机的数字温度报警器 专业班级: 电气工程及其自动化 班 院 系: 电气工程学院 姓 名: 学 号: 指导教师: 日 期: 2017年6月2日 目 录1 课程设计目的12 课程设计任务与要求13 设计方案与论证13.1 单片机的选择23.2 温度传感器的选择23.3 显示模块选择34 系统硬件电路设计34.1 系统整体电路图34.2 单片机最小系统44.3 报警电路设计54.4 显示电路设计54.5 电源电路设计65 系统软件设计75.1 主程序75.2 读出温度子程序75.3 温度转换命令子程序75.4 计算温度子程序76 仿真过程76.1 仿真

2、软件介绍76.2 仿真结果87 总结与致谢10参考文献:11附录1:总体原理图12附录2:实物图13附录2:源程序141课程设计目的温度控制在冶金、化工、建材、食品、机械、石油等工业中,具有不可或缺的作用。对于不同场所、不同工艺、所需温度高低范围不同、精度不同,则采用的测温元件、测温方法以及对温度的控制方法也将不同;产品工艺不同、控制温度的精度不同、时效不同,则对数据采集的精度和采用的控制算法也不同,所以,对温度的测控方法多种多样。随着电子技术和微型计算机的迅速发展,微机测量和控制技术也得到了迅速的发展和广泛的应用。利用微机对温度进行测控的技术,也便随之而生,并得到日益发展和完善,越来越显示出

3、其优越性。随着科技水平的不断提高,单片机给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。本设计即用单片机对温度进行实时检测与控制,通过数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机AT89S52,测温传感器使用DS18B20,用4位共阳极LED数码管以串口传送数据,实现温度显示,能准确达到设计要求。本温度计属于多功能温度计,功能较强,可以设置上下限

4、报警温度,且测量准确、误差小。当测量温度超过设定的温度上下限时,启动蜂鸣器和指示灯报警。2.课程设计任务与要求基本范围0-99;精度误差小于0.5;LED数码直读显示;实现声光报警;可以任意设定温度的上下限报警功能。3.设计方案与论证方案一,由于本设计是测温电路,根据设计要求可以使用热敏电阻之类的感温器件利用其感温效应,然后将随被测温度变化的电压或电流采集过来,经过A/D转换后,将数据传输到单片机进行数据的处理,然后在显示电路上显示,这样就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。方案二,在单片机电路设计中,大多都是使用传感器,这是非常容易想到利用数字温度传感器

5、,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,然后传输给单片机进行数据处理,就可以满足设计要求。从以上两种方案,很容易看出,采用方案二,电路设计比较简洁,软件设计也比较简单,故采用方案二。3.1 单片机的选择AT89S52单片机是一个低功耗,高性能CMOS 8位单片机,片内含8k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash

6、存储单元,片上Flash允许程序存储器在系统可编程,亦适于 常规编程器,在功能强大的微型计算机的AT89S52单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89S52引脚结构图如图3.1:图3.1 AT89S52结构图3.2 温度传感器的选择温度传感器的种类众多,在应用与高精度、高可靠性的场合时 DALLAS(达拉斯)公司生产的 DS18B20 温度传感器当仁不让。超小的体积,超低的硬件开消,抗干扰能力强,精度高,附加功能强,使得 DS18B20 更受欢迎。

7、DS18B20 的主要特征: 全数字温度转换及输出;最高 12 位分辨率,精度可达土 0.5摄氏度; 12 位分辨率时的最大工作周期为 750 毫秒;可选择寄生工作方式;检测温度范围为55C+125C (67F +257F); 内置 EEPROM,限温报警功能。用户可定义报警设置 ;64 位光刻 ROM,内置产品序列号,方便多机挂接;多样封装形式,适应不同硬件系统;独特的单线接口仅需要一个端口引脚进行通信;多个DS18B20 可以并联在惟一的三线上,实现多点组网功能;无须外部器件;可通过数据线供电,电压范围为3.05.5V;零待机功耗;温度以9 或12 位数字;报警搜索命令识别并标志超过程序限

8、定温度(温度报警条件)的器件3.3 显示模块选择数码管是一种半导体发光器件,其基本单元是发光二极管。 数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM

9、)的数码管。共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。4. 系统硬件电路设计4.1 系统整体电路图该系统电路主要包括:单片机最小系统、DS18B20温度传感器系统、报警系统、LED显示模块电路及电源接口和数据下载接口等电路,如图 4.1所示。图中有三个独立式按键可以分别调整温度计的上下限报警设置,图中蜂鸣器可以在被测温度不在上下限范围内时,发出报警鸣叫声音,同时LED数码管将没有被测温度值显示,这时可以调整报警上下限,从而测出被测的温度值。图中的按健复位电路是上电复位加手动复位,使用比较

10、方便,在程序跑飞时,可以手动复位,这样就不用在重起单片机电源,就可以实现复位。 图 4.1 系统整体电路图4.2 单片机最小系统最小系统包括晶振电路、复位电路、按键设置部分,AT89S52单片机最小系统的电路如图:4.2单片机AT89S52具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。 图 4.2 单片机最小系统电路4.3 报警电路设计报警电路中加一PNP三极管驱动,基极接单片机P11口,当端口变成低电平时,驱动三极管会导通,VCC电压加载到蜂鸣器使其发声、报警发光二极管亮,如图4.3图 4.3报警电路4.4

11、显示电路设计如图4.4,采用LG3641BH LED数码管显示电路采用4位共阳LED数码管从P14,P15,P16,P17串口输出段码。用PNP三极管进行驱动,当相应的端口变成低电平时,驱动相应的三极管会导通,驱动三极管给数码管相应的位供电,这时只要P0口送出数字的显示代码,数码管就能正常显示数字。图 4.4 数码管显示电路4.5电源电路设计我们选用的是串联起来的4节1.5v的5号电池,从经济的角度考虑的,干电池比较便宜,但其还有不足之处,干电池存储的是电量。随着电量的消耗,它的供电电压就会不断的下降,所有我们需要使用一个稳压器,来保证电源供给的是标准的5v电压。4节1.5v串联起来产生的和电

12、压最大是6v,而本文的AT89S52单片机工作电压的范围是4v5.5v,在该系统中我们使用的电压是5v。这时我们可以用LM7805稳压器来产生稳定的5v电压15。稳压电路如下图4.5所示: 图4.5 LM7805稳压电路在该电路中,C12是极性电容,起到稳压的作用,而C2是非极性电容,它起的作用是滤除输出电压中不是直流的成分,即滤波。LM7805稳压芯片的稳压压差为2V左右,在实际使用中容易出现电压过低的状态,此时提供的电源达不到系统的电源要求,会出现程序跑飞的现象,而另一款LM2904的稳压压差可以达到40mV,效果比LM7805好很多,但考虑到经济原因我们采用LM7805,只要在稳压前端提

13、供较大的电源供应即可。5. 系统软件设计系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,按键扫描。5.1主程序主程序的主要功能是负责读出并处理DS18B20的测量的当前温度值,温度的实时显示,并根据设置的上下限判断是否报警。系统开始运行时,温度传感器测量并计算温度值通过P1.0口传输进单片机里进行处理,经过处理后的数据再通过P0口传输到数码管进行显示。通过按键设置温度报警界限,当超过报警界限时单片机将相应的数据通过P1.1口传输进行声光报警。温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度。5.2读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节

14、,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。5.3温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。 5.4 计算温度子程序计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定。6. 仿真过程6.1仿真软件介绍本次仿真用了Proteus软件,Proteus(海神)的ISIS是一款Labcenter出品的电路分析实物仿真系统,可仿真各种电路和IC,并支持单片机,元件库齐全,使用方便,是不可多得的专业的单片机软件仿真系统。该软件的特点:(1)全部满足我

15、们提出的单片机软件仿真系统的标准,并在同类产品中具有明显的优势。(2)具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS一232动态仿真、1 C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。(3)目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。(4)支持大量的存储器和外围芯片。总之该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大 ,可仿真51、AVR、PIC。Proteus与其它单片机仿真软件

16、不同的是,它不仅能仿真单片机CPU的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。对于这样的仿真实验,从某种意义上讲,是弥补了实验和工程应用间脱节的矛盾和现象18。程序编译用Keil软件, Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。6.2 仿真结果将生成的cao.hex文件调入Proteus电路图的单片机中,点击图左下角的开始键运行,程序的开始界面如图6.

17、1,数码管显示“ ”。图6.1 仿真程序初始化程序初始化后通过调节DS18B20温度传感器的数值,数码管会显示相应的数值,例如10,其结果如图6.2所示。图6.2 仿真程序正常运行结果在设置系统报警温度上下限时,按下按键S1,数码管会显示“H38C”(系统默认上限为38),此时进入温度上限设置模式,可通过调节S2和S3分别增加和减小数码管上显示的数字,例如设置上限为39,如图6. 3所示。接着再次按下键S1,数码管会显示“L05C”(系统默认下限为5),此时进入温度下限设置模式,可通过调节S2和S3分别增加和减小数码管上显示的数字,例如设置下限为5,如图6.4所示。图6.3 仿真设置最高温度报

18、警线图6.4仿真设置温度报警最低线当温度超过设置的上下限时,系统会进行声光报警,蜂鸣器会发出“滴滴滴”蜂鸣声,同时LED灯会闪烁。7. 总结与致谢通过本次的课程设计,我学到了很多东西,同时在做的过程中也发现很多的问题,从最初的课题选择到对相关课题资料的搜集与摘选,再到自己的思路的设计、编写以致最后阶段的修改与完善。在这一过程中,我对我所学习的相关电子知识又有了更深一层的学习和理解,让我对自己所学的又有了更深的掌握。单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法。只有我们去试着做了,才能真正的掌握,只学习理论有些东西而不结合实践是很难理解的,更谈不上掌握。从这次的课程设计中,我真

19、正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。在此过程中,我也要感谢对我一直悉心指导和帮助的指导教师朱小会老师。正是在她不厌其烦的指导和讲解中,让我对我的课程设计思路逐渐清晰明朗,每当在我课程设计中遇到困难时总能迎刃而解,总之非常感谢她这段时间对我们的鼓励和指导。参考文献: 1 李朝青.单片机原理及接口技术(简明修订版).杭州:北京航空航天大学出版社,19982 李广弟.单片机基础.北京:北京航空航天大学出版社,19943 江力.单片机原理与应用技术 .清华大学出版

20、社 .20064 蔡美琴等MCS一51系列单片机系统及其应用M北京:高等教育出版社,19995 王树勋MCS一51单片微型计算机原理与开发北京:机械工业出版社,19956 何希才传感器及其应用电路北京:电子工业出版社,20017 刘迎春、叶湘滨传感器原理设计与应用(第三版) M长沙:国防科技大学出版社,19978 靳达.单片机应用系统开发实例导航.北京:人民邮电出版社,2003. 9 潘新民,王燕芳.微型计算机实用系统设计M.北京:人民邮电出版社,1992.10 胡汉才单片机原理及接口技术北京:清华大学出版社,199611 何力民MCS一51系列单片机应用系统设计北京:北京航空航天大学出版社,

21、199312 江晓安.等数字电子技术 . 编著. 西安电子科技大学出版社 .199313 阎石.数字电子技术基础(第三版). 北京:高等教育出版社,198914 廖常初.现场总线概述J.电工技术,1999.15 靳达.单片机典型模块设计实例导航.北京:人民邮电出版社,2003.16 王松武,于鑫,武思军.电子创新设计与实践.北京:国防工业出版社,2005附录1:总体原理图附录2:实物图附录2:源程序/*程序名称:DS18B20温度测量、报警系统简要说明:DS18B20温度计,温度测量范围099.9摄氏度 可设置上限报警温度、下限报警温度 即高于上限值或者低于下限值时蜂鸣器报警 默认上限报警温度

22、为38、默认下限报警温度为5 报警值可设置范围:最低上限报警值等于当前下限报警值 最高下限报警值等于当前上限报警值 将下限报警值调为0时为关闭下限报警功能 */#include #include DS18B20.h #define uint unsigned int#define uchar unsigned char /宏定义#define SET P3_1 /定义调整键#define DEC P3_2 /定义减少键#define ADD P3_3 /定义增加键#define BEEP P3_7 /定义蜂鸣器bit shanshuo_st; /闪烁间隔标志bit beep_st; /蜂鸣器间

23、隔标志sbit DIAN = P27; /小数点uchar x=0; /计数器signed char m; /温度值全局变量uchar n; /温度值全局变量uchar set_st=0; /状态标志signed char shangxian=38; /上限报警温度,默认值为38signed char xiaxian=5; /下限报警温度,默认值为5uchar code LEDData=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff;/*延时子程序*/void Delay(uint num) while( -num );/*初始化定

24、时器0*/void InitTimer(void) TMOD=0x1; TH0=0x3c; TL0=0xb0; /50ms(晶振12M)/*定时器0中断服务程序*/void timer0(void) interrupt 1 TH0=0x3c; TL0=0xb0; x+;/*外部中断0服务程序*/void int0(void) interrupt 0 EX0=0; /关外部中断0 if(DEC=0&set_st=1) shangxian-; if(shangxianxiaxian)shangxian=xiaxian; else if(DEC=0&set_st=2) xiaxian-; if(xi

25、axian99)shangxian=99; else if(ADD=0&set_st=2) xiaxian+; if(xiaxianshangxian)xiaxian=shangxian; /*读取温度*/void check_wendu(void) uint a,b,c; c=ReadTemperature()-5; /获取温度值并减去DS18B20的温漂误差 a=c/100; /计算得到十位数字 b=c/10-a*10; /计算得到个位数字 m=c/10; /计算得到整数位 n=c-a*100-b*10; /计算得到小数位 if(m99)m=99;n=9; /设置温度显示上限 /*显示开机

26、初始化等待画面*/Disp_init() P2 = 0xbf; /显示- P1 = 0xf7; Delay(200); P1 = 0xfb; Delay(200); P1 = 0xfd; Delay(200); P1 = 0xfe; Delay(200); P1 = 0xff; /关闭显示/*显示温度子程序*/Disp_Temperature() /显示温度 P2 =0xc6; /显示C P1 = 0xf7; Delay(300); P2 =LEDDatan; /显示个位 P1 = 0xfb; Delay(300); P2 =LEDDatam%10; /显示十位 DIAN = 0; /显示小数

27、点 P1 = 0xfd; Delay(300); P2 =LEDDatam/10; /显示百位 P1 = 0xfe; Delay(300); P1 = 0xff; /关闭显示/*显示报警温度子程序*/Disp_alarm(uchar baojing) P2 =0xc6; /显示C P1 = 0xf7; Delay(200); P2 =LEDDatabaojing%10; /显示十位 P1 = 0xfb; Delay(200); P2 =LEDDatabaojing/10; /显示百位 P1 = 0xfd; Delay(200); if(set_st=1)P2 =0x89; else if(set_st=2)P2 =0xc7; /上限H、下限L标示 P1 = 0xfe; Delay(200); P1 = 0xff; /关闭显示/*报警子程序*/void Alarm() if(x=10)beep_st=beep_st;x=0; if(m=shangxian&bee

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2