DS18B20课程设计汇编语言编程.docx_第1页
DS18B20课程设计汇编语言编程.docx_第2页
DS18B20课程设计汇编语言编程.docx_第3页
DS18B20课程设计汇编语言编程.docx_第4页
DS18B20课程设计汇编语言编程.docx_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

课程设计实验报告课程:_单片机原理与应用 系 别: _ _专 业:_ _ _班 级:_ _第_组 学生:姓名_ 学号_ 姓名_ 学号_ 姓名_ 学号_ 成绩: _ _ _填表时间: 年 月温度监控系统设计一、功能要求1、温度监控范围0C100C。2、实时显示当前温度。四位有效数,保留小数点一位。3、当温度超限时,系统告警。4、当温度超限时,能够控制启动设备升温或降温。上述1-3为基本部分,4为发挥部分,选做。二、系统分析及构成根据上述功能要求,系统构成做如下几个方面的分析:n 根据温度监控范围,选择一款合适的温度传感器对温度进行测量。n 系统可采用LED七段数码管作为显示器,显示温度及参数等。n 告警可采用指示灯或者蜂鸣器。n 系统可以控制电风扇、电炉等设备来调节温度。n 系统采用单片机控制与管理。因此,系统可以由下述如图1示的电路模块构成。MCUShowTemperaturesensorpowerinterfaceAlarm图2.1、系统构成单片机根据传感器提供的被测环境温度值,实时显示当前温度。并判断是否超过温度的警戒线,如果超出警戒线,单片机控制告警设备告警。同时启动相关设备调节温度。按键是用户界面,用于查阅与修改警戒线的上下极限值。下面根据系统结构,将对系统进行更深入分析。1、温度传感器、DS18B20产品的特点:、一个I/O端口实现与主机通信。、在DS18B20中的每个器件上都有独一无二的序列号。、实际应用中不需要外部任何元器件即可实现测温。、测量温度范围在55C到125C之间。、数字温度计的分辨率用户可以从9位到12位选择。、内部有温度上、下限告警设置。、DS18B20的引脚及封装DS18B20采用TO92封装,像一只三极管。其引脚排列见图,其引脚功能描述见表2.1。 图2.2、封装及引脚排列表2.1 DS18B20详细引脚功能描述序号名称引脚功能描述1GND地信号2DQ数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。3VDD可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。、DS18B20内部结构DS18B20中的高速暂存器是一个9字节的存储器,用于存放温度的采样值、告警与监督参数设置。如表2.2所示。表2.2 高速暂存器暂存器字节地址温度值低位0温度值高位1温度上限TH2温度下限TL3配置寄存器4保留5保留6保留7CRC校验8、温度值如表2.3所示。表2.3:温度值精度设置为12位时的数据格式温度低8位D7D6D5D4D3D2D1D0温度高8位SSSSSD10D9D8其中,S为符号位,S=1,表示温度 为负值;S=0,表示温度为正值。例如+125的数字输出为07D0H,-55的数字输出为FC90H。一些温度值对应的数字输出如表所示。、DS18B20中的低温触发器TL、高温触发器TH,用于设置低温、高温的报警数值。DS18B20完成一个周期的温度测量后,将测得的温度值和TL、TH相比较,如果小于TL,或大于TH,则表示温度越限,将该器件内的告警标志位置位,并对主机发出的告警搜索命令作出响应。需要修改上、下限温度值时,只需使用一个功能命令即可对TL、TH写入,十分方便。、配置寄存器开始两个字节为被测温度的数字量,其含义如表2.2所示。第3、4、5字节分别为TH、TL、配置寄存器的复制,每一次上电复位时被重写。配置寄存器有R0、R1组成,其值决定温度转换的精度位数、转换时间等,含义如表2.4所示。第7字节为测温计数的剩余值。第8字节为测温时每度的计数值。第9 字节读出的是前8个字节的CRC校验码,通过此码,可判断通讯是否正确。表2.4、配置寄存器R1R0转换精度温度分辨率转换时间(Ms)0090.593.7501100.25187.510110.12537511120.0625750、DS18B20的读写操作1)、ROM操作命令、读命令(33H):通过该命令主机可以读出DS18B20的ROM中的8位系列产品代码、48位产品序列号和8位CRC校验码。该命令仅限于单个DS18B20在线的情况。、选择定位命令(55H):当多片DS18B20在线时,主机发出该命令和一个64位数,DS18B20内部ROM与主机一致者,才响应命令。该命令也可用于单个DS18B20的情况。、查询命令(0F0H):该命令可查询总线上DS18B20的数目及其64位序列号。、跳过ROM序列号检测命令(OCCH):该命令允许主机跳过ROM序列号检测而直接对寄存器操作,该命令仅限于单个DS18B20在线的情况。、报警查询命令(0ECH):只有报警标志置位后,DS18B20才响应该命令。2)、存储器操作命令、写入命令(4EH):该命令可写入寄存器的第2、3、4字节,即高低温寄存器和配置寄存器。复位信号发出之前,三个字节必须写完。、读出命令(0BEH):该命令可读出寄存器中的内容,复位命令可终止读出。、开始转换命令(44H):该命令使DS18B20立即开始温度转换,当温度转换正在进行时,主机这时读总线将收到O;当温度转换结束时,主机这时读总线将收到1。若用信号线给DS18B20供电,则主机发出转换命令后,必须提供至少相应于分辨率的温度转换时间的上拉电平。、回调命令(088H):该命令把EEROM中的内容写到寄存器TH、TL 及配置寄存器中。DS18B20上电时能 自动写入。、复制命令(48H):该命令把寄存器TH、TL及配置寄存器中的内容写到EEROM中。、读电源标志命令(084H):主机 发出该命令后,DS18B20将进行响应, 发送电源标志,信号线供电发O,外接 电源发1。、DS18B20的使用方法由于DS18B20采用的是1Wire总线协议方式,即在一根数据线实现数据的双向传输,如果单片机在硬件上不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时时穴、读时序、写时穴。所有时穴都是将单片机作为主设备,DS18B20作为从设备。而单片机每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求DS18B20回送数据,在进行写命令后,单片机需启动读时序完成数据接收。数据和命令的传输都是低位在先高位在后。下述参考程序是在单片机的时钟为:fOSC=11.0592MHz,调试出来的。1)、DS18B20的复位时序对DS18B20操作之前,首先要将它复位。复位时序为:、主机将信号线置为低电平,时间为480960S。、主机将信号线置为高电平,时间为1560 S。、DS18B20发出60240S 的低电平作为应答信号。主机收到此信号后,才能对DS18B20作其它操作。图2.4、复位时序2)、DS18B20的读时序主机将信号线从高电平拉低至低电平1S以上,再使数据线升为高电平,产生读起始信号。从主机将信号线从高电平拉低至低电平起1560 S的时间内,DS18B20将数据放到信号线上,供主机读取。从而完成了一个读周期。在开始另一个读周期前,必须有1S以上的高电平恢复期。图2.5、读时序单片机在时序图的虚线期间读数据,是“1”就是数据1,是“0”就是数据0。3)、DS18B20的写时序主机将信号线从高电平拉至低电平,产生写起始信号。从信号线的下降沿开始,在1560 S的时间内DS18B20对信号线检测,如信号线为高电平,则写1,如信号线为0,则写0,从而完成了一个写周期。在开始另一个写周期前,必须有1S以上的高电平恢复期。图2.6、写“0”时序图2.7、写“1”时序2、显示器显示可采用静态的5位数码管显示器。这样尽管硬件电路稍微复杂,但程序控制简单。系统有几种情况下的显示。、当前温度显示三位整数,一位小数,最高位显示温度符号。正数,此位不显示。、告警显示显示当前(超限)温度。ALARM灯亮,或者开启蜂鸣器。硬件接口需要一个8位的数据端口与5位选择控制口,如图2.8示。3、温度监视极限设置只有上限。由存储器,35H单元固定存放上限值。由点亮LED告警。5、系统工作流程根据上面的结构描述,下面梳理一下系统工作流程,以利于系统软件的设计。单片机读入DS18B20的温度值,进行处理,以十进制方式显示,并判断温度是否超过极限,是,告警且重复前述过程。否则,重复前述过程。三、系统设计1、I/O端口分配由前述分析可知,温度传感器DS18B20需要端口为1个,告警LED端口为1个,显示器需要端口8(数据)+5(位控),如表2.5示。表3.1、I/O端口分配表端口名I/O设备说明端口名I/O设备说明P2P3.3P1.04P1.7阅读程序填写I/O端口分配表!2、存储器分配、温度传感器DS18B20由前述可知DS18B20是一个单总线接口。硬件连接简单。其控制时序由软件模拟。系统仅仅利用其获得当前温度,由软件设置与判断温度极限。系统选择测温精度为12位,所以,系统需要2个字节的数据缓存,存放当前温度原始数据。程序要把新读出的温度值与极限值进行比较。如果超极限,将对应告警指示灯点亮,让蜂鸣器发声告警。、显示驱动系统设置5个存储单元作为显示缓冲。程序直接从中取出显示。、上限温度值存储器1个存储单元。存储器分配入下:表3.2、地址分配地址单元名称用途定义2FH2EH30H31H32H33H35H阅读程序填写存储器分配表!3、硬件设计由表3.1可知,MCS-51的端口数完全满足本设计使用。所以单片机的各外部模块可以直接与其相连。画出电路图:4、软件设计、主程序主程序是一个单线程的工作流程。阅读程序画出程序流程图:、程序设计ORG 0000HSTAR: SETB P3.3 MOV P1,#00H MOV R0,#2EH MOV R1,#0CH MOV A,#00HSTAR1:MOV R0,A INC R0 DJNZ R1,STAR1STAR2:ACALL rst18b20 ;芯片18b20的初始化 JB F0,NOL SETB P1.6 ;温度芯片DS18B20工作不正常进行告警 SETB P1.7 ACALL STAR2NOL: MOV 36H,#00 ;设置低温告警 MOV 38H,#40H ;设置低温告警值正负 MOV 37H,#25 ;设置高温告警 MOV 39H,#0AFH ;设置高温告警值正负MAIN: ACALL READ_TEM ;读取芯片温度 ACALL CLARM ;读出温度进行BCD码转换,并进行告警判断 ACALL CHANGE ; ACALL SHOW ;温度显示 AJMP MAINREAD_TEM: SETB P3.3 LCALL RST18B20 JNB F0,STAR2 MOV A,#0CCH ACALL WRITE MOV A,#044H ACALL WRITE NOPREAD_1: NOP JNB P3.3,READ_1 LCALL RST18B20 MOV A,#0CCH LCALL WRITE MOV A,#0BEH ACALL WRITE ACALL READ RET WRITE:MOV R2,#08h ;对DS18B20字节写操作 CLR CWRITE1:CLR P3.3 MOV R3,#07hSTOP1:DJNZ R3,STOP1 RRC A MOV P3.3,C MOV R3,#22 STOP2:DJNZ R3,STOP2 SETB P3.3 NOP DJNZ R2,WRITE1 SETB P3.3 RET READ:MOV R4,#02 ;对DS18B20双字节读操作 MOV R1,#2EHREAD0:MOV R2,#08READ1:CLR C SETB p3.3 NOP NOP CLR P3.3 NOP NOP SETB P3.3 MOV R3,#06 STOP3:DJNZ R3,STOP3 MOV C,p3.3 RRC A MOV R3,#22STOP4:DJNZ R3,STOP4 DJNZ R2,READ1 MOV R1,A INC R1 DJNZ R4,READ0 SETB P3.3 NOP NOP CLR P3.3 mov R3,#80STOP5:DJNZ R3,STOP5 SETB P3.3 RET rst18b20:SETB P3.3NOPCLR P3.3MOV R0,#200dsr1:NOPDJNZ R0,dsr1 SETB P3.3MOV R0,#0MOV R1,#0dsr2:JNB P3.3,dsr21DJNZ R0,dsr2LJMP dsr4dsr21:JB P3.3,dsr3DJNZ R1,dsr21dsr3:SETB F0LJMP dsr5dsr4:CLR F0dsr5:SETB P3.3RETSHOW:MOV A,31H MOV P2,A SETB P1.0 CLR P1.0 MOV A,32H ORL A,#10H MOV P2,A SETB P1.1 CLR P1.1MOV A, 33HMOV P2,ASETB P1.2CLR P1.2 MOV A,34H MOV P2,A SETB P1.3 CLR P1.3 MOV A,35H MOV P2,A SETB P1.4 CLR P1.4 RETCLARM: MOV 35H,#00HMOV A,2FHJNB Acc.7,p_loop ;对读取温度进行正负判断MOV 35H,#40H CPL AADD A,#1 ;对负温度进行绝对值转换 MOV 2FH,A MOV A,2EH CPL A ADD A,#1 MOV 2EH,A CLR A ADDC A,2EH MOV 2EH,Ap_loop:MOV A,2FHSWAP AANL A,#0F0HMOV R0,AMOV A,2EHSWAP AANL A,#0FHORL A,R0MOV R5,35HCJNE R5,#40H,L0 ;判断温度是否为负数LJMP L5 ;温度为负数则跳转至负温度大小判断L0:MOV R5,39H ;正温度大小判断 CJNE R5,#40H,C0 ;判断设置高温是否为负数SETB P1.7 ;若高温为负数则直接高温告警LJMP L4C0:MOV R1,A CLR CSUBB A,37HJNC L1CLR P1.7LJMP L2L1: SETB P1.7L2: MOV R5,39H CJNE R5,#40H,C1 ;判断设置低温是否为负数CLR P1.6 ;若为负数则没有低于最低温度,低温告警显示正常LJMP L4C1:MOV A,R1MOV R1,ACLR CSUBB A,37HJC L3CLR P1.6LJMP L4L3: SETB P1.6L4: MOV A,R1 LCALL NOBMOV A,2EHANL A,#0FHLCALL LTB2RETl5: MOV R5,39H ;负温度大小判断 CJNE R5,#40H,C2 ;判断设置高温是否为负数,否则跳至C2LJMP L6 ;若高温设置为负数,则直接跳至负温度大小比较C2: CLR P1.7 ;高温度设置为正,则没超过高温,高温告警正常MOV R5,38HCJNE R5,#40H,C3 ;判断低温设置是否为负

温馨提示

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

评论

0/150

提交评论