《DS18B20数字温度计的设计毕业设计.doc》由会员分享,可在线阅读,更多相关《DS18B20数字温度计的设计毕业设计.doc(16页珍藏版)》请在三一办公上搜索。
1、辽 宁 工 业 大 学 单片机原理与接口技术 课程设计(论文)题目: DS18B20数字温度计的设计 院(系): 电气工程学院专业班级:自动化073 学 号: 070302078 学生姓名: 王金玉 指导教师: 赵越岭 教师职称: 教 授 起止时间:2010-07-01至2010-07-10第1章 DS18B20数字温度计的设计概述本课程的课程设计实际是测控技术及仪器专业学生学习完单片机与接口技术课程后,进行的一次全面的综合训练,其目的在于加深对单片机、单片机最小系统和单片机接口技术的认识、理解和应用,掌握单片机的应用技术。随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领
2、域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的数字温度计,本温度计属于多功能温度计,可以设置上下报警温度,当温度不在设置范围内时,可以报警。随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单
3、片机AT89S51,测温传感器使用DS18B20,用4位共阳极LED数码管以串口传送数据,实现温度显示,能准确达到以上要求。通过DS18B20集成数字温度传感器检测室内温度,将温度值送交LED数码管显示。它包括温度检测、显示等功能。数字温度计除了能显示环境温度之外,经扩展加热,制冷控制电路,还可以扩展成为温度报警器或温度控制器。应用前景广阔。第2章 课程设计方案论证2.1 系统设计方案论证考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以可以采用一只温度传感器DS18B20,该传感器可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。2.2 系统组成总体结构为完成上述系统
4、功能,控制器采用单片机AT89S51,温度传感器采用DS18B20,用4位LED数码管以串口传送数据实现温度显示。L E D 显 示主 控 制 器温度传感器 图2.1 系统总体框图2.2.1 主控制器单片机AT89S51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。2.2.2 显示电路LED数码管价格便宜,使用方便,是应用最广泛的显示器。本系统采用4位共阳LED数码管,从并口输出段码。2.2.3温度传感器温度传感器种类很多,接口电路差异很大。如热敏电阻,需要A/D转换。本课设采用DALLAS半导体公司生产的DS
5、18B20智能温度传感器,它接口简单,使用方便。第3章 硬件设计3.1单片机最小系统设计1.单片机由于AT89S51片内含有4KB的flash ROM不需要外扩展存储器,且可以擦写1000次以上,给开发带来极大方便,资源丰富,故选用AT89S51为该系统制器。图3.1单片机引脚图2. 显示电路LED数码管价格便宜,使用方便,是应用最广泛的显示器。本系统采用4位共阳LED数码管,从并口输出段码。 图3.2 管脚图 图3.3共阳极LED原理图3. 温度传感器DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,
6、并且可根据实际要求通过简单的编程实现位的数字值读数方式。C64 位ROM和单线接口高速缓存存储器与控制逻辑温度传感器高温触发器TH低温触发器TL配置寄存器8位CRC发生器Vdd图3.4 DS18B20内部结构4.时钟电路图3.5 时钟电路机器周期T=12*1/12us=1us5.复位电路下图按键复位电路是手动复位电路,使用比较方便,在程序“跑飞”时,可以手动复位,不用重启单片机电源,就可以实现复位图3.6 复位电路3.2 功能电路1,显示电路显示采用4位一体共阳LED显示方式,分别位环境温度值及设定报警温度值的十位和个位,用P0口输出显示数据代码,而字位由P2.0P2.3控制。 图3.7显示电
7、路2,温度采集电路 图3.8 温度采集电路3.3系统硬件电路原理图 图3.9 硬件电路原理图第4章 软件设计4.1软件流程图4.1.1 DS18B20温度计主程序流程图主程序的主要功能是负责温度的实时显示,读出并处理DS18B20的当前温度值,与设定的报警温度比较,其程序流程图如下:调用显示子程序初始化1s到?初次上电发温度转换开始命令读出温度值温度计算处理显示数据刷新 图4.1主程序流程图4.1.2.DS18B20初始化程序流程图在DS18B20工作之前需要进行初始化,流程图如下:发复位命令发跳过ROM命令 初始化成功 结束 图4.2 初始化程序流程图4.1.3.读温度子程序流程图读温度子程
8、序的主要功能是从DS18B20中读出温度数据,移入温度暂存器保存。其程序流程图如下:发复位命令发跳过ROM命令 发读取温度命令 移入温度暂存器 结束 图4.3 温度子程序流程图 4.2 程序清单4.2.1.主程序程序如下:ORG 0000HLJMP MAINORG 0100HDAT BIT P1.0 ;DS18B20数据线接P1.0TEMPER_L EQU 40H ;转换前的低温度值放在40HTEMPER_H EQU 41H ;转换前的高温度值放在41HA_BIT EQU 60H ; 转换后的温度“十位”放在60HB_BIT EOU 61H ;转换后的温度“个位”放在61HMAIN:LCALL
9、 INIT_1820 ;DS18B20初始化 LCALL GET_TEMPER ;获取温度值 LCALL CONVER ;计算温度值,转换成BCD码 LCALL COMPARE ;与设定值比较报警 LCALL DISPLAY ;显示 LJMP MAIN ;返回主程序,继续执行4.2.2.DS18B20初始化程序.DS18B20初始化程序: INIT_1820:NOP L0:CLR DAT MOV R2,#200 L1:NOP DJNZ R2,L1 ;主机发复位脉冲持续3us*200=600us SETB DAT ;主机释放总线,口线改为输入 MOV R2, #20 L2:DJNZ R2,L2
10、;DS18B20等待2us*20=40us CLR C ORL C, DAT ;判断DS18B20数据线状态 JC L0 ;DS18B20未准备好,重新初始化 MOV R6,#80 L3:ORL C ,DAT JC L4 ;数据线变高,初始化成功 DJNZ R6,L3 ;判断数据线低电平可持续240us SJMP L0 ;失败,重来 L4:MOV R2,#120 L5:DJNZ R2,L5 ;DS18B20应答时间 RET4.2.3.读温度子程序读温度子程序: GET_TEMPER: LCALL INIT_1820 MOV A, #0CCH ;发跳过ROM命令 LCALL WRITE MOV
11、A, #44H ;发启动转换命令 LCALL WRITE LCALL DELAY LCALL INIT_1820 MOV A, #0CCH ;发跳过ROM命令 LCALL WRITE MOV A, #0BEH ;发读存储器命令 LCALL WRITE LCALL READ MOV TEMPER_L,A ;温度值低位送40H LCALL READ MOV TEMPER_H,A ;温度值高位送41H RET向DS18B20写一个字节程序: WRITE:CLR EA MOV R3, #8 ;写一个字节 WR1:SETB DAT MOV R4,#8 RRC A ;最低位移入C CLR DAT WR2:
12、DJNZ R4,WR2 ;等待16us MOV DAT ,C ;输出一位到数据线 MOV R4,#30 WR3:DJNZ R4, WR3 ;保证写过程延时60us DJNZ R3, WR1 SETB DAT ;DAT=1结束写操作 RET从DS18B20读出一个字节的数据程序: READ: CLR EA MOV R6,#8 ;读一个字节 RD1:CLR DAT MOV R4,#8 NOP ;低电平持续2us SETB DAT ;口线设为输入 RD2:DJNZ R4,RD2 ;等待8us MOV C,DAT ;主机按位从DS18B20读出数据 RRC A ;读取的数据移入A MOV R5,#30
13、 RD3:DJNZ R5,RD3 ;保证读过程持续60us DJNZ R6,RD1 ;读完一个数据存入A中 SETB DAT RET 4.2.4.计算温度子程序计算温度子程序将RAM占用温度数据进行BCD码转换运算,DS18B20内部温度以16位二进制补码形式存放。参见数据分辨率。转换时,将MSB的低四位和LSB的高四位合成一个字节,作为整数部分处理,并保存在32H单元。将转换后的BCD码的百位保存在30H,十位和个位保存在31H。程序如下: CONVER: MOV A,#0FH ANL A,TEMPER_H ;整数部分转换,屏蔽高字节高四位 SWAP A MOV B,A MOV A,#0F0
14、H ANL A ,TEMPER_L ;LSM中低四位小数部分屏蔽 SWAP A ADD A,B MOV 32H,A ;温度整数部分保存到32H单元 BCD: MOV B,#100 ;下面把二进制转换成BCD码 DIV AB MOV 30H,A ;百位放在30H MOV A,#10 XCH A,B DIV AB MOV A_BIT,A ;A中是十位 MOV B_BIT,B ;B中是个位 SWAP A ADD A,B MOV 31H,A ;转换后的BCD码放在31H RET 4.2.5. 显示温度子程序程序如下: DISPLAY: MOV 5FH,#00H ;自定义的温度值个位 MOV 5EH,#
15、03H ;自定义的温度值十位 MOV DPTR,#TAB S3:MOV R1,#20 S2:MOV R2,#0FEH MOV R0,#61H ;实际温度个位 MOV R4,#04H ;四个LED数码管显示 S1:MOV P2,R2 ;控制显示位 MOV A,R0 MOVC A,A+DPTR MOV P0,A LCALL DELAY MOV A,R2 RLC A MOV R2,A DEC R0 DJNZ R4,S1 DJNZ R1,S2 RETTAB:DB 0C0H,OF9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H延时子程序:延时时间位50ms DELAY:MOV
16、R7,#125 DELAY1:MOV R6,#200 DELAY2:DJNZ R6,DELAY2 DJNZ R7,DELAY1RET第5章 课程设计总结经过这一段时间的设计与思考,最终完成了数字温度计的设计。其间遇到 许多问题,但最后都一一得到解决。现将心得体会总结如下:设计初期要考虑周到,否则后期改进很困难。应该在初期就多思考几个方案,进行比较论证,选择最合适的方案动手设计。总体设计在整个设计过程中非常重要,应该花较多的时间在上面。方案确定后,才开始设计。设计时,多使用已学的方法,在整体设计都正确后,再寻求简化的方法。在设计某些模块的时候无法把握住整体,这时可以先进行小部分功能的实现,在此基
17、础上进行改进,虽然可能会多花一些时间,但这比空想要有效的多。尽可能是电路连线有序,模块之间关系清楚,既利于自己修改,也利于与别人交流。如果电路乱的连自己都看不懂,那还如何改进和扩展。很多难点的突破都来自于与同学的交流,交流使自己获得更多信息,开拓了思路,因此要重视与别人的交流。应该有较好的理论基础,整个实验都是在理论的指导下完成了,设计过程中使用了许多理论课上学的内容。本次设计把理论应用到了实践中,同时通过设计,也加深了自己对理论知识的理解。参考文献1 梅丽凤,单片机原理及接口技术,北京:清华大学出版社,2004:19-48,81-932 何立民,单片机应用系统设计,北京:航空航天大学出版社,
18、1990:45-563 张毅刚.单片机原理及应用,北京:高等教育出版社,2003:126-1354 顾兴源.计算机控制系统,北京:冶金工业出版社, 1981:25-405 李建忠.单片机原理及应用,西安:西安电子科技大学出版社,2004:32-546 赵高生.单片机应用技术大全,南京:西南文通大学出版社,1996:24-437 赖麒文.8051单片机C语言软件设计的艺术, 科学出版社, 2002:54-688 曾文华.严义,俞岳军. 微型计算机, 计算机应用研究.1998:4-69 王强.C8051F单片机在远端测控装置中的应用,电子设计应用.2006:11-1210 贾好来.MCS-51单片机原理及应用,北京:机械工业出版社,2006:13-3411 甘本鑫. 科技信息,2008年32(3),2-612 陈晓.微计算机信息,2009年11(6),10-1713 闵祥娜.现代电子技术,2009年19(4),5-1414 孙艳菱.科技广场,2008年10(12),16-1815 宋凤娟.制造业自动化,2007年2(6),13-1916 刘小燕.微计算机信息,2008年25(3),1-9