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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数字温度计.docx

1、数字温度计电子技术综合设计总结报告设计题目: 数字温度计 数字温度计设计任务与要求1、基本范围-201252、精度误差小于0.5,并且还可以通过需要来调整分辨率3、LED 数码直读显示4、可以任意设定温度的上下限报警功能.方案比较与选择单片机芯片的选取:方案一.采用89C51芯片作为硬件核心,利用Flash ROM,内部具有4KB ROM 存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术, 当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。方案二:采用AT89

2、C51单片机与MCS-51系列单片机相比有两大优势:第一,片内程序存储器采用闪存,使程序的写入更加方便;第二,提供了更小尺寸的芯片,使整个硬件电路的体积更小,且管脚数目为20个,与MCS-51相比减少一倍,使理解更容易。综上所述:本课设中单片机芯片采用AT89C51。 温度传感器的选取: 方案一:采用热敏电阻传感器。利用热敏电阻随温度变化而显著变化,能直接将温度的变化转换为能量的变化,进而制成温度计。但是其测温传感器比较复杂,而且不易通过编制程序来控制测温精度,增大系统设计的难度。方案二 直接使用数字温度传感器来测温,可以使用“一线总线”数字化温度传感器DS18B20。此传感器可以直接读取被测

3、温度值,只需进行简单转换,就可以得到所测环境的温度值。显示电路采用串口移位静态显示方式,采用串入并出移位芯片74LS164和数码管来实现温度的显示。 方案三: 采用DS18B20温度传感器。DS18B20的内部3脚(或8脚)封装;使用特有的温度测量技术,将被测温度转换成数值信号;3.05.5V的电源供电方式和寄生电源供电方式;ROM由64位二进制数字组成,共分为8个字节;RAM由9个字节的高速暂存器和非易失性电擦写ROM组成。综上所述:温度传感器选取智能测温器件DS18B20。本设计显示电路采用1602液晶显示模块芯片。3系统最终设计方案:综上各方案所述,对此次课设的方案选定: 采用AT89C

4、51作为主控制系统; 1602液晶显示模块芯片作为温度数据显示装置;而智能温度传感器DS18B20器件作为测温电路主要组成部分。至此,系统最终方案确定。电路设计温度计电路设计总体设计方框图如图所示,控制器采用单片机AT89C51,温度传感器采用DS18B20,用1602液晶显示屏以串口传送数据实现温度显示。1硬件电路框图: 图总体设计方框图2硬件电路概述:系统由单片机最小系统、显示电路、按键、温度传感器等组成。本电路是由AT89C2051单片机为控制核心,具有与MCS-51系列单片机完全兼容,程序加密等功能,带2KB字节可编程闪存,工作电压范围为2.76V,全静态工作频率为024MHZ;显示电

5、路由1602液晶显示模块芯片,可以进行多行显示;温度报警按键设为五个,可以显示华氏温度,调节高低报警温度;温度传感器电路主要由DS18B20测温器件构成,该器件主要功能有:采用单总线技术;每只DS18B20具有一个独立的不可修改的64位序列号;低压供电,电源范围为35V;测温范围为-20+125,误差为0.5;复位电路是10K电阻构成的上电自动复位。3.主控电路AT89C51晶振电路 复位电路4显示电路 本设计显示电路采用1602液晶显示模块芯片,该芯片可现实16x2个字符,比以前的七段数码管LED显示器在显示字符的数量上要多得多。另外,由于1602芯片编程比较简单,界面直观,因此更加易于使用

6、者的操作和观测。1602A芯片的接口信号说明如下表:1602A芯片的接口信号说明液晶显示电路5报警温度调节电路本系统一共设置了五个按键,k1键只是显示华氏温度,k4键按下不松开显示高低报警温度,松开后恢复显示正常温度,k2键和k3键是分别用来调节高低报警温度,k键控制调节时的上调或下调。具体调节如将高温报警温度调高,第一步将k4键按下不松,k键升起位置,调节k2键,则高温报警温度向上增加,反之亦然。低温报警同理。图 报警点调节电路6温度传感器及DS18B20测温原理DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读

7、出被测温度,并且可根据实际要求通过简单的编程实现9-12位的数字值读数方式。DS18B20的性能特点如下:(1)独特的单线接口仅需要一个端口引脚进行通信,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。(2)DS18B20支持多点组网功能,多个DS18B20可以并联在惟一的三线上,实现多点组网测温;(3)无须外部器件,全部传感元件及转换电路集成在形如一只三极管的集成电路内;(4)可通过数据线供电,电压范围为3.0-5.5;(5)零待机功耗;(6)温度以9或12位数字,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温;(

8、7)用户可定义报警设置;(8)报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;(9)负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;(10)测量结果直接输出数字温度信号,以一线总线串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力DS18B20采用3脚PR35封装或8脚SOIC封装,其引脚排列及内部结构框图如图及测温原理图如下所示:图 引脚排列图 内部结构框图图 DS18B20测温原理图64位ROM的结构开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行

9、通信的原因。温度报警触发器TH和TL,可通过软件写入户报警上下限。DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为8字节的存储器,结构如图4所示。头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图5所示。低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户不要去改动

10、,R1和R0决定温度转换的精度位数,来设置分辨率。温度 LSB温度 MSBTH用户字节1TL用户字节2配置寄存器保留保留保留CRCTMR1R011111图5 DS18B20的字节定义 DS18B20的分辨率定义如表1所示表1 分辨率设置表R0R1分辨率最大温度转移时间009位96.75ms0110位187.5ms1011位375ms1112位750ms由表1可见,DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。主机控制DS18B20完成温度转换过程是:每一次读写之前都要对DS18B20进行复位,即将数据总线下拉5

11、00us,然后释放,DS18B20收到信号后等待16-60us左右,之后发出60-240us的存在低脉冲,主CPU收到此此信号表示复位成功;复位成功后发送一条ROM指令,然后发送RAM指令,这样才能对DS18B20进行预订的读写操作。表2 ROM指令集指令约定代码功能读ROM33H读DS18B20中的编码符合ROM55H发出此命令后,接着发出64位ROM编码,访问单线总线上与该编辑相对应的DS18B20使之做出响应,为下一步对该DS18B20的读写作准备搜索ROM0F0H用于确定挂接在同一总线上的DS18B20个数和识别64位ROM地址,为操作各器件作准备跳过ROM0CCH忽略64位ROM地址

12、,直接向DS18B20发送温度变换指令告警搜索命令0ECH执行后,只有温度跳过设定值上限或下限的片子才能做出反应表3 RAM指令集指令约定代码功能温度转换44H启动DS18B20进行温度转换读暂存器0BEH读暂存器9个字节内容写暂存器4EH将数据写入暂存器的TH、TL字节复制暂存器48H把暂存器的TH、TL字节写到E2RAM中重调E2RAM0B8H把E2RAM中的TH、TL字节写到暂存器TH、TL字节读供电方式0B4H启动DS18B20发送电源供电方式的信号给主CPUDS18B20的测温原理是这这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;

13、高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将最低温所对应的一个基数分别置入减法计数器1、温度寄存器中,计数器1和温度寄存器被预置在最低温所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到0

14、时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。测温电路6.系统总原理图程序设计#include#include /shiyongyanshi#include #define uchar unsigned char#define uint unsigned intsbit DQ=P33;sbit RS =P20;sbit RW =P21;sbit EN =P22;sbit k=P10;sbit k1=P14;sbit k2=P15;sbit k3=P16;sbit k4=P17

15、;sbit led_red=P25;sbit led_blue=P26;sbit BEEP=P37;uchar bz=1;/BEEP=0;uchar ng=0; /fuhaobiaoshiwei uchar TempBuffer =TEMP: ;int temp_value; /温度值 uchar code dis_title=-current temp-; void xianshi_huashi();uchar gw=40;char dw= 10;uchar xianshi_title= TEMP ALARM ;uchar xianshi_baojing=HI: LO: ; /345 10

16、12/-延时- void delayxus(uint x) uchar i; while(x-) for(i=0;i200;i+); /*LCD 控制*/读lcd 状态uchar read_lcd_state() uchar state ; RS=0;RW=1;EN=1;delayxus(1);state=P0;EN=0;delayxus(1); return state; / 忙等待void lcd_busy_wait() while(read_lcd_state()&0x80)=0x80); delayxus(5);/向LCD写数据 void write_lcd_data(uchar da

17、t) lcd_busy_wait(); RS=1;RW=0;EN=0;P0=dat;EN=1;delayxus(1);EN=0; /向LCD写指令 void write_lcd_cmd(uchar cmd) lcd_busy_wait(); RS=0;RW=0;EN=0;P0=cmd;EN=1;delayxus(1);EN=0; /-/LCD初始化void init_lcd() write_lcd_cmd(0x38); delayxus(1); write_lcd_cmd(0x01) ; delayxus(1); write_lcd_cmd(0x06); delayxus(1); write_

18、lcd_cmd(0x0C) ; delayxus(1); /- /设置液晶显示位置 void set_lcd_pos(uchar p) write_lcd_cmd(p| 0x80); /- /在LCD上显示字符串 void dis_lcd_string(uchar p,uchar *s) /位置,字符指针 uchar i; set_lcd_pos(p); for(i=0;i16;i+) /16*2 write_lcd_data(si) ; delayxus(1); /- void delay_18B20(unsigned int i) while(i-);/-蜂鸣器- void beep()

19、uchar i; for(i=0;i0;i-) DQ = 0; / 给脉冲信号 dat=1; DQ = 1; / 给脉冲信号 if(DQ) dat|=0x80; delay_18B20(4); return(dat);/*ds18b20写一个字节*/ void WriteOneChar(uchar dat) unsigned char i=0; for (i=8; i0; i-) DQ = 0; DQ = dat&0x01; delay_18B20(5); DQ = 1; dat=1; /*读取ds18b20当前温度*/void ReadTemp(void) unsigned char a=0

20、; unsigned char b=0; unsigned char t=0; Init_DS18B20(); WriteOneChar(0xCC); / 跳过读序号列号的操作 WriteOneChar(0x44); / 启动温度转换 delay_18B20(100); / this message is wery important Init_DS18B20(); WriteOneChar(0xCC); /跳过读序号列号的操作 WriteOneChar(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度 delay_18B20(100); a=ReadOneChar();

21、/读取温度值低位 aaaaaaaaaaaaaaaaaaaa b=ReadOneChar(); /读取温度值高位 bbbbbbbbbb b.a temp_value= b4; void temp_to_str() /温度数据转换成液晶字符显示 if(temp_value & 0xE0)=0xE0) temp_value =temp_value +1 ; ng=1; else ng=0; if(k1=0) /while(k1=0); bz=(bz+1) %2; if(bz=0) temp_value =(int)(temp_value )*(9.0/5.0)+32; if(ng=1) TempBu

22、ffer9=temp_value/100+0; if(TempBuffer9= ) TempBuffer9=-; TempBuffer10=temp_value%100/10+0; /十位 TempBuffer11=temp_value%10+0; /个位 TempBuffer12=0xdf; /温度符号 TempBuffer13=C; TempBuffer14=0; /TempBuffer1=ng %10+ 0; if(ng=0) TempBuffer9=temp_value/100+0; if(temp_value/100=0) TempBuffer9 = ; TempBuffer10=t

23、emp_value % 100/10+0; /十位 if(temp_value % 100/10=0) TempBuffer10 = ; TempBuffer11=temp_value%10+0; /个位 / if(temp_value%10=0) TempBuffer11 = ; TempBuffer13=C; /温度符号 if(bz=0) TempBuffer13=F; TempBuffer14=0; /TempBuffer1=ng%10+0; void Delay1ms(unsigned int count) unsigned int i,j; for(i=0;icount;i+) fo

24、r(j=0;j0;delay-) for(i=0;i=0) xianshi_baojing3=gw/100+0; xianshi_baojing4=gw%100/10+0; xianshi_baojing5=gw%10+0; xianshi_baojing10=dw/100+0; xianshi_baojing11=dw%100/10+0; xianshi_baojing12=dw%10+0; dis_lcd_string(0x00,xianshi_title); dis_lcd_string(0x40,xianshi_baojing); else if(dw0) xianshi_baojing3=gw/100+0; xianshi_baojing4=gw%100/10+0; xianshi_baojing5=gw%10+0; xianshi_baojing10= -; xianshi_baojing11=abs(dw)%100/10+0; xianshi_baojing12=abs(dw)%10+0; dis_lcd_string(0x00,xianshi_ti

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

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