加热炉温度控制设计单片机.doc_第1页
加热炉温度控制设计单片机.doc_第2页
加热炉温度控制设计单片机.doc_第3页
加热炉温度控制设计单片机.doc_第4页
加热炉温度控制设计单片机.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

兰州理工大学毕业设计程序清单程序清单:;*系统主程序*ORG 0000HAJMP MAINORG 000BHAJMP PTT0ORG 0030HMAIN:MOV SP,#59H ;设定堆栈指针MOV TMOD,#01H ;定时器0初始化MOV TL0,#0B0H ;定时器定时100msMOV TH0,#3CH MOV R7,#150 ;置15s软件定时器初值ACALL KIN ;调用键盘管理程序SETB ET0 ;允许定时器0中断SETB EA ;开中断SETB TR0 ;启动定时器0SJMP $;*定时器0中断子程序*PTT0:MOV TL0,#0B0HMOV TH0,#3CH ;重置定时器初值DJNZ R7,BACK ;15s到否,不到返回MOV R7,#150 ;重置软件定时ACALL TIN ;温度检测MOV BT1,TEMP1 ;当前温度送显示缓冲区MOV BT0,TEMP0ACALL 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 RETDJF1:MOV A,R3 ;求补 CPL A ADD A,#01H MOV R3,A SETB 22H ;差为负,符号位置1 RETDJG2:MOV A,R1 ;被减数为正,减数为负,;两数绝对值相加 ADD A,R2 MOV R3,A JNC DJF3 MOV R3,#0FFH ;若超出FFH,则设为FFHDJF3:CLR 22H ;差为正,符号位置0 RETDJF4:JB 21H,DJF6 ;被减数为负,再判减数正负 MOV A,R1 ;被减数为负,减数为正,两数绝对值相加 ADD A,R2 MOV R3,A JNC DJF5 MOV R3,#0FFH ;若和超过FFH,则设为FFHDJF5:SETB 22H ;差为负,符号位置1 RETDJF6: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,#0FFHSJF1:CLR 25H ;和为正,符号位置0 RETSJF2:CLR C ;被加数为正,加数为负,被加数减去加数(绝对值) MOV A,R2 SUBB A,R4 MOV R6,A MOV A,R1 SUBB A,R3 MOV R5,A JC SJF4 ;若不够减,跳至SJF4,求补 CLR 25H ;和为正,符号位置0 RETSJF3: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 ;和为正,符号位置0RETSJF4:MOV A,R6 ;求补CPL AADD A,#01HMOV R6,AMOV A,R5CPL AADDC A,#00HMOV R5,ASETB 25H ;和为负,符号位置1RETSJF5:MOV A,R2 ;两数均为负,绝对值相加ADD A,R4MOV R6,AMOV A,R1ADDC A,R3MOV R5,AJNC SJF6MOV R5,#0FFH ;若和超出FFFFH,则设为FFFFHMOV R6,#0FFHSJF6:SETB 25H ;和为负,符号位置1 RET*PID控制算法子程序* PID:MOV A,5CH ;计算,先取温度给定值CLR CSUBB A,4CH ;温度给定值减去检测值JNC PID1 ;判正负,为正跳PID1CPL A ;为负,求补ADD A,#01HSETB 30H ;为负,符号位置1SJMP PID2PID1:CLR 30H ;为正,符号位置0PID2:MOV 6BH,A MOV R1,6BH ;计算MOV C,30H ;将的符号位置送20HMOV 21H,CMOV R2,6CH ;将值送R2MOV C,31H ;将的符号位值送21HMOV 21H,CLCALL DJF ;调用单字节带符号数的减法子程序MOV 6EH,R3 ;将差值的符号位值送33H位MOV 33H,CMOV R1,6CH ;计算,先将值送R1MOV C,31H ;将的符号位送20HMOV 20H,CMOV R2,6DH ;将的值送R2MOV C,32H ;将的符号位值送21HMOV 21H,CLCALL DJF ;调用单字节带符号数的减法子程序MOV 6FH,R3 ;将差值送6FH单元MOV C,22H ;将差值的符号位值送34H未MOV 34H,CMOV R1,6EH ;计算MOV C,33HMOV 20H,CMOV R2,6FHMOV C,34HMOV 21H,CLCALL DJF ;调用单字节带符号数的减法子程序MOV 70H,R3 ;将差值送70HMOV C,22H ;将差值的符号位值送35HMOV 35H,CMOV A,68H ;计算MOV B,6EH ;将值送BMUL ABMOV 71H,B ;值存71H(高位)、72H(低位)MOV 72H,AMOV A,69H ;计算MOV B,6BHMUL ABMOV 73H,B ;值存73H(高位)、74H(低位)MOV 74H,AMOV A,6AH ;计算MOV B,70HMUL ABMOV 75H,BMOV 76H,AMOV R1,71H ;计算MOV R2,72HMOV C,33H ;将的符号位值送23H位MOV 23H,CMOV R3,73H ;将值送R3(高位)、R4(低位)MOV R4,74HMOV C,30HMOV 24H,CLCALL SJF ;调用双字节带符号数的加法子程序MOV 77H,R5 ;将值高位送77H、低位送78HMOV 78H,R6MOV C,25H ;符号位值送36HMOV 36H,CMOV R1,77H ;计算MOV R2,78HMOV C,36HMOV 23H,CMOV R3,75H ;将值送R3、R4MOV R4,76HMOV C,35HMOV 24H,CLCALL SJF ;调用双字节带符号数的加法子程序MOV 79H,R5 ;将值送79H(高位)、7AH(低位)MOV 7AH,R6MOV C,25H ;将的符号位值送37HMOV 37H,CMOV R1,7DH ;计算,将值送R1(高位)、R2(低位)MOV R2,7EHCLR 23H ;的符号位值恒为0MOV R3,79H ;将值送R3(高位)、R4(低位)MOV R4,7AHMOV C,37HMOV 24H,CLCALL SJF ;调用双字节带符号数的加法子程序JNB 25H,PID3 ;判计算结果是否为负MOV 7BH,#00H ;为负,令输出值为0MOV 7CH,#00HSJMP PID4PID3:MOV 7BH,R5 ;否则,将计算值置7BH(高位)、7CH(低位)MOV 7CH,R6PID4:MOV 6DH,6CH ;数据迭代,值送存储单元MOV 6CH,6BH ;值送存储单元MOV 7DH,7BH ;值送存储单元MOV 7EH,7CHRET;*键盘扫描子程序*KEY1:ACALL KS1 ;调用判断有无键按下子程序JNZ LK1 ;有键按下,(A)0,转消抖AJMP KEY1 ;无键按下返回LK1:ACALL T10MS ;调延时10ms子程序ACALL KS1 ;查有无按键按下,要有则确定按键JNZ LK2 ;有键按下,逐列扫描AJMP KEY1 ;不是按下返回 LK2:MOV R2,#0FEH ;首列扫描送R2 MOV R4,#00H ;首列号送R4 LK4:MOV DPTR,#7F01H ;列扫描字送至8155PA口MOV A,R2 ;第1次列扫描MOVX DPRT,A ;使0列线为0INC DPTR ;指向8155PC口INC DPTR MOVX A,DPTR ;8155PC口,读入行状态JB ACC.0,LONE ;0行无键按下,转查1行MOV A,#00H ;0行有键按下,行首键号#00H送AAJMP LKP ;转求键号LONE:JB ACC.1,LTWO ;1行无键按下,转查2行MOV A,#04H ;1行有键按下,行首键号#04H送AAJMP LKP LTWO:JB ACC.2,LTHR ;2行无键按下,转查3行MOV A,#08H ;2行有键按下,行首键号#08H送AAJMP LKPLTHR:JB ACC.3,NEXT ;3行无键按下,查下一行MOV A,#0CH ;3行有键按下,行首键号#0CH送A LKP:ADD A,R4 ;键号行首号+列号PUSH ACC ;键号进栈保护LK3:ACALL KS1 ;等待键释放JNC LK3 ;未释放,等待ACALL T10MS ;调用10ms子程序POP ACC ;键释放,键号送ARET ;键扫描结束,出口状态:(A)键号NEXT:INC R4 ;指向下一列,列号加1MOV A,R2 ;判断4列扫描完了没有JNB ACC.3,KND ;扫描完,返回RL A ;扫描字左移一位MOV R2,A ;扫描字送R2AJMP LK4 ;转下一列扫描KND:AJMP KEY1KS1:MOV DPTR,#7F01H ;指向PA口MOV A,#00H ;全扫描字MOVX DPTR,AINC DPTR ;指向PC口INC DPTRMOVX A,DPTR ;读入PC口状态CPL A ;高电平表示有键按下ANL A,#0FH ;屏蔽高4位RET ;出口状态:(A)0时有键按下T10MS:MOV R7,#14H ;延时10msTM:MOV R6,#0FFHTM6:DJNZ R6,TM6 DJNZ R7,TM RET;*键盘管理子程序*KIN:ACALL CHL ;预设温度合法检测MOV BT1,ST1MOV BT0,ST0 ;预设温度送显示缓冲区LCALL SISPLCALL KEY1ACALL SISPACALL KEYJZ KIN0MOV R1,#05HDNC R1JNZ KIN;*预设温度合法检测子程序*CKL:MOV A,# 5CH ;预设温度上限低8位送ACLR C SUBB A,ST0 ;低8位减MOV A,# 5DH ;上限高8位送ASUBB A,ST1JC OUTA ;预设温度越限,报警MOV A,#00H ;预设温度合法标志RETOUTA:MOV ST1,# 59H ;将1255写入预设温度数据区 MOV ST0,#5AHCLR P3.2 ;报警10sACALL T10SSETB P3.2 ;停止报警RETT10S:MOV 50H,80T125:51H,#0FAHT5:MOV 52H,#0FAHT1:DJNZ 52H,T1DJNZ 51H,T5DJNZ 50H,T125RET;*LED显示子程序*SISP:MOV A,#00000011B ;8155初始化MOV DPTR,#7F00H ;DPTR指向8155控制寄存器端口MOVX DPTR,AMOV R0, 79H ;显示缓冲区首址送R0MOV R3, 01H ;使显示器最右边位亮 MOV A, R3LD0: MOV DPTR, 0101H ;扫描值送PA口MOVX DPTR, AINC DPTR ;指向PB口MOV A, R0 ;取显示数据MOVX A, A+DPTR ;查表获得七段码MOV DPTR,#7F02H ;DPTR指向8155的PB口MOVX DPTR, A ;送出显示ACALL DL1 ; 延时 INC R0 ;缓冲区地址加 1MOV A, R3; ;修改后的位选字送R3JB ACC.3, LD1 ;扫到第 4 个显示位了吗?RR A ;没有, R3 右环移一位, 扫描下一个显示位MOV R3, AAJMP LD0LD1:RETTAB:DB 0C0H,0F9H,0A4H,0B0H, ;七段码表DB 99H,92H,82H,0F8H,80H,90H,DB 88H,83H,0C6H,0A1H,86H,8EHDL1:MOV R7, 02H ;延时子程序DL:MOV R6, 0FFHDL6:DJNZ R6, DL6DJNZ R7, DLRET ;*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的状态INC R0 ;使R/C为1,按双字节读取转换结果MOVX A,R0 ;读高8位转换结果MOV R1,A ;存高8位DEC R1INC R0INC R0 ;使R/C、A0均为1MOVX 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,2CHCJNZ A,2DH,CMP1AJMP CMP2CMP1:JNC CMP2XCH A,2DHXCH A,2CHCMP2:MOV A,2DHCJNZ A,2EH,CMP3MOV 2AH,AAJMP RRCMP3:JC CMP4MOV 2AH,AAJMP RRCMP4:MOV A,2EHCJNZ A,2CH,CMP5MOV

温馨提示

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

评论

0/150

提交评论