已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
水温控制系统摘要该水温控制系统采用单片机进行温度实时采集与控制。温度信号由“一线总线”数字化温度传感器DS18B20提供,DS18B20在1085C范围内,固有测温分辨率为05。水温实时控制采用继电器控制电热丝和风扇进行升温、降温控制。系统具备较高的测量精度和控制精度,能完成升温和降温控制。关键字AT89C51DS18B20水温控制ABSTRACTTHISWATERTEMPERATURECONTROLSYSTEMUSESTHESINGLECHIPMICROCOMPUTERTOCARRYONTEMPERATUREREALTIMEGATHERINGANDCONTROLINGDS18B20,DIGITIZEDTEMPERATURESENSOR,PROVIDESTHETEMPERATURESIGNALBY“AMAINLINE“IN1085THESCOPE,DS18B20SINHERENTMEASURINGACCURACYIS05THEWATERTEMPERATUREREALTIMECONTROLSYSTEMUSESTHEELECTRICITYNICHROMEWIRECARRINGONTEMPERATUREINCREISEAMENTANDOPERATESTHEELECTRICFANTOREALIZETHETEMPERATUREDECREASECONTROLTHESYSTEMHASTHEHIGHERMEASURINGACCURACYANDTHECONTROLPRECISION,ITALSOCANCOMPLETETHEELEVATIONOFTEMPERATUREANDTHETEMPERATUREDECREASECONTROLKEYWORDSAT89C51DS18B20WATERTEMPERATURECONTROL1目录1系统方案选择和论证211题目要求2111基本要求2112发挥部分2113说明212系统基本方案2121各模块电路的方案选择及论证2122系统各模块的最终方案52硬件设计与实现621系统硬件模块关系622主要单元电路的设计6221温度采集部分设计6222加热控制部分8223键盘、显示、控制器部分83系统软件设计1031读取DS18B20温度模块子程序1032数据处理子程序1033键盘扫描子程序1234主程序流程图134系统测试1441静态温度测试1442动态温控测量1443结果分析14附录1产品使用说明15附录2元件清单152附录3系统硬件原理图16附录4软件程序清单17参考文献261系统方案选择和论证11题目要求设计并制作一个水温自动控制系统,控制对象为1L净水,容器为搪瓷器皿。水温可以在一定范围内由人工设定,并能在环境温度降低时实现自动控制,以保持设定的温度基本不变。111基本要求(1)温度设定范围为4090,最小区分度为1,标定温度1。(2)环境温度降低时(例如用电风扇降温)温度控制的静态误差1。(3)用十进制数码管显示水的实际温度。112发挥部分(1)采用适当的控制方法,当设定温度突变(由40提高到60)时,减小系统的调节时间和超调量。(2)温度控制的静态误差02。(3)在设定温度发生突变(由40提高到60)时,自动打印水温随时间变化的曲线。113说明(1)加热器用一千瓦电炉。(2)如果采用单片机控制,允许使用已有的单片机最小系统板。(3)数码显示部分可以使用数码显示模块。(4)测量水温时只要求在容器内任意设置一个测量点。(5)在设计报告附一篇400字以内的报告摘要。12系统基本方案根据题目要求系统模块分可以划分为温度测量模块,显示电路模块,加热模块,控制模块,系统的框图如图121所示。为实现各模块的功能,分别做了几种不同的设计方3案并进行了论证。121各模块电路的方案选择及论证(1)控制器模块根据题目要求,控制器主要用于对温度测量信号的接受和处理、控制电热丝和风扇使控制对象满足设计要求、控制显示电路对温度值实时显示以及控制键盘实现对温度值的设定等。对控制器的选择有以下三种方案方案一采用FPGA作为系统控制器。FPGA功能强大,可以实现各种复杂的逻辑功能,规模大,密度高,它将所有器件集成在一块芯片上,减少了体积,提高了稳定性,并且可应用EDA软件仿真、调试,易于进行功能扩展。FPGA采用并行的I/O口方式,提高了系统的处理速度,适合作为大规模实时系统控制核心。由温度传感器送来的温度信号,经FPGA程序对其进行处理,控制加热装置动作。但由于本设计对数据处理的速度要求不高,FPGA的高速处理的优势得不到充分体现,并且其成本偏高,引脚较多,硬件电路布线复杂。OUTPUT显示电路加热装置测温部分键盘输入控制部分INPUT图121系统基本模块方框图方案一采用FPGA作为系统控制器。FPGA功能强大,可以实现各种复杂的逻辑功能,规模大,密度高,它将所有器件集成在一块芯片上,减少了体积,提高了稳定性,并且可应用EDA软件仿真、调试,易于进行功能扩展。FPGA采用并行的I/O口方式,提高了系统的处理速度,适合作为大规模实时系统控制核心。由温度传感器送来的温度信号,经FPGA程序对其进行处理,控制加热装置动作。但由于本设计对数据处理的速度要求不高,FPGA的高速处理的优势得不到充分体现,并且其成本偏高,引脚较多,硬件电路布线复杂。方案二采用模拟运算放大器组成PID控制系统。对于水温控制是足够的。但要附加显示、温度设定等功能,要附加许多电路,稍显麻烦。方案三采用ATMEL公司的AT89C52作为系统控制器。单片机算术运算功能强,软件编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制,并且其功耗低、体积小、技术成熟和成本低等优点。基于以上分析拟订方案二,由AT89C52作为控制核心,对温度采集和实时显示以及加热装置进行控制。4(2)加热装置有效功率控制模块根据题目,可以使用电热炉进行加热,控制电热炉的功率即可以控制加热的速度。当水温过高时,关掉电热炉进行降温处理,让其自然冷却。在制作中,我们装设一个小电风扇,当水温超高时关闭电炉开启风扇散热,当需要加热时开启电炉关闭风扇。由于加热的功率较大,考虑到简化电路的设计,我们直接采用220V电源。对加热装置控制模块有以下两种方案方案一采用可控硅来控制加热器有效功率。可控硅是一种半控器件,应用于交流电的功率控制有两种形式控制导通的交流周期数达到控制功率的目的;控制导通角的方式控制交流功率。由交流过零检测电路输出方波经适当延时控制双向可控硅的导通角,延时时间即移相偏移量由温度误差计算得到。可以实现对交流电单个周期有效值周期性控制,保证系统的动态性能指标。该方案电路稍复杂,需使用光耦合驱动芯片以及变压器等器件。但该方案可以实现功率的连续调节,因此响应速度快,控制精度也高。方案二采用继电器控制。使用继电器可以很容易实现地通过较高的电压和电流,在正常条件下,工作十分可靠。继电器无需外加光耦,自身即可实现电气隔离。这种电路无法精确实现电热丝功率控制,电热丝只能工作在最大功率或零功率,对控制精度将造成影响。但可以由多路加热丝组成功率控制,由单片机对温差的处理实现分级功率控制提高系统动态性能。基于以上分析以及现有器件限制选择方案二,采用继电器控制省去光耦和交流过零检测电路,在软件上选用适当的控制算法,同样可以达到较好的效果。(3)温度采集模块题目要求温度静态误差小于等于02,温度信号为模拟信号,本设计要对温度进行控制和显示,所以要把模拟量转换为数字量。该温度采集模块有以下三种方案方案一利用热电阻传感器作为感温元件,热电阻随温度变化而变化,用仪表测量出热电阻的阻值变化,从而得到与电阻值相应的温度值。最常用的的是铂电阻传感器,铂电阻在氧化介质中,甚至在高温的条件下其物理,化学性质不变。由铂电阻阻值的变化经小信号变送器XTR101将铂电阻随温度变化的转换为420MA线形变化电路,再将电流信号转化为电压信号,送到A/D转换器ADC0809即将模拟信号转换为数字信号。该方案线性度优于001。方案二采用温度传感器AD590K。AD590K具有较高精度和重复性,良好的非线性保证01的测量精度。加上软件非线性补偿可以实现高精度测量。AD590将温度转化为电流信号,因此要加相应的调理电路,将电流信号转化为电压信号。送入8为A/D转换器,可以获得255级的精度,基本满足题目要求。方案三采用数字温度传感器DS18B20。DS18B20为数字式温度传感器,无需其他外加电路,直接输出数字量。可直接与单片机通信,读取测温数据,电路简单。如图122所示。5图122DS18B20测温电路基于以上分析和现有器件所限,温度采集模块选用方案三。DS18B20与传统的热敏电阻相比,他能够直接读出被测温度并且可根据实际要求通过简单的编程实现912位的数字值读数方式。并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,因而使用DS18B20可使系统结构更趋简单,可靠性更高。他在测温精度、转换时间、传输距离、分辨率等方面带来了令人满意的效果。(4)键盘与显示模块根据题目要求,水温要由人工设定,并能实时显示温度值。对键盘和显示模块有下面两种方案方案一采用液晶显示屏和通用矩阵键盘。液晶显示屏(LCD)具有功耗小、轻薄短小无辐射危险,平面直角显示以及影象稳定不闪烁,可视面积大,画面效果好,抗干扰能力强等特点。但由于只需显示三位温度值,信息量比较少,且由于液晶是以点阵的模式显示各种符号,需要利用控制芯片创建字符库,编程工作量大,控制器资源占用较多,其成本也偏高。方案二采用三位LED七段数码管分别显示温度的十位、个位和小数位。按键采用单列3按键进行温度设定。数码管具有低能耗、低损耗、低压、寿命长、耐老化,对外界环境要求较低。同时数码管采用BCD编码显示数字,程序编译容易,资源占用较少。根据以上论述,采用方案二。本系统中,采用了数码管的动态显示,节省单片机的内部资源。122系统各模块的最终方案根据以上分析,结合器件和设备等因素,确定如下方案1采用AT89C52单片机作为控制器,分别对温度采集、LED显示、温度设定、加热装置功率控制。2温度测量模块采用数字温度传感器DS18B20。此器件经软件设置可以实现高分辨率测量。3电热丝有效功率控制采用继电器控制,实现电路简单实用,加上温度变化缓慢可以满足设计要求。4显示用LED数码管显示实时温度值,用ENTER、UP、DOWN三个单键实现温度值的设定。6OUTPUTLED数码管继电器DS18B20键盘输入AT89C52INPUT图123系统基本框图系统的基本框图如图123所示。CPU(AT89C52)首先写入命令给DS18B20,然后DS18B20开始转换数据,转换后通过89S52来处理数据。数据处理后的结果就显示到数码管上。另外由键盘设定温度值送到单片机,单片机通过数据处理发出温度控制信息到继电器。DS18B20可以被编程,所以箭头是双向的。2硬件设计与实现21系统硬件模块关系本系统的执行方法是循环查询执行的,键盘扫描也是用循环查询的办法,由于本系统对实时性要求不是很高,所以没有用到中断方式来处理。各模块关系图如图211所示。7单片机初始话模块继电器控制模块键盘扫描模块(扫描有无ENTER键按下)DS18B20得到温度值,存放到BUFFER中处理温度值,换算成BCD码温度显示模块图211统硬件模块关系图22主要单元电路的设计221温度采集部分设计本系统采用半导体温度传感器作为敏感元件。传感器我们采用了DS18B20单总线可编程温度传感器,来实现对温度的采集和转换,直接输出数字量,可以直接和单片机进行通讯,大大简化了电路的复杂度。DS18B20应用广泛,性能可以满足题目的设计要求。DS18B20的测温电路如图221所示。8图221DS18B20测温电路(1)DSI8B20的测温功能的实现其测温电路的实现是依靠单片机软件的编程上。当DSI8B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的0,1字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以00625LSB形式表示。温度值格式如表221所示,其中“S”为标志位,对应的温度计算当符号位S0时,直接将二进制位转换为十进制;当S1时,先将补码变换为原码,再计算十进制值。DSI8B20完成温度转换后,就把测得的温度值与TH做比较,若TTH或TROM操作命令存储器操作命令处理数据初始化单总线上的所有处理均从初始化开始ROM操作命令总线主机检测到DSL820的存在便可以发出ROM操作命令之一这些命令如表222所示9表222ROM操作命令表指令代码READROM读ROM33HMATCHROM匹配ROM55HSKIPROM跳过ROMCCHSEARCHROM搜索ROMF0HALARMSEARCH告警搜索ECH存储器操作命令如表223所示表223存储器操作命令表指令代码WRITESCRATCHPAD写暂存存储器4EHREADSCRATCHPAD读暂存存储器BEHCOPYSCRATCHPAD复制暂存存储器48HCONVERTTEMPERATURE温度变换44HRECALLEPROM重新调出B8HREADPOWERSUPPLY读电源B4H(3)温度转换算法及分析由于DS18B20转换后的代码并不是实际的温度值,所以要进行计算转换。温度高字节(MSBYTE)高5位是用来保存温度的正负(标志为S的BIT11BIT15),高字节(MSBYTE)低3位和低字节来保存温度值(BIT0BIT10)。其中低字节(LSBYTE)的低4位来保存温度的小数位(BIT0BIT3)。由于本程序采用的是00625的精度,小数部分的值,可以用后四位代表的实际数值乘以00625,得到真正的数值,数值可能带几个小数位,所以采取小数舍入,保留一位小数即可。也就说,本系统的温度精确到了01度。算法核心首先程序判断温度是否是零下,如果是,则DS18B20保存的是温度的补码值,需要对其低8位(LSBYTE)取反加一变成原码。处理过后把DS18B20的温度COPY到单片机的RAM中,里面已经是温度值的HEX码了,然后转换HEX码到BCD码,分别把小数位,个位,十位的BCD码存入RAM中。222加热控制部分由于本系统要控制电热丝加热,功率较大,因此要借助功率电路。在器件选择上留足余量,增加安全性。加热部分采用继电器控制,电路简单可靠。电路如图222所示。当实测温度低于设定值时,由单片机输出高电平信号。三极管9014导通,继电器开始工作对水加温。为了防止继电器频繁动作。在软件中对水温测量精确到01,而在温度设定时只取整数。可以有1的余量。当设定温度低于实测温度时为了加快系统动态响应速度,设置一个小功率电扇,加速水温的降低。使系统整体性能得以提高。原理图如图223所示。223键盘、显示、控制器部分本设计中采用动态显示方式驱动3个七段数码管,分别显示温度的十位、个位和小数位。数码管采用共阴极,由于AT89C52单片机每个I/O的拉电流只有12MA。所以在位10码和段码都加上了同相驱动器。键盘采用按键开关经上拉电阻分别接P10、P11、P12口上,起到控制、上调和下调作用。每按上调和下调键,设定温度值增1减1。单片机XTAL2、XTAL1接12MHZJ晶振,提供系统时钟基值。另RESET接复位按键。原理图如图224所示。图222继电器控制图223风扇控制图11图224键盘、显示、控制器部分原理图3系统软件设计系统的软件设计采用汇编语言,对单片机进行变成实现各项功能。主程序对模块进行初始化,而后调用读温度、处理温度、显示、键盘、和继电器各模块。用的是循环查询方式,来显示和控制温度。31读取DS18B20温度模块子程序每次对DA18B20操作时多要按造DS18B20工作过程中的协议进行。初始化ROM操作命令存储器操作命令处理数据程序流程图如图311所示。32数据处理子程序由于DS18B20转换后的代码并不是实际的温度值,所以要进行数据处理。由于本程序采用的是00625的精度,小数部分的值,可以用后四位代表的实际数值乘以00625,得到真正的数值,数值可能带几个小数位,所以采取四舍五入,保留一位小数即可。也就说,本系统的温度精确到了01度。12首先程序判断温度是否是零下,如果是,则DS18B20保存的是温度的补码值,需要对其低8位(LSBYTE)取反加一变成原码。处理过后把DS18B20的温度COPY到单片机的RAM中,里面已经是温度值的HEX码了,然后转换HEX码到BCD码,分别把小数位,个位,十位的BCD码存入RAM中。数据处理子程序流程图如图321所示。开始开始初始化DS18B20存在ROM操作命令存储操作命令读取温度值返回是否图311读取DS18B20温度子程序流程图返回数据传递温度是否为负BCD码转换求补运算13图321数据处理子程序流程图33键盘扫描子程序按键功能1ENTERP10K2控制键2UPP11K3加1键3DOWNP12K4减1键键盘子程序流程图如图331所示。开始ENTER_FLAG为1ENTER键是否按下是否有ENTER键按下是否有UP键按下是否有DOWN键按下DISPLAY显示返回主程序ENTER子程序FLAG1UP子程序DOWN子程序是是是是是否否否否否14图331键盘子程序流程图34主程序流程图总模块流程图如图311所示。本软件设计采用循环查询来处理各个模块,温度是缓慢变化量所以可以满足性能要求。图311所示为系统主程序流程图否初始化开始调用A/D转换子程序DS18B20存在数据处理子程序显示子程序键盘扫描子程序继电器控制子程序错误处理显示888是15图311主程序流程图4系统测试41静态温度测试测试方式由于种种条件的限制,采用模拟加热方式进行测试。利用继电器的指示灯来显示继电器的动作。红灯表示加热,绿灯表示降温。测量仪器空调温度显示屏测试结果如表411所示表411测试结果数据标准温度/2022252728测量温度/198221247268276误差/020103020442动态温控测量测试方式加热方式用体温对传感器DS18B20进行加热。设定控制温度,记录超调温度,稳态误差。超调温度与加热的功率有关,这里不再测量。测量仪器空调温度显示屏测量结果如表421所示表421测试结果数据设定温度/29303335超调温度/13091106稳态误差/0204020443结果分析有以上的测量结果可见,系统基本上达到了所要求的指标,静态测温的精度主要由DS18B20来决定。在控温指标中,影响系统的性能的因素很多。最关键的是加热系统本身的物理性质及控制算法。由于条件的限制,在本设计中采用体温进行测试。16附录1产品使用说明本水温控制系统能在099范围内设定任意温度值,超出此范围将有出错显示888,之后返回到99或0。通过按ENTER键确认开始温度设定;P11的UP键为加1键,每按一次使设定温度值加1P12的DOWN键为减1键,每按下一次设定温度值减1。设置完温度要在按ERTER键确认温度设定完成,之后显示实测温度值。当温度传感器没有接入时也将有出错提示显示888。附录2元件清单元件数量(个)AT89S521DS18B2017404212MHZ晶振1继电器1数码管3按键开关4901421N40071发光二极管21K8排阻1100电阻33K445K150012001电解电容10F11730PF218附录3系统硬件原理图19附录4软件程序清单TEMPERATURE_LDATA31HDS18B20低8位BUFFERTEMPERATURE_HDATA30HDS18B20高8位BUFFERTEMPERATURE_HCDATA32H计算后十位的BCD码存放BUFFERTEMPERATURE_LCDATA33H计算后的个位和小数位的BCD码存放BUFFERTEMPERATURE_ZHDATA34H计算后十位和个位HEX码的存放BUFFERDIS_BUF_XDATA35H数码管小数位BUFFERDIS_BUF_GDATA36H数码管个位BUFFERDIS_BUF_SDATA37H数码管十位BUFFERKEY_BUF_GDATA39H键盘输入后,的个位值KEY_BUF_SDATA49H键盘输入后,的十位值K_ENTEREQUP10输入数据确认按钮K_UPEQUP11上调按钮K_DOWNEQUP12下调按钮P_DS18B20EQUP30读取DS18B20的输入端口P_SWITCHEQUP17继电器控制端口,1加热,0断开P_FANEQUP15风扇控制,1降温,0断开FLAGEQU20H0标志位,确定是否存在DS18B20,1存在,0不存在ENTER_FLAGEQU20H1键盘输入的标志位,为0说明键盘正在输入,为1说明键盘输入退出程序开始执行ORG0000HLJMPMAINORG0100HMAINMOVSP,60H初始化MOVKEY_BUF_G,00H由于KEY_BUF是由用户输入的,所以先赋值初始化MOVKEY_BUF_S,00HNEXTLCALLREAD_TEMP调用读温度子程序JBFLAG,NORMAL判断是否有DS18B20的存在CALLERR不存在时显示错误信息AJMPNEXTNORMALLCALLDATA_DEAL处理从DS18B20得到的数据LCALLSET_DIS_BUF赋值给DIS_BUF_X,G,S,LCALLDISPLAY调用数码管显示子程序LCALLSCAN_KEY扫描键盘LCALLSWITCH处理继电器AJMPNEXT20程序名称ERR功能程序出错处理,显示三个8,即888入口参数无出口参数DIS_BUF_X,DIS_BUF_G,DIS_BUF_S,ERRMOVDIS_BUF_X,08H如果没有找到DS18B20,那么就显示错误,错误显示为888MOVDIS_BUF_G,08HMOVDIS_BUF_S,08HLCALLDISPLAYRET程序名称DATA_DEAL功能处理采集后的的数据入口参数TEMPERATURE_L出口参数DIS_BUF_G,DIS_BUF_S,DIS_BUF_XDATA_DEALMOVA,TEMPERATURE_H判温度是否零下ANLA,80HJZTEMPC1A为0,说明是正数,跳往TEMPC1,如果是负数,则对低8为进行补码处理CLRCMOVA,TEMPERATURE_L二进制数求补(双字节)CPLA取反加1ADDA,01HMOVTEMPERATURE_L,A取补码后存回TEMPERATURE_L,此时TEMPERATURE_L里面的值就可以表示温度了,不过还要继续处理一下。MOVA,TEMPERATURE_HCPLAADDCA,00H高位TEMPERATURE_H取反,加上从低位TEMPERATURE_L进来的位MOVTEMPERATURE_H,A写回TEMPERATURE_HMOVTEMPERATURE_HC,0BHSJMPTEMPC11TEMPC1MOVTEMPERATURE_HC,0AHTEMPC11MOVA,TEMPERATURE_HCSWAPAMOVTEMPERATURE_HC,AMOVA,TEMPERATURE_LANLA,0FH取A低4位小数位,单位是00625,得出来的数要乘以00625,通过查表来算出值MOVDPTR,TEMPDOTTABMOVCA,ADPTR查表MOVTEMPERATURE_LC,ATEMPERATURE_LCLOW小数部分BCDMOVDIS_BUF_X,A小数位的BCD码送入显示BUFFER中21MOVA,TEMPERATURE_L整数部分ANLA,0F0H得到个位单个数值SWAPASWAP后就得到个位真正的个位MOVTEMPERATURE_L,AMOVA,TEMPERATURE_HANLA,0FHSWAPAORLA,TEMPERATURE_LMOVTEMPERATURE_ZH,A组合后的值存入TEMPERATURE_ZHLCALLHTOB转换HEX值成为BCD码MOVTEMPERATURE_L,ATEMPERATURE_L目前存入的是十位和个位的BCD编码ANLA,0F0HSWAPAORLA,TEMPERATURE_HCTEMPERATURE_HCLOW位十位数BCDMOVTEMPERATURE_HC,AMOVA,TEMPERATURE_LANLA,0FHSWAPATEMPERATURE_LCHI位个位数BCDORLA,TEMPERATURE_LCMOVTEMPERATURE_LC,ARET小数部分码表TEMPDOTTABDB00H,00H,01H,02H,03H,03H,04H,04H,05H,06H,06H,07H,08H,08H,09H,09H0062500H006252012501H0062530187502H00625402503H0062550312503H以此类推程序名称HTOB功能十六进制转BCD入口参数A出口参数R7HTOBMOVB,064H100DIVABA/100MOVR7,AMOVA,0AHXCHA,BDIVABSWAPAORLA,BRET程序名称INIT_TEMP功能初始化DS18B20,确定DS18B20是否是存在的入口参数无出口参数FLAG22INIT_TEMPSETBP_DS18B20NOPCLRP_DS18B20主机发出延时537微秒的复位低脉冲MOVR0,6BHMOVR1,04HTSR1DJNZR0,MOVR0,6BHDJNZR1,TSR1SETBP_DS18B20然后拉高数据线,释放总线进入接受状态NOPNOPNOPMOVR0,32HTSR2JNBP_DS18B20,TSR3等待DS18B20回应PDJNZR0,TSR2LJMPTSR4延时TSR3SETBFLAG置标志位,表示DS1820存在LJMPTSR5TSR4CLRFLAG清标志位,表示DS1820不存在LJMPTSR7TSR5MOVR0,06BHTSR6DJNZR0,TSR6时序要求延时一段时间TSR7SETBP_DS18B20RET程序名称READ_TEMP功能读取DS18B20的数据入口参数TEMPERATURE_L,TEMPERATURE_H出口参数无READ_TEMPSETBP_DS18B20LCALLINIT_TEMP先复位DS18B20JBFLAG,TSS2RET判断DS1820是否存在若DS18B20不存在则返回TSS2MOVA,0CCH跳过ROM匹配LCALLWRITE_18B20MOVA,44H发出温度转换命令LCALLWRITE_18B20LCALLDISPLAY等待AD转换结束,12位的话750微秒LCALLINIT_TEMP准备读温度前先复位MOVA,0CCH跳过ROM匹配LCALLWRITE_18B20MOVA,0BEH发出读温度命令LCALLWRITE_18B20LCALLREAD_18B20将读出的温度数据保存到35H/36HRET23具体的步骤初始化完后当拉低电平开始产生写时隙15微妙之内送入一位数据1560微妙1820来采样读取它程序名称WRITE_18B20功能将A保存的数值写入DS1820中,有具体的时序要求,详细参考附图的说明入口参数A寄存器出口参数无WRITE_18B20MOVR2,08H一共8位数据,串行通讯CLRCWR1CLRP_DS18B20MOVR3,07HDJNZR3,RRCA循环右移MOVP_DS18B20,CMOVR3,3CHDJNZR3,23246微妙SETBP_DS18B20NOPDJNZR2,WR1A里面一共是8位,所以要送8次SETBP_DS18B20释放总线RET程序名称READ_18B20功能读取18B20中的数据,由于是串行通讯,每次读取一个,循环8次读取入口参数TEMPRATURE_L出口参数无READ_18B20MOVR4,02H将温度高位和低位从DS18B20中读出MOVR1,TEMPERATURE_LRE00MOVR2,08H数据一共有8位RE01CLRCSETBP_DS18B20NOPNOPCLRP_DS18B20NOPNOPNOPSETBP_DS18B20MOVR3,09HRE10DJNZR3,RE10MOVC,P_DS18B20MOVR3,3CHRE20DJNZR3,RE20RRCADJNZR2,RE0124MOVR1,ADECR1DJNZR4,RE00RET程序名称SCAN_KEY功能扫描键盘入口参数DIS_BUF_G,DIS_BUF_S,出口参数KEY_BUF_G,KEY_BUF_S,SCAN_KEYJBK_ENTER,QUIT如果有ENTER键入,则开始键盘输入LCALLK_DELAYJBK_ENTER,QUITCLRENTER_FLAG每次进来都赋值输入标志,设置为0MOVKEY_BUF_G,DIS_BUF_G将当前的温度赋值给KEY_BUF,也就是说是以当前温度为基准,进行加减的MOVKEY_BUF_S,DIS_BUF_SK_LOOPJBENTER_FLAG,QUIT如果输入完成,ENTER_FLAG则为1,退出键盘程序JBK_ENTER,KUPCALLPRO_ENTERKUPJBK_UP,KDOWNCALLPRO_UPKDOWNJBK_DOWN,LOOPACALLPRO_DOWNLOOPALCALLDISPLAYSJMPK_LOOPQUITRET程序名称PRO_ENTER功能确认键盘输入和退出键盘输入入口参数ENTER_FLAG出口参数ENTER_FLAGPRO_ENTERCALLK_DELAYJBK_ENTER,K_LOOP按键抖动处理SETBENTER_FLAGCALLK_DELAYRET程序名称PRO_UP功能数值上调处理入口参数KEY_BUF_G,KEY_BUF_S,出口参数DIS_BUF_G,DIS_BUF_S,PRO_UPCALLK_DELAYJBK_UP,K_LOOP按键抖动处理25INCKEY_BUF_G个位增一MOVA,KEY_BUF_GCJNEA,0AH,UPNEXT个位增加到10,回0MOVKEY_BUF_G,00HINCKEY_BUF_S十位加一MOVA,KEY_BUF_SCJNEA,0AH,UPNEXT十位超过99,溢出了MOVR0,200ERROR1LCALLERR出错,显示888DJNZR0,ERROR1DECKEY_BUF_S退回99MOVKEY_BUF_G,09HUPNEXTMOVDIS_BUF_G,KEY_BUF_GMOVDIS_BUF_S,KEY_BUF_SMOVDIS_BUF_X,00HCALLK_DELAYRET程序名称PRO_DOWN功能数值下调处理入口参数KEY_BUF_G,KEY_BUF_S,出口参数DIS_BUF_G,DIS_BUF_S,PRO_DOWNCALLK_DELAYJBK_DOWN,K_LOOP按键抖动处理DECKEY_BUF_G个位减一MOVA,KEY_BUF_GCJNEA,0FFH,DOWNNEXT个位减到0,回到9MOVKEY_BUF_G,09HDECKEY_BUF_S十位减一MOVA,KEY_BUF_SCJNEA,0F
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 截洪沟施工方案
- 2025年口腔诊疗器械消毒技术操作规范试题与答案
- 医务科工作总结及工作计划
- 慢性病防治试题及答案
- 四川硬笔法四级考试试题及答案
- 2025建筑工程技术考试试题(含答案)
- 物流师三级考试试题含答案
- 2025年海选诗词大赛题库及答案
- 震动打桩机安全操作规程
- 建设工程施工合同纠纷要素式起诉状模板专业权威靠谱
- 意识障碍的判断及护理
- 储能电站安全管理与操作规程
- 2025年宿迁市泗阳县保安员招聘考试题库附答案解析
- 交通安全企业培训课件
- 2025年广东省中考物理试卷及答案
- 皮革项目商业计划书
- 主管护师护理学考试历年真题试卷及答案
- 华文慕课《刑法学》总论课后作业答案
- 公路护栏波型梁施工方案
- 2025版煤矿安全规程新增变化条款考试题库
- 基于SOLO分类理论剖析初中生数学开放题解决水平:现状差异与提升策略
评论
0/150
提交评论