版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
长安大学单片机课程设计-简易温度控制系统-专业:电气工程及其自动化学号:3204090103姓名:高超指导老师:段晨东时间:2011.12.30摘要随着科技的不断进步,在工业生产中温度是常用的被控参数,而采用单片机来对这些被控参数进行控制已成为当今的主流。本文介绍了数字温度测量及自动控制系统的设计。本系统以STC89C52RC单片机芯片为核心,组成温度测量和控制系统,采用DS18B20数字温度传感器对温度进行实时采样,并将测量结果用数码管显示,可以运用键盘按钮对温度进行定,并且驱动加热器或制冷器将温度调整到设定温度,其功能完善,人机界面良好,可靠性高。通过测试表明,本设计对温度的控制有方便、简单的特点,从而大幅提高了被控温度的技术指标。[关键词]:单片机数字温度传感器键盘和显示AbstractAsthetechnologyadvancesinindustrialproductioninthetemperatureischargedwithcommonparameters,andtheuseofthosechargedwithSCMtotheparametersofcontrolhasbecomethemainstream.Thesystemtosingle-chipSTC89C52RCchipasthecore,thecompositionofthecontroloftemperaturecontrolsystemoftheadoptionofdigitaltemperaturesensorDS18B20temperaturesampling,real-timedisplaywithdigitaltemperaturecontrol,youcanusethekeyboardfortemperatureregulation,theuseofheaterandcoolertemperatureadjustmentstoimproveitsfunctions,agoodman-machineinterface,highreliability。Passedthetestsshowthatthedesignofthetemperaturecontrolisconvenientandsimplecharacteristics’,thusgreatlyraisingthetemperaturewaschargedwiththetechnicalindicators.Keywords:MCUDigitaltemperaturesensorKeyboardandDemonstration目录摘要。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。2目录。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。3题目。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。4前言。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。5一、系统的方案论证。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。61.1题目分析。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。61.2方案论证。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。61.2.1测温电路方案选择。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。61.2.2控制电路和温度设定电路方案与选择。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。61.2.3加热制冷电路方案。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。71.3方案选择。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。71.3.1测温电路。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。71.3.2控制、键盘和显示电路。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。81.3.3总体电路设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。8二、系统的硬件设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。82.1单片机设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。82.2温度传感电路设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。102.3温控电路与报警电路的设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。112.4键盘及显示部分。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。12三、系统的软件设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。123.1系统的主程序设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。123.2系统子程序设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。14四、调试过程及运行结果。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。164.1调试过程。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。174.2运行结果。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。17五、全文总结。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。16附录1电路原理图。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。17附录2元件明细表。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。18附录3程序。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。19附调试过程。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。28题目:简易温度控制系统一、任务设计并制作一个简易的单片机温度自动控制系统(如下图),控制对象为自定。显示器恒温箱执行器可编程控制器变送器设置键盘220VAC显示器恒温箱执行器可编程控制器变送器设置键盘220VAC电源温度传感器电源温度传感器二、要求设计要求如下:(1)温度设定范围为40℃~90℃,最小区分度为1℃(2)用十进制数码显示实际温度。(3)被控对象温度采用发光二极管以光柱形式和数码形式显示。(4)温度控制的静态误差≤2℃。扩充功能:控制温度可以在一定范围内设定,并能实现自动调整,以保持设定的温度基本保持不变(测量温度时只要求在现场任意设置一个检测点)。
前言温度控制广泛应用于人们的生产和生活中,人们使用温度计来采集温度,通过人工操作加热、通风和降温设备来控制温度,这样不但控制精度低、实时性差,而且操作人员的劳动强度大。即使有些用户采用半导体二极管作温度传感器,但由于其互换性差,效果也不理想。在某些行业中对温度的要求较高,由于工作环境温度不合理而引发的事故时有发生。对工业生产可靠进行造成影响,甚至操作人员的安全。为了避免这些缺点,需要在某些特定的环境里安装数字温度测量及控制设备。本设计由于采用了新型单片机对温度进行控制,以其测量精度高,操作简单。可运行性强,价格低廉等优点,特别适用于生活,医疗,工业生产等方面的温度测量及控制。本设计是一个数字温度测量及控制系统,能测柜内的温度,并能在超限的情况下进行控制、调整,并报警。保证环境保持在限定的温度中。
第1章系统的方案论证本章主要对课程设计的题目进行了分析,根据要实现的功能,综合比较几种设计方法,提出了实现系统功能的最佳方案。1.1题目分析本设计是一个数字温度控制系统,能测量温度,并能在超限的情况下进行控制、调整,并报警。具体控制要求:根据设计的要求,要利用温度传感器显示当前温度。当温度高于设定的温度时(90℃),打开降温装置进行调整使温度在设定的范围内;当温度低于设定的温度时(40℃),打开升温装置进行调整使温度在设定的范围内,同时要求能设定温度,设计的主要任务是能对温度进行自动的检测和控制。设计中采用单片机来控制温度,因此要有温度的采集电路,键盘显示电路,温控电路,报警电路等几个部分。要实现系统的设计要用到的知识点有单片机的原理及其应用,温度传感器的原理和应用,及键盘和显示电路的设计等。1.2方案论证1.2.1测温电路方案方案一、可以使用热敏电阻作为测温元件,热敏电阻精度高,需要配合电桥电路,电路设计比较麻烦。方案二、可以使用热点偶作为测温元件,热电偶在工业上应用比较广泛,测温精度比较高,性能可靠,并有专用的热电偶测温电路。方案三、采用半导体集成温度传感器作为测温元件,半导体温度传感器应用也比较广泛,精度、可靠性都不错,价格适中,使用比价简单,是一种较好的方案。1.2.2控制电路和温度设定电路方案控制电路可以用硬件的方式实现,也可以用软件的方式实现,具体方案有三:方案一、可以用运放等模拟电路搭接一个控制器,用模拟方式实现PID控制,对温度控制是足够的。但是附加的显示,温度的设定等功能,还要附加许多电路,稍显麻烦。同样也可以用逻辑电路实现,但总体的电路设计和制作繁琐。方案二、可以使用FPGA实现控制功能,使用FPGA时,电路设计比较简单,通过相应的编程设计,可以很容易实现控制、显示、键盘等功能。是一种可选的方案。但与单片机相比较,价格较高,显得大材小用。方案三、可以使用单片机作为核心,同时可以实现控制、显示、键盘等功能。电路设计和制作比较简单,是一种非常好的方案。1.2.3加热制冷电路方案根据题目,可以使用电炉加热,当周围空气温度过高时,一般只能关掉加热器,让其自动冷却,但为了达到更好的控制效果,可以用风扇进行制冷,当温度过高时,关掉电炉开启风扇进行制冷。加热制冷电源选用220V交流电。方案一、采用电力电子技术的PWM技术,控制其功率实现较好的精度,但电路设计比较麻烦,制作难度比较大。方案二、可以使用固体继电器控制加热制冷器工作。固态继电器使用比较简单,而且没有触电,可以频繁工作。是一个比较好的方案。1.3方案选择1.3.1测温电路选用最简单的一种测温方式——使用DS18B20数字式温度传感器。它无需其他的外加电路,直接输出数字信号,可直接与单片机通信,读取测温数据,电路非常简单。他能达到0.5℃的固有分辨率,使用这种芯片电路主要的工作量就集中在单片机软件的编程上。而模拟集成温度传感器也可以用,它是采用硅半导体集成工艺而制成的,因此亦称硅传感器或单片集成温度传感器,它是将温度传感器集成在一个芯片上、可完成温度测量及模拟信号输出功能的专用IC。模拟集成温度传感器的主要特点是功能单一(仅测量温度)、测温误差小、价格低、响应速度快、传输距离远、体积小、微功耗等,适合远距离测温、控温,不需要进行非线性校准,外围电路简单。AD590集成温度传感器是一种使用较多的温度传感器,其性能基本满足题目要求。AD590将温度转换为电流信号,但由于AD转换大都需要电压信号,因此还需要相应的调理电路,将电流信号转换为电压信号。最常用的AD转换器是ADC0809,将电压信号转换为数字信号输入单片机。综合考虑,选用DS18B20温度传感器。1.3.2控制、键盘和显示电路通过认真考虑,本系统要求的精度不是太高,本着简易的思想,用单片机的P2.0、P2.4分别与三极管的基极连接来控制外设调节温度,加热需要较大的功率,因此选用220V市电作为加热电源。(本系统用模拟软件设计,用电灯泡模拟加热器。用风扇模拟制冷器,供电用直流5V)键盘可以选用3*3的扫描键盘,在本实验中,可以同时设置温度的十位和个位,还要按键开始比较。只需3个独立的按键即可满足要求。本着简单实用的原则,选用1个温度加和1个温度减键,一个开始比较调节温度键。显示方面,选用了六个数码管。温度的最小分度为1℃,温度测量范围在00℃~99℃。1.3.3总体电路设计①测温电路选用DS18B20集成数字测温电路②控制电路用单片机的P2.0、P2.4分别与三极管的基极连接通过继电器来控制外设从而调节温度③控制芯片选用常见的STC89C52RC④显示方式选用八段数码管显示⑤键盘采用3个独立按键第2章系统的硬件设计2.1单片机设计STC89C52RC有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,STC89C52RC可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。(1)电源及时钟引脚Vcc:电源接入引脚;GND:接地引脚;XTAL1:晶体振荡器接入的一个引脚(采用外部振荡器时,此引脚接地);XTAL2:晶体振荡器接入的另一个引脚(采用外部振荡器时,此引脚作为外部振荡信号的输入端)。(2)控制线引脚RST:复位信号输入引脚。(3)并行I/O口引脚P0.0~P0.7:一般I/O口引脚或数据/低位地址总线复用引脚;P1.0~P1.7:一般I/O口引脚;P2.0~P2.7:一般I/O口引脚或数据/高位总线引脚;P3.0~P3.7:一般I/O口引脚或第二功能引脚。(4)外部程序存储器扩展控制信号EA/VPP:用于片内,片外程序存储器配置,输入信号。当EA=0时,单片机的程序存储器全部为扩展的片外程序存储器;当EA=1时,单片机的程序存储器可由片内程序存储器和片外程序存储器构成。ALE/PROG:用于所存P0口输出的低8位地址。PSEN:程序储存允许(PSEN)输出,外部程序存储器的读选通信号。在温度显示时,用P1口的P1.5~P1.7作为译码器74LS138的输入端,通过译码方式控制数码管的选通信号,当译码器其中的一个引脚输出低电平时,其对应的数码管被选通来显示温度。当P1.6和P1.7为高电平,P1.5为低电平时蜂鸣器工作,发出报警信号。在设置STC89C52RC的振荡频率时,我们采用内部时钟方式,如图所示。在单片机内部有一振荡电路,只要在单片机XTAL1和XTAL2引脚外接石英晶体(简称晶振),就构成了自激振荡器并在单片机内部产生时钟脉冲信号。图中电容器C1和C2的作用是稳定频率和快速起振,电容值在5pF~30pF,典型值为30pF。晶振CYS的振荡频率范围为1.2-12MHz,典型值为12MHz和6MHz。本次设计我们选择了11.0592MHz。2.2温度传感电路设计DS18B20的性能特点:采用单总线专用技术,既可通过串行口线,也可通过其它I/O口线与微机接口,无须经过其它变换电路,直接输出被测温度值(9位二进制数,含符号位)测温范围为-55℃-+125℃内含64位经过激光修正的只读存储器ROM适配各种单片机或系统机用户可分别设定各路温度的上、下限内含寄生电源。DS18B20内部结构主要由四部分组成:64位光刻ROM,温度传感器,非挥发的温度报警触发器TH和TL,高速暂存器。DS18B20的管脚排列如图2所示。P1.0图2DS18B20管脚图在硬件上,DS18B20与单片机的连接有两种方法,一种是VCC接外部电源,GND接地,I/O与单片机的I/O线相连;另一种是用寄生电源供电,此时UDD、GND接地,I/O接单片机I/O。无论是内部寄生电源还是外部供电,I/O口线要接5KΩ左右的上拉电阻.我们采用的是第一种连接方法,如图3.3所示:把DS18B20的数据线与单片机的P1.0管脚连接,再加上上拉电阻。DS18B20有六条控制命令,如下表所示:表1DS18B20控制命令指
令约定代码操
作
说
明温度转换44H启动DS18B20进行温度转换读暂存器BEH读暂存器9个字节内容写暂存器4EH将数据写入暂存器的TH、TL字节复制暂存器48H把暂存器的TH、TL字节写到E2RAM中重新调E2RAMB8H把E2RAM中的TH、TL字节写到暂存器TH、TL字节读电源供电方式B4H启动DS18B20发送电源供电方式的信号给主CPU2.3温控电路及报警电路的设计图3硬件温度控制和报警电路单片机的P2.0、P2.4分别与三极管的基极连接来控制外设调节温度(图3)。利用面包板搭了一个PNP9012的偏置电路和继电器电路。基极输入为“0”时,这时三极管导通推动控制电路工作,当基极输入为“1”时,三极管不导通,控制电路不工作。只要控制单片机的P2.0、P2.4口的高低电平就可以控制模拟电路的工作。当所设温度的高于所测温度的时,置P1.6和P1.7为高电平,P1.5为低电平(译码器输入电平为110,com7输出低电平),蜂鸣器工作,置P1.5、P1.6和P1.7均为高电平(译码器输入电平为111,com8输出低电平),LED指示灯点亮,发出声光报警信号,同时置P2.0为低电平,启动风扇降温;当所设温度的高于所测温度的时,置P2.4为低电平,启动加热器,同时开始计时,并显示加热时间。2.4键盘及显示部分STC89C52RC的并行口P2接3×3矩阵键盘,本设计仅采用其中的3个键。以P2.1~P2.3作输入线,以P2.5~P2.7作输出线,P2.0,P2.4接外设。单片机的P2口6位引脚与行列式键盘输出脚相连,控制和检测行列式键盘的输入。行线通过上拉电阻接到+5V上,无按键按下时,行线处于高电平状态,有键按下时,行线的电平状态将由与此行线相连接的列线的电平决定。键盘输入的信息主要进程是:1CPU判断是否有键按下。2确定是按下的是哪个键。3把此键所代表的信息翻译成计算机可以识别的代码或者其他的特征符号。本设计中P0口用于输出字型码,P1口用于输出显示位置,LED数码管为共阴型。显示位置采用译码器译码的方式实现。为了得到更好的亮度,采用了74LS245N的驱动器。第3章系统的软件设计3.1系统的主程序设计主程序是系统的监控程序,在程序运行的过程中必须先经过初始化,包括测温程序,控制程序,键盘程序,显示程序以及各个控制端口的初始化工作。流程图如4.1所示。系统在初始化完成后就进入温度测量程序,实时的测量当前的温度并通过显示电路在LED上显示。程序中以按键方式来设定温度,根据硬件设计完成对温度的控制。按下3*3键盘上的K1,K4,键可以设定温度,按下K7键开始比较调节温度。系统软件设计的总体流程图:开始开始系统初始化系统初始化显示设置温度显示设置温度显示所测温度显示所测温度判断设置键盘是否按下判断设置键盘是否按下 N判断比较键盘是否按下Y判断比较键盘是否按下N显示设置温度Y显示设置温度显示所测温度显示所测温度比较所测温度和设定温度是否相等比较所测温度和设定温度是否相等 YCyCy是否为一?声光报警RET 声光报警RET启动风扇散热启动风扇散热灯泡工作加热N灯泡工作加热显示设定温度显示设定温度开始计时开始计时显示计时时间显示计时时间显示设定温度图4.1显示设定温度3.2系统子程序设计子程序是能被其他程序调用,在实现某种功能后能自动返回到调用程序中去的程序。其最后一条指令一定是返回指令,故能保证重新返回到调用它的程序中去。也可调用其他子程序,甚至可自身调用。本设计中DS18B20和键盘识别主要运用软件来实现。①DS18B20的测温程序流程图如下:初始化初始化读取温度数据读取温度数据18B2018B20复位命令跳过跳过ROM匹配温度转换命令温度转换命令等待等待A/D转换结束跳过跳过ROM匹配读出温度值读出温度值数码数码管显示温度RETRET
开始②键盘扫描的程序流程图如下:开始置置P2为输入设置个位按键是否按下?N设置个位按键是否按下?N延时20ms消抖延时20ms消抖设置个位按键是否按下??NN设置个位按键是否按下??按键释放?NY按键释放?Y设定温度值个位加1设定温度值个位加1设置十位按键是否按下?N设置十位按键是否按下?延时20ms消抖延时20ms消抖设置十位按键是否按下?设置十位按键是否按下?N按键释放??YN按键释放??设定下限温度值十位加一Y设定下限温度值十位加一比较键是否按下?比较键是否按下?N延时20ms消抖延时20ms消抖Y比较键是否按下?比较键是否按下?按键释放??Y按键释放??N 跳至比较程序Y 跳至比较程序
第4章调试过程及运行结果4.1调试过程实物制作过程基本顺利,硬件焊接比较成功。调试过程中了解了自己的硬件还是没有问题的。程序设计过程中,各部分程序拼接时由于没有搞清楚逻辑关系花时间比较长,经常出现程序编译无误但硬件达不到预想情况。经过多次调试,最后整体程序编写成功,程序烧进芯片中进行实物试验也达到预想效果。4.2运行结果本设计实现了当“所设温度=所测温度”时,控制电路不工作,数码管显示所测温度和设定温度;当“所测温度<所设温度”时,加热电路工作(灯泡模拟),计时器开始计时,数码管显示加热时间,当温度加热到与设定温度相等时,加热电路自动停止工作,数码管显示所测温度和设定温度;当“所测温度>所设温度”时,开始声光报警,散热风扇工作,当温度降到与设定温度相等时,散热电路自动停止工作,数码管显示所测温度和设定温度。从而实现温度自动控制。第5章全文总结这段时间对温度控制系统的设计,使我对单片机设计的基本要点有一些了解,但也认识到自己在设计思维上的青涩不足。相信这些能力在今后的设计中会被慢慢的培养起来。单片机系统设计中的重点,就是在进行大体的方案设计后,对系统具体的实现进行规划。其次就是单片机机型和器件的选择,性能特点要适合所要完成的任务,避免过多的功能闲置,当然还要考虑性价比等问题。一种功能往往是既可以由硬件实现又可以由软件实现。用硬件实现功能一般情况下可以节省CPU的时间,但系统的硬件接线复杂,成本高。用软件实现则较为经济,但要占用更多的CPU时间。所以,在CPU时间不紧张的情况下,应尽量采用软件。如果系统回路多,实时性要求强,则要考虑用硬件完成。确定了所需元件后,便可在仿真软件上制作出系统的电路原理图,经过必要的实验验证后完成电路板的制作。最后的重点就是程序设计。单片机应用系统的设计通常采用模块化、自顶向下的程序设计方法。因此要建立起有条理,灵活的思维方式,只能通过实践,通过设计,一点点锻炼和完善自己的能力。
参考文献:<<单片机原理及接口技术>>段晨东主编《单片机典型外围器件及应用实例》求是科技编著《单片机应用实例教程》张永峰主编附录一:电路原理图
附录二:元件明细表元器件数量备注电阻45K电阻14.7K电阻41K独石电容230pF电解电容110uf25V51单片机实验板1AT89C52芯片1MAX232芯片174LS245芯片274LS138芯片1DS18B201三极管S90122PNP数码管2三位八段共阴晶振111.0592MHz芯片座6电源座1三脚5V通信插座1CON232电源适配器1通讯电缆1实验插板1单排插针若干灯泡15V杜邦线、头若干风扇15V导线若干
附录三:程序FLAG1BIT00H;FLAG1:标志位,为"1"时表示检测到DS18B20TEMPER_NUMEQU50H;TEMPER_NUM:保存读出的温度数据bcd码TEMPER_LEQU36H;温度的低位TEMPER_HEQU35H;温度的低位TEMPEQU34H;临时存放温度数据的单元SJGWEQU30H;存放显示温度的个位数SJSWEQU31H;存放显示温度的个位数DQBITP1.3;DQ:DS18B20的数据总线接脚MOV46H,#00H ;秒个位 MOV47H,#00H ;秒十位 MOV48H,#00H ;分个位 MOV49H,#00H ;分十位 ;//*****************************************//ORG0000HLJMPMAIN ORG000BH LJMPT_TOORG0030HMAIN:MOVA,#00 ;置18B20初值MOVTEMPER_NUM,AMOVTEMPER_L,#00MOVTEMPER_H,#00 MOV40H,#00H ;置设置初值个位 MOV41H,#00H ;置设置初值十位MOV43H,#10 MOVSP,#60HMOVTMOD,#01H ;计时程序初始化MOVTL0,#0B0H MOVTH0,#3CH MOV5FH,#20 SETBEA ;CPU开中断 SETBET0 ;允许中断 MOVR6,#10MOVP2,#0F1H ACALLINIT_1820SHEZHI: MOVP2,#0F1H ;键盘初值关风扇关加热器LCALLTEMPERLCALLDISP1 ;显示所测温度CALLDISP ;显示设定温度JBP2.7,P26LCALLDL20MSJNBP2.7,WAIT JMPP26 WAIT:JBP2.7,GW JMPWAITGW:CALLDISPINC40HDJNZ43H,SHEZHIMOV40H,#00HMOV43H,#10JMP SHEZHIP26:JBP2.6,P25LCALLDL20MS JNBP2.6,WAIT1WAIT1:JBP2.6,SW JMPWAIT1SW:CALLDISP INC41HDJNZR6,SHEZHIMOV41H,#00HMOVR6,#10JMPSHEZHIP25:JBP2.5,SHEZHI ;比较开关 LCALLDL20MS JNBP2.5,WAIT2WAIT2:JBP2.5,COMP JMPWAIT2COMP:LCALLTEMPER;比较程序MOVA,41HSWAPA ORLA,40H CLRCREGU:CJNEA,50H,DO MOVP2,#0F1H CLRTR0 LCALLDISP1CALLDISP JMPCOMP DO:LJMPDO1 DISP:MOVDPTR,#LED_SEG ;置数显示MOVA,40H MOVCA,@A+DPTR SETBP1.0 CLRP1.1 SETBP1.2 MOVP0,A LCALLDS1MS MOVA,41H MOVCA,@A+DPTR CLRP1.0 MOVP0,A LCALLDS1MS RETLED_SEG:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB7FH,6FH ;//*****************************************//TEMPER:ACALLRE_CONFIGACALLGET_TEMPERcallTEMPER_COVRET;初始化程序INIT_1820:SETBDQNOPCLRDQ;主机发出延时540us的复位低脉冲MOVR0,#36LCALLDELAYSETBDQ;然后拉高数据线NOPNOPMOVR0,#36TSR2:JNBDQ,TSR3;等待DS18B20的回应DJNZR0,TSR2LJMPTSR4;延时TSR3:SETBFLAG1;置标志位,表示DS1820存在LJMPTSR5TSR4:CLRFLAG1;清标志位,表示DS1820不存在LJMPTSR7TSR5:MOVR0,#06BH;200usTSR6:DJNZR0,TSR6;复位成功!时序要求延时一段时间TSR7:SETBDQRET;//*****************************************//;重新写DS18B20暂存存储器设定值;//*****************************************//RE_CONFIG:JBFLAG1,RE_CONFIG1;若DS18B20存在,转RE_CONFIG1RETRE_CONFIG1:MOVA,#0CCH;发SKIPROM命令LCALLWRITE_1820MOVA,#4EH;发写暂存存储器命令LCALLWRITE_1820MOVA,#00H;不TH(报警上限)中写入00HLCALLWRITE_1820MOVA,#00H;TL(报警下限)中写入00HLCALLWRITE_1820MOVA,#1FH;选择9位温度分辨率LCALLWRITE_1820RET;//*****************************************//;读出转换后的温度值;//*****************************************//GET_TEMPER:SETBDQ;定时入口LCALLINIT_1820JBFLAG1,TSS2RET;若DS18B20不存在则返回TSS2:MOVA,#0CCH;跳过ROM匹配LCALLWRITE_1820MOVA,#44H;发出温度转换命令LCALLWRITE_1820MOVR0,#50;等待A/D转换结束,12位的话750usLCALLDELAYLCALLINIT_1820MOVA,#0CCH;跳过ROM匹配LCALLWRITE_1820MOVA,#0BEH;发出读温度命令LCALLWRITE_1820LCALLREAD_18200MOVTEMPER_NUM,A;将读出的温度数据保存RET;//*****************************************//;读DS18B20的程序,从DS18B20中读出一个字节的数据;//*****************************************//READ_1820:MOVR4,#8RE1:CLRCSETBDQNOPNOPCLRDQNOPNOPNOPSETBDQMOVR7,#7DJNZR7,$MOVC,DQMOVR7,#23DJNZR7,$RRCADJNZR4,RE1RET;//*****************************************//;写DS18B20的程序;//*****************************************//WRITE_1820:MOVR4,#8CLRCWR1:CLRDQMOVR7,#6DJNZR7,$RRCAMOVDQ,CMOVR7,#23DJNZR7,$SETBDQNOPDJNZR4,WR1SETBDQRET;//*****************************************//;读DS18B20的程序,从DS18B20中读出两个字节的温度数据;//*****************************************//READ_18200:MOVR4,#2;将温度高位和低位从DS18B20中读出MOVR1,#36H;低位存入36H(TEMPER_L),高位存入35H(TEMPER_H)RE00:MOVR7,#8RE01:CLRCSETBDQNOPNOPCLRDQNOPNOPNOPSETBDQMOVR0,#7DJNZR0,$MOVC,DQMOVR0,#23DJNZR0,$RRCADJNZR7,RE01MOV@R1,ADECR1DJNZR4,RE00RET;//*****************************************//;将从DS18B20中读出的温度数据进行转换;//*****************************************//TEMPER_COV:MOVA,#0F0HANLA,TEMPER_L;舍去温度低位中小数点后的四位温度数值SWAPAMOVTEMPER_NUM,AMOVA,TEMPER_LJNBACC.3,TEMPER_COV1;四舍五入去温度值INCTEMPER_NUMTEMPER_COV1:MOVA,TEMPER_HANLA,#07HSWAPAORLA,TEMPER_NUMMOVTEMPER_NUM,A;保存变换后的温度数据LCALLBIN_BCDRET;//*****************************************//;将16进制的温度数据转换成压缩BCD码;//*****************************************//BIN_BCD:MOVDPTR,#TEMP_TABMOVA,TEMPER_NUMMOVCA,@A+DPTRMOVTEMPER_NUM,ARETTEMP_TAB:DB00H,01H,02H,03H,04H,05H,06H,07HDB08H,09H,10H,11H,12H,13H,14H,15HDB16H,17H,18H,19H,20H,21H,22H,23HDB24H,25H,26H,27H,28H,29H,30H,31HDB32H,33H,34H,35H,36H,37H,38H,39HDB40H,41H,42H,43H,44H,45H,46H,47HDB48H,49H,50H,51H,52H,53H,54H,55HDB56H,57H,58H,59H,60H,61H,62H,63HDB64H,65H,66H,67H,68H,69H,70H,71H DB72H,73H,74H,75H,76H,77H,78H,79HDB80H,81H,82H,83H,84H,85H,86H,87HDB88H,89H,90H,91H,92H,93H,94H,95HDB96H,97H,98H,99H;//*****************************************//;延时子程序;为保证DS18B20的严格I/O时序,需做较精确的延时;在DS18B20操作中,用到的延时有15us、90us、270us、540us、750us;因为这些延时均为15us的倍数,因此可编写一个DELAY15(n)函数;//*****************************************//DELAY:LOOP:MOVR1,#06HLOOP1:DJNZR1,LOOP1DJNZR0,LOOPRET;//*****************************************//;500毫秒延时子程序;//*****************************************// DELAY500:MOV
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《电容触摸屏TP简介》课件
- 冠状动脉闭塞病变介入治疗
- 中心供氧的应急预案
- 《光伏电池板与系统》课件
- 因式分解活动课
- 《通货膨胀和失业》课件
- 数学学案:课堂导学集合的运算第课时补集
- 《生物公司运营分析》课件
- 混泥土搅拌车咕噜咕噜
- 六年级上册英语重难点复习学案基础练语音练拓展练-Unit8ChineseNewYear译林三起含答案
- 新沪科版九年级下册初中数学 课时4 圆的确定 教案
- 网络通信基站施工重点难点技术分析及解决方案
- 夸美纽斯-大教学论-文本细读
- BD 420006-2015 全球卫星导航系统(GNSS)定时单元性能要求及测试方法
- 预防高空坠落安全培训ppt课件(PPT 15页)
- 中国文学知识:中国重要作家作品
- 大型活动标准化执行手册
- 培养学生的创新精神和创新能力
- 地下管线保护措施及应急措施
- (完整版)护士注册体检表(正式)
- 《民法典》全文学习PPT
评论
0/150
提交评论