当前位置:文档之家› 温度控制器的设计与制作

温度控制器的设计与制作

6.4实施—制作过程6.4.1硬件设计温度测量采用最新的单线数字温度传感器DS18B20,DS18B20是美国DALLAS 半导体公司最新推出的一种改进型智能温度传感器。

与传统的热敏电阻相比,它能够直接读出被测温度并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。

可以分别在93.75ms 和750ms 内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源。

因而,使用DS18B20可使系统结构更趋简单,可靠性更高。

降温控制系统采用低压直流电风扇。

当温度高于设定最高限温度时,启动风扇降温,当温度降到指定最高限温度以下后,风扇自动停止运转。

温控系统的温度显示和温度的设定直接采用综合实训板上的显示和键盘。

当环境温度低于设定的最低限温度值时,也采用综合实训板上的蜂鸣器进行报警。

用0#、1#键作为温度最高限、最低限的设定功能键;2#、3#键作为温度值设定的增加和减小功能键。

0#键:作为最高限温度的设定功能键。

按一次进入最高限温度设定状态,选择最高限温度值后,再按一次确认设定完成。

1#键:作为最低限温度的设定功能键。

按一次进入最低限温度设定状态,选择最低限温度值后,再按一次确认设定完成。

2#键:+1功能键,每按一次将温度值加1,范围为1~99℃。

3#键:-1功能键,每按一次将温度值减1,范围为99~1℃。

6.4.2软件设计(1)温控系统采用模块化程序结构,可以分成以下程序模块:①系统初始化程序:首先完成变量的设定、中断入口的设定、堆栈、输入输出口及外部部件的初始化工作。

②主程序MAIN :完成键盘扫描、温度值采集及转换、温度值的显示。

当温度值高于设定最高限时,驱动风扇工作;当温度值低于设定最低限时,驱动蜂鸣器报警。

③键盘扫描程序KEYSCAN :完成键盘的扫描并根据确定的键值执行相应的功能,主要完成最高温度、最低温度的设定。

④温度采集程序GET_TEMPER :完成DS18B20的初始化并发出温度转换命令,经过指定时间后读取转换的温度值。

根据DS18B20的通信协议,主机控制DS18B20完成温度转换必须经过3个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM 指令,最后发送RAM 指令,这样才能对DS18B20进行预定的操作。

复位要求CPU 将数据线下拉500μs ,然后释放。

DS18B20收到信号后等待16~60μs EA/VP 31X119X218R ESET 9R D 17WR16INT012INT113T014T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSEN 29ALE/P 30TXD 11R XD 10U18051AD012PA021AD113PA122AD214PA223AD315PA324AD416PA425AD517PA526AD618PA627AD719PA728PB 029C E 8PB 130R D 9PB 231WR 10PB 332IO/M 7PB 433ALE 11PB 534PB 635PB 736TMR OUT 6PC 037PC 138TMR IN 3PC 239PC 31PC 42R ESET 4PC 55U28155B ELL 123A74ALS02+5V 12M 20p 20p +5VG N D 1D Q2V c c 3DS18B 20+5V4.7 k +5V 8550D24004+5V A -++5V ab c d e f g h p LED1LED2+5V 012345PC 0PC 1PC 2PA0PA1PB 0PB 7图2.2.1温控系统硬件接线原理图左右,后发出60~240μs的存在低脉冲,CPU收到此信号表示复位成功。

⑤温度转换程序TEMPER_COV:根据精度要求对采集到的温度值进行处理并转换成便于显示的BCD 码值。

⑥显示子程序DISPLAY:显示实时温度及设定温度值。

⑦DS18B20初始化子程序INIT_1820:DS18B20在工作之前必须按照指定的要求完成初始化工作,否则无法正常工作。

⑧DS18B20读写子程序WRITE_1820、READ_1820、READ_1820T完成对18B20的读写功能,其中,READ_1820从DS18B20中读出一个字节的数据,READ_1820T从DS18B20中读出两个字节的温度数据。

⑨延时程序DELAY、DELAY1满足18B20要求的延时间隔及程序中的延时功能。

(2)软件流程框图分别如图2.2.2、2.2.3、2.2.4、2.2.5和2.2.6所示。

程序初始化有键输入吗?采集温度值将采集到的值转化为压缩BCD码显示温度值执行相应键的功能开始Y N图2.2.2主程序流程图等待480 μs以上?CLR DQ向DS18B20发出reset脉冲SETB DQ等待15~60 μs置FLAG标志并延时200 μsN清除FLAG标志DS18B20初始化DQ是否变低?初始化结束NYY初始化程序流程图DS18B20初始化写入CCH,SKIP ROM开始写入44H,发转换命令CLR DQ,准备发送延时15 μs写入1位数据延时15~45 μsSETB DQ完成1位写DS18B20初始化开始写入CCH,SKIP ROM 写入BEH,发转换命SETB DQ延时1μs以上CLR DQ准备发送延时1μs 以上SETB DQ 释放总线读取1位数据延时15~45 μs(3)下面给出参考程序(部分);晶振:12MHz;HIG_TMP EQU 32H ;设定的最高温度值LOW_TMP E QU 33H ;设定的最低温度值NUB_V AL EQU 34H ;加1、减1的暂存值TEMPER_H EQU 36H ;采集到温度值的低位TEMPER_L EQU 35H ;采集到温度值的高位TEMPER_NUM E QU 30H;PORT EQU 4400H ;8155口地址PORTA EQU 4401H ;8155A口地址PORTB EQU 4402H ;8155B口地址PORTC EQU 4403H ;8155C口地址;FLAG1 BIT 00H ;18B20初始化完成标志KEY_MK BIT 08H ;键盘按下标志KEY_HMK BIT 09H ;S1键按下标志KEY_LMK B IT 0AH ;S2键按下标志DISP_MK BIT 0BH;温度设定状态标志DQ BIT P1.1;ORG 0000HAJMP START;ORG 0030HSTART:MOV SP,#60H ;设置堆栈值MOV IE,#00HMOV TCON,#00HMOV TMOD,#10HMOV DPTR,#PORT ;初始化8155口,A、B输出C输入MOV A,#43HMOVX @DPTR,ASETB DQSETB P1.2MOV R0,#20HMOV R1,#20HMOV A,#00HSTART_1:MOV @R0,AINC R0DJNZ R1,START_1START_2:CLR P1.0CLR P1.2MOV HIG_TMP,#30H ;初始高温限值设为30℃MOV LOW_TMP,#20H ;初始低温限值设为20℃;ACALL RE_CONFIGNOPACALL INIT_1820JNB FLAG1,START_2MAIN:ACALL KEY_SCANJB KEY_LMK,MAIN1JB KEY_HMK,MAIN1ACALL GET_TEMPER ;采集温度值ACALL TEMPER_COV ;温度值转换MAIN1:ACALL DISPLAYMOV A,TEMPER_NUMCJNE A,HIG_TMP,MAIN2CLR CMAIN2:JC MAIN3SETB P1.2 ;启动风扇AJMP MAINMAIN3:CJNE A,LOW_TMP,MAIN4CLR CMAIN4:JNC MAIN5SETB P1.0 ;启动报警器AJMP MAINMAIN5:CLR P1.0CLR P1.2AJMP MAINNOP;------------------读出转换后的温度值GET_TEMPER:SETB DQ ;定时入口GET_TMP1:LCALL INIT_1820 ;第一步,完成对18B20初始化JB FLAG1,GET_TMP2LJMP GET_TMP1 ;若DS18B20不存在,则继续初始化GET_TMP2:LCALL DELAY1 ;延时80μsMOV A,#0CCH ;第二步,ROM命令,跳过ROM匹配——0CCLCALL WRITE_1820MOV A,#44H ;第三步,功能命令,发出温度转换命令LCALLWRITE_1820GET_TMP5:NOPLCALLDISP3CLR D QNOPNOPSETB DQ ;释放数据线MOV R3,#4 ;延时14μsDJNZ R3,$CLR CMOV C,DQJNC GET_TMP5GET_TMP3:LCALL INIT_1820 ;第一步,对18B20初始化JB FLAG1,GET_TMP4LJMP GET_TMP3GET_TMP4:LCALLDELAY1MOV A,#0CCH ;第二步,ROM命令,跳过ROM匹配LCALLWRITE_1820MOV A,#0BEH ;第三步,功能命令,发出读温度命令LCALLWRITE_1820;LCALLREAD_1820;READ_1820RET;-------------------写DS18B20的程序WRITE_1820:MOV R2,#8CLR CWRITE1:CLR D QMOV R3,#7 ;延时14μsDJNZ R3,$RRC AMOV DQ,CMOV R3,#21 ;延时45μsDJNZ R3,$SETB DQNOPDJNZ R2,WRITE1SETB DQRET6.4.3系统调试1)输入源程序输入源程序时,应以西文方式输入字母和符号,且中文注释前要加分号。

2)对源程序进行汇编和纠错根据自动汇编提供的错误信息逐条纠正错误,直至汇编信息提示“错误(0)”、“汇编结束”。

3)确定调试方案在调试程序前一定要认真分析源程序,明确各功能程序运行的预期结果。

然后结合源程序应达到的结果,确定出如何通过某些关键参数和实验现象检验程序运行结果正确与否。

例如:程序运行过程中路径的变化、累加器A内容的变化、其他特殊寄存器内容的变化等。

相关主题