基于DSB的数字温度计设计.pdf

上传人:1398****507 文档编号:78045952 上传时间:2023-03-17 格式:PDF 页数:19 大小:889.86KB
返回 下载 相关 举报
基于DSB的数字温度计设计.pdf_第1页
第1页 / 共19页
基于DSB的数字温度计设计.pdf_第2页
第2页 / 共19页
点击查看更多>>
资源描述

《基于DSB的数字温度计设计.pdf》由会员分享,可在线阅读,更多相关《基于DSB的数字温度计设计.pdf(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 基于 DSB 的数字温度计设计 2 作者:日期:个人收集整理 勿做商业用途 3 目录 第 1 章 单片机控制步进电机的现实意义 错误!未定义书签。第章 总体方案设计.错误!未定义书签。2 1D120 的工作原理.错误!未定义书签。22T9C1 的优点 错误!未定义书签。第 3 章 硬件局部设计.5.硬件设计思路 错误!未定义书签。.2 温度传感器电路 错误!未定义书签。3.温度显示电路 错误!未定义书签。3.复位电路设计 错误!未定义书签。第 4 章 软件电路设计.错误!未定义书签。4.1 主程序 错误!未定义书签。4.2 读出温度子程序 错误!未定义书签。3 温度转换命令子程序.错误!未定

2、义书签。4.计算温度子程序.45 显示数据刷新子程序.错误!未定义书签。第 5 章 系统所运用的功能介绍 错误!未定义书签。51 系统的调试及性能分析.错误!未定义书签。5.2 测试结果.错误!未定义书签。心得体会.错误!未定义书签。致谢.错误!未定义书签。附件 错误!未定义书签。个人收集整理 勿做商业用途 4 第 1 章基于 DS18B20 数字温度计的设计课题介绍 本设计是一款简单实用的小型数字温度计,所采用的主要元件有传感器S18B0,单片机AT89C1,四位共阴极数码管一个,电容电阻假设干。S1820 支持“一线总线接口,测量温度范围-55C+25C。在-10+85C 范围内,精度为0

3、5C。DS18B0的精度较差为 2C。现场温度直接以“一线总线的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。本次数字温度计的设计共分为五局部,主控制器,ED 显示局部,传感器局部,复位局部,时钟电路。主控制器即单片机局部,用于存储程序和控制电路;LED 显示局部是指四位共阳极数码管,用来显示温度;传感器局部,即温度传感器,用来采集温度,进展温度转换;复位局部,即复位电路。测量的总过程是,传感器采集到外部环境的温度,并进展转换后传到单片机,经过单片机处理判断后将温度传递到数码管显示。本设计能完成的温度测量范围是-55C

4、+18C,由于能力有限,不能实现报警功能。第2章总体方案 2.1 S18B20的工作原理 DS8B温度传感器是美国 DLAS 半导体公司最新推出的一种改良型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现 91位的数字值读数方式 2 AT8C51的优点 A8C51 单片机。很明显可以看出方案二只用到一个芯片,元器件数量少,接线简单,易对端口进展操作,尤其是编程涉及到的变量少,不易出错。个人收集整理 勿做商业用途 5 第章 硬件局部设计 3硬件设计思路 按照系统设计功能的要求,确定系统由个模块组成:主控制器、测温电路和显示电路。数字温度计

5、总体电路构造框图所示:3.温度传感器电路 S18B2温度传感器是美国 DALLAS 半导体公司最新推出的一种改良型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现 912 位的数字值读数方式,现场温度直接以“一线总线的数字方式传输,大大提高了系统的抗干扰性。AT89C51 主 显 示 扫 描个人收集整理 勿做商业用途 6 :3.3 温度显示电路 个人收集整理 勿做商业用途 7 四位共阳极数码管,能够显示小数和负温度。零下时,第一个数码管显示负号。当温度超过 99.9时,四个数码管全部亮。列扫描用 P3.0P33 口来实现,驱动方式采用串

6、联电阻直接驱动。3.复位电路设计 单片机系统的复位电路在这里采用的是开机复位电路形式,其中电阻 R 采用.8K的阻值,电容采用电容值为 10F 的电解电容,系统开机自动复位,不能中途用按键进展复位。个人收集整理 勿做商业用途 8 3.5 系统总电路图如下:个人收集整理 勿做商业用途 9 第四章:软件的设计 主要包括主程序、读出温度子程序、温度转换命令子程序、计算温度子程序和现实数据刷新子程序等。主程序 主程序的主要功能是负责温度的实时显示、读出并处理DS8B20 的测量温度值。温度测量每 1S 进展一次。主流程图如下:调用显初1sN Y 初次读出温度发温度转换个人收集整理 勿做商业用途 10

7、.2读出温度子程序 读出温度子程序的主要功能是读出R中的9字节。在读出时须进展CRC 校验,校验有错时不进展温度数据的改写。流程图如下:.温度转换命令子程序 温度转换命令子程序主要是发温度转换开场命令。当采用12位分辨率时,转换时间约为75s。在本程序设计中,采用s显示程序延时法等待转换的完成。流程图如下:发 DS18B20 复发 跳 过发读取温读取操作,9 字节CRC校移 入 温完N N Y Y 发DS18B20发 跳 过发温度转换完个人收集整理 勿做商业用途 11 4计算温度子程序 计算温度子程序将 RA中读取值进展CD 码的转换运算,并进展温度值正负的判定。4.5显示数据刷新子程序 显示

8、数据刷新子程序主要是对显示缓冲器中的显示数据进展刷新操作,当最高数据显示位为时,将符号显示位移入下一位。开温度温度值取补码置“-标志 计 算 小 数 位计算整数位温完置“+N Y 个人收集整理 勿做商业用途 12 第五章:系统所运用的功能介绍:DS18B20 与单片机之间采用串行通信的方式进展数据读写.1 系统的调试及性能分析:硬件调试比拟简单,首先焊接是否正确,然后可用万用表测试或通电检测。软件调试可以先编写显示程序并进展硬件的正确性检验,然后分别进展主程序、读出温度子程序、温度转换命令子程序、计算温度子程序和现实数据刷新子程序等的编程及调试 由于18B20 与单片机采用串行数据传送,因此,

9、对 DS18B20 进展读/写编程时必须严格地保证读写时序;否那么将无法读取测量结果。本程序采用单片机 C 语言编写用 Kel C3 编译器编程调试。并且应用 PROTUES进展电路的仿真及C班的设计布线。软件调试到能显示温度值,并且在有温度变化时显示温度能改变,就根本完成。性能测试可用制作的温度机和已有的成品温度计同时进展测量比拟。由于 DS18B20 的精度很高,所以误差指标可以限制在 0.5以内。另外,-55125的测温范围使得该温度计完全适合一般的应用场合,其低电压供电特性可做成用电池供电的手持温度计。5.2测试结果 在 Prote中通过调节 D10 的温度示数加减,LD 会自动显示当

10、前DS18B20 温度示数,但有延时(系统程序中设定)温度数据移入十 位百 位十 位 数百 位 数完个人收集整理 勿做商业用途 13 心得体会 通过本次数字电子的课程设计加强了我们动手,思考,解决问题的能力。此外培养了我们当代大学生所缺失的一种认真细致,思维严谨的科学精神。耐心,沉稳,细致,可谓是实验者必备的一种素质,缺一不可。在连接线路的过程中只要一不留神就会接错管脚,导致整个实验的失败,花费过多的时间来寻找错误不如当初就多细心找一个比拟完美的方案。这是所谓的欲速那么不达,事半功倍。本次的课程设计使我们进一步稳固了书本上的知识,做到了学以致用。这是我们第二次自己动手设计的电路,通过系统仿真软

11、件protues 和编译软件 kei,使我们进一步了解了单片机的设计制作过程,其中最为困难的是软件局部,即编程局部,我们上网找了好多资料,虽然经过自己的修改,但还是有很多功能不能实现,如温度上下限设置。由于 protues 并不是很熟练,在使用的过程中有很多原件的名称不知道,从而花费了大量的时间在网上查找,今后应该在这方面多多努力。最后一步的焊接硬件也遇到了不少麻烦,P0 端口没有加上拉电阻,P1 端口加三极管驱动导致数码管不亮。总结经历的时候我们得出这样的结论,学习应该学以致用,有目的的去学习,如果学了不用等于没学。其次,要学以致用,理论联系实际,这样才会取得事半功倍的效果。个人收集整理 勿

12、做商业用途 14 致谢 经过两个多星期的努力,我们顺利把实验要求做出来了。虽然整个过程很艰辛,从刚开场的半知不懂,一步不懂解决一步,总结缺乏得出改善;但最终我得到的是满满的收获。有时候理论明明已经完全应用实际就是会出问题,但是我没有放弃。因为教师说过理论与实践相差非常大,实际要考虑的问题远远比理论的多的多。所以我不断地查资料、不断地调试;最后终于成功了。这让我深刻体会到有付出才有回报过程是有些许曲折。感谢这次电子课程设计,让我所学的理论知识不再只是纸上谈兵。我相信只要不放弃,不抛弃,勇于思考,迎难而上,拥有发现问题独立解决问题的能力,在以后任何一件事上都能单挡独挑。着重感谢教师的细心指导,耐心

13、指教,及时排忧解难;也同样感谢本组其他每个成员的大力支持和帮助,团结的力量使得难题变得容易攻破,因为众多的智慧组成的合力是不可估量的超能量,每个组员都是解决问题的强者;让我深刻认识到团结合作的重要性,以后也会一直把它当做珍贵财富。个人收集整理 勿做商业用途 15 附件:程序如下:/使用T9C205单片机,12MHZ 晶振,用共阳 LD 数码管/P1 口输出段码,P3 口扫描/ra src(:aa.sm#incud reg51h ind intrins./_nop_;延时函数用#dene Disdat P1 /段码输出口#de disan P /扫描口#deine uchar unsigned

14、char#define unt unsigne nt bi DQ=P7;/温度输入口 bit IN=17;LED 小数点控制 ui h;/*温度小数局部用查表法*/uchar cde ditab160 x0,0 x01,0 x01,0 x02,0 x03,0 x03,0 x04,0 x04,0 x0,0 x06,0 x06,0 x07,0 x0,0 x0,0,0 x;ucar c ds_72=0 x3F,0 x6,05B,04,6,0 x6D,0 x7D,0 x07,0 x7,6F,x0,040;/*共阳E段码表 1 2 3 4 5 6 7 8 9 不亮-/chr ce scacn=f,xfd

15、,xfb,0 xf7;/列扫描控制字 uchar daa temp_dat2 0 x0,0 x00;/读出温度暂放 uca dta dipa5=0 x0,x00,x0,0 x0,0 x00;/显示单元数据,共 4个数据,一个运算暂存用/*11 微秒延时函数*/oid dely(uint t)fr;t;t-);*显示扫描函数*/san()个人收集整理 勿做商业用途 16 char k;fo(k=0;4;k+)/四位 LED 扫描控制 Ddaa=is_displyk;f(=1)DN1;icaan_cnk;del(90;discan0 xff;/*1B0 复位函数*w_reset(oid)chr r

16、esnce=1;while(presence)while(pesece D=1;np();(;D=0;/ey(5);/50us DQ=;/delay(6;/6s presenc=DQ;/presence=0 继续下一步 deay45;/延时 500s psnce=DQ;DQ=;*18B20 写命令函数*/向 1-IRE 总线上写一个字节 void rte_bye(char val ucha i;fr(i=8;i0;-/DQ=;no);_nop_();个人收集整理 勿做商业用途 17 DQ=0;_no_(;_nop_(;_p_();nop_();_nop_();/5us DQ=val0 x01;

17、/最低位移出 da(6;/66u val=vl/2;/右移一位 DQ=1;elay1;/*8B20 读 1 个字节函数*/从总线上读取一个字节 uhar redbytevid uchar;ucar value 0;for(i=;i0;i-D=;n_();_op_(;value=1;DQ=;/_np(;_p();_nop_();nop();/4s D=1;_n_();_np_();no(;_nop_();/us i(Q)vaue|=0 x80;de(6);/66s Q=;rern(alue);/*读出温度函数*/rea_e(ow_rese;/总线复位 wyte(0 xCC);/发 Skip RO

18、命令 writebyte(xB;/发读命令 temp_0=read_byte;/温度低 8 位 tep_dta1=rea_byte(;/温度高 8 位 ow_rset(;个人收集整理 勿做商业用途 18 we_byte(xCC);/Ski RO wri_byte(x4;/发转换命令 /*温度数据处理函数*/worm(uchr n=0;/i(p_data17 ifem_data!=0 x00)tempdaa1=(55-emp_ata);te_dat=(256t_dat0);=1;/负温度求补码 ele emdata1(26tmp_data;=1;/负温度求补码 slay4=tmp_da0&;is

19、ply0=diabisply4;diplay4(temp_dat0&0 x0)4)|(mpdat1&0 xf)4);/displa=dp4/100;disply1=dispy4%100;ipla2=displa1/0;dsply1ispay%1;if(!spl3)displa3=0 x0A;f(!dsplay2isplay2=xA;/最高位为时都不显示 i(ndispy3=0 x0B;/负温度时最高位显示-*主函数*/man()Dsdat=0 xff;/初始化端口 dsca0f;foh=0;h4;+display=8;/开机显示 8888 owe(;/开机先转换一次 rte_be0 xCC;/Skip R write_yte(x44);/发转换命令 for(h0;00;h+c();/开机显示888秒 个人收集整理 勿做商业用途 19 whi()read_tep();/读出 12温度数据 wkemp(;/处理温度数据 or(=0;h00;h+)scn);/显示温度值 2 秒

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 解决方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁