基于 DS18B20 数字温度计设计(共18页)_第1页
基于 DS18B20 数字温度计设计(共18页)_第2页
基于 DS18B20 数字温度计设计(共18页)_第3页
基于 DS18B20 数字温度计设计(共18页)_第4页
基于 DS18B20 数字温度计设计(共18页)_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 测控(c kn)技术与仪器 专业(zhuny)测控系统原理(yunl)与设计课程设计任务书淮阴工学院电子与电气工程学院 2014年6月 测控(c kn)系统原理与设计课程设计课题(kt):基于(jy) DS18B20 数字温度计设计 班级 学号 学生姓名 专业 测控技术与仪器 系别 测控系 指导教师 杨银贤 李 华 淮阴工学院电子与电气工程学院2014年6月 目录(ml)1 概述(i sh)1.1 课程设计的意义(yy)1.2 设计的任务和要求2 系统总体方案及硬件设计2.1 数字温度计设计方案论证2.2 系统总体设计2.3 系统模块2.3.1 主控制器2.3.2 显示电路2.3.3 温度传

2、感器2.3.4 报警温度调整按键3 系统软件算法分析3.1 主程序流程图3.2 读出温度子程序3.3 温度转换命令子程序3.4 计算温度子程序3.5 显示数据刷新子程序3.6 按键扫描处理子程序4 实验仿真5 总结与体会查考文献附 1 源程序代码1 概述(i sh)1.1 课程设计的意义(yy) 单片机是随着超大规模集成电路技术的发展而诞生的,由于它具有体积小、功能强、性价比高等特点,所以广泛应用于电子仪表、家用电器(ji yn din q)、节能装置、军事装置、机器人、工业控制等诸多领域,使产品小型化、智能化,既提高了产品的功能和质量,又降低了成本,简化了设计。本设计主要利用单片机和LCD液

3、晶显示屏设计一个数字显示的温度计。选题的意义在于通过这次设计可以将平时在课堂上学到的关于单片机的知识应用与实践中,而且更加深入的认识到单片机在现代生活和生产中的重要性。1.2 设计的任务和要求1、基本范围0-1002、精度误差小于 0.53、LED 数码直读显示2 系统总体方案及硬件设计2.1 数字温度计设计方案论证考虑到用温度传感器, 在单片机电路设计中, 大多都是使用传感器, 所以可以采用一只温度传感器 DS18B20, 此传感器, 可以很容易直接读取被测温度值, 进行转换, 电路简单, 精度高, 软硬件都以实现, 而且使用单片机的接口便于系统的再扩展,满足设计要求。2.2 系统总体设计温

4、度计电路设计总体设计方框图如图 1 所示, 控制器采用单片机 AT89S51, 温度传感器采用 DS18B20,用 3 位 LED 数码管以串口传送数据实现温度显示。图 2.21 总体设计方框图图 2.2 2 系统(xtng)仿真图2.3 系统(xtng)模块 系统(xtng)由单片机最小系统、显示电路、按键、温度传感器等组成。2.3.1 主控制器 单片机 AT89S51 具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统(xtng)的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。晶振采用(ciyng) 12MHZ。复位(f wi)电路采用上电加按钮复位。图 2

5、.3.11 晶振电路图 2.3.12 复位电路 显示电路采用 4 位共阴极 LED 数码管, P0 口由上拉电阻提高驱动能力, 作为段码输出并作为数码管的驱动。P2 口的低四位作为数码管的位选端。采用动态扫描的方式显示。图 2.3.2 数码管显示电路2.3.3 温度传感器DS18B20 的性能特点(tdin)如下:1、独特的单线接口仅需要(xyo)一个端口引脚进行通信;2、多个(du ) DS18B20 可以并联在惟一的三线上,实现多点组网功能3、无须外部器件;4、可通过数据线供电,电压范围为 3.05.5;5、零待机功耗;6、温度以或位数字;7、用户可定义报警设置;8、报警搜索命令识别并标志

6、超过程序限定温度(温度报警条件)的器件;9、负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;DS18B20 可以采用两种方式供电, 一种是采用电源供电方式, 此时 DS18B20 的 1 脚接地,2 脚作为信号线,3 脚接电源。 另一种是寄生电源供电方式,如图 4 所示单片机端口接单线总线,为保证在有效的 DS18B20 时钟周期内提供足够的电流,可用一个 MOSFET 管来完成对总线的上拉。当 DS18B20 处于写存储器操作和温度 A/D 转换操作时, 总线上必须有强的上拉, 上拉开启时间最大为 10us。采用寄生电源供电方式时 VDD 端接地。由于单线制只有一根线,因

7、此发送接口必须是三态的。图 2.3.3 温度传感器与单片机的连接3 系统软件算法分析系统程序主要包括主程序, 读出温度子程序,温度转换命令子程序, 计算温度子程序,显示数据刷新子程序,按键扫描处理子程序等。3.1 主程序流程图主程序的主要功能是负责温度的实时显示、 读出并处理 DS18B20 的测量的当前温度值,温度测量每 1s 进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图 3.1 所示。3.2 读出温度(wnd)子程序读出温度(wnd)子程序的主要功能是读出 RAM 中的 9 字节(z ji),在读出时需进行 CRC 校验,校验有错时不进行温度数据的改写。其程序流程图如图 3

8、.2 示3.3 温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令, 当采用 12 位分辨率时转换时间约为750ms, 在本程序设计中采用 1s 显示程序延时法等待转换的完成。 温度转换命令子程序流程图如上图,图 3.3 所示 3.4 计算(j sun)温度子程序 计算(j sun)温度子程序将 RAM 中读取值进行(jnxng) BCD 码的转换运算,并进行温度值正负的判定,其程序流程图如图 3.4 所示。3.5 显示数据刷新子程序 显示数据刷新子程序主要是对 分离后的温度显示数据进行刷新操作,当标志位位为 1时将符号显示位移入第一位。程序流程图如图 3.5 。3.6 按键(n j

9、in)扫描处理子程序 按键采用扫描(somio)查询方式, 设置(shzh)标志位, 当标志位为 1 时, 显示设置温度, 否则显示当前温度。如下图 3.6 示。4 实验仿真进入 protuse 后,连接好电路,并将程序下载进去。将 DS18B20 的改为 0.1,数码管显示温度与传感器的温度相同。图 41 温度显示仿真当按下 SET 键一次时, 进入温度报警上线调节, 此时显示软件设置的温度报警上线, 按 ADD或 DEC 分别对报警温度进行加一或减一。当再次(zi c)按下 SET 键时, 进入温度(wnd)报警下线调节, 此时(c sh)显示软件设置的温度报警下线, ADD或 DEC 分

10、别对报警温度进行加一或减一。图 42 温度调试仿真当第三次按下 SET 键时,退出温度报警线设置。显示当前温度。5 总结与体会 随着科学技术的发展和现代工业技术的需要,测温技术也不断地改进和提高。由于测温范围越来越广,根据不同的要求,又制造出不同需要的测温器。在测控系统技术的课程设计中,查资料是做课程设计的前期准备工作,好的开端就相当于成功了一半,因此资料是否全面、可靠,关系到整个设计的进程。非常感谢百度、图书馆等给了我一个庞大的资料库。通过上面的过程,我积累了不少资料,对所做的题目也大概有了一些了解,综合已有的资料来更透彻的分析题目。仔细研究这个题目在哪些方面是还没有完全发挥潜力的,然后确定

11、一个具体的方向,那么就可以在这方面去研究了。 最后,有了研究方向,就应该动手实现了。在自己不断的错误和摸索下找到了一定的方法。终于做完了,有种如释重负的感觉。我通过查阅大量有关资料,与同学交流经验和自学,并向老师请教等方式,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。在整个项目开发过程中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。而且大大提高了动手的能力,使我充分体会到了在创造过程中的探索的艰难和成功的喜悦。虽然这个项目还不是很完美,但是在设计过程中所学到的东西是这次课程设计的最大收获和财富。查考(chko)文

12、献【1】马忠梅,张凯,等. 单片机的 C 语言应用(yngyng)程序设计(第四版) 北京航空航天大学出版社【2】薛庆军,张秀娟,等.单片机原理实验(shyn)教程 北京航天航空大学出版社【3】廖常初.现场总线概述J.电工技术,1999.附 1 源程序代码/DS18B20 的读写程序,数据脚 P2.7 / 温度传感器 18B20 汇编程序,采用器件默认的 12 位转化 / 最大转化时间 750 微秒,显示温度-55 到+125 度,显示精度 / 为 0.1 度,显示采用 4 位 LED 共阳显示测温值 /P0 口为段码输入,P34P37 为位选 /*/#include reg51.h#incl

13、ude intrins.h /_nop_();延时函数用#define dm P0 /段码输出口#define uchar unsigned char#define uint unsigned intsbit DQ=P27; /温度输入口sbit w0=P20; /数码管 4sbit w1=P21; /数码管 3sbit w2=P22; /数码管 2sbit w3=P23; /数码管 1sbit beep=P17; /蜂鸣器和指示灯sbit set=P26; /温度设置切换键sbit add=P24; /温度加sbit dec=P25; /温度减int temp1=0; /显示当前温度和设置温

14、度的标志位为 0 时显示当前温度uint h;uint temp;uchar r;uchar high=35,low=20;uchar sign;uchar q=0;uchar tt=0;uchar scale;/*温度(wnd)小数部分用查表法*/uchar code ditab16=0 x00,0 x01,0 x01,0 x02,0 x03,0 x03,0 x04,0 x04,0 x05,0 x06,0 x06,0 x07,0 x08,0 x08,0 x09,0 x09;/小数(xiosh)断码表uchar code table_dm12=0 x3f,0 x06,0 x5b,0 x4f,0

15、 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x00,0 x40;/ 共阴 LED 段码表 0 1 2 3 4 5 6 7 8 9 不亮 -uchar table_dm1=0 xbf,0 x86,0 xdb,0 xcf,0 xe6,0 xed,0 xfd,0 x87,0 xff,0 xef; /个位(gwi)带小数点的断码表uchar data temp_data2=0 x00,0 x00; /读出温度暂放uchar data display5=0 x00,0 x00,0 x00,0 x00,0 x00; /显示单元数据,共 4 个数据和一个运算暂用/*11us 延

16、时函数*/void delay(uint t)for (;t0;t-);void scan()int j;for(j=0;j0;i-)DQ=1;_nop_();_nop_(); /从高拉倒低DQ=0;_nop_();_nop_();_nop_();_nop_(); /5 usDQ=val&0 x01; /最低位移出delay(6); /66 usval=val/2; /右移 1 位DQ=1;delay(1);/*DS18B20 读 1 字节函数*/ 从总线上取 1 个字节uchar read_byte(void)uchar i;uchar value=0;for(i=8;i0;i-)DQ=1;

17、_nop_();_nop_();value=1;DQ=0;_nop_();_nop_();_nop_();_nop_(); /4 usDQ=1;_nop_();_nop_();_nop_();_nop_(); /4 usif(DQ)value|=0 x80;delay(6); /66 usDQ=1;return(value);/*读出温度(wnd)函数*/read_temp()ow_reset(); /总线(zn xin)复位delay(200);write_byte(0 xcc); /发命令(mng lng)write_byte(0 x44); /发转换命令ow_reset();delay(

18、1);write_byte(0 xcc); /发命令write_byte(0 xbe);temp_data0=read_byte(); /读温度值的第字节temp_data1=read_byte(); /读温度值的高字节temp=temp_data1;temp6348) / 温度值正负判断tem=65536-tem;n=1; / 负温度求补码,标志位置 1display4=tem&0 x0f; / 取小数部分的值display0=ditabdisplay4; / 存入小数部分显示值display4=tem4; / 取中间八位,即整数部分的值display3=display4/100; / 取百

19、位数据暂存display1=display4%100; / 取后两位数据暂存display2=display1/10; / 取十位数据暂存display1=display1%10; /个位数据r=display1+display2*10+display3*100;/ 符号位显示判断/if(!display3)display3=0 x0a; /最高位为 0 时不显示if(!display2)display2=0 x0a; /次高位为 0 时不显示if(n)display3=0 x0b; /负温度时最高位显示(xinsh)-void BEEP()if(r=high&r129)|r128)horl=

20、256-horl;n=1;display3=horl/100;display3=display3&0 x0f;display2=horl%100/10;display1=horl%10;display0=0;if(!display3)display3=0 x0a; /最高位为 0 时不显示(xinsh)if(!display2)display2=0 x0a; /次高位为 0 时不显示if(n)display3=0 x0b; /负温度时最高位显示-/*按键查询程序*/void keyscan()int temp1; /最高温度和最低温度标志位if(set=0)while(1)delay(500);/消抖if

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论