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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数字温度计带温度报警.docx

1、数字温度计带温度报警系统功能要求1.能够监测电脑工作温度,并实时显示;2.可以根据需要设定温控范围;3.根据传感器传输的数据实时启动制冷芯片的工作;4.电脑工作温度降到正常工作范围后停止制冷。2.功能分析及主要元器件确定从系统功能要求可知, 此系统的难度不大, 系统主要任务可以归纳为几项: 实时温度检测内容显示,按键设置,制冷单元启动。下面针对各项功能进行分析设计并选定主要元器件。1.单片机选择本设计是一个电脑用只能降温系统, 系统运行环境较好,有交流电源,没有强电磁干扰,系统功能对单片机性能要求不高,常见单片机 AT89C51/52即可满足要求。2.制冷功能设计利用温度传感器输出信号作为制冷

2、模块的控制信号, 当环境温度超出预设温度上限时启动制冷模块,实现对环境温度的控制。3.温度检测功能设计温度检测的原理有模拟检测和精密数字检测。 家庭环境温度适宜且范围较窄,采用数字温度传感器更适合。精密数字温度传感器也有多种型号,常用的 DS18B20数字温度传感器,采用一线总线,且在一线总线上可以挂接多个传感器, 能检测-55+ 125C范围内温度,在-1085C范围内检测精度 0.5 C。因而采用 DS18B20数字温度传感器。3.主要元器件性能介绍1.AT89C51单片机AT89C51提供以下标准功能:4k字节Flash闪速存储器,128字节内部RAM 32个I/O口线,两个16位定时/

3、计数器,一个5向量两级中断结构, 一个全双工串行通信口, 片内振荡器及时钟电路。同时, AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电 工作模式。空闲方式停止 CPU的工作,但允许 RAM定时/计数器,串行通信口及中断系统 继续工作。掉电方式保存 RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下 一个硬件复位。VCCp 慎 0/ twoPi.PO. 2/MD2)Pl), J;代D計 PH/(AMIPX 5/ (AD?) Pft b; (AIM I Fi/(.wnFa/vppmuECU知 MSffl I AT89C5I的创出排的2.DS18B20数字温度传感器1)

4、主要特性一线总线,只需要一线与 MCU!信。一线总线上可挂接多个芯片构成分布式温度传感器网络。每个芯片都有一个唯一的 64位序列号,挂接在一线上的多个芯片依据序列号区别。 检测温度范围-55+ 125C,在-1085C范围内检测精度 0.5 C。温度转换分辨率 9位到12位可编程。12位分辨率A/D转换时间最大750ms。待机模式0功率消耗。电源电压3.05.5v2)DS18B2C引脚布置如图5所示,各引脚功能名称如下DQ: 一线通信线,用于数据输入和输出。Vcc :电源电压。GND电源地。表5 DS18B20的引脚图3)温度检测DS18B20的核心功能是直接到数字的温度传感器, 通过向DS1

5、8B20发送转换命令44H,开始一次温度转换,转换需要一定时间才能完成 ,转换时间的长度与转换分辨率有关。 DS18B20的转换分辨率可配置为 912位,默认值为12位,不同的分辨率对应的转换时间不同。配 置寄存器的结构如图 6所示,分辨率的位数由R1和R0的组合决定,其余为无关位,分辨率 位数及其对应转换时间如表 7所示,通过向 DS18B20发送设置命令4EH,可以设置配置寄存器中R1与R0的值,选择不同的分辨率。0R1R011111表6分辨率配置寄存器结构R1R0分辨率/位最大装换时间/ms00993.750110187.510113751112750表7分辨率与转换时间温度转换结果的数

6、字值,以 2字节长度存放在 DS18B20的暂存器第一、第二字节内,以 12位分辨率为例。其结构如图8所示。温度值以补码形式存放, 寄存器第二字节为温度值的高字节,高字节的高 5位S表示符号位。S=0表明温度为正值,此时实际温度值就是寄存器的数据值。S=1表明温度为负值,此时实际温度值的绝对值为: 按位取反+1.寄存器低字节(第一字节)的低4位,表示温度的小数位。分辨率不同,温度转换时小数位包含的有意义位数 不同,9位分辨率小数位只有 2的负一次位有意义, 其余位为0,精确到0.5C, 12位分辨率 小数位4位都有意义,精确到 0.0625C.两个字节中的26-20表示温度的整数部分。由 两字

7、节二进制计算温度值的示例如表 9所示SSSSS64321684210.50.21/81/156图8温度数据寄存器结构二进制数字值十六进制数字温度值0000 0111 1101 000007D0H+ 125C=111 1101.00000000 0101 0101 00000550D+85C=101 0101.00000000 0001 1001 00010191H+25.0625C=001 1001.00010000 0000 1010 001000A2H+ 10.125C=000 1010.00100000 0000 0000 10000008H+0.5C=000 0000.10000000

8、 0000 0000 00000000H0C=000 0000.00001111 1111 1111 1000FFF8H-0.5C=-000 0000.10001111 1111 0101 1110FF5EH-10.125C=-000 1010.00101111 1110 0110 1111FF6FH-25.0625C=-001 1001.00011111 1100 1001 0000FC90H-55C=-011 0111.0000表9温度值的计算示例通过向DS18B20发送读温度命令BEH,可以读取这两字节的温度值,读取时先读取的一字 节为低字节。4)操作命令通过一线总线访问DS18B20勺

9、协议包括:初始化、ROM操作命令、内存RAM操乍 命令。1) 初始化:在对 DS18B20进行任何操作之前,必须首先初始化 DS18B20初始化序列包括一个发送到DS18B20的复位信号和紧跟着由 DS18B20返回的应答信号,表明芯片已准备好接 受或发送数据。如果单片机没有接收到来自 DS18B20的应答,则不能进行对DS18B20下一步操作。2) ROM操作命令:DS18B20内部有64位8字节ROM记录着每个 DS18B20芯片全球唯一的序列号,依据序列号,就可以对挂接在一线总线山的多个 DS18B20进行区分。针对64位ROM的操作命令有 5个。读ROM命令 33H:为区分挂接在一线总

10、线上的多个 DS18B2Q必须预先知道每个芯片的各自序列号。通过发送读 ROM命令,DS18B20返回64位序列号。在读取序列号时,一线总线上只能有一个 DS18B20匹配ROM命令55H:在对同一总线上多个DS18B20的某个特定进行 RAM操作时,必须首先发送该芯片的 64位序列号,只有序列号完全一致的芯片才能接受后续的 RAM操作。应用此命令时首先发送匹配命令, 接着发送特定的4位序列号。跳过 ROM命令CCH:当一线总线上只有一个 DS18B20时,由于不可能产生混淆就没有必要再发送匹配 ROM命令,为省时就发送一个跳过序列号匹配命令。 当总线挂接多个芯片,不能跳过序列号匹配过程,即必

11、须先选择特定的芯片。搜索ROM命令F0H:此命令搜索总线上挂接芯片的数量并获取各个芯片的序列号。当总线 上只有一个芯片时,用读 ROM命令来获取其64位序列号,当总线上有多个芯片时,必须用搜索命令。但此命令的执行过程非常繁琐,最好应用读 ROM命令分别读取序列号。3)RAM操作指令DS18B20内部有9字节暂存器RAM记录着当前转换的温度值,对芯片的配置设置等内容, 如表10为暂存器分布结构。其中重要的第一字节和第二字节,存放转换的温度值,第三、 四、五存放用户对芯片的设置值。针对 RAM的操作命令有6个,其中重要的有 3个。写暂存器命令4EH:该命令用来写用户的配置参数到 DS18B20中,

12、用户配置参数为3字节,执行此命令时必须完整写入 3字节内容。字节序号内容0温度值低字节1温度值高字节2TH/用户字节13TL/用户字节24配置5保留6保留7保留8CRC校验值表10暂存器分布结构读暂存器命令BEH:读命令用来读取温度值,温度值存放在 2字节内存中,读取时第一次读取的是温度低字节,第二次读取的是温度高字节。也可以连续读出暂存器的所有 9字节,通常,只读出存放温度值的头两字节。温度转换命令44H:转换命令用来启动一次温度转换,将当前的物理温度转换位数字值。根据配置的分辨率不用, 转换一次所需要的转换时间不同, 在读取温度钱,要等待本次温度转换结束,才能读出正确的当前温度值。 因此在

13、编程时,要首先调用温度转换命令启动温度转换,然后延时相应于分辨率的转换时间再来读温度值。3.制冷芯片热电制冷又称温差电制冷, 由于目前热电制冷采用的材料都是半导体材料, 因此热电制 冷也被称为半导体制冷。它是塞贝克效应的逆效应帕尔帖效应在制冷技术方面的应用, 是- 种新型制冷方式。如图1所示,其原理是通过半导体材料的温差效应, 使直流电通过由两种不 同半导体材料串联成的电偶时,在电偶对的两端将吸收或放出热量。 如果在放热 端安装散热装置,吸热端就能通过热量输送制成简单方便的新型制冷器; 当改变直流电方向时,又能达到制热的效果。热电制冷系统仅包括冷端、热端、电源、 电路等,即它不需要制冷剂。其次

14、其工质是在固体中传导的电子,无工质泄漏, 且无机械运动,无噪声,体积小,可靠性强。半导体制冷片热惯性非常小,制冷 制热时间很快,在热端散热良好冷端空载的情况下,通电不到一分钟,制 冷片就能达到最大温差。第三,其冷量调节范围宽,冷热转换快。因此,在某些 地方,有着压缩式制冷机无法替代的作用。 第四,半导体制冷片是电流换能型片 件,通过输入电流的控制,可实现高精度的温度控制,再加上温度检测和控制手 段,很容易实现遥控、程控、计算机控制,便于组成自动控制系统。第五,半导 体制冷片的单个制冷元件对的功率很小, 但组合成电堆,用同类型的电堆串、并 联的方法组合成制冷系统的话,功率就可以做的很大,因此制冷

15、功率可以做到几 毫瓦到上万瓦的范围。目前,半导体热电堆制冷、发电技术已经在国防、医疗、 科研、通讯、航海、农业、动力以及工业生产等各领域得到了广泛的应用。在日 常生活方面也应用于空调、冷热两用箱、饮水机、电子信箱等。在实验室装置方 面应用于冷阱、冷箱、冷槽、电子低温测试装置、各种恒温、高低温实验仪片。 在医疗方面应用于冷力、冷合、白内障摘除片、血液分析仪等。在军事方面应用 于导弹、雷达、潜艇等方面的红外线探测、导航系统。在专用装置方面:石油产 品低温测试仪、生化产品低温测试仪、细菌培养箱、恒温显影槽、电脑等。但是, 由于半导体材料,电源和热端散热等方面的影响,热电制冷与常规的压缩制冷相 比,仍

16、然存在着制冷效率低等问题。4.硬件设计依据以上主要元件原理,以及各元件对数据总线,I/O 口、外部中断、内存 等资源的占用,合理分配资源。原理图见附录一。五,程序设计所有的程序都已在keil系统中编写,调试编写,调试通过,利用开发板将 程序下载到AT89C5仲,经过电路板的运行,证明系统能够运行并能实现预期的 功能。(程序见附录二)参考文献:1模拟电子技术基础,童诗白,华成英著,北京:高等教育出版社, 2000年;2C程序设计,谭浩强著,北京:清华大学出版社,2005年;3数字电子技术基础,阎石著,北京:高等教育出版社,2005年;4电子电路设计,刘征宇著,福建:福建科学技术出版社, 2004

17、年;5单片机C语言入门,孙春亮著,北京:人民邮电出版社,2008年;6单片机原理及应用,李建忠著,西安:西安电子科技大学,2002 年;7Keil Cx51 V7.0 单片机高级语言编程与uVision2应用实践徐爱钧彭 秀华编著,北京:电子工业出版社,2006年;附录一:k4-1r-TTB00Sik F3 ; ra =I I k-U - r L- 附录二:#i nclude #defi ne uint un sig ned int #defi ne uchar un sig ned char #defi ne SET P3_1 #defi ne DEC P3_2#defi ne ADD P3

18、_3#defi ne BEEP P3_6 #defi ne ALAM P1_2 #defi ne DQ P3_7 bit sha nshuo_st;bit beep_st; sbit DIAN = P0A5; ucharx=0;sig ned char m;uchar n;uchar set_st=0;sig ned char sha ngxia n=38; sig ned char xiaxia n=5;/宏定义/定义调整键/定义减少键/定义增加键/定义蜂鸣器/定义灯光报警/定义 DS18B20总线I/O/闪烁间隔标志/蜂鸣器间隔标志小数点/计数器/温度值全局变量/温度值全局变量/状态标志/

19、上限报警温度,默认值为 38下限报警温度,默认值为 38code/uchar code LEDData=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff; ucharLEDData=0x5F,0x44,0x9D,0xD5,0xC6,0xD3,0xDB,0x47,0xDF,0xD7,0xCF,0xDA,0x9B,0xDC,0x9B,0x8B;/=DS18B20=/= /* 延时子程序*/void Delay_DS18B20(i nt num)while( num-);/* 初始化 DS18B20*/void In it_DS18B20(

20、void)un sig ned char x=0;DQ = 1; /DQ 复位Delay_DS18B20(8); / 稍做延时DQ = 0; /单片机将DQ拉低Delay_DS18B20(80); / 精确延时,大于 480usDQ = 1; /拉高总线Delay_DS18B20(14);x=1则初始化失败x = DQ; 稍做延时后,如果 x=0则初始化成功,Delay_DS18B20(20);/* 读 个字节 */ un sig ned char Read On eChar(void) un sig ned char i=0;un sig ned char dat = 0;for (i=8;

21、i0;i-)DQ = 0; /给脉冲信号dat=1;DQ = 1; /给脉冲信号if(DQ)dat|=0x80;Delay_DS18B20(4);return(dat);/* 写. 个字节 */ void Write On eChar( un sig ned char dat) un sig ned char i=0;for (i=8; i0; i-)DQ = 0;DQ = dat&0x01;Delay_DS18B20(5);DQ = 1;dat=1;/*读取温度*/un sig ned int ReadTemperature(void)un sig ned char a=0;un sig n

22、ed char b=0;un sig ned int t=0;float tt=0;In it_DS18B20();WriteO neChar(OxCC); /跳过读序号列号的操作Write On eChar(0x44); / 启动温度转换In it_DS18B20();WriteO neChar(OxCC); /跳过读序号列号的操作Write On eChar(OxBE); /读取温度寄存器a=ReadOneChar(); 读低 8 位b=ReadOneChar(); /读高 8 位t=b;t=8;t=t|a;tt=t*0.0625;t= tt*10+0.5; /放大10倍输出并四舍五入re

23、turn(t);/=/=/=/* 延时子程序*/void Delay( uint num)while( -num );/*初始化定时器 0*/void Ini tTimer(void)TMOD=0x1;TH0=0x3c;TL0=0xb0; /50ms (晶振 12M)/*读取温度*/void check_we ndu(void)uint a,b,c;c=ReadTemperature()-5;a=c/100;b=c/10-a*10;m=c/10;n=c-a*100-b*10;if(m99)m=99; n=9;/*显示开机初始化等待画面 */void Dispn it(void)P0 = 0x8

24、0; /刚开机时数码管显示 P2 = 0x7F;Delay(500);P2 = 0xDF;Delay(500);P2 = 0xF7;Delay(500);P2 = 0xFD;Delay(500);P2 = 0xFF; /关闭显示/*显示温度子程序*/void Disp_Temperature(void) 显示温度P0 = 0x98; /显示 CP2 = 0x7F;Delay(300);P2 = 0xFF;P0=LEDData n;/显示个位P2 = 0xDF;Delay(300);P2 = 0xFF;P0 =LEDDatam%10;显示十位DIAN = 0;/显示小数点P2 = 0xF7;De

25、lay(300);P2 = 0xFF;P0 =LEDDatam/10;/显示百位P2 = 0xFD;Delay(300);P2 = 0xFF;/关闭显示/*显示报警温度子程序*/void Disp_alarm(uchar baoj ing)P0 =0x98; /显示 CP2 = 0x7F;Delay(300);P2 = 0xFF;P0 =LEDDatabaoji ng%10; / 显示十位P2 = OxDF;Delay(300);P2 = 0xFF;P0 =LEDDatabaoji ng/1O; / 显示百位P2 = 0xF7;Delay(300);P2 = 0xFF;if(set_st=1)

26、P0 =0xCE;else if(set_st=2)P0 =0x1 A; / 上限 H、下限 L 标示P2 = 0xFD;Delay(300);关闭显示P2 = 0xff;/* 扌报警子程序 */ void Alarm() if(x=10)beep_st=beep_st;x=0;if(m=sha ngxia n&beep_st=1)|(mxiaxia n&beep_st=1) else void mai n(void)uint 乙In itTimer(); /初始化定时器EA=1; /全局中断开关TR0=1;ET0=1; /开启定时器0IT0=1;IT 仁1;check_we ndu(); 检测温度check_we ndu();for(z=0;z2)set_st=0;if(set_st=0)EXO=O; /关闭外部中断0EX仁0; /关闭外部中断1check_we ndu();Disp_Temperature(); /显示温度Alarm(); 报警检测else if(set_st=1)BEEP=1; II关闭蜂鸣器ALAM=1;EX0=1; II开启外部中断 0EX1=1; II开启外部中断1if(x

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

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