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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(温度检测显示报警报告.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

温度检测显示报警报告.docx

1、温度检测显示报警报告五邑大学单片机课程设计报告 题 目:温度检测显示报警 院 系 专 业 学 号 学生姓名 指导教师 一、设计任务与要求(1)设计任务基于AT89C51单片机设计温度检测报警,可以实时采集周围的温度信息进行显示,并且可以根据应用环境不同设定不同的报警上下限。(2) 设计要求1. 实时温度检测并显示其对应的值。2. 具有温度报警功能。3. 可以设报警置温度上下限。(3)实用价值与理论意义温度是一个十分重要的物理量,对它的测量与控制有十分重要的意义。随着现代工农业技术的发展及人们对生活环境要求的提高,人们也迫切需要检测与控制温度。在控制领域中,对温度的控制有着举足轻重的作用。例如陶

2、瓷的烧烤,只有控制住温度的适度,才能制作出一件完美的艺术品,否则只是一件废品;还有如酿酒的过程,也需要对温度进行控制。可见,在生活的许多方方面面都有着对温度进行感知和控制的需要。而本次设计的温度检测报警系统是在日常生活和工业应用非常广泛的工具,能实时采集周围的温度信息进行显示,程序内部设定有报警上下限,根据应用环境不同可设定不同的报警上下限。该系统实现了对温度的自动监测,为设备的正常运行提供了条件,在工业中具有一定的实用价值和广泛的应用前景。系统硬件设计二、系统电路图设计(1) 系统电路设计框图 AT89C51 单 片 机 3、设计方案原理通过温度传感器对空气进行温度采集,将采集到的温度信号传

3、输给单片机,再由单片机控制数码管显示,并比较采集温度大于设定的报警温度,若大于设定的的报警温度单片机就会驱动报警电路进行报警。温度报警装置主要单片机,时序电路,温度采样电路,报警电路,温度显示电路,电源输入电路,驱动电路等组成。DS18B20工作原理DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s 减为750ms。低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振 随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在55所对应的一个基数

4、值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重 新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即 为所测温度。报警原理报警控制电路由IO口控制PNP三级管驱动蜂鸣器发出声响,当温度大于20度是IO口将对PNP的基极产生一个低电平,此时PNP起开关作用闭合蜂鸣器发出声响。4、元器件清单AT89c51 1个排阻 R=10K 1个四段八位数码管 1个 共阴极温度传感器 DS18B20 1个电阻 R1=10K 1个 R2=1K

5、1个 R3=2K 1个 R4=200 1个三极管PNP 1个蜂鸣器 1个晶体振荡器 1个 11.0592MHZ电容 C1=33up C2=33up C3=10up开关 1个五、系统模块图(硬件设计)(1)AT89C52模块图 (2)温度传感器模块图 (3)蜂鸣器模块图 (4)共阴数码管模块图(5)单片机晶振模块图 (6)复位模块图 六、温度报警器PCB图七、程序设计见附录八、设计总结一开始按照电路图用面包板来连接电路的时候都连了三次才成功,第一次在三极管那里分不清楚基级,集电极和发射极而弄错;第二次是没有注意电容的正负极;直到第三次连接才真正的把电路图连接好。然后焊接完所有元器件,做成电路板后

6、,烧写程序进去了,只能显示,却不能正常报警,一开始我检查原件器,发现蜂鸣器模块上的PNP用错了,换回正确的来,还是不行,于是就检查程序,改了好几个地方,最后才发现是我自己的蜂鸣器坏了,换一个新的上去。最后再次检查元器件有没有问题,还有元器件有没有接错,最后成功了。做成功一个作品需要不断努力,不断尝试。多听取别人的意见和坚持,你就离成功不远了。九、参考文献孙涵芳单片机原理及应用【M】科学出版社,修订版;李朝青单片机原理及接口技术第三版,北京航空航天大学出版社附录:程序如下#include #define uchar unsigned char#define uint unsigned intsb

7、it DS=P34; /define interfacesbit fm=P10;uint temp; / variable of temperatureuchar flag1; / sign of the result positive or negativeunsigned char code table=0x5f,0x44,0x9d,0xd5,0xc6,0xd3,0xdb, / 0x45,0xdf,0xc7;unsigned char code table1=0x7f,0x64,0xbd,0xf5,0xe6,0xf3,0xfb, / 0x65,0xff,0xe7;void delay(ui

8、nt count) /delay uint i; while(count) i=200; while(i0) i-; count-; /功能:串口初始化,波特率9600,方式1/void Init_Com(void) TMOD = 0x20; PCON = 0x00; SCON = 0x50; TH1 = 0xFd; TL1 = 0xFd; TR1 = 1;void dsreset(void) /send reset and initialization command uint i; DS=0; i=103; while(i0)i-; DS=1; i=4; while(i0)i-;bit t

9、mpreadbit(void) /read a bit uint i; bit dat; DS=0;i+; /i+ for delay DS=1;i+;i+; dat=DS; i=8;while(i0)i-; return (dat);uchar tmpread(void) /read a byte date uchar i,j,dat; dat=0; for(i=1;i=8;i+) j=tmpreadbit(); dat=(j1); /读出的数据最低位在最前面,这样刚好一个字节在DAT里 return(dat);void tmpwritebyte(uchar dat) /write a by

10、te to ds18b20 uint i; uchar j; bit testb; for(j=1;j1; if(testb) /write 1 DS=0; i+;i+; DS=1; i=8;while(i0)i-; else DS=0; /write 0 i=8;while(i0)i-; DS=1; i+;i+; void tmpchange(void) /DS18B20 begin change dsreset(); delay(1); tmpwritebyte(0xcc); / address all drivers on bus tmpwritebyte(0x44); / initia

11、tes a single temperature conversionuint tmp() /get the temperature float tt; uchar a,b; dsreset(); delay(1); tmpwritebyte(0xcc); tmpwritebyte(0xbe); a=tmpread(); b=tmpread(); temp=b; temp0;a-) for(b=60;b0;b-); void display(uint temp) /显示程序 uchar A1,A2,A2t,A3,ser; /ser=temp/10; /SBUF=ser; if (temp250|temp0;a-) display(tmp(); while(1);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1