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

    DS18B20汇编程序编写实例.docx

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

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

    DS18B20汇编程序编写实例.docx

    1、DS18B20汇编程序编写实例多路温度采集显示系统设计与总结报告参赛选手:摘要:在传统的模拟信号远距离温度测量系统中,需要很好的解决引线误差补偿问题、多点测量切换误差问题和放大电路零点漂移误差问题等技术问题,才能够达到较高的测量精度。另外一般监控现场的电磁环境都非常恶劣,各种干扰信号较强,模拟温度信号容易受到干扰而产生测量误差,影响测量精度。因此,在温度测量系统中,采用抗干扰能力强的新型数字温度传感器是解决这些问题的最有效方案,新型数字温度传感器DS18B20具有体积更小、精度更高、适用电压更宽、采用一线总线、可组网等优点,在实际应用中取得了良好的测温效果。关键词:数字温度传感器,单总线Abs

    2、tract: In the traditional analog signal long-distance temperature measuring system, need good solve fuses error compensation problem, multi-point measurement error and amplifying circuit switching zero drift error problem and some other technical problems, only then can achieve high measuring accura

    3、cy. Also general monitoring site of the electromagnetic environment is very bad, all kinds of jam,affect precision, Therefore, in temperature measuring system, using anti-jamming ability of the new digital temperature sensor is to solve these problems, the most effective solution new digital tempera

    4、ture sensor DS18B20 have smaller, higher accuracy, voltage applied to wider and adopt 1-wire bus, etc, and networking in practical application made . Key word: Digital temperature sensor,1-wire bus 目录1 系统方法选择和论证 11.1 题目要求 11.1.1 基本要求 11.1.2 说明 11.2 系统基本方案 11.2.1 各模块方案选择和论证 11.2.2 系统各模块的最终方案 32.系统的硬件

    5、设计与实现 32.1 系统的硬件基本组成部分 32.2主要单元电路的设计 42.2.1 传感器部分电路 42.2.2七段数码管 43系统程序设计 43.1系统的软件设计 43.2 温度转换设计 43.3 系统主程序流程图 54.系统测试 64.1 测试仪器 64.2 指标测试 64.2.1动态显示的测试 64.2.2多路温度采集的测试 64.2.3系统实现的功能 64.3 结论 65总结 7参考文献 7附录1:元器件清单 7附录2:系统电路图 8附录3:程序清单 8附录4:DS18B20的通讯协议及读写复位等程序 11附录5:其他子程序的设计 16附录6:系统使用说明书 201 系统方法选择和

    6、论证1.1 题目要求1.1.1 基本要求设计并制作一个多路温度测量系统,并显示出所测量的温度。1.1.2 说明本系统采用数字温度计,测量温度范围为-55125,温度精确度为0.11.2 系统基本方案根据题目的要求,系统可以划分为控制和检测部分。其中信号检测部分包括:温度采集,模数转换。控制部分包括:温度采集模块与显示模块。模块框图如图1.2.1所示。1.2.1 各模块方案选择和论证(1)控制器模块根据题目的要求,控制器主要用于传感器的数据处理和显示处理,对于控制器有以下两种方案。方案一:采用FPGA(现场可编程序门列阵)作为系统的控制器。FPGA可以实现各种复杂的逻辑功能,规模大,密度高,它将

    7、所有的器件集中在一块芯片上,减小了体积,提高了系统的稳定性,并且可以应用EDA仿真、调试,易于进行功能扩展,但是由于温度处理不需要这么复杂的控制器,而且该控制器价格昂贵,硬件电路连接有点困难,加重了电路设计和实际焊接的工作。方案二:采用ATMEL公司的AT89S52作为系统控制器的方案。单片机算术运算能力强,软件编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制,并且由于其功耗低、体积小、技术成熟和成本低等优点,使其广泛应用各个领域。基于上述方案分析控制器模块我们选择AT89S52作为系统控制器的方案。(2)温度采集模块方案一:采用热敏温度传感器LM35。LM35是模拟温度传感器,因此需要

    8、相应的处理电路,但该电路设计复杂,对电源要求严格,而且还容易受外界因数影响,就从成本方面考虑也没有必要这么大费周章。该方案的框图模块如图1.2.2所示方案二:采用DS18B20新型数字温度传感器。美国Dallas半导体公司的数字化温度传感器DS1820是世界上第一片支持 一线总线接口的温度传感器,在其内部使用了在板(ON-B0ARD)专利技术。全部传感元件及转换电路集成在形如一只三极管的集成电路内。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。现在,新一代的DS18B20体积更小、更经济、更灵活。使你可以充分发挥“一线总线”的优点。(备注:由于实验器材

    9、的限制,使我无法更改硬件电路,因此我只能在一条总线上挂一个传感器),该方案的框图模块如图1.2.3所示DS18B20温度传感器1AT89S52图1.2.3DS18B20温度传感器2(3)显示模块显示系统是单片机控制系统的重要组成部分,主要用于显示各种参数的值,以便使现场工作人员能够及时掌握生产过程。工业控制系统中常用的显示器件有CRT、LED、LCD等。CRT不仅可以进行字符显示,而且可以进行画面显示,和计算机配合使用,可十分方便地实现生产过程的管理和监视。但由于CRT体积大,价格昂贵,所以只适用于大型微机控制系统。在中小型的控制过程中,为了使工作人员能够在现场直接看到生产情况和报警信号,经常

    10、选用LED和LCD作为显示器件。LED和LCD都具有体积小,功耗低,响应速度快,易于匹配,可靠性高和寿命高等优点。LCD是一种功耗极低的显示元件,在仪表和低功耗应用系统中的使用较多,而LED成本低廉,培植灵活,多用于单片机控制系统中,所以选用LED显示。方案一:采用LED的静态显示。静态显示,显示直观,程序设计简单,但由于显示多位数码时需要占用单片机大量的I/O口,显然这种方案是不合理的。方案二:采用LED的动态显示。动态显示可以利用少量的I/O口显示较多的字符,我们利用单片机译码并输出供LED显示字符,而且电路连接十分简便,是最理想的选择。1.2.2 系统各模块的最终方案经过仔细分析和论证,

    11、决定了系统各模块的最终方案如下:(1) 控制模块:AT89S52(2) 温度采集模块:DS18B20(3) 显示模块:六位LED七段数码管系统的基本框图如图1.2.4所示2.系统的硬件设计与实现2.1 系统的硬件基本组成部分本题是一个多路温度采集并显示的综合设计,在设计中主要的就是运用数字温度传感器传输数据。系统可以分为传感器检测部分和动态显示部分。传感器检测部分:系统利用该硬件测量温度并传输给单片机来处理。动态显示部分:采用6位数码管共阳极动态显示,由于是采用动态显示,故会需要些驱动,本系统采用74LS07集电极开路六正向高压驱动器作为数码管的驱动。2.2主要单元电路的设计2.2.1 传感器

    12、部分电路2.2.2七段数码管本实验采用六位共阳极显示如表1所示表一: 七段数码管共阳极显示显示七段数码0123456789a1011011111b1111100111c1101111111d1011011011e1010001010f1000111011g0011111011dp0000000000十六进制代码3FH06H5BH4FH66H6DH7DH07H7FH6FH3系统程序设计3.1系统的软件设计硬件简单,那么软件就相对复杂多了,由于篇幅限制,详细设计请参见附录43.2 温度转换设计由传感器传送了两个字节的温度,是以补码形式存储的,默认传感器精度为12位表2所示的是12位转化后得到的12

    13、位数据,存储在DS18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。例如+125的数字输出为07D0H,+25.0625的数字输出为0191H,-25.0625的数字输出为FF6FH,-55的出为FC90H。表2:部分温度转换表3.3 系统主程序流程图根据DS18B20通讯协议的规定,温度转换的程序流程图如图3.5.1所示。4.系统测试 4.1 测试仪器1.万用表MF-47A2.Nokia AC-8C电源适配器3.

    14、标准数字温度计4.2 指标测试根据实际测量温度的误差只有0.1(可能我所用的参照物也有些误差)4.2.1动态显示的测试能正常显示字符,观看的时候没有明显的闪烁4.2.2多路温度采集的测试在不同的路设置不同的温度,各个传感器传输回来的数据正常4.2.3系统实现的功能能循环显示三路温度的数值4.3 结论5总结 通过本次比赛,首先觉得自己确实学了不少东西,这次的竞赛不但锻炼了我的动手能力,而且还激发了我的创新思维,培养了我勇于面对困难克服困难的坚强意志和不懈的精神,更重要的是使我深深的体会到理论结合实际的重要性,体会到知识的海洋是无穷无尽,激发我们去追求。总之,我喜欢电子设计竞赛,感谢学院给了我锻炼

    15、的机会。参考文献1. 杨欣等.51单片机应用实例详解.北京:清华大学出版社,2010年2. 江力.单片机应用技术.北京:清华大学出版社,2006年附录1:元器件清单1.51单片机系统模板*12.键盘显示*1 V1.03.DS18B20*8 V1.0附录2:系统电路图附录3:程序清单 ;实在抱歉,由于实验材料和篇幅的限制这里的程序只写了一路;晶振为11.0592MHzORG 00HTEMPER_L EQU 36HTEMPER_H EQU 35HTEMHC EQU 37H ;设置温度符号标志位TEMINT EQU 38H ;设置整数显示寄存器TEMDOT EQU 39H ;设置小数显示寄存器FLA

    16、GE1 BIT 00H ;设置标志SENSOR BIT P2.0 ; SENSOR为传感器的单线控制变量MOV P1,#0FFHMOV P0,#00HLCALL DELAY ;开机时静态显示88888 ,2s 钟时间LCALL DELAYLCALL DELAYLCALL DELAYLCALL DELAYLCALL DELAYLCALL DELAYLCALL DELAYMOV P0,#0FFH;*START:MOV P1,#06HMOV P0,#0FEH ;显示数码1MOV SP,#70HLCALL GET_TEMPERLCALL TEMCOV1LCALL SCAN ;扫描第一路温度LJMP S

    17、TARTNOPNOP;读出转换后的温度值程序段GET_TEMPER:SETB SENSORLOCATE_1820:LCALL INIT_1820JB FLAGE1,CMDDLJMP LOCATE_1820CMDD:LCALL DELAY1MOV A,#0CCH ;跳过ROM匹配LCALL WRITE_1820MOV A,#44H ;发出温度转换命令这个命令转换需要750msLCALL WRITE_1820NOPLCALL DELAYLCALL DELAYLCALL DELAYLCALL DELAYMOV P0,#0FFHLCALL DELAYMEASURE:LCALL INIT_1820JB

    18、FLAGE1,MEAGOLJMP MEASUREMEAGO:LCALL DELAY1MOV A,#0CCH ;跳过ROM匹配LCALL WRITE_1820MOV A,#0BEH ;发出读温度命令LCALL WRITE_1820LCALL READ_18200 ;读两个字节数据RET;写DS1820的子程序WRITE_1820:RET ;读DS1820的程序,从DS1820中读出两个字节的温度数据READ_18200:RET;DS1820初始化程序INIT_1820:RETTEMCOV:RETTEMCOV22:MOV TEMHC,#00H LJMP SCAN;动态扫描五位数码管SCAN:RET

    19、TEMPDOTTABLE: DB 00H,00H,01H,02H,03H,03H,04H,05H DB 05H,06H,06H,07H,07H,08H,08H,09H ;计算低温度字节后四位,分别乘以0.0625,得到四位小数,按四舍五入取前两位TEMP_TAB: ;动态显示数码管表DYNAM_TABLE:DELAY0.5MS:;延时子程序DELAY: ;延时250ms RET DELAY1: RETEND附录4:DS18B20的通讯协议及读写复位等程序1.DS18B20的通讯协议DS18B20无论是硬件连接还是输出温度数据格式都非常简单明了,但是程序的控制较为复杂,而且必须严格按照通信协议来

    20、传递数据,否则将得不到正确的数据。通过单线总线与DS18B20通信,我们将使用到“时隙”的概念。所有的单总线器件要求采用严格的通信协议以保证数据的完整性该协议定义了几种信号类型复位脉冲应答脉冲写0 写1 读0 和读1 所有这些信号除了应答脉冲以外都由主机发出同步信号并且发送所有的命令和数据都是字节的低位在前这一点与多数串行通信格式不同(多数为字节的高位在前)。2. 初始化序列复位和应答脉冲单总线上的所有通信都是以初始化序列开始包括主机发出的复位脉冲及从机的应答脉冲如图5所示当从机发出响应主机的应答脉冲时即向主机表明它处于总线上且工作准备就绪在主机初始化过程主机通过拉低单总线至少480us 以产

    21、生Tx 复位脉冲接着主机释放总线并进入接收模式Rx 当总线被释放后5k 上拉电阻将单总线拉高在单总线器件检测到上升沿后延时15-60us 接着通过拉低总线60-240us 以产生应答脉冲3. 读/写时隙在写时隙期间主机向单总线器件写入数据而在读时隙期间主机读入来自从机的数据在每一个时隙总线只能传输一位数据4. 写时隙存在两种写时隙写1 和写0 主机采用写1 时隙向从机写入1 而采用写0 时隙向从机写入0 所有写时隙至少需要60us 且在两次独立的写时隙之间至少需要1us 的恢复时间两种写时隙均起始于主机拉低总线,产生写1 时隙的方式主机在拉低总线后接着必须在15us 之内释放总线由5k 上拉电

    22、阻将总线拉至高电平而产生写0 时隙的方式在主机拉低总线后只需在整个时隙期间保持低电平即可至少60 us在写时隙起始后15-60us 期间单总线器件采样总线电平状态如果在此期间采样为高电平则逻辑1 被写入该器件如果为0 则写入逻辑05, 读时隙单总线器件仅在主机发出读时隙时才向主机传输数据所以在主机发出读数据命令后必须马上产生读时隙以便从机能够传输数据所有读时隙至少需要60us 且在两次独立的读时隙之间至少需要1us 的恢复时间每个读时隙都由主机发起至少拉低总线1us,如图4所示在主机发起读时隙之后单总线器件才开始在总线上发送0 或1 若从机发送1 则保持总线为高电平若发送0 则拉低总线当发送0

    23、 时从机在该时隙结束后释放总线由上拉电阻将总线拉回至空闲高电平状态从机发出的数据在起始时隙之后保持有效时间15us 因而主机在读时隙期间必须释放总线并且在时隙起始后的15us 之内采样总线状态表3表2根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500us,然后释放,当DS18B20收到信号后等待1660us左右,后发出60240us的存在低脉冲,主CPU收到此信号表示复位成功。表36

    24、.初始化程序设计:;DS1820初始化程序INIT_1820:SETB SENSOR ;拉高单线总线NOP ;1us恢复时间CLR SENSOR ;单片机发出复位脉冲(480960us)MOV R0,#250 TSR1: DJNZ R0,$ ;延时(250*2+1)*1.085=543.585usSETB SENSOR ;拉高单线总线MOV R0,#25H ;DS1820的TSR2:DJNZ R0,$ ;延时;(37*2+1)*1.085=81.375usJNB SENSOR, TSR3LJMP TSR4TSR3:SETB FLAGE1 ;置标志位,表示DS1820存在LJMP TSR5TSR

    25、4: ;置标志位,表示DS1820不存在CLR FLAGE1LJMP TSR7TSR5:MOV R0,#120 TSR6: DJNZ R0,$ ;延时(100*2+1)*1.085=218.085usTSR7:SETB SENSORRET7.读字节的程序设计;读DS1820的程序,从DS1820中读出两个字节的温度数据READ_18200:MOV R4,#2 ;将温度的高位和低位从DS1820中读出MOV R1,#36H ;低位存入36H(TEMPER_L),高位存入35H(TEMPER_H)RE00:MOV R2,#8 ;设置计数器RE01:CLR C ;进位C清零SETB SENSOR ;

    26、拉高单总线NOPNOPCLR SENSOR ;拉低单总线NOPNOPNOPSETB SENSORMOV R3,#7 ;延时DJNZ R3,$MOV R3,#23DJNZ R3,$RRC ADJNZ R2,RE01MOV R1,ADEC R1 ;R1自减1,将新得到的数据存入35H中DJNZ R4,RE00RET8.写字节的程序设计;写DS1820的子程序WRITE_1820:MOV R2,#8CLR CWRITE8:CLR SENSORMOV R3,#6 ;产生写1 隙的方式主机在拉低总线后接着必须在15us之内释放总线由5k上拉电阻将总线拉至高电平DJNZ R3,$ ;延时(6*2+1)*1

    27、.085=14.105usRRC AMOV SENSOR,C ;在此期间SENSOR为1就传送1 ,SENSOR为0就传送0,要保持45us左右MOV R3,#21 DJNZ R3,$ ;延时(21*2+1)*1.085=46.655usSETB SENSORNOPDJNZ R2,WRITE8SETB SENSORRET 附录5:其他子程序的设计 1. BCD处理子程序TEMCOV:MOV A, TEMPER_HANL A,#80HJZ TEMCOV1 ;如果ACC=0,则执行TEMCOV1CLR CMOV A, TEMPER_LCPL AADD A,#01HMOV R7,AANL A,#0F

    28、HMOV TEMDOT,AMOV A,R7SWAP AANL A,#0FHMOV TEMPER_L,AMOV R3,TEMPER_LMOV A,TEMPER_HCPL AADDC A,#00HSWAP AORL A, TEMPER_LMOV TEMINT,AMOV TEMHC,#40H ;置-标志符LJMP SCANTEMCOV1:MOV A, TEMPER_LANL A,#0FHMOV TEMDOT,AMOV A, TEMPER_LANL A,#0F0HSWAP AMOV TEMPER_L,AMOV A, TEMPER_HSWAP AMOV TEMPER_H,AMOV A, TEMPER_HORL A, TEMPER_LMOV TEMINT,AMOV R3,#00HMOV R2,TEMINTDD1:DJNZ R2,DD2DD2:INC R3MOV A,R2JZ TEMCOV22CJNE R3,#99,DD1DEC R2MOV TEMINT,R2MOV TEMHC,#06HRETTEMCOV22:MOV TEMHC,#00H LJMP SCAN2. 动态显示设计动态显示部分我们采用六位共阳极七段数码管循环扫描显示,软件设计程序如下:;动态扫描五位数码管SCAN:MOV R


    注意事项

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

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




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

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

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


    收起
    展开