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

    课程设计基于单片机控制的数字温度计.docx

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

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

    课程设计基于单片机控制的数字温度计.docx

    1、课程设计基于单片机控制的数字温度计基于单片机控制的数字温度计课程设计任务书1设计目的与要求设计出一个数字温度计。准确地理解有关要求,独立完成系统设计,要求所设计的电路具有以下功能:(1)测温范围-50110 (2)精度误差不大于0.1 (3)LED数码直读显示2设计内容 (1)画出电路原理图,正确使用逻辑关系;(2)确定元器件及元件参数;(3)进行电路模拟仿真;(4)SCH文件生成与打印输出;3编写设计报告写出设计的全过程,附上有关资料和图纸,有心得体会。4答辩 在规定时间内,完成叙述并回答问题。 1引言 12总体设计方案 12.1数字温度计涉及方案论证 12.1.1方案一 12.1.2方案二

    2、 1 2.2总体设计框图22.2.1 主控制器 22.2.2 显示电路 22.2.3 温度传感器介绍 22.3 系统整体硬件电路 52.3.1 主板电路 52.3.2 显示电路 53系统软件算法分析 6 3.1 主程序 6 3.2 读温度子程序 73.3温度转换命令子程序 7 3.4计算温度子程序 7 3.5显示温度子程序 84结束语 8参考文献 8附录一 9附录二 10基于单片机控制的数字温度计应教054 金鳞摘要:随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的数字温度计,本温度计属于多功能温度计,可以设置

    3、上下报警温度,当温度不在设置范围内时,可以报警。 关键词:单片机,数字控制,温度计, DS18B20,AT89S511 引言随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机AT89S51,测温传感器使

    4、用DS18B20,用5位共阴极LED数码管以并口传送数据,实现温度显示,能准确达到小数点后一位的要求。2 总体设计方案2.1数字温度计设计方案论证2.1.1方案一由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。2.1.2 方案二 进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,按照时序容易直接读取被测温度值,进行

    5、转换,就可以满足设计要求,显示电路用为了节省单片机端口,输出显示采用扫描的方式进行。利用人眼对光的停留效应,通过电子开关的控制,结合显示数据的配合,完成五位数码管的扫描显示。从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。2.2总体设计框图温度计电路设计总体设计方框图如图1所示,控制器采用单片机AT89S51,温度传感器采用DS18B20,用5位LED数码管以并口送位码数据实现温度显示,可显示温度的正负及小数点后一位。 图1总体设计方框图2.2.1 主控制器单片机AT89S51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要

    6、,很适合便携手持式产品的设计使用系统可用二节电池供电。单片机最小系统由AT89S51,复位电路,晶振电路组成。2.2.2 显示电路显示电路采用5位共阴LED数码管,从P2口输出位码,从P0口输出段码。显示电路用为了节省单片机端口,输出显示采用循环扫描的方式进行。利用人眼对光的停留效应,通过电子开关的控制,结合显示数据的配合,完成五位数码管的扫描显示2.2.3温度传感器DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现位的数字值读数方式。DS18B20的性能特点如下:独

    7、特的单线接口仅需要一个端口引脚进行通信;多个DS18B20可以并联在唯一的三线上,实现多点组网功能;无须外部器件;可通过数据线供电,电压范围为3.05.5;零待机功耗;温度以或位数字;用户可定义报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作; DS18B20采用脚PR35封装或脚SOIC封装,其内部结构框图如图2所示。 图2 DS18B20内部结构64位ROM的结构开始位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通

    8、信的原因。温度报警触发器和,可通过软件写入户报警上下限。DS18B20温度传感器的内部存储器还包括一个高速暂存和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为字节的存储器,结构如图3所示。头个字节包含测得的温度信息,第和第字节和的拷贝,是易失的,每次上电复位时被刷新。第个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图3所示。低位一直为,是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为,用户要去改动,R1和0决定温度转换的精度位数,来设置分辨率

    9、。图3 DS18B20字节定义由表1可见,DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。高速暂存的第、字节保留未用,表现为全逻辑。第字节读出前面所有字节的CRC码,可用来检验数据,从而保证通信数据的正确性。当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第、字节。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625LSB形式表示。当符号位时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符

    10、号位时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。表2是一部分温度值对应的二进制温度数据。表1 DS18B20温度转换时间表DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、T字节内容作比较。若TH或TTL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令作出响应。因此,可用多只DS18B20同时测量温度并进行报警搜索。在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。DS18B20的测温原理是这样的,器件中低温度系数晶振的振荡频

    11、率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器的脉冲输入。器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将55所对应的一个基数分别置入减法计数器、温度寄存器中,计数器和温度寄存器被预置在55所对应的一个基数值。减法计数器对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器的预置值减到时,温度寄存器的值将加,减法计数器的预置将重新被装入,减法计数器重新开始对低温度系数晶振产生的脉冲信号

    12、进行计数,如此循环直到减法计数器计数到时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。表2一部分温度对应值表温度/二进制表示十六进制表示+1250000 0111 1101 000007D0H+850000 0101 0101 00000550H+25.06250000 0001 1001 00000191H+10.1250000 0000 1010 000100A2H+0.50000 0000 0000 00100008H00000 0000 0000 10000000H-0

    13、.51111 1111 1111 0000FFF8H-10.1251111 1111 0101 1110FF5EH-25.06251111 1110 0110 1111FE6FH-551111 1100 1001 0000FC90H另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作按协议进行。操作协议为:初使化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。2.3 系统整体硬件电路图5 单片机主板电路2.3.1 主板电路系统整体硬件电路包括,传感器数据采集电路,温度显示电路,上下限报警调整电路,单片机主

    14、板电路等,如图5 所示。图5中有三个独立式按键可以分别调整温度计的上下限报警设置,图中蜂鸣器可以在被测温度不在上下限范围内时,发出报警鸣叫声音,同时LED数码管将显示888,即错误,这时可以调整报警上下限,从而测出被测的温度值。 图5 中的按健复位电路是上电复位加手动复位,使用比较方便,在程序跑飞时,可以手动复位,这样就不用在重起单片机电源,就可以实现复位。2.3.2 显示电路图6 温度显示电路显示电路是使用的并口显示,这种显示最大的优点是显示程序简单,采用循环扫描的显示方法,P0口输出段码,P2输出位码,利用人眼的暂留现象来显示温度,随时采集温度显示出来,使温度的显示是连续的。3系统软件算法

    15、分析 图7 主程序流程图 图8读温度流程图系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。3.1主程序主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度。主程序主要是调用其他的子程序,起到总体设计的要求,主要是先检查是否有温度传感器存在,如果不存在则重新扫描,启动报警电路,提示人们接上DS18B20,检测到传感器后,向传感器写命令,使其采集温度,处理过后向单片机传送温度数值,单片机把温度数值进行转换后,转换成BCD码,调用数码管显示子程序显示出来温度,然后

    16、重新扫描,循环不止,把温度即时的显示出来。其程序流程见图7所示3.2读出温度子程序图9 温度转换流程图读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图8示3.3温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如上图,图9所示3.4 计算温度子程序 图10计算温度流程图 图11显示数据刷新流程图计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,在数码显示时有单独的

    17、符号位及其编码,其程序流程图如图10所示。3.5 显示数据子程序显示数据子程序采用循环扫描并口显示,先判断是否是零下,如果是零下,则置符号位显示负号,如果不是负数,则跳过,符号位数码管不显示,再扫描百位,置百位位码,接着是十位和个位,循环扫描,由于人眼的暂留想象,无闪烁感。程序流程图如图11。4结束语 经过三周的单片机课程设计,终于完成了我的数字温度计的设计,虽然没有完全达到设计要求,但在这三周的时间里,我的全身心都投入了实习中,连续的思考,特别是编程的过程,有时候竟然梦里都想着程序,几乎上每天都很晚才睡觉,此时此刻的我,已经身心疲惫。从心里说,我还是很高兴的,因为通过我的努力,最后终于做出来

    18、了。在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我长进了很多,单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过几次程序,但我觉的写好一个程序并不是一件简单的事。从这次的课程设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。在此特别感谢孔老师的名师指点,还有邵老师和陈老师的耐心指导。参考文献1李朝青.单片机原理及接口技术(简明修订版).杭州:北京航空航天大学出版社,19982李广弟.单片机基础.

    19、北京:北京航空航天大学出版社,19943廖常初.现场总线概述J.电工技术,1999.4 张大明.单片机控制实训指导及综合应用实例.北京:机械工业出版社,2007.65 汪道辉.单片机系统设计与实践.北京:电子工业出版社,2006.5附录一附录二TEMP_L DATA 31H ;DS18B20低8位TEMP_H DATA 30H ;DS18B20高8位TEMP_HC DATA 32H ;百位和十位的BCDTEMP_LC DATA 33H ;个位和小数位的BCDTEMP_ZH DATA 34H ;温度原值DIS_BUF_X DATA 35H ;数码管小数位DIS_BUF_G DATA 36H ;数

    20、码管个位DIS_BUF_S DATA 37H ;数码管十位DIS_BUF_B DATA 38H ;数码管百位K_UP EQU P1.6 ;上调按钮K_DOWN EQU P1.7 ;下调按钮K_ENTER EQU P1.5 ;输入数据确认按钮P_DS18B20 EQU P1.0 ; DS18B20输入P_SWITCH EQU P1.1;报警电路输出端口FLAG EQU 20H.0 ;标志位,是否存在DS18B20FUHAO EQU 20H.1;符号位,为1时表示负数;程序开始执行ORG 0000HLJMP MAINORG 0100HMAIN: MOV SP,#60H ;初始化MOV P0,#00

    21、HMOV P2,#00HMOV TEMP_ENTER_H,#6EHMOV TEMP_ENTER_L,#CEHCLR FUHAOSETB P1.0NEXT:LCALL READ_TEMP ;调用读温度子程序JB FLAG,NORMAL ;判断DS18B20是否存在ACALL ERR ;不存在时显示错误信息AJMP NEXTNORMAL:LCALL DATA_DEAL ;处理数据LCALL SET_DIS_BUF ;赋值给LCALL SCAN_KEYLCALL CON_TEMPLCALL DISPLAY ;调用显示程序AJMP NEXTERR:MOV DIS_BUF_X,#08H ;错误888MO

    22、V TEMP_HC,#88H MOV TEMP_LC#88HLCALL DISPLAYRETDATA_DEAL:数据处理MOV A,TEMPERATURE_H ;判温度是否零下ANL A,#80HJZ TEMPC1 ;判断正负CLR CMOV A,TEMP_L ;二进制数求补(双字节)CPL A ;取反加1ADD A,#01HMOV TEMP_L,A ;MOV A,TEMP_HCPL AADDC A,#00H ; MOV TEMP_H,A ; MOV TEMP_HC,#0BHSJMP TEMPC11TEMPC1: MOV TEMP_HC,#0AH TEMPC11:MOV A,TEMP_HCSW

    23、AP AMOV TEMP_HC,AMOV A,TEMP_LANL A,#0FH ;取A低4位MOV DPTR,#TEMPDOTTABMOVC A,A+DPTR ;查表MOV TEMP_LC,A ;MOV DIS_BUF_X,A ;MOV A,TEMPERATURE_L ;整数部分ANL A,#0F0H ;得到个位单个数值SWAP A ;SWAP后就得到个位真正的个位MOV TEMP_L,AMOV A,TEMP_HANL A,#07HSWAP AORL A,TEMP_LMOV TEMPERATURE_ZH,A ;LCALL HtoB ;转换BCD码MOV TEMP_L,A ;ANL A,#0F0

    24、HSWAP AORL A,TEMP_HC ;MOV TEMP_HC,AMOV A,TEMP_LANL A,#0FHSWAP A ;ORL A,TEMP_LCMOV TEMP_LC,AMOV A,R7JZ TEMPC12ANL A,#0FHSWAP AMOV R7,AMOV A,TEMP_HC ; ANL A,#0FHORL A,R7MOV TEMPERATURE_HC,ATEMPC12:RETTEMPDOTTAB: ; 小数部分码表DB 00H,01H,01H,02H,03H,03H,04H,04HDB 05H,06H,06H,07H,08H,08H,09H,09HHtoB: MOV B,#0

    25、64H ;100 DIV AB ;a/100 MOV R7,A ; MOV A,#0AHXCH A,BDIV AB SWAP AORL A,BRETINIT_TEMP: SETB P_DS18B20NOPCLR P_DS18B20 ;延时537MOV R0,#250;DJNE R0,$;SETB P_DS18B20 ;释放总线NOPNOPNOPMOV R0,#32HTSR2: JNB P_DS18B20,TSR3 ;等待DJNZ R0,TSR2LJMP TSR4 ;延时TSR3: SETB FLAG ; DS1820存在LJMP TSR5TSR4: CLR FLAG ; DS1820不存在LJ

    26、MP TSR7TSR5: MOV R0,#06BHTSR6: DJNZ R0,TSR6 ;延时TSR7: SETB P_DS18B20RETREAD_TEMP:SETB P_DS18B20LCALL INIT_TEMP ;复位JB FLAG,TSS2RET ;判断DS1820是否存在?TSS2: MOV A,#0CCH ;跳过ROMLCALL WRITE_18B20MOV A,#44H ;温度转换LCALL WRITE_18B20;LCALL DISPLAY ;等待,12位 750微秒LCALL INIT_TEMP ;先复位MOV A,#0CCH ;跳过ROM匹配LCALL WRITE_18B

    27、20MOV A,#0BEH ;发出读温度命令LCALL WRITE_18B20LCALL READ_18B20 ;保存数据RETWRITE_18B20: MOV R2,#8 ;一共8位数据,串行通信WR :CLR CCLR P_DS18B20MOV R3,#07DJNZ R3,$RRC A ;循环右移JC WR1;MOV P_DS18B20,CMOV R3,#23DJNZ R3,$ ;23*2 = 46微妙SETB P_DS18B20AJMP WR8WR1:SETB P_DS18B20MOV P_DS18B20,CMOV R3,#23DJNZ R3,$WR8:DJNZ R2,WR ; 8位,送

    28、8次SETB P_DS18B20 ;释放总线RETREAD_18B20: MOV R4,#4 ;读出温度MOV R1,#TEMPERATURE_L RE00: MOV R2,#8 ; 8位RE01: CLR CSETB P_DS18B20NOPNOPCLR P_DS18B20NOPNOPNOPSETB P_DS18B20NOPNOPMOV R3,#07RE10: DJNZ R3,RE10MOV C,P_DS18B20MOV R3,#22RE20: DJNZ R3,RE20RRC ADJNZ R2,RE01MOV R1,ADEC R1DJNZ R4,RE00RETSCAN_KEY:LCALL K_DELAYJB K_ENTER $ENTER1:LCALL K_DELAYUP1:JB K_UP DOWN1MOV A,#01HADD A, TEMPERATURE_ENTER_HM


    注意事项

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

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




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

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

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


    收起
    展开