单片机课程设计-数字温度计的设计.doc_第1页
单片机课程设计-数字温度计的设计.doc_第2页
单片机课程设计-数字温度计的设计.doc_第3页
单片机课程设计-数字温度计的设计.doc_第4页
单片机课程设计-数字温度计的设计.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

摘 要随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的数字温度计,本温度计属于多功能温度计,可以设置上下报警温度,当温度不在设置范围内时,可以报警。 关键词:单片机;数字控制;温度计; DS18B20;AT89C52目 录1 问题描述32 设计思想33 硬件设计33.1方案总体设计33.2整体硬件电路44 软件设计54.1模块划分54.2主要程序描述65 仿真分析86 课程设计的总结与体会10参考文献11附录(源程序清单)121 问题描述设计一个数字温度计,满足一下要求:(1)测试范围在-55125;(2)误差在0.5以内;(3)采用LED数码管直读显示。2 设计思想大多单片机接口输入的信号是数字信号,或有带A/D转换的高端单片机也可以输入模拟信号。由单片机获取非电信号的温度信息,必须通过温度传感器。传统的温度测量多以热敏电阻作为温度传感器。但是,热敏电阻的可靠性较差、测量温度精度低,而且还需经A/D转换成数字信号后才能由单片机进行处理。因此,使用数字温度传感器可简化硬件设计、方便单片机读取数据、节约成本。所以可以采用一只温度传感器DS18B20。3 硬件设计3.1方案总体设计温度计电路设计总体设计方框图如图3.1所示,控制器采用单片机AT89C52,温度传感器采用DS18B20,用3位LED数码管以串口传送数据实现温度显示。主 控 制 器LED显 示温 度 传 感 器单片机复位时钟振荡报警点按键调整 图3.1总体设计方框图(1)主控制器单片机AT89S51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。(2)显示电路显示电路采用共阴LED数码管,从P3口RXD,TXD串口输出段码。(3)温度传感器DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现位的数字值读数方式。DS18B20的性能特点如下:独特的单线接口仅需要一个端口引脚进行通信;多个DS18B20可以并联在惟一的三线上,实现多点组网功能;无须外部器件;可通过数据线供电,电压范围为3.05.5;零待机功耗;温度以9或12位数字;用户可定义报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。3.2整体硬件电路(1)主板电路系统整体硬件电路包括,传感器数据采集电路,温度显示电路,上下限报警调整电路,单片机主板电路等,如图3.2 所示。图3.2中有三个独立式按键可以分别调整温度计的上下限报警设置,图中蜂鸣器可以在被测温度不在上下限范围内时,发出报警鸣叫声音,同时LED数码管将没有被测温度值显示,这时可以调整报警上下限,从而测出被测的温度值。图3.2中的按健复位电路是上电复位加手动复位,使用比较方便,在程序跑飞时,可以手动复位,这样就不用在重起单片机电源,就可以实现复位。(2)显示电路显示电路是使用的串口显示,这种显示最大的优点就是使用口资源比较少,只用p3口的RXD,和TXD,串口的发送和接收,四只数码管采用74LS164右移寄存器驱动,显示比较清晰。图3.2单片机主板电路图3.3 温度显示电路4 软件设计4.1模块划分系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。4.2主要程序描述(1)主程序主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图4.1所示。Y发DS18B20复位命令发跳过ROM命令发读取温度命令读取操作,CRC校验9字节完?CRC校验正?确?移入温度暂存器结束NNY初始化调用显示子程序1S到?初次上电读出温度值温度计算处理显示数据刷新发温度转换开始命令NYNY图4.1主程序流程图图4.2读温度流程图(2)读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图4.2所示。(3)温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如上图,图4.3所示。发DS18B20复位命令发跳过ROM命令发温度转换开始命令 结束图4.3温度转换流程图 (4)计算温度子程序计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图4.4所示。 开始温度零下?温度值取补码置“”标志计算小数位温度BCD值 计算整数位温度BCD值 结束置“+”标志NY图4.4计算温度流程图(5)显示数据刷新子程序显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位。程序流程图如图4.5所示。温度数据移入显示寄存器十位数0?百位数0?十位数显示符号百位数不显示百位数显示数据(不显示符号) 结束NNYY图4.5显示数据刷新流程图5 仿真分析 加载好程序后,按下桌面的左下角的play见出现图5.1所示的现象。图5.1 仿真结果按下停止键,将上次仿真停止。将DS18B20的参数Current Value设置为50.1,按下play键出现如图5.2所示现象。说明此设计误差在0.5以内。图5.2 仿真结果按下停止键,将上次仿真停止。将DS18B20的参数Current Value设置为-55,按下play键出现如图5.3所示现象。说明此设计温度测试可到-55。图5.3 仿真结果按下停止键,将上次仿真停止。将DS18B20的参数Current Value设置为125.0,按下play键出现如图5.4所示现象。说明此设计温度测试可到125。图5.4 仿真结果6 课程设计的总结与体会起先对单片机不太了解的我,为了完成此次的课程设计,翻书、上网查资料,但还是有很多不了解的地方。无奈就去问同学,同学们热心的态度令我很欣慰。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,在以后的学习中还要多加改正。 两个星期的课程设计结束了,感觉到从总得到了很多成长,学到了很多东西,有对单片机更深的理解,有自己的努力和汗水,有同学们的帮助,还有大家的合作能力,我要把它们好好地收藏起来,今后都是我生活中的无价之宝。在此我非常要感谢的是我的指导老师申寿云老师,感谢老师的细心认真的辅导,让我对单片机这门课程有了更新的认识和理解。这次课程设计能够顺利的完成,当然有我个人的努力,但同时也离不开指导老师的答疑解惑,以及班上同学的帮助。在此我再次向成老师以及帮助过我的同学表示诚挚感谢。参考文献1张靖武,周灵彬单片机系统的Proteus设计与仿真北京:电子工业出版社,20072 周澜景,张丽娜基于Proteus的电路及单片机系统设计与仿真北京:北京航空航天大学出版社,20063 江世明.基于Proteus的单片机应用技术. 北京:电子工业出版社,20094 邹久朋80C51单片机应用技术北京:北京航空航天大学出版社,2008附录(源程序清单)ORG 0000H ;单片机内存分配申明!TEMPER_L EQU 29H ;保存读出温度的低8位TEMPER_H EQU 28H ;保存读出温度的高8位T_DF EQU 27H;保存读出温度的小数部份FLAG1 BIT 50H ;是否检测到DS18B20标志位 38HA_BIT EQU 20H ;百位数存放内存位置B_BIT EQU 21H ;十位数存放内存位置C_BIT EQU 22H ;个位数存放内存位置D_BITEQU 23H;个位小数存放内存位置S_BIT EQU 24H;正负号存放内存位置MAIN: LCALLGET_TEMPER ;调用读温度子程序 MOVA,29HMOVT_DF,A;温度低字节暂存,待后作小数处理MOVA,28HJNBACC.7,POSI CLRCMOVA,29H SUBBA,#01H CPLAMOV T_DF,A ;温度低字节暂存 MOVA,28H SUBBA,#00H CPLA MOV28H,AACALLPROD AJMPNEGPROD: MOVA,T_DF MOV C,40H ;将28H中的最低位移入C。28H的8位位寻址是40H47H RRC A MOV C,41H RRC A MOV C,42H RRC A MOV C,43H RRC A MOV 29H,A RETPOSI:MOVS_BIT,#00HACALLPRODAJMPMAIN1NEG:MOVS_BIT,#40HMAIN1: LCALL DISPLAY;调用数码管显示子程序 AJMP MAIN;这是DS18B20复位初始化子程序INIT_1820: SETB p2.2 NOP CLR p2.2;主机发出延时496微秒的复位低脉冲 MOV R1,#3TSR1: MOV R0,#100;#80 DJNZ R0,$ DJNZ R1,TSR1 SETB p2.2 ;然后拉高数据线 NOP NOP NOP MOV R0,#25;#25H TSR2: JNB p2.2,TSR3 ;等待DS18B20回应 DJNZ R0,TSR2 ;延时1560us LJMP TSR4TSR3: SETB FLAG1 ;置标志位,表示DS1820存在 LJMP TSR5TSR4: CLR FLAG1 ;清标志位,表示DS1820不存在 LJMP TSR7TSR5: MOV R0,#80TSR6: DJNZ R0,TSR6 ;时序要求延时一段时间TSR7: SETB p2.2 RET;读出转换后的温度值GET_TEMPER: SETB P2.2 LCALL INIT_1820;先复位DS18B20 JB FLAG1,TSS2 RET ;判断DS1820是否存在?若DS18B20不存在则返回TSS2: MOV A,#0CCH ;跳过ROM匹配 LCALL WRITE_1820 MOV A,#44H ;发出温度转换命令 LCALL WRITE_1820;这里通过调用显示子程序实现延时一段时间,等待AD转换结束,12位的话750微秒 LCALL DISPLAY LCALL INIT_1820 ;准备读温度前先复位 MOV A,#0CCH ;跳过ROM匹配 LCALL WRITE_1820 MOV A,#0BEH ;发出读温度命令 LCALL WRITE_1820 LCALL READ_18200 ;将读出的温度数据保存到35H/36HRET;写DS18B20的子程序(有具体的时序要求)WRITE_1820: MOV R2,#8 ;一共8位数据 CLR CWR1: CLR p2.2 MOV R3,#6 DJNZ R3,$ RRC A MOV p2.2,C MOV R3,#23 DJNZ R3,$ SETB p2.2 NOP DJNZ R2,WR1 SETB p2.2 RET;读DS18B20的程序,从DS18B20中读出两个字节的温度数据READ_18200: MOV R4,#2 ;将温度高位和低位从DS18B20中读出 MOV R1,#29H ;低位存入29H(TEMPER_L),高位存入28H(TEMPER_H)RE00: MOV R2,#8 ;数据一共有8位RE01: CLR C SETB p2.2 NOP NOP CLR p2.2 NOP NOP NOP SETB p2.2 MOV R3,#9RE10: DJNZ R3,RE10 MOV C,p2.2 MOV R3,#23RE20: DJNZ R3,RE20 RRC A DJNZ R2,RE01 MOV R1,A DEC R1 DJNZ R4,RE00setbp2.2 RET;显示子程序DISPLAY: MOV A,29H ;将29H中的十六进制数转换成10进制 MOV B,#100 DIV ABMOVA_BIT,AMOVA,B MOV B,#10 DIV ABMOVB_BIT,A MOVA,B MOVB,#10 DIVAB MOVC_BIT,B MOV R0,#2DPL1: MOV R1,#20;DPLOP: MOVA,#0FH ;取小数值 ANLA,T_DF MOVDPTR,#DFTAB MOVC A,A+DPTR ;查个位小数的7段代码 MOV P1,A ;送出个位小数的7段代码 CLR P3.7 ;开个位小数显示 ACALL D1MS ;显示1ms SETB P3.7MOV A,C_BIT ;取个位数 MOV DPTR,#NUMTAB ;指定查表启始地址 MOVC A,A+DPTR ;查个位数的7段代码 MOV P1,A ;送出个位数的7段代码 CLR P3.6 ;开个位显示 SETBP1.7 ;个位小数点显示 ACALL D1MS ;显示1ms SETB P3.6 MOV A,B_BIT ;取十位数 MOVC A,A+DPTR ;查十位数的7段代码MOV P1,A ;送出十位的7段代码CJNEA,#3FH,DISP1SETBP3.5AJMPDISP2DISP1:CLR P3.5 ;开十位显示ACALL D1MS ;显示1

温馨提示

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

评论

0/150

提交评论