温度控制器的设计与制作.doc_第1页
温度控制器的设计与制作.doc_第2页
温度控制器的设计与制作.doc_第3页
温度控制器的设计与制作.doc_第4页
温度控制器的设计与制作.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

6.4实施制作过程6.4.1硬件设计温度测量采用最新的单线数字温度传感器DS18B20,DS18B20是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器。与传统的热敏电阻相比,它能够直接读出被测温度并且可根据实际要求通过简单的编程实现912位的数字值读数方式。可以分别在93.75ms和750ms内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源。因而,使用DS18B20可使系统结构更趋简单,可靠性更高。降温控制系统采用低压直流电风扇。当温度高于设定最高限温度时,启动风扇降温,当温度降到指定最高限温度以下后,风扇自动停止运转。温控系统的温度显示和温度的设定直接采用综合实训板上的显示和键盘。当环境温度低于设定的最低限温度值时,也采用综合实训板上的蜂鸣器进行报警。用0#、1#键作为温度最高限、最低限的设定功能键;2#、3#键作为温度值设定的增加和减小功能键。0#键:作为最高限温度的设定功能键。按一次进入最高限温度设定状态,选择最高限温度值后,再按一次确认设定完成。1#键:作为最低限温度的设定功能键。按一次进入最低限温度设定状态,选择最低限温度值后,再按一次确认设定完成。2#键:1功能键,每按一次将温度值加1,范围为199。3#键:1功能键,每按一次将温度值减1,范围为991。图2.2.1温控系统硬件接线原理图6.4.2软件设计(1)温控系统采用模块化程序结构,可以分成以下程序模块:系统初始化程序:首先完成变量的设定、中断入口的设定、堆栈、输入输出口及外部部件的初始化工作。主程序MAIN:完成键盘扫描、温度值采集及转换、温度值的显示。当温度值高于设定最高限时,驱动风扇工作;当温度值低于设定最低限时,驱动蜂鸣器报警。键盘扫描程序KEYSCAN:完成键盘的扫描并根据确定的键值执行相应的功能,主要完成最高温度、最低温度的设定。温度采集程序GET_TEMPER:完成DS18B20的初始化并发出温度转换命令,经过指定时间后读取转换的温度值。根据DS18B20的通信协议,主机控制DS18B20完成温度转换必须经过3个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求CPU将数据线下拉500s,然后释放。DS18B20收到信号后等待1660s左右,后发出60240s的存在低脉冲,CPU收到此信号表示复位成功。温度转换程序TEMPER_COV:根据精度要求对采集到的温度值进行处理并转换成便于显示的BCD码值。显示子程序DISPLAY:显示实时温度及设定温度值。DS18B20初始化子程序INIT_1820:DS18B20在工作之前必须按照指定的要求完成初始化工作,否则无法正常工作。DS18B20读写子程序WRITE_1820、READ_1820、READ_1820T完成对18B20的读写功能,其中,READ_1820从DS18B20中读出一个字节的数据,READ_1820T从DS18B20中读出两个字节的温度数据。图2.2.2主程序流程图图2.2.3DS18B20初始化程序流程图延时程序DELAY、DELAY1满足18B20要求的延时间隔及程序中的延时功能。(2)软件流程框图分别如图2.2.2、2.2.3、2.2.4、2.2.5和2.2.6所示。图2.2.5DS18B20写入子程序图2.2.6DS18B20读取子程序(3)下面给出参考程序(部分);晶振:12MHz;HIG_TMPEQU32H;设定的最高温度值LOW_TMPEQU33H;设定的最低温度值NUB_VALEQU34H;加1、减1的暂存值TEMPER_HEQU36H;采集到温度值的低位TEMPER_LEQU35H;采集到温度值的高位TEMPER_NUMEQU30H;PORTEQU4400H;8155口地址PORTAEQU4401H;8155A口地址PORTBEQU4402H;8155B口地址PORTCEQU4403H;8155C口地址;FLAG1BIT00H;18B20初始化完成标志KEY_MKBIT08H;键盘按下标志KEY_HMKBIT09H;S1键按下标志KEY_LMKBIT0AH;S2键按下标志DISP_MKBIT0BH;温度设定状态标志DQBITP1.1;ORG0000HAJMPSTART;ORG0030HSTART:MOVSP,#60H;设置堆栈值MOVIE,#00HMOVTCON,#00HMOVTMOD,#10HMOVDPTR,#PORT;初始化8155口,A、B输出C输入MOVA,#43HMOVXDPTR,ASETBDQSETBP1.2MOVR0,#20HMOVR1,#20HMOVA,#00HSTART_1:MOVR0,AINCR0DJNZR1,START_1START_2:CLRP1.0CLRP1.2MOVHIG_TMP,#30H;初始高温限值设为30MOVLOW_TMP,#20H;初始低温限值设为20;ACALLRE_CONFIGNOPACALLINIT_1820JNBFLAG1,START_2MAIN:ACALLKEY_SCANJBKEY_LMK,MAIN1JBKEY_HMK,MAIN1ACALLGET_TEMPER;采集温度值ACALLTEMPER_COV;温度值转换MAIN1:ACALLDISPLAYMOVA,TEMPER_NUMCJNEA,HIG_TMP,MAIN2CLRCMAIN2:JCMAIN3SETBP1.2;启动风扇AJMPMAINMAIN3:CJNEA,LOW_TMP,MAIN4CLRCMAIN4:JNCMAIN5SETBP1.0;启动报警器AJMPMAINMAIN5:CLRP1.0CLRP1.2AJMPMAINNOP;-读出转换后的温度值GET_TEMPER:SETBDQ;定时入口GET_TMP1:LCALLINIT_1820;第一步,完成对18B20初始化JBFLAG1,GET_TMP2LJMPGET_TMP1;若DS18B20不存在,则继续初始化GET_TMP2:LCALLDELAY1;延时80sMOVA,#0CCH;第二步,ROM命令,跳过ROM匹配0CCLCALLWRITE_1820MOVA,#44H;第三步,功能命令,发出温度转换命令LCALLWRITE_1820GET_TMP5:NOPLCALLDISP3CLRDQNOPNOPSETBDQ;释放数据线MOVR3,#4;延时14sDJNZR3,$CLRCMOVC,DQJNCGET_TMP5GET_TMP3:LCALLINIT_1820;第一步,对18B20初始化JBFLAG1,GET_TMP4LJMPGET_TMP3GET_TMP4:LCALLDELAY1MOVA,#0CCH;第二步,ROM命令,跳过ROM匹配LCALLWRITE_1820MOVA,#0BEH;第三步,功能命令,发出读温度命令LCALLWRITE_1820;LCALLREAD_1820;READ_1820RET;-写DS18B20的程序WRITE_1820:MOVR2,#8CLRCWRITE1:CLRDQMOVR3,#7;延时14sDJNZR3,$RRCAMOVDQ,CMOVR3,#21;延时45sDJNZR3,$SETBDQNOPDJNZR2,WRITE1SETBDQRET6.4.3系统调试1)输入源程序输入源程序时,应以西文方式输入字母和符号,且中文注释前要加分号。2)对源程序进行汇编和纠错根据自动汇编提供的错误信息逐条纠正错误,直至汇编信息提示“错误(0)”、“汇编结束”。3)确定调试方案在调试程序前一定要认真分析源程序,明确各功能程序运行的预期结果。然后结合源程序应达到的结果,确定出如何通过某些关键参数和实验现象检验程序运行结果正确与否。例如:程序运行过程中路径的变化、累加器A内容的变化、其他特殊寄存器内容的变化等。并针对具体的分析和观察对象选择较合适的调试方法。如单步运行、跟踪运行、连续运行、快速运行至光标处、设置断点等调试方法。4)调试程序(1)调试主程序。主程序运行后,在无任何按键输入时观察有无显示,时钟是否工作,其时、分、秒显示的变化过程是否正确。若运行结果不正确,首先应根据程序运行的实际现象分析判断哪些因素可引起相关故障,再通过调试方法逐一认证和排除。例如:若定时/计数器的初始化出错,则时钟将不能工作;若显示程序出错,则将不能正确显示时钟单元内容;若定时/计数器中断服务子程序出错,则其显示数据的变化规律将不正常。(2)调试子程序。在调试主程序时,必然要调用相关的功能子程序。因此,首先应明确子程序的具体功能,通过对子程序的分析,确定子程序的入口、出口参数及相关标识位的状态,然后在满足入口条件的状态下,设法检查从主程序进入子程序,再由子程序返回到主程序的运行过程。可采用跟踪运行或运行至光标处的方法,检查从主程序进入子程序内部的运行过程,再通过单步运行等方法检查子程序内部的运行情况和返回主程序的过程。通过反复调试,发现并排除软件与硬件存在的各类问题,以满足系统设计的预期目的。5)脱机运行将调试已通过的程序写入单片机内部(或外部)程序存储器中,再将写好程序的单片机(或存储器)插入已设计好的单片机用户板上,把仿真系统与用户板脱离开来,最后将所设计的单片机应用系统独立通电运行。6.6评估总结和提高6.6.1项目总结(1)该实训项目主要是以DS18B20为例,训练单片机应用系统与外围应用系统或部件组合的综合设计、分析与调试方法。学会分析和掌握专用芯片或器件的功能、控制方法和编程技巧,能根据专用芯片或部件的技术资料、读写时序要求设计硬件接口及软件编程,完成单片机应用系统的整个开发过程。(2)实训项目中的难点是理解和掌握DS18B20的专用特性和功能,能根据厂商提供的技术资料,编制出相应的初始化程序、读写程序。(3)程序仍采用模块化结构,键盘、显示、延时子程序可以采用原有子程序,本程序是在原有的子程序基础上进行简化而成的。(4)运行状态采用标志化管理可使程序结构更加简化。在上述程序中,对各按键的操作过程和状态都采用标识位来描述,对于不应具有连动功能的按键采用标志位限制,只有在键盘扫描程序确定没有任何按键按下时才清除按键标志。这样既可以起到按键防抖动的作用,同时还可防止由于误操作或按键习惯问题导致的按键被多次执行的情况。(5)调试程序时,重点分析和调试DS18B20的初始化及读写程序,严格按照技术资料提供的时序要求,检查时序的前后次序和延时时间,要结合能反映故障存在与否的参数变化、运行路径变化、显示内容变化等选择合适的观测点和观测对象,再运用适当的调试方法,快速地检验调试结果,由此分析和判断出故障点。(6)为了能在实训室对温度测量进行测试,可分别设定温度的最高位和最低位分别为36和32(当时的室温)。由于人体的体温一般高于36,用手指接触测温点,会导致高温报警,从而启动风扇降温,拿开手之后,测温点的温度会逐步下降。如果此时的室温低于设定的最低温度,系统会启动蜂鸣器报警。调试程序时,如果显示的温度值与实际不符或没有显示,可以首先检查DS18B20的初始化过程是否成功,然后在读取温度值的操作完成后检查所读到的值是否正常,确信没有问题的情况下,检查数据转换和显示程序是否存在问题。6.6.2提高二DS18B20简介(1)独特的单线接口方式:当DS18B20与微处理器连接时,仅需要一条数据线即可实现微处理器与DS18B20的双向通信。(2)使用中不需要任何外围元件。(3)可用数据线供电,电压范围为3.05.5V。(4)测温范围为55125。固有测温分辨率为0.5。(5)通过编程可实现912位的数字读数方式。(6)用户可自设定非易失性的报警上下限值。(7)支持多点组网功能,多个DS18B20可以并联在惟一的数据线上,实现多点测温。(8)负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。2)DS18B20的内部结构图2.2.7DS18B20内部结构图(1)64位光刻ROM的结构如下:8b检验CRC48b序列号8b工厂代码(10H)MSBLSBMSBLSBMSBLSB开始8位是产品类型的编号,接着是每个器件的惟一序号,共有48位,最后8位是前56位的CRC校验码,这也是多个DS18B20可以采用一线进行通信的原因。(2)非易失性温度报警触发器TH和TL,可通过软件写入用户报警上下限。(3)高速暂存存储器。DS18B20温度传感器的内部存储器包括一个高速暂存SRAM和一个非易失性的可电擦除的E2PROM。后者用于存储TH,TL值。数据先写入SRAM,经校验后再传给E2PROM。而配置寄存器为高速暂存器中的第5个字节,其内容用于确定温度值的数字转换分辨率,DS18B20工作时按此寄存器中的分辨率将温度转换为相应精度的数值。该字节各位的定义如下:TMR1R011111低5位一直都是1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动,R1和R0决定温度转换的精度位数,即设置分辨率,如表2.2.1所示(DS18B20出厂时被设置为12位)。表2.2.1R1和R0模式表R1R0分辨率/位温度最大转换时间/ms00110101910111293.75187.5275.00750.00由表2.2.1可见,设定的分辨率越高,所需要的温度数据转换时间就越长。因此,在实际应用中要在分辨率和转换时间之间权衡考虑。高速暂存存储器除了配置寄存器外,还有其他8个寄存器,其分配如下所示。其中,第1、2个寄存器存储温度信息,第3、4个寄存器存储TH和TL值,第68个寄存器未用,表现为全逻辑1;第9个寄存器存储的是前面所有8个寄存器内容的CRC码,可用来保证通信正确。温度低位温度高位

温馨提示

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

评论

0/150

提交评论