温度自动控制系统主程序框图

主程序框图
初始化 LCM

显示固定汉字

显示设定值

显示测量值

测量值与设定值比较

继电器关 继电器接通 显示“关” 显示“开”

CS1 EQU P2.2;定义端口 CS2 EQU P2.3 D/I EQU P2.4 R/W EQU P2.5 E EQU P2.6 DAT EQU P2.1 X EQU 30H Y EQU 31H WDLSB EQU 30H WDMSB EQU 30H

ORG 0000H LJMP MAIN ORG 0030H

MAIN:SETB CS1 SETB CS2;同时选择左右半屏 LCALL INIT-LCM;初始化 LCM 子程序 CLR CS2;选择左半屏 MOV X,#00H MOV Y,#00H MOV 39H,#010H;设置显示为 16X16 的矩阵 MOV DPTR,#HZ1;显示“温” LCALL OUTHZ MOV Y,#010H MOV DPTR,#HZ2;显示“度” LCALL OUTHZ MOV Y,#020H MOV DPTR,#HZ3;显示“自” LCALL OUTHZ MOV Y,#030H MOV DPTR,#HZ4;显示“动” LCALL OUTHZ CLR CS1 SETB CS2;选择右半屏 MOV Y,#00H;设置从 0 页 0 列开始显示 MOV DPTR,#HZ5;显示“控” LCALL OUTHZ MOV Y,#010H MOV DPTR,#HZ6;显示“制” LCALL OUTHZ MOV Y,#020H MOV DPTR,#HZ7;显示“系” LCALL OUTHZ MOV Y,#030H MOV DPTR,#HZ8;显示“统” LCALL OUTHZ SETB CS1 CLR CS2;从新选择左半屏 MOV X,#02H;从第三页开始显示 MOV Y,#010H;从第十七列开始显示

MOV DPTR,#HZ9;显示“设” LCALL OUTHZ MOV Y,#020H MOV DPTR,#HZ10;显示“定” LCALL OUTHZ MOV Y,#030H MOV DPTR,#HZ11;显示“值” LCALL OUTHZ MOV X,#04H;从第五页显示 MOV Y,#010H MOV DPTR,#HZ12;显示“测” LCALL OUTHZ MOV Y,#020H MOV DPTR,#HZ13;显示“量” LCALL OUTHZ MOV Y,#030H MOV DPTR,#HZ11;显示“值” LCALL OUTHZ MOV X,#06H;从第七页开始显示 MOV Y,#00H MOV DPTR,#HZ14;显示“加” LCALL OUTHZ MOV Y,#010H MOV DPTR,#HZ15;显示“热” LCALL OUTHZ MOV Y,#020H MOV DPTR,#HZ16;显示“状” LCALL OUTHZ MOV Y,#030H MOV DPTR,#HZ17;显示“态” LCALL OUTHZ

LCALL FENBINN9;设置数字温度传感器分辨率 M1: CLR CS1 SETB CS2 MOV X,#02H MOV Y,#00H MOV 38H,#032H;50℃设定值 MOV 36H, 38H MOV 37H,#00H;设置小数部分 LCALL DISPLAYDATA

M2: LCALL GETWD;启动传感器转换并获得数据 LCALL DATAPRO;数据处理 MOV X,#04H;第五页显示 MOV Y,#00H;第 1 列显示 LCALL DISPLAYDATA LCALL ZTBJ;状态显示数据比较并启动继电器 LCALL M2

INITLCM:MOV R1,#0C0H;起始行设置 LCALL WRI MOV R1,#03FH;开显示器 LCALL WRI MOV X,#0B8H MOV R1,X;写行地址 LCALL WRI MOV R1,#040H;写列地址 LCALL WRI MOV R7,#08H MOV R6,#040H LCM0:MOV R1,#00H LCALL WRD DJNZ R6,LCM0 MOV R1,#040H;重新设列地址 LCALL WRI MOV R6,#040H INC X MOV R1,X LCALL WRI DJNZ R7,LCM0 RET OUTHZ:MOV R7,#02H MOV A,#08BH ADD A,X;起始行号 MOV X,A HZ2:MOV R1,X LCALL WRI;写指令 MOV A,Y ADD A,Y MOV R1,A LCALL WRI;送列号 MOV R5,39H

HZ1:MOV A,#00H MOVC A,@A+DPTR MOV R1,A LCALL WRD;送点阵数据 LCALL DLY10;延时 INC DPTR DJNZ R5,HZ1 INC X;换页 DJNZ R7,HZ2 RET

DISPLAYDATA:MOV R7,#02H;一共在两页显示 MOV A,#0B8H;起始页设置 ADD A,X MOV X,A MOV A,#040H;起始列设置 ADD A,Y MOV Y,A LCALL WRI MOV 39H,#08H;设置为 8X6 矩阵 MOV A,36H;符号处理 ANL A,#080H;取出符号位 JZ DISPLAY0 MOV DPTR,TABDATAN;显示“-” LCALL OUTHZ LJMP DISPLAY1 DISPLAY0:MOV DPTR,TABDATA0;显示空白 LCALL OUTHZ DISPLAY1:MOV A,36H ANL A,#07FH;把第八位置零 MOV DPTR,#TABDATA MOV B,#064H;除以 100 显示百位 DIV AB MOV Y,#08H LCALL CHABIAO;查表显示 MOV DPTR,#TABDATA XCH A,B MOV B,#0AH;除 10 显示十位 DIV AB MOV Y,#010H LCALL CHABIAO MOV A,B MOV Y,#018H

LCALL CHAOBIAO MOV DPTR,#TABP;显示小数点 MOV Y,#020H LCALL OUTHZ MOV DPTR,#TABDATA MOV A,37H MOV Y,#028H LCALL CHABIAO RET

CHABIAO:PUSH B MOV B,#010H;设置步进字节数 MUL AB ADD A,DPL XCH A,DPL MOV A,#00H ADDC A,DPH XCH A,DPH LCALL OUTHZ POP B RET

DATAPRO:CLR EA PUSH PSW MOV A,WDMSB MOV R2,#04H PRO:RL A DJNZ R2,PRO;不带符号位左移 4 位 ANL A,#0F0H MOV R2,A;R2 为 MSB 左移后数据 MOV A,WDLSB SWAP A MOV R3,A ANL A,#0FH ORL A,R2 MOV 36H,A;存储整数部分包括第八位符号位 MOV A,R3 RLC A JC PRO2 MOV 37H,#00H LJMP PRO3 PRO2:MOV 37,#05H

PRO3:POP PSW POP A SETB EA RET

ZTBJ:MOV 39H,#010H MOV A,36H ANL A,#080H JZ ZTBJ0 MOV X,#04H MOV Y,#00H MOV DPTR,#TABK;显示“开” LCALL OUTHZ SETB P0.0 CLR P0.1 LJMP ZTBJ1 ZTBJ0:MOV A,36H SUBB A,38H;测定值和设定值比较 JC ZTBJ2 MOV DPTR ,#TABG;显示“关” LCALL OUTHZ CLR P0.0 SETB P0.1 LJMP ZTBJ1 ZTBJ:MOV DPTR,#TABK LCALL OUTHZ SETB P0.0 CLR P0.1 ZTBJ1:RET

GETWD:LCALL INIT MOV A,#0CCH LCALL WRITE;发跳过 ROM 命令 MOV A,#044H LCALL WRITE;发启动转换命令 LCALL INIT MOV A,#0CCH LCALL WRITE MOV A,#0BEH;发读存储器命令 LCALL WRITE LCALL READ MOV WDLSB,A

LCALL READ MOV WDMSB,A RET

INIT:CLR EA;初始化 DS18B20 INI10:SETB DAT MOV R2,#0C8H INI11:CLR DAT DJNZ R2,INI11;主机发复位脉冲持续 600 微秒 SETB DAT;主机释放总线并改口为输入 MOV R2,#01EH INI12:DJNZ R2,INI12;DS18B20 等待 60 微秒 CLR C ORL C,DAT JC INI10 MOV R6,#050H INI13:ORL C,DAT JC INI14;DS18B20 数据线变高,初始化成功 DJNZ R6,INI13 LJMP INI10;初始化失败 INI14:MOV R2,#0F0H INI15:DJNZ R2,INI15;DS18B20 应答至少 480 微秒 RET

WRITE:CLR EA MOV R3,#08H WR11:SETB DAT MOV R4,#08H RRC A CLR DAT WR12:DJNZ R4,WR12 MOV DAT,C MOV R4,#014H WR13:DJNZ R4,WR13 DJNZ R3,WR11 SETB DAT RET

REAT:CLR EA MOV R6,#08H RD11:CLR DAT

MOV R4,#04H NOP SETB DAT RD12:DJNZ R4,RD12 MOV C,DAT RRC A MOV R5,#01EH RD13:DJNZ R5,RD13 DJNZ R6,RD11 SETB DAT RET

WRI:CLR D/I CLR D/W SETB E MOV P1,R1 LCALL DLY10 CLR E LCALL DLY10 SETB E RET

WRD:SETB D/I CLR R/W SETB E MOV P1,R1 LCALL DLY10 CLR E LCALL DLY10 SETB E RET

DLY10:MOV R3,#02H;延时 DL1:MOV R4,#05H DL2:MOV R6,#0FH DL3:DJNZ R6,DL3 DJNZ R4,DL2 DJNZ R3,DL1 RET

FENBIAN-9: LCALL INIT MOV A,#0CCH;skip rom LCALL WRITE MOV A,#4EH;write scratch pad LCALL WRITE MOV A,#0FFH;设定 TH LCALL WRITE MOV A,#00H;设定 TL LCALL WRITE MOV A,#01FH;设为 9 位分辨率 LCALL WRITE LCALL INIT MOV A,#0CCH;skip rom LCALL WRITE MOV A,#048H;copy scrcatch pad LCALL WRITE LCALL INIT RET


相关文档

温度自动控制系统设计
室内温度自动控制系统设计
数字温度自动控制系统设计正
数字温度自动控制系统正文
基于单片机温度自动控制系统
大棚温度自动控制系统设计汇编
温度自动控制系统课程综合设计
加热炉的温度自动控制系统
数字温度自动控制系统设计正文
掘进机温度自动控制系统设计
电脑版