您好,欢迎来到尔游网。
搜索
您的当前位置:首页加热炉温度控制设计单片机

加热炉温度控制设计单片机

来源:尔游网
兰州理工大学毕业设计程序清单

程序清单:

;***************系统主程序*************** ORG 0000H AJMP MAIN ORG 000BH AJMP PTT0 ORG 0030H

MAIN:MOV SP,#59H ;设定堆栈指针

MOV TMOD,#01H ;定时器0初始化 MOV TL0,#0B0H ;定时器定时100ms MOV TH0,#3CH

MOV R7,#150 ;置15s软件定时器初值 ACALL KIN ;调用键盘管理程序 SETB ET0 ;允许定时器0中断 SETB EA ;开中断

SETB TR0 ;启动定时器0 SJMP $

;***************定时器0中断子程序*************** PTT0:MOV TL0,#0B0H

MOV TH0,#3CH ;重置定时器初值 DJNZ R7,BACK ;15s到否,不到返回 MOV R7,#150 ;重置软件定时 ACALL TIN ;温度检测

MOV BT1,TEMP1 ;当前温度送显示缓冲区 MOV BT0,TEMP0

ACALL DISP ;显示当前温度 ACALL CONT ;温度控制

LCALL ALARM ;调用越限报警程序 BACK:RETI

;***************单字节带符号的减法子程序***************

DFJ:JB 20H,DJF4 ;判被减数正负,如负,跳至DJF4 JB 21H,DJF2 ;被减数为正,再判减数正负 CLR C ;两数为正,被减数减去减数 MOV A,R1 SUBB A,R2 MOV R3,A

JC DJF1 ;若不够减,跳DJF1,求补 CLR 22H ;够减,差为正,符号位置0 RET

DJF1:MOV A,R3 ;求补 CPL A

ADD A,#01H

1

兰州理工大学毕业设计程序清单

MOV R3,A

SETB 22H ;差为负,符号位置1 RET

DJG2:MOV A,R1 ;被减数为正,减数为负,;两数绝对值相加 ADD A,R2 MOV R3,A JNC DJF3

MOV R3,#0FFH ;若超出FFH,则设为FFH DJF3:CLR 22H ;差为正,符号位置0 RET

DJF4:JB 21H,DJF6 ;被减数为负,再判减数正负

MOV A,R1 ;被减数为负,减数为正,两数绝对值相加 ADD A,R2 MOV R3,A JNC DJF5

MOV R3,#0FFH ;若和超过FFH,则设为FFH DJF5:SETB 22H ;差为负,符号位置1 RET

DJF6:CLR C ;两数均为负,减数减去被减数(绝对值) MOV A,R2 SUBB A,R1 MOV R3,A

JC DJF1 ;跳DJF1,求补

CLR 22H ;差为正,符号位置0 RET

; ***************双字节带符号的加法子程序**************

SJF:JB 23H,SJF3 ;判被加数正负,为负,跳至SJF3 JB 24H,SJF2 ;判加数正负 MOV A,R2 ;两数为正,相加 ADD A,R4 MOV R6,A MOV A,R1 ADDC A,R3 MOV R5,A JNC SJF1

MOV R5,#0FFH ;超出FFFFH,则设为FFFFH MOV R6,#0FFH

SJF1:CLR 25H ;和为正,符号位置0 RET

SJF2:CLR C ;被加数为正,加数为负,被加数减去加数(绝对值) MOV A,R2 SUBB A,R4 MOV R6,A MOV A,R1

2

兰州理工大学毕业设计程序清单

SUBB A,R3 MOV R5,A

JC SJF4 ;若不够减,跳至SJF4,求补 CLR 25H ;和为正,符号位置0 RET

SJF3:JB 24H,SJF5 ;被加数为负,再判加数正负

CLR C ;被加数为负,加数为正,加数减去被加数(绝对值) MOV A,R4 SUBB A,R2 MOV R6,A MOV A,R3 SUBB A,R1 MOV R5,A

JC SJF4 ;若不够减,跳至SJF4,求补 CLR 25H ;和为正,符号位置0

RET

SJF4:MOV A,R6 ;求补

CPL A

ADD A,#01H MOV R6,A MOV A,R5 CPL A

ADDC A,#00H MOV R5,A

SETB 25H ;和为负,符号位置1 RET

SJF5:MOV A,R2 ;两数均为负,绝对值相加

ADD A,R4 MOV R6,A MOV A,R1 ADDC A,R3 MOV R5,A JNC SJF6

MOV R5,#0FFH ;若和超出FFFFH,则设为FFFFH MOV R6,#0FFH

SJF6:SETB 25H ;和为负,符号位置1 RET

***************PID控制算法子程序**************

PID:MOV A,5CH ;计算ei,先取温度给定值

CLR C

SUBB A,4CH ;温度给定值减去检测值 JNC PID1 ;判ei正负,为正跳PID1 CPL A ;ei为负,求补 ADD A,#01H

3

兰州理工大学毕业设计程序清单

SETB 30H ;ei为负,符号位置1 SJMP PID2

PID1:CLR 30H ;ei为正,符号位置0 PID2:MOV 6BH,A

MOV R1,6BH ;计算eiei1

MOV C,30H ;将ei的符号位置送20H

MOV 21H,C

MOV R2,6CH ;将ei1值送R2

MOV C,31H ;将ei1的符号位值送21H

MOV 21H,C

LCALL DJF MOV 6EH,R3 MOV 33H,C

MOV R1,6CH MOV C,31H MOV 20H,C

MOV R2,6DH MOV C,32H MOV 21H,C

LCALL DJF MOV 6FH,R3 MOV C,22H MOV 34H,C

MOV R1,6EH MOV C,33H MOV 20H,C MOV R2,6FH MOV C,34H MOV 21H,C

LCALL DJF MOV 70H,R3 MOV C,22H 送35H

MOV 35H,C

MOV A,68H MOV B,6EH MUL AB

MOV 71H,B MOV 72H,A

MOV A,69H MOV B,6BH MUL AB

MOV 73H,B MOV 74H,A

;调用单字节带符号数的减法子程序 ;将差值eiei1的符号位值送33H位 ;计算ei1ei2,先将ei1值送R1 ;将ei1的符号位送20H ;将ei2的值送R2

;将ei1的符号位值送21H

;调用单字节带符号数的减法子程序 ;将差值ei1ei2送6FH单元

;将差值ei1ei2的符号位值送34H未 ;计算(eiei1)(ei1ei2)

;调用单字节带符号数的减法子程序

;将差值(eiei1)(ei1ei2)送70H ;将差值(eiei1)(ei1ei2)的符号位值 ;计算KP(eiei1) ;将eiei1值送B

;KP(eiei1)值存71H(高位) 、72H(低位) ;计算KIei ;KIei值存73H(高位)、74H(低位) 4

兰州理工大学毕业设计程序清单

MOV A,6AH ;计算KD[(eiei1)(ei1ei2)] MOV B,70H MUL AB

MOV 75H,B MOV 76H,A

MOV R1,71H ;计算KP(eiei1)KIei MOV R2,72H

MOV C,33H ;将KP(eiei1)的符号位值送23H位 MOV 23H,C

MOV R3,73H ;将KIei值送R3(高位)、R4(低位) MOV R4,74H MOV C,30H MOV 24H,C

LCALL SJF MOV 77H,R5 送78H

MOV 78H,R6

MOV C,25H MOV 36H,C

MOV R1,77H MOV R2,78H MOV C,36H MOV 23H,C

MOV R3,75H R4

MOV R4,76H MOV C,35H MOV 24H,C

LCALL SJF MOV 79H,R5 MOV 7AH,R6

MOV C,25H MOV 37H,C

MOV R1,7DH MOV R2,7EH

CLR 23H MOV R3,79H MOV R4,7AH MOV C,37H MOV 24H,C

LCALL SJF JNB 25H,PID3 MOV 7BH,#00H MOV 7CH,#00H SJMP PID4

PID3:MOV 7BH,R5

;调用双字节带符号数的加法子程序

;将KP(eiei1)KIei值高位送77H、低位 ;符号位值送36H ;计算Δui

;将KD[(eiei1)(ei1ei2)]值送R3、 ;调用双字节带符号数的加法子程序 ;将Δui值送79H(高位)、7AH(低位) ;将Δui的符号位值送37H

;计算ui,将ui1值送R1(高位)、R2(低位) ;ui1的符号位值恒为0 ;将Δui值送R3(高位)、R4(低位) ;调用双字节带符号数的加法子程序 ;判计算结果是否为负 ;为负,令输出值为0 ;否则,将计算ui值置7BH(高位)、7CH(低位)5

兰州理工大学毕业设计程序清单

MOV 7CH,R6

PID4:MOV 6DH,6CH ;数据迭代,ei1值送ei2存储单元

MOV 6CH,6BH ;ei值送ei1存储单元 MOV 7DH,7BH ;ui值送ui1存储单元 MOV 7EH,7CH RET

;***************键盘扫描子程序***************

KEY1:ACALL KS1 ;调用判断有无键按下子程序

JNZ LK1 ;有键按下,(A)≠0,转消抖 AJMP KEY1 LK1:ACALL T10MS ACALL KS1 JNZ LK2 AJMP KEY1 LK2:MOV R2,#0FEH MOV R4,#00H LK4:MOV DPTR,#7F01H MOV A,R2 MOVX @DPRT,A INC DPTR INC DPTR MOVX A,@DPTR JB ACC.0,LONE MOV A,#00H AJMP LKP LONE:JB ACC.1,LTWO MOV A,#04H AJMP LKP LTWO:JB ACC.2,LTHR MOV A,#08H AJMP LKP

LTHR:JB ACC.3,NEXT MOV A,#0CH LKP:ADD A,R4 PUSH ACC LK3:ACALL KS1 JNC LK3 ACALL T10MS POP ACC RET NEXT:INC R4 MOV A,R2 JNB ACC.3,KND RL A

;无键按下返回

;调延时10ms子程序

;查有无按键按下,要有则确定按键 ;有键按下,逐列扫描 ;不是按下返回

;首列扫描送R2 ;首列号送R4

;列扫描字送至8155PA口

;第1次列扫描 ;使0列线为0 ;指向8155PC口

;8155PC口,读入行状态 ;0行无键按下,转查1行

;0行有键按下,行首键号#00H送A ;转求键号

;1行无键按下,转查2行

;1行有键按下,行首键号#04H送A

;2行无键按下,转查3行

;2行有键按下,行首键号#08H送A ;3行无键按下,查下一行

;3行有键按下,行首键号#0CH送A

;键号=行首号+列号

;键号进栈保护 ;等待键释放

;未释放,等待 ;调用10ms子程序 ;键释放,键号送A

;键扫描结束,出口状态:(A)=键号 ;指向下一列,列号加1

;判断4列扫描完了没有 ;扫描完,返回 ;扫描字左移一位

6

兰州理工大学毕业设计程序清单

MOV R2,A ;扫描字送R2 AJMP LK4 ;转下一列扫描

KND:AJMP KEY1

KS1:MOV DPTR,#7F01H ;指向PA口

MOV A,#00H ;全扫描字 MOVX @DPTR,A

INC DPTR ;指向PC口 INC DPTR

MOVX A,@DPTR ;读入PC口状态

CPL A ;高电平表示有键按下 ANL A,#0FH ;屏蔽高4位 RET ;出口状态:(A)≠0时有键按下

T10MS:MOV R7,#14H ;延时10ms TM:MOV R6,#0FFH TM6:DJNZ R6,TM6 DJNZ R7,TM RET

;***************键盘管理子程序***************

KIN:ACALL CHL ;预设温度合法检测

MOV BT1,ST1

MOV BT0,ST0 ;预设温度送显示缓冲区 LCALL SISP LCALL KEY1 ACALL SISP ACALL KEY JZ KIN0

MOV R1,#05H DNC R1 JNZ KIN

;***************预设温度合法检测子程序***************

CKL:MOV A,# 5CH ;预设温度上限低8位送A

CLR C

SUBB A,ST0 ;低8位减

MOV A,# 5DH ;上限高8位送A SUBB A,ST1

JC OUTA ;预设温度越限,报警 MOV A,#00H ;预设温度合法标志 RET

OUTA:MOV ST1,# 59H ;将1255℃写入预设温度数据区

MOV ST0,#5AH

CLR P3.2 ;报警10s ACALL T10S

SETB P3.2 ;停止报警 RET

7

兰州理工大学毕业设计程序清单

T10S:MOV 50H,80 T125:51H,#0FAH

T5:MOV 52H,#0FAH T1:DJNZ 52H,T1

DJNZ 51H,T5 DJNZ 50H,T125 RET

;***************LED显示子程序***************

SISP:MOV A,#00000011B ;8155初始化

MOV DPTR,#7F00H ;DPTR指向8155控制寄存器端口 MOVX @DPTR,A

MOV R0, #79H ;显示缓冲区首址送R0 MOV R3, #01H ;使显示器最右边位亮 MOV A, R3

LD0: MOV DPTR, #0101H ;扫描值送PA口

MOVX @ DPTR, A

INC DPTR ;指向PB口 MOV A, @R0 ;取显示数据

MOVX A, @A+DPTR ;查表获得七段码

MOV DPTR,#7F02H ;DPTR指向8155的PB口 MOVX DPTR, A ;送出显示 ACALL DL1 ; 延时

INC R0 ;缓冲区地址加 1 MOV A, R3;  ;修改后的位选字送R3

JB ACC.3, LD1 ;扫到第 4 个显示位了吗? RR A ;没有, R3 右环移一位, 扫描下一个显示位

MOV R3, A AJMP LD0 LD1:RET

TAB:DB 0C0H,0F9H,0A4H,0B0H, ;七段码表

DB 99H,92H,82H,0F8H,80H,90H, DB 88H,83H,0C6H,0A1H,86H,8EH

DL1:MOV R7, #02H ;延时子程序 DL:MOV R6, #0FFH DL6:DJNZ R6, DL6

DJNZ R7, DL RET

;***************ADC574A转换子程序***************

AD574:MOV R0,#7CH ;AD574端口地址

MOV R1,#31H

MOVX @R0,A ;启动AD574进行12位转换 SETB P1.0 ;置P1.0为输入方式

LOOP:JB P1.0,LOOP ;检测STS的状态

8

兰州理工大学毕业设计程序清单

INC R0 ;使R/C为1,按双字节读取转换结果 MOVX A,@R0 ;读高8位转换结果 MOV @R1,A ;存高8位 DEC R1 INC R0

INC R0 ;使R/C、A0均为1 MOVX A,@R0 ;读取低4位结果 ANL A,#0FH ;屏蔽高4位 MOV @R1,A ;存低4位 RET

;***************DAC1208转换子程序***************

DAC1208:MOV DPTR,#4001H ;使DPTR指向8位输出锁存器

MOV R1,#50H ;使R1指向12位数的高8位单元 MOV A,@R1 ;取高8位转换数据

MOVX @DPTR,A ;向DAC1208送高8位数据 DEC DPTR ;使DPTR指向4位输出锁存器 INC R1 ;使R1指向12位数的低4位数据 MOV A,@R1 ;取低4位转换数据

MOVX @DPTR,A ;再向DAC1208送低4位数据 MOV DPTR,#6000H ;使DPTR指向DAC锁存器 MOVX @DPTR,A ;完成转换

;***************数字滤波子程序*************** SZLB:MOV A,2CH

CJNZ A,2DH,CMP1 AJMP CMP2

CMP1:JNC CMP2

XCH A,2DH XCH A,2CH

CMP2:MOV A,2DH

CJNZ A,2EH,CMP3 MOV 2AH,A AJMP RR

CMP3:JC CMP4

MOV 2AH,A AJMP RR

CMP4:MOV A,2EH

CJNZ A,2CH,CMP5 MOV 2AH,A AJMP RR

CMP5:JC CMP6

XCH A,2CH

CMP6:MOV 2AH,A RR:RET

;***************温度检测子程序***************

9

兰州理工大学毕业设计程序清单

TIN:MOV TEMP1,#00H ;清检测温度缓冲区

MOV TEMP0,#00H

MOV R2,#04H ;取样次数送R2

MOV DPTR,#58H 指向A/D转换通道 TIN1:MOV @DPTR,A

HERE:JNZ IE1,HERE MOVX A,@DPTR ADD A,TEMP0 MOV TEMP0,A MOV A,#00H ADDC A,TEMP1 MOV TEMP1,A DJNZ,R2,TIN1 RET

;***************温度控制子程序***************

CONT:MOV A,TEMP0 ;当前温度送预设缓冲区

CLR C SUBB A,ST0

MOV A,B ;低8位减,值送暂存B MOV A,TEMP1 SUBB A,ST1

JNC ALARM ;当前温度越限,报警 JNB F0,PID ;当前温度合法,转PID MOV A,B SUBB A,#02H

JNC ACC.7,ALARM ;差值不小于2℃, RET

;***************温度越限报警子程序*************** ALARM:MOV A,TEMP0

CLR C

SUBB A,ST0 MOV B,A

MOV A,TEMP1 SUBB A,ST1 JC LA0 CLR P3.2 ACALL T10S AJMP LA1 LA0:MOV A,ST0

CLR C

SUBB A,TEMP0 MOV B,A MOV A,ST1 SUBB A,TEMP1

10

兰州理工大学毕业设计程序清单

LA1:XCH A,B

CLR C

SUBB A,#05H XCH A,B SUBB A,#00H JC LA2 CLR P3.2 LCALL T10S LA2:RET

11

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- axer.cn 版权所有 湘ICP备2023022495号-12

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务