欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    温度测量设计报告.docx

    • 资源ID:17750115       资源大小:100.28KB        全文页数:27页
    • 资源格式: DOCX        下载积分:6金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要6金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    温度测量设计报告.docx

    1、温度测量设计报告 摘要随着技术的进步,单片机在电子产品中的应用已经越来越广泛,并且在很多电子产品中也将其用到温度检测和温度控制。本次设计是一个基于AT89C51单片机的测温系统,该系统使用了美国DALLAS公司生产的DS18B20作为温度传感器,利用液晶12864进行显示,使用键盘进行上下限报警温度的设置,实现了最简单的温度检测系统。该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。关键词: 单片机 DS18B20 温度传感器 目录1课程设计意义-2方案论证-1.1方案1- 1.2方案2-3单片机温度控制系统总体设计及原理-2.1系统的主要功能-2.2系统的工作

    2、原理-2.3系统的总原理图-2.3系统的主要技术指标-4温度控制系统的硬件设计-3.1温度采集模块电路-3.11 数字温度传感器18B20的工作原理-3.12数字温度传感器18B20的工作电路- 3.2显示电路-3.3控制电路-3.4报警电路-5温度控制系统的软件设计-4.1主程序流程图-4.2读出温度子程序-4.3温度转换命令子程序-4.4计算温度子程序-4.5显示子程序-4.51显示当前温度子程序-4.52显示上下限温度子程序-4.6键盘扫描控制子程序-6总结与体会-7致谢-8参考文献-附:总程序1课程设计意义本次课程设计是在我们学过单片机后的一次实习,可增加我们的动手能力。特别是对单片机

    3、的系统设计有很大帮助。本课程设计由一个人完成,在锻炼了自己的同时也增强了自己的独立科学创新的精神。2方案论证 2.1方案一由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,其中还涉及到电阻与温度的对应值的计算,感温电路比较麻烦。而且在对采集的信号进行放大时容易受温度的影响出现较大的偏差。2.2 方案二 进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18

    4、B20,此传感器,可以很容易直接读取被测温度值,进行转换,电路简单,精度高,软硬件都以实现,而且使用单片机的接口便于系统的再扩展,满足设计要求。从以上两种方案,很容易看出,采用方案二,电路比较简单,费用较低,可靠性高,软件设计也比较简单,故采用了方案二。3单片机温度控制系统总体设计及原理3.1系统的主要功能控制器采用单片机AT89C51,温度传感器采用DS18B20,用3位LED液晶12864以并口传送数据实现温度显示,增加四个独立键盘调节温度上下限,报警采用蜂鸣器。3.2系统的工作原理 3.3系统的总原理图3.4系统的主要技术指标1、基本测温范围55C +125C (67F +257F)。2

    5、、测温精度误差小于0.5C。 3、三位LED液晶12864温度显示范围0C +125C。4、上下限报警温度显示精度为1C。3温度控制系统的硬件设计3.1温度采集模块电路3.11 数字温度传感器18B20的工作原理1.DS18B20的主要特性(1)电压范围:3.05.5V(2)独特的单线接口方式。(3)DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内(4)温范围55125,在-10+85时精度为0.5(5)可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温(6)测量结果直接输出数字温度信号,

    6、以一线总线串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力2. DS18B20的外形和内部结构DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。 3 高速暂存存储器高速暂存存储器由9个字节组成,其分配如表5所示。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后。4.DS18B20暂存寄存器分布寄存器内容字节地址温度值低位 (LS Byte)0温度值高位 (MS Byte)1高温限值(TH)2低温限值(TL)3

    7、配置寄存器4保留5保留6保留7CRC校验值8ROM指令表指 令约定代码功 能读ROM33H读DS1820温度传感器ROM中的编码(即64位地址)符合 ROM55H发出此命令之后,接着发出 64 位 ROM 编码,访问单总线上与该编码相对应的 DS1820 使之作出响应,为下一步对该 DS1820 的读写作准备。搜索 ROM0FOH用于确定挂接在同一总线上 DS1820 的个数和识别 64 位 ROM 地址。为操作各器件作好准备。跳过 ROM0CCH忽略 64 位 ROM 地址,直接向 DS1820 发温度变换命令。适用于单片工作。告警搜索命令0ECH执行后只有温度超过设定值上限或下限的片子才做

    8、出响应。表6: RAM指令表指 令约定代码功 能温度变换44H启动DS1820进行温度转换,12位转换时最长为750ms(9位为93.75ms)。结果存入内部9字节RAM中。读暂存器0BEH读内部RAM中9字节的内容写暂存器4EH发出向内部RAM的3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据。复制暂存器48H将RAM中第3 、4字节的内容复制到EEPROM中。重调 EEPROM0B8H将EEPROM中内容恢复到RAM中的第3 、4字节。读供电方式0B4H读DS1820的供电模式。寄生供电时DS1820发送“ 0 ”,外接电源供电 DS1820发送“ 1 ”。3.12数字

    9、温度传感器18B20的工作电路在总图中,由DS18B20,电阻组成,DS18B20的1引脚接地,2引脚通过电阻接VCC,3引脚与P3.2相连。3.2显示电路在总图中,通过三个液晶12864进行温度显示,为了节约I/0端口,利用锁存器进行片选,锁存器的输入端数据来自P0口。3.3控制电路在总图中,由四个独立键盘进行上下限温度的控制,键3按下一次显示上限温度,再按下一次显示当前温度;键4按下一次显示下限温度,再按一次显示当前温度;在键3按下的前提下,键1按下表示上限温度加1,键2按下表示下限温度减1;在键4按下的前提下,键1按下表示上限温度加1,键2按下表示下限温度减13.4报警电路在总图中,在利

    10、用蜂鸣器报警,输入引脚为P2.3,低电平时蜂鸣器叫,且LED闪烁。4温度控制系统的软件设计4.1主程序流程图中断服务程序流程图主程序流程图4.2读出温度子程序uint get_temp() /读取寄存器中存储的温度数据 uchar a,b;/uint temp;float f_temp; dsreset(); delay(1); tempwritebyte(0xcc); tempwritebyte(0xbe); a=tempread(); /读低8位 b=tempread(); /读高8位 temp=b; temp=8; /两个字节组合为1个字 temp=temp|a; f_temp=temp

    11、*0.0625; /温度在寄存器中为12位 分辨率位0.0625 temp=f_temp*10+0.5; /乘以10表示小数点后面只取1位,加0.5是四舍五入 f_temp=f_temp+0.05; return temp; /temp是整型4.3温度转换命令子程序void tempchange(void) / dsreset(); delay(1); tempwritebyte(0xcc); / 写跳过读ROM指令 tempwritebyte(0x44); / 写温度转换指令4.4计算温度子程序uint get_temp() /读取寄存器中存储的温度数据 uchar a,b;float f_

    12、temp; dsreset(); delay(1); tempwritebyte(0xcc);/向DS18B20写入一个字节的函数 tempwritebyte(0xbe); a=tempread(); /读低8位 b=tempread(); /读高8位 temp=b; temp=8; /两个字节组合为1个字 temp=temp|a; f_temp=temp*0.0625; /温度在寄存器中为12位 分辨率位0.0625 temp=f_temp*10+0.5; /乘以10表示小数点后面只取1位,加0.5是四舍五入 f_temp=f_temp+0.05; return temp; /temp是整型

    13、4.5显示子程序显示当前温度和上下限温度的显示函数之所以不同是因为当前温度值精确到0.5摄氏度,而上下限温度精确到1度。4.51显示当前温度子程序void display(uchar num,uchar dat) uchar i; dula=0; P0=tabledat; dula=1; dula=0; P1=0XFF; wela=0; i=0XFF; i=i&(0X01)(num); P0=i;void dis_tempnow(uint t) uchar i; i=t/100; display(0,i); delay(6); i=t%100/10; display(1,i+10);delay

    14、(6); i=t%100%10; display(2,i); delay(4);4.52显示上下限温度子程序void display(uchar num,uchar dat) uchar i; dula=0; P0=tabledat; dula=1; dula=0; P1=0XFF; wela=0; i=0XFF; i=i&(0X01)(num); P0=i;void dis_temp(uchar t) uchar i; i=t/100; display(0,i); delay(6); i=t%100/10; display(1,i); delay(6); i=t%100%10; displa

    15、y(2,i); delay(4);4.6键盘扫描控制子程序void keyscan() if(key3=0) delay(10); if(key3=0) flag=!(flag); while(!key3); if(key4=0) delay(10); if(key4=0) set=!(set); while(!key4); if(key1=0) delay(10); if(key1=0)&(flag=0) high+; if(key1=0)&(set=0) low+; while(!key1); if(key2=0) delay(10); if(key2=0)&(flag=0) high-;

    16、 if(key2=0)&(set=0) low-; while(!key2); 6总结与体会在这次设计中,我学会了很多东西,例如如何使用数字温度传感器,如何进行液晶12864扫描,以及键盘扫描。在设计的过程中,尤其是编程时,我也走了很多弯路,例如,在设置预报警温度时,我曾试图从DS18B20中的九字节RAM中读取和写入上下限温度,但效果不好且不稳定,后来上网查并咨询老师,才了解到这种方法并不适用。 所以,有时候遇到问题也应及时与别人交流,这样才能少走弯路,提高效率。7致谢谢谢在这次实训中无私提供帮助的各位老师以及提供好的想法的同学们。8参考文献【1】数字电子技术基础,阎石主编【2】郭天祥视屏教

    17、程【3】马忠梅,张凯,等. 单片机的C语言应用程序设计(第四版) 北京航空航天大学出版社 附:总程序#include#define uchar unsigned char#define uint unsigned intuchar m;sbit lcdrs=P10;sbit lcdrw=P11;sbit lcden=P12;sbit buzzer=P34;sbit p07=P07;sbit p00=P00;sbit p01=P01;sbit p02=P02;sbit p03=P03;uchar code t0=wendu : ;uchar code t1=h: l: ;uchar code w

    18、endu=0123456789- ; /利用一个温度表解决温度显示乱码char i=15,j=0;uchar code duan=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/此数组为 ! 19 !uchar code wei=0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07;/温度传感器定义sbit DQ = P33;/定义ds18B20总线IOvoid delay1(int z)int x,y;for(x=10;x0;x-)for(y=z;y0;y-);void jianp()if(p00=0)delay

    19、1(5);if(p00=0)while(p00=0);i+;if(p01=0)delay1(5);if(p01=0)while(p01=0);i-;if(p02=0)delay1(5);if(p02=0)while(p02=0);j+;if(p03=0)delay1(5);if(p03=0)while(p03=0);j-;/#液晶显示模块#/void delay(uchar z)uchar x,y;for(x=1000;x1;x-)for(y=z;y1;y-);void write_com(uchar com)lcdrs=0;P2=com;delay(5);lcden=1;delay(5);l

    20、cden=0;void write_date(uchar date)lcdrs=1;P2=date;delay(5);lcden=1;delay(5);lcden=0;void init_lcd()lcden=0;lcdrw=0;write_com(0x38);write_com(0x01);write_com(0x0c);write_com(0x06);write_com(0x80);for(m=0;m16;m+)write_date(t0m);delay(0);write_com(0x80+0x40);for(m=0;m0;i-)DQ = 0; / 给脉冲信号dat=1;DQ = 1; / 给脉冲信号if(DQ)dat|=0x80;tmpDelay(4);return(dat);/*/void WriteOneChar(unsigned char dat)/写一个字节unsigned char i=0;for (m=8; m0; m-)DQ = 0;DQ = dat&0x01;tmpDelay


    注意事项

    本文(温度测量设计报告.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


    收起
    展开