DS18B20汇编程序编写实例_第1页
DS18B20汇编程序编写实例_第2页
DS18B20汇编程序编写实例_第3页
DS18B20汇编程序编写实例_第4页
DS18B20汇编程序编写实例_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

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

2、ct: 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 accuracy.

3、 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 temperatur

4、e 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.系统的硬件设计与实现32.1 系

5、统的硬件基本组成部分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 系统方法选择和论证1.1 题目要求1.1.1 基本要求设计并制作一个多路温度测量系统

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

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

8、复杂,对电源要求严格,而且还容易受外界因数影响,就从成本方面考虑也没有必要这么大费周章。该方案的框图模块如图1.2.2所示传感器电流源传感器及差分放大AT89S52低通滤波器低通滤波器模数转换器图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显示字符,而且电路连

11、接十分简便,是最理想的选择。1.2.2 系统各模块的最终方案经过仔细分析和论证,决定了系统各模块的最终方案如下:(1) 控制模块:AT89S52(2) 温度采集模块:DS18B20(3) 显示模块:六位LED七段数码管系统的基本框图如图1.2.4所示AT89S52DS18B206位LED数码管图1.2.42.系统的硬件设计与实现2.1 系统的硬件基本组成部分本题是一个多路温度采集并显示的综合设计,在设计中主要的就是运用数字温度传感器传输数据。系统可以分为传感器检测部分和动态显示部分。传感器检测部分:系统利用该硬件测量温度并传输给单片机来处理。动态显示部分:采用6位数码管共阳极动态显示,由于是采

12、用动态显示,故会需要些驱动,本系统采用74LS07集电极开路六正向高压驱动器作为数码管的驱动。2.2主要单元电路的设计2.2.1 传感器部分电路2.2.2七段数码管本实验采用六位共阳极显示如表1所示表一: 七段数码管共阳极显示显示七段数码0123456789a1011011111b1111100111c1101111111d1011011011e1010001010f1000111011g0011111011dp0000000000十六进制代码3FH06H5BH4FH66H6DH7DH07H7FH6FH3系统程序设计3.1系统的软件设计硬件简单,那么软件就相对复杂多了,由于篇幅限制,详细设计请

13、参见附录43.2 温度转换设计由传感器传送了两个字节的温度,是以补码形式存储的,默认传感器精度为12位表2所示的是12位转化后得到的12位数据,存储在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通讯协议的规

14、定,温度转换的程序流程图如图3.5.1所示。开始主机发送复位命令判断从机是否回复命令发送温度转换命令读两个字节温度BCD转换动态显示主机发送跳过ROM命令否是图3.3.14.系统测试4.1 测试仪器1.万用表MF-47A2.Nokia AC-8C电源适配器3.标准数字温度计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:程序清单 ;实在抱歉,由于实验

16、材料和篇幅的限制这里的程序只写了一路;晶振为11.0592MHzORG00HTEMPER_LEQU36HTEMPER_HEQU35HTEMHCEQU37H;设置温度符号标志位TEMINTEQU38H;设置整数显示寄存器TEMDOTEQU39H;设置小数显示寄存器FLAGE1BIT00H;设置标志SENSORBIT P2.0 ;SENSOR为传感器的单线控制变量MOVP1,#0FFHMOVP0,#00HLCALLDELAY;开机时静态显示88888,2s 钟时间LCALLDELAYLCALLDELAYLCALLDELAYLCALLDELAYLCALLDELAYLCALLDELAYLCALLDEL

17、AYMOVP0,#0FFH;*START:MOVP1,#06HMOVP0,#0FEH;显示数码1MOVSP,#70HLCALLGET_TEMPERLCALLTEMCOV1LCALLSCAN;扫描第一路温度LJMPSTARTNOPNOP;读出转换后的温度值程序段GET_TEMPER:SETBSENSORLOCATE_1820:LCALLINIT_1820JBFLAGE1,CMDDLJMPLOCATE_1820CMDD:LCALLDELAY1MOVA,#0CCH ;跳过ROM匹配LCALLWRITE_1820MOVA,#44H ;发出温度转换命令这个命令转换需要750msLCALLWRITE_18

18、20NOPLCALLDELAYLCALLDELAYLCALLDELAYLCALLDELAYMOVP0,#0FFHLCALLDELAYMEASURE:LCALLINIT_1820JBFLAGE1,MEAGOLJMPMEASUREMEAGO:LCALLDELAY1MOVA,#0CCH ;跳过ROM匹配LCALLWRITE_1820MOVA,#0BEH ;发出读温度命令LCALLWRITE_1820LCALLREAD_18200 ;读两个字节数据RET;写DS1820的子程序WRITE_1820:RET ;读DS1820的程序,从DS1820中读出两个字节的温度数据READ_18200:RET;DS

19、1820初始化程序INIT_1820:RETTEMCOV:RETTEMCOV22:MOVTEMHC,#00HLJMPSCAN;动态扫描五位数码管SCAN:RETTEMPDOTTABLE: 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的通讯协议及

20、读写复位等程序1.DS18B20的通讯协议DS18B20无论是硬件连接还是输出温度数据格式都非常简单明了,但是程序的控制较为复杂,而且必须严格按照通信协议来传递数据,否则将得不到正确的数据。通过单线总线与DS18B20通信,我们将使用到“时隙”的概念。所有的单总线器件要求采用严格的通信协议以保证数据的完整性该协议定义了几种信号类型复位脉冲应答脉冲写0 写1 读0 和读1 所有这些信号除了应答脉冲以外都由主机发出同步信号并且发送所有的命令和数据都是字节的低位在前这一点与多数串行通信格式不同(多数为字节的高位在前)。2. 初始化序列复位和应答脉冲单总线上的所有通信都是以初始化序列开始包括主机发出的

21、复位脉冲及从机的应答脉冲如图5所示当从机发出响应主机的应答脉冲时即向主机表明它处于总线上且工作准备就绪在主机初始化过程主机通过拉低单总线至少480us 以产生Tx 复位脉冲接着主机释放总线并进入接收模式Rx 当总线被释放后5k 上拉电阻将单总线拉高在单总线器件检测到上升沿后延时15-60us 接着通过拉低总线60-240us 以产生应答脉冲3. 读/写时隙在写时隙期间主机向单总线器件写入数据而在读时隙期间主机读入来自从机的数据在每一个时隙总线只能传输一位数据4. 写时隙存在两种写时隙写1 和写0 主机采用写1 时隙向从机写入1 而采用写0 时隙向从机写入0 所有写时隙至少需要60us 且在两次

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

23、主机发起至少拉低总线1us,如图4所示在主机发起读时隙之后单总线器件才开始在总线上发送0 或1 若从机发送1 则保持总线为高电平若发送0 则拉低总线当发送0 时从机在该时隙结束后释放总线由上拉电阻将总线拉回至空闲高电平状态从机发出的数据在起始时隙之后保持有效时间15us 因而主机在读时隙期间必须释放总线并且在时隙起始后的15us 之内采样总线状态表3表2根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CP

24、U将数据线下拉500us,然后释放,当DS18B20收到信号后等待1660us左右,后发出60240us的存在低脉冲,主CPU收到此信号表示复位成功。表36.初始化程序设计:;DS1820初始化程序INIT_1820:SETBSENSOR;拉高单线总线NOP;1us恢复时间CLRSENSOR ;单片机发出复位脉冲(480960us)MOVR0,#250TSR1:DJNZR0,$ ;延时(250*2+1)*1.085=543.585usSETBSENSOR ;拉高单线总线MOVR0,#25H;DS1820的TSR2:DJNZR0,$;延时;(37*2+1)*1.085=81.375usJNBSE

25、NSOR, TSR3LJMPTSR4TSR3:SETBFLAGE1;置标志位,表示DS1820存在LJMPTSR5TSR4:;置标志位,表示DS1820不存在CLRFLAGE1LJMPTSR7TSR5:MOVR0,#120 TSR6:DJNZR0,$ ;延时(100*2+1)*1.085=218.085usTSR7:SETBSENSORRET7.读字节的程序设计;读DS1820的程序,从DS1820中读出两个字节的温度数据READ_18200:MOVR4,#2;将温度的高位和低位从DS1820中读出MOVR1,#36H;低位存入36H(TEMPER_L),高位存入35H(TEMPER_H)RE

26、00:MOVR2,#8;设置计数器RE01:CLRC;进位C清零SETBSENSOR;拉高单总线NOPNOPCLRSENSOR;拉低单总线NOPNOPNOPSETBSENSORMOVR3,#7;延时DJNZR3,$MOVR3,#23DJNZR3,$RRCADJNZR2,RE01MOVR1,ADECR1;R1自减1,将新得到的数据存入35H中DJNZR4,RE00RET8.写字节的程序设计;写DS1820的子程序WRITE_1820:MOVR2,#8CLRCWRITE8:CLRSENSORMOVR3,#6;产生写1 隙的方式主机在拉低总线后接着必须在15us之内释放总线由5k上拉电阻将总线拉至高

27、电平DJNZR3,$;延时(6*2+1)*1.085=14.105usRRCAMOVSENSOR,C;在此期间SENSOR为1就传送1 ,SENSOR为0就传送0,要保持45us左右MOVR3,#21DJNZR3,$;延时(21*2+1)*1.085=46.655usSETBSENSORNOPDJNZR2,WRITE8SETBSENSORRET 附录5:其他子程序的设计1.BCD处理子程序TEMCOV:MOVA, TEMPER_HANLA,#80HJZTEMCOV1;如果ACC=0,则执行TEMCOV1CLRCMOVA, TEMPER_LCPLAADDA,#01HMOVR7,AANLA,#0F

28、HMOVTEMDOT,AMOVA,R7SWAPAANLA,#0FHMOVTEMPER_L,AMOVR3,TEMPER_LMOVA,TEMPER_HCPLAADDCA,#00HSWAPAORLA, TEMPER_LMOVTEMINT,AMOVTEMHC,#40H;置"-"标志符LJMPSCANTEMCOV1:MOVA, TEMPER_LANLA,#0FHMOVTEMDOT,AMOVA, TEMPER_LANLA,#0F0HSWAPAMOVTEMPER_L,AMOVA, TEMPER_HSWAPAMOVTEMPER_H,AMOVA, TEMPER_HORLA, TEMPER_L

29、MOVTEMINT,AMOVR3,#00HMOVR2,TEMINTDD1:DJNZR2,DD2DD2:INCR3MOVA,R2JZTEMCOV22CJNER3,#99,DD1DECR2MOVTEMINT,R2MOVTEMHC,#06HRETTEMCOV22:MOVTEMHC,#00HLJMPSCAN2. 动态显示设计动态显示部分我们采用六位共阳极七段数码管循环扫描显示,软件设计程序如下:;动态扫描五位数码管SCAN:MOVR3,#2SCAN4:MOVR4,#100SCAN3:MOVA,#39HMOVP1,AMOVP0,#0FEH;点亮第一位数码管LCALLDELAY0.5MSMOVP0,#0F

30、FH;熄灭一下MOVA,#63HMOVP1,AMOVP0,#0FDH;点亮第一位数码管LCALLDELAY0.5MSMOVP0,#0FFH;熄灭一下ANLP1,#00HMOVA,TEMDOTMOVDPTR,#TEMPDOTTABLEMOVCA,A+DPTRMOVR0,ASCAN1:ANLA,#0FHMOVDPTR,#DYNAM_TABLEMOVCA,A+DPTRMOVP1,AMOVP0,#0FBH;选中第三位数码管,显示小数位LCALLDELAY0.5MSMOVP0,#0FFHMOVP1,#80H;小数点位被点亮MOVP0,#0F7HLCALLDELAY0.5MSANLP1,#00HMOVA,TEMINTMOVDPTR,#TEMP_TABMOVCA,A+DPTRMOVR0,ASCAN2:ANLA,#0FHMOVDPTR,#DYNAM_TABLEMOVCA,A+DPTRMOVP1,AMOVA,#0F7HMOVP0,A;选中第四位数码管LCALLDELAY0.5MSANLP1,#00H ;熄灭一下MOVA,R0SWAPAANLA,#0FHMOVDPTR,#DYNAM_TABLEMOVCA,A+DPTRMOVP1,AMO

温馨提示

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

评论

0/150

提交评论