《基于单片机的温度控制系统的设计毕业论文.doc》由会员分享,可在线阅读,更多相关《基于单片机的温度控制系统的设计毕业论文.doc(34页珍藏版)》请在三一办公上搜索。
1、 编号 淮安信息职业技术学院毕业论文题 目基于单片机的温度控制系统的设计学生姓名学 号系 部电气工程专 业电气自动化班 级指导教师顾问教师摘 要温度是一种最基本的环境参数,人们生活与环境温度息息相关,在工业生产过程中需要实时测量温度,在工业生产中也离不开温度的测量,因此研究温度的测量方法和控制具有重要的意义。本论文介绍了一种以单片机为主要控制器件,以DS18B20为温度传感器的新型数字温度计。主要包括硬件电路的设计和系统程序的设计。硬件电路主要包括主控制器,测温控制电路和显示电路等,主控制器采用单片机AT89C52,温度传感器采用美国DALLAS半导体公司生产的DS18B20,显示电路采用8位
2、共阴极LED数码管,ULN2803A为驱动的动态扫描直读显示。测温控制电路由温度传感器和预置温度值比较报警电路组成,当实际测量温度值大于预置温度值时,发出报警信号,即发光二极管亮。系统程序主要包括主程序,测温子程序和显示子程序等。DS18B20新型单总线数字温度传感器是DALLAS 公司生产的单线数字温度传感器, 集温度测量和 A /D转换于一体 ,直接输出数字量,具有接口简单、精度高、抗干扰能力强、工作稳定可靠等特点。由于采用了改进型智能温度传感器DS18B20作为检测元件,与传统的温度计相比,本数字温度计减少了外部的硬件电路,具有低成本和易使用的特点。DS18B20温度计还可以在高温报警、
3、远距离多点测温控制等方面进行应用开发,具有很好的发展前景。此外,还介绍了系统的调试和性能分析。关键词:显示电路,单片机,AT89C52,温度传感器,DS18B20 ,单总线目 录摘 要I第一章 绪论1第二章设计任务及方案分析22.1设计任务及要求22.2 设计总体方案及方案论证22.3 温度测量的方案与分析2第三章芯片功能简介43.1 AT89C52芯片简介43.2 DS18B20的功能简介6第四章系统硬件电路的设计124.1 主控制电路和测温控制电路原理图124.2 驱动电路模块原理图124.3 显示模块原理图13第五章软件编程调试及性能分析155.1 主程序流程图155.2 主程序155.
4、3 温度子程序175.4显示子程序225.5调试性能分析和注意事项23第六章 总结与展望25致 谢26参考文献27附录29第一章 绪论日常生活及工农业生产中经常要用到温度的检测及控制,在冶金、食品加工、化工等工业生产过程中,广泛使用的各种加热炉、热处理炉、反应炉等,都要求对温度进行严格控制。在日常生活中,电烤箱、微波炉、电热水器、烘干箱等电器也需要进行温度检测与控制。传统的测温元件有热电偶和热电阻。而热电偶和热电阻测出的一般是电压,再转换成对应的温度,需要比较多的外部硬件支持,硬件电路复杂,软件调试复杂,制作成本高。而采用单片机对温度进行控制,不仅具有控制方便,简单和灵活等优点,而且可以大幅度
5、提高温度控制的技术指标。测量温度的关键是温度传感器,温度传感器正从模拟式向数字式、从集成化向智能化、网络化的方向发展。在测温电路中,可以使用热敏电阻之类的器件利用其感温效应,将随被测温度变化的电压或电流采集过来,先进行A/D转换,然后用单片机进行数据的处理,再在显示电路上,将被测温度显示出来。这种设计需要用到A/D转换电路,因此感温电路的设计比较复杂。进而想到采用智能温度传感器来设计数字温度计。本数字温度计的设计采用美国DALLAS半导体公司继DS1820之后推出的一种改进型智能温度传感器DS18B20作为检测元件,其温度值可以直接被读出来,通过核心器件单片机AT89C52控制温度的读写和显示
6、,用LED数码管显示。测温范围为55125,最大分辨率可达0.0625。而且采用3线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。 按照系统设计功能的要求,确定系统有5个模块组成:主控制器、温度传感器DS18B20、报警电路、按键预置温度值电路及显示电路。控制器使用AT89C52,温度传感器使用DS18B20,用8位共阴极LED数码管以动态扫描法实现温度显示。系统程序主要包括主程序、温度控制子程序及显示子程序等等。综上所述,本设计以智能集成温度传感器DS18B20为例,介绍基于DS18B20传感器的数字温度计的设计,该设计适用于人们的日常生活及工农业生产中用于温度的检测及控制
7、。第二章.设计任务及方案分析2.1设计任务及要求设计一个以单片机为核心的温度测量系统,可实现的功能为:(1)测量温度值精度为1。(2)系统允许的误差范围为1以内。(3)系统可由用户预设温度值,测温范围为55125。(4)超出预置值时系统会自动报警,即发光二极管亮。(5)系统具有数码显示功能,能实时显示设定温度值和测得的实际温度值。2.2 设计总体方案及方案论证在日常生活及工农业生产中经常要用到温度的检测及控制,传统的测温元件有热电偶和热点阻。而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,需要比较多的外部硬件支持,硬件电路复杂,软件调试复杂,制作成本高。 本数字温度计设计采用美国DAL
8、LAS半导体公司继DS1820之后推出的一种改进智能温度传感器DS18B20作为检测元件,测温范围为55125,最大分辨率可达0.0625。DS18B20可以直接读出被测量的温度值,而采用3线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。 按照系统设计功能的要求,确定系统由5个模块组成:主控制器AT89C52,温度传感器DS18B20,报警电路,按键电路及驱动显示电路。数字温度计总体电路框图如图1-1所示。2.3 温度测量的方案与分析1芯片选择本设计的测温系统采用芯片DS18B20, DS18B20是DALLAS公司的最新单线数字温度传感器,它的体积更小、适用电压更宽、更经济
9、,DS18B20是世界上第一片支持“一线总线”接口的温度传感器,具有一线总线独特而且经济的特点。采用智能温度传感器DS18B20作为检测元件,测温范围为55125,最大分辨率可达0.0625。DS18B20可以直接读出被测量的温度值,而且采用3线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。2实现方法简介:DS18B20采用外接电源方式工作,一线测温的一线与AT89C52的P3.7连接并加上上拉电阻使其工作,测出的数据存放在寄存器10H-12H中,将数据经过BCD码转换后送LED显示。具体实现步骤见软件设计章节。主控制器AT89C52驱动显示电路按键电路报警电路DS18B20
10、图1-1 总体电路框图3测温流程图:初始化跳过ROM匹配数码管显示温度变换读暂存器 转换成显示码延时1S跳过ROM匹配图1-2 测温流程图第三章.芯片功能简介3.1 AT89C52芯片简介AT89C52是美国ATMEL公司生产的低电平,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的只读程序存储器(PEROM)和256 bytes的随机存取数据存储器(RAM ),器件采用ATMEL公司的高密度、非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内置通用8位中央处理器(CPU)和Flash存储单元,32个可编程I/O口线, 3个16位定时/计数器, 低功耗
11、空闲和掉电模式。功能强大的AT89C52单片机适合于许多较为复杂控制应用场合。引脚功能说明如下:(1)VCC:电源电压(2)GND:地(3) P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复位,在访问期间激活内部上拉电阻。(4)P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTE逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平
12、,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(ILL)。与AT89C51不同之处是,P1.0和P1.1还可分别作为定时/计数器2的外部计数输入(P 1.0/T2)和输入(P 1.1/T2EX ),参见表2-1。 Flash编程和程序校验期间,P1接收低8位地址。表2-1 P1.0和P1.1的第二功能引 脚 号 功能特性P1.0T2(定时/计数器2外部计数脉冲输入),时钟输出P1.1T2EX(定时/计数2捕获/重装载触发和方向控制)(5)P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门
13、电路。对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(ILL)。在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX DPTR指令)时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器(如执行MOVX RI指令)时,P2口输出P2锁存器的内容。(6)P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3口将用上拉电阻输出电流(
14、ILL)。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如表2-2所示。(7)RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。表2-2 P3口的第二功能端口引脚第二功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2(外中断0)P3.3(外中断1)P3.4T0(定时/计数0)P3.5T1(定时/计数1)P3.6(外部数据存储器写选通)P3.7(外部数据存储器读选通)(8)/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH ) 。端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复
15、位时内部会锁存端状态。如端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。Flash存储器编程时,该引脚加上+12V的编程允许电源VPP,当然这必须是该器件是使用12V编程电压VCC 。(9)XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。(10)XTAL2:振荡器反相放大器的输出端。(11)数据存储器:AT89C52有256个字节的内部RAM,80H-FFH高128个字节与特殊功能寄存器(SFR)地址是重叠的,也就是高128。字节的RAM和特殊功能寄存器的地址是相同的,但在物理上它们是分开的。当一条指令访问7FH以上的内部地址单元时,指令中使用的寻址方式是不同的,也即寻址
16、方式决定是访问高128字节。RAM还是访问特殊功能寄存器。如果指令是直接寻址方式则为访问特殊功能寄存器。(12)中断:AT89C52共有6个中断向量:两个外中断(INT0和INT1),3个定时器中断(定时器0, 1, 2)和串行口中断。(13)时钟振荡器: AT89C52中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路参见图2-1(a)图所示。外接石英晶体(或陶瓷谐振器)及电容C1、C2接在放大器的反馈回路中构成并联振荡电路,对外接电容C1、C2虽然没有十分严格
17、的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程度及温度稳定性,如果使用石英晶体,我们推荐电容使用30pF士10pF,而如果使用陶瓷谐振器,建议选择40pF士l0pF。用户也可以采用外部时钟。采用外部时钟的电路如图2-1(b)图所示。这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。 (a)内部振荡电路 (b)外部振荡电路图2-1 振荡电路由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。3.2 DS18B2
18、0的功能简介 1芯片简介(1) 适应电压范围更宽,电压范围:3.0 V5.5V,在寄生电源方式下可由数据线供电。(2) 独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。(3) DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。(4) 测温范围55125,在-10+85时精度为0.5。(5) 可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温。(6) 在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750
19、ms内把温度值转换为数字,速度更快。(7) 测量结果直接输出数字温度信号,以“一线总线”串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。(8) 负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。.2DS18B20外形和内部结构DS18B20内部结构如图2-2所示,主要由4部分组成:64位ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的外形及管脚排列如图2-3和表2-3所示。I/O 64位ROM和单线接 口 高速缓存 存储器 存储器和控制器8位CRC生成器温度传感器 低温触发器TL高温触发器TH配置寄存器电源检测 C图2-图2-
20、2 DS18B20的内部结构表2-3 DS18B20引脚定义:序号名称引脚功能描述1GND地信号2DQ数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。3VDD可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。(1) 64位ROM ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码,每个DS18B20的64位序列号均不相同。64位ROM的循环冗余校验码(CRC=X8X5X41)。ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。 DS18B20中的温度传感器完成对温度的测
21、量,用16位符号扩展的二进制补码读数形式提供,以0.0625/LSB形式表达,其中S为符号位。DS18B20温度值格式表2-4如下所示。这是12位转化后得到的12位数据,存储在DS18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。例如25.0625的数字输出为0191H,25.0625的数字输出为FF6FH。 表2-4 DS18B20温度值格式表 bit7 bit6 bit5 bit4 bit3 bit2 bit1
22、 bit0LS Byte22222222 bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8 MS ByteSSSSS222 (2)高低温报警触发器TH和TLDS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。 (3)配置寄存器 该字节各位的意义如下表2-5所示。表2-5:配置寄存器结构TMR1R011111低五位一直都是“1”,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0
23、用来设置分辨率,如下表2-6所示(DS18B20出厂时被设置为12位)。 (4)高速暂存器是一个9字节的存储器。开始两个字节包含被测温度的数字量信息;第3、4、5字节分别是TH、TL、配置寄存器的临时拷贝,每一次上电复位时被刷新;第6、7、8字节未用,表现为全逻辑1;第9字节读出的是前面所有8个字节的CRC码,可用来保证通信正确。高速暂存器RAM结构图如下表2-7所示。表2-6 温度分辨率设置表R1R0分辨率温度最大转换时间009位93.75ms 0110位187.5ms 1011位375ms 1112位750ms 3. DS18B20的工作时序DS18B20的一线工作协议流程是:初始化ROM
24、操作指令存储器操作指令数据传输。其工作时序包括初始化时序、写时序和读时序,如图4-4 (a)(b)(c)所示。表2-7 DS18B20暂存寄存器分布寄存器内容 字节地址温度值低位 (LS Byte)0温度值高位 (MS Byte)1高温限值(TH)2低温限值(TL)3配置寄存器4保留5保留6保留7CRC校验值8 DS18B20等待 DS18B20Tx产生 15us16us 脉冲60-240 主机复位脉冲 VCC 480usTX960us 主机Rx min480us 1-Wire Bus GND图2-4 (a)初始化时序主机控制DS18B20完成任何操作之前必须先初始化,即主机发一复位脉冲(最短
25、为480us的低电平),接着主机释放总线进入接收状态,DS18B20在检测到I/O引脚上的上升沿之后,等待15-60us然后发出存在脉冲(60-240us的低电平)。 写时间片:将数据从高电平拉至低电平,产生写起始信号。在15us之内将所需写的位送到数据线上,在15us到60us之间对数据线进行采样,如果采样为高电平,就写1,如果为低电平,写0就发生。在开始另一个写周期前必须有1us以上的高电平恢复期。读时间片:主机将数据线从高电平拉至低电平1us以上,再使数据线升为高电平,从而产生读起始信号。主机在读时间片下降沿之后15us内完成读位。每个读周期最短的持续期为60us,各个读周期之间也必须有
26、1us以上的高电平恢复期。 主机写“0”时隙 主机写“1”时隙 VCC 60usTX120us 1ustxcc1us DS18B20采样 15us MIN TYP MAX MIN TYP MAX 15us 30us 15us 15us 30us图2-4(b)写时序VCC 主机读“0”时隙 主机读“1”时隙1-Wire Bus GND 主机采样 1us15us 15us 30us 主机采样 15us图2-4(c)读时序4. DS18B20与单片机的典型接口设计图2-5以MCS51系列单片机为例,画出了DS18B20与微处理器的典型连接。图2-5(a)中DS18B20采用寄生电源方式,其VDD和G
27、ND端均接地,图2-5(b)中DS18B20采用外接电源方式,其VDD端用3V5.5V电源供电。(a) 寄生电源工作方式 (b) 外接电源工作方式图2-5 电源工作方式图 5DS18B20的各个ROM命令(1) Read ROM 33H这个命令允许总线控制器读到DS18B20的8位系列编码,惟一的序列号的8位CRC码。只有在总线上存在单只DS18B20的时候才能用这个命令。如果总线上有不止一个从机,当所有从机试图同时传送信号时就会发生数据冲突(漏极开路连在一起形成“与”的效果)。(2)Match ROM 55H这是个匹配ROM命令,后跟64位ROM序列,让总线控制器在多点总线上定位一只特定的D
28、S18B20。只有和64位ROM序列完全匹配的DS18B20才能响应随后的存储器操作。所有和64位ROM序列不匹配的从机都将等待复位脉冲。这条命令在总线上有单个或多个器件时都可以使用。(3) Skip ROM 0CCH 这个命令允许总线控制器不用提供64位ROM编码就使用存储器操作命令,在单点总线情况下,可以节省时间。如果总线上不止一个从机,在命令之后紧跟着发一条读命令,由于多个从机同时传信号。总线上发生数据冲突(漏极开路连在一起形成“与”的效果)。(4) Search ROM 0F0H当一个系统初次启动时,总线控制器并不知道单线总线上有多少个器件或它们的64位ROM编码。搜索ROM命令允许总
29、线控制器用排除法识别总线上的所有从机的64位编码。(5) Alarm Search 0ECH 这条命令的流程和Search ROM相同。然而,只有在最近一次测温后遇到符合报警条件的情况,DS18B20才会响应这条命令。报警条件定义为温度高于TH或低于TL。只要DS18B20不掉电,报警状态将一直保持,直到再一次测得的温度值达不到报警条件。(6) Write Scratchpad4EH这个命令向DS18B20的暂存器TH和TL中写入数据。可以在任何时刻发出复位命令来中止写入。(7) Read Scratchpad0BEH 这个命令读取暂存器的内容。读取将从第1字节开始,一直进行下去,直到第9(C
30、RC)字节读完。如果不想读完所有字节,控制器可以在任何时刻发出复位命令来中止读取。(8) Copy Scratchpad48H这个命令把暂存器的内容拷贝到DS18B20的EROM存储器里,即把温度报警触发器字节存入非易失性存储器里。如果控制器在这条命令之后跟着发出读时间隙,而DS18B20又忙于把暂存器拷贝到E存储器,DS18B20就会输出一个0,如果拷贝结束的话,DS18B20输出1。如果使用寄生电源,总线控制器必须在这条命令后立即启动强上拉,并最少保持10ms。(9) Convert T44H 这个命令启动一次温度转换而无需其他数据。温度转换命令被执行,而后DS18B20保持等待状态。如果
31、控制器在这条命令之后跟着发出时间隙,而DS18B20有忙于做时间转换的话,DS18B20将在总线上输出一个0,若温度转换完,则输出1。如果使用寄生电源,总线控制器必须在发出这条命令后立即启动强上拉,并最少保持500ms以上时间。(10) Read E0B8H这条命令把 触发器里的值拷贝回暂存器。这种拷贝操作在DS18B20上电时自动执行,这样一上电暂存器里马上存在有效的数据了。若在这条命令之后发出读数据隙,器件会输出温度转换忙的标识:0为忙,1为完成。(11) Read Power Supply0B4H若把这条命令发给DS18B20后发出读时间隙,器件会返回它的电源模式:0为寄生电源,1为外部
32、电源。第四章.系统硬件电路的设计4.1 主控制电路和测温控制电路原理图主控制电路由AT89C52及外围元件构成,测温电路由DS18B20、预置数电路和报警电路组成。AT89C52是此硬件电路设计的核心,通过AT89C52的管脚P3.7与DS18B20相连,控制温度的读出和显示。预置数电路由两个按键和两个数码管组成,两个按键分别与AT89C52的管脚P3.2和P3.6相连。报警电路很简单,只有一个发光二极管,与AT89C52的P3.0管脚相连,若实际测量的温度值大于预置温度值,则发光二极管亮,即为报警标志。硬件电路的功能都是与软件编程相结合而实现的。具体电路原理图如下图3-1所示。图3-1主控制
33、电路和测温控制电路原理图4.2 驱动电路模块原理图驱动电路由ULN2803A组成,通过网络标号P20-P27与单片机相连,通过网络标号C0-C7与显示电路数码管相连,实现位控制功能。具体电路如下图2-2所示。图3-2 驱动电路原理图图3-3 显示电路原理图4.3 显示模块原理图采用动态显示方案,设计中使用八个共阴极数码管作为显示载体,通过八路并口传输,共使用了十六个I/O口。显示时采用循环移位法,即八位数码管依次循环点亮,利用人眼睛的视觉暂留效果达到连续显示,主程序每运行一遍便调用一次显示子程序,将数据显示出来。显示电路由八位共阴极的数码管组成,通过网络标号A、B、C、D、E、F、G、DP等与
34、AT89C52的P1口相连,由八个136欧的电阻驱动,实现段控制功能。通过网络标号C0-C7与驱动芯片ULN2803A相连,以此为桥梁与AT89C52相连,实现位控制功能。第五章.软件编程调试及性能分析5.1 主程序流程图开始调复位子程序发SKIP ROM命令CCH调WRITE DS18B20子程序发出温度转换命令调WRITE DS18B20子程序调复位子程序 调READ DS18B20子程序调WRITE DS18B20子程序发命令BEH读暂存器内容调WRITE DS18B20子程序发SKIP ROM命令CCH 对读出的温度值进行转换转换后的数存于缓冲区调用比较报警子程序调显示子程序调按键子程
35、序 图4-1 主程序流程图5.2 主程序 ORG 0000H LJMP STARTSTART: MOV DISBUF4,#00H ;开始,初始化 MOV DISBUF5, #00HMAIN: ;主程序 LCAAL KEY ;调按键预置数子程序CLR RS1CLR RS0LCALL RESET ;调复位子程序MOV A,#0CCH ;跳过ROM匹配-0CCHLCALL WRITE ;调DS18B20写子程序MOV A,#44H ;发出温度转换命令LCALL WRITE ;调DS18B20写子程序LCALL RESET ;调复位子程序MOV A,#0CCH ;跳过ROM匹配LCALL WRITE
36、;调DS18B20写子程序MOV A,#0BEH ;发出读取温度值命令LCALL WRITE ;调DS18B20写子程序LCALL READ ;调DS18B20读子程序MOV A, 3DHMOV 29H,ALCALL READMOV A, 3DHMOV 28H, AMOV R0, #34HMOV A, 28HRLC AMOV 47H, C JNB 47H, BTOD1 ;28H中的最高位是否为1(温度0);小于0的温度值不处理,大于0顺序执行BTOD1: MOV A, 28HRRC AMOV 40H, CRRC AMOV 41H, CRRC AMOV 42H, CRRC AMOV 43H, C
37、MOV A, 29H MOV 27H, AMOV C,40H ;将28H中的最低位移入C,40H41H42H;43H为28H中的位地址RRC A ;将28H中的低4位移到A的高4位MOV C, 41HRRC AMOV C, 42HRRC AMOV C, 43HRRC AMOV 29H,A ;将28H中的低4位放入29H中MOV A, 29H ;将29H中的十六进制数转换成10进制 MOV B, #100 DIV AB MOV R0, A ;百位存于34HMOV R0, #11H ;百位不显示DEC R0MOV A, #10XCH A, BDIV ABMOV R0, A ;十位存于33H DEC
38、 R0 MOV R0, B ;个位存于32HDEC R0ANL 27H, #0FH ;小数点后一位进制转换MOV A, 27HMOV B, #06H MUL ABMOV B, #10DIV ABMOV R0, A ;小数点后一位存于31HMOV DISBUF0,33H ;十位MOV DISBUF1,32H ;个位MOV DISBUF2,31H ;小数位MOV DISBUF3, #0H ;置0MOV DISBUF6, #0HMOV DISBUF7, #0HLCALL CMP ;调比较报警子程序LCALL DISPLAY ;调用显示子程序LJMP MAIN ;转到MAIN5.3 温度子程序 由于D
39、S18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作都是按时序进行的。DS18B20的一线工作协议流程是:初始化ROM操作指令存储器操作指令数据传输。1. DS18B20复位子程序DS18B20复位时序图参看后面芯片功能部分有详细的介绍。在这一部分只给出程序流程图,然后给出根据流程图所编写的DS18B20复位子程序。开始拉低数据线P3.7=0 发600us复位脉冲 P3.7送给CY 延时500usDS18B20等待60us 主机释放数据线P3.7=1DS18B20的P3.7=1?延时1us以上返回DS18B20的P3.7=1?YN延时240usYN图4-2 DS18B20复位子程序流程图 Y 程序如下:RESET: NOPL0: CLR P3.7 ;拉低数据线MOV R2,#200 ;发出600us的复位脉冲L1: NOPDJNZ R2, L1SETB P3.7 ;主机释放数据线MOV R2,#30 ;DS18B20等待60usL4: DJNZ R2, L4CLR C ORL C,P3.7 ;DS18B20数据变低(存在脉冲)吗?JC L3 ;DS18B20准备好,结束MO