加熱爐溫度控制設(shè)計(jì)單片機(jī).doc_第1頁
加熱爐溫度控制設(shè)計(jì)單片機(jī).doc_第2頁
加熱爐溫度控制設(shè)計(jì)單片機(jī).doc_第3頁
加熱爐溫度控制設(shè)計(jì)單片機(jī).doc_第4頁
加熱爐溫度控制設(shè)計(jì)單片機(jī).doc_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

蘭州理工大學(xué)畢業(yè)設(shè)計(jì)程序清單程序清單:;*系統(tǒng)主程序*ORG 0000HAJMP MAINORG 000BHAJMP PTT0ORG 0030HMAIN:MOV SP,#59H ;設(shè)定堆棧指針MOV TMOD,#01H ;定時(shí)器0初始化MOV TL0,#0B0H ;定時(shí)器定時(shí)100msMOV TH0,#3CH MOV R7,#150 ;置15s軟件定時(shí)器初值A(chǔ)CALL KIN ;調(diào)用鍵盤管理程序SETB ET0 ;允許定時(shí)器0中斷SETB EA ;開中斷SETB TR0 ;啟動(dòng)定時(shí)器0SJMP $;*定時(shí)器0中斷子程序*PTT0:MOV TL0,#0B0HMOV TH0,#3CH ;重置定時(shí)器初值DJNZ R7,BACK ;15s到否,不到返回MOV R7,#150 ;重置軟件定時(shí)ACALL TIN ;溫度檢測MOV BT1,TEMP1 ;當(dāng)前溫度送顯示緩沖區(qū)MOV BT0,TEMP0ACALL DISP ;顯示當(dāng)前溫度ACALL CONT ;溫度控制LCALL ALARM ;調(diào)用越限報(bào)警程序BACK:RETI;*單字節(jié)帶符號的減法子程序*DFJ:JB 20H,DJF4 ;判被減數(shù)正負(fù),如負(fù),跳至DJF4 JB 21H,DJF2 ;被減數(shù)為正,再判減數(shù)正負(fù) CLR C ;兩數(shù)為正,被減數(shù)減去減數(shù) MOV A,R1 SUBB A,R2 MOV R3,A JC DJF1 ;若不夠減,跳DJF1,求補(bǔ) CLR 22H ;夠減,差為正,符號位置0 RETDJF1:MOV A,R3 ;求補(bǔ) CPL A ADD A,#01H MOV R3,A SETB 22H ;差為負(fù),符號位置1 RETDJG2:MOV A,R1 ;被減數(shù)為正,減數(shù)為負(fù),;兩數(shù)絕對值相加 ADD A,R2 MOV R3,A JNC DJF3 MOV R3,#0FFH ;若超出FFH,則設(shè)為FFHDJF3:CLR 22H ;差為正,符號位置0 RETDJF4:JB 21H,DJF6 ;被減數(shù)為負(fù),再判減數(shù)正負(fù) MOV A,R1 ;被減數(shù)為負(fù),減數(shù)為正,兩數(shù)絕對值相加 ADD A,R2 MOV R3,A JNC DJF5 MOV R3,#0FFH ;若和超過FFH,則設(shè)為FFHDJF5:SETB 22H ;差為負(fù),符號位置1 RETDJF6:CLR C ;兩數(shù)均為負(fù),減數(shù)減去被減數(shù)(絕對值) MOV A,R2 SUBB A,R1 MOV R3,A JC DJF1 ;跳DJF1,求補(bǔ) CLR 22H ;差為正,符號位置0 RET; *雙字節(jié)帶符號的加法子程序*SJF:JB 23H,SJF3 ;判被加數(shù)正負(fù),為負(fù),跳至SJF3 JB 24H,SJF2 ;判加數(shù)正負(fù) MOV A,R2 ;兩數(shù)為正,相加 ADD A,R4 MOV R6,A MOV A,R1 ADDC A,R3 MOV R5,A JNC SJF1 MOV R5,#0FFH ;超出FFFFH,則設(shè)為FFFFH MOV R6,#0FFHSJF1:CLR 25H ;和為正,符號位置0 RETSJF2:CLR C ;被加數(shù)為正,加數(shù)為負(fù),被加數(shù)減去加數(shù)(絕對值) MOV A,R2 SUBB A,R4 MOV R6,A MOV A,R1 SUBB A,R3 MOV R5,A JC SJF4 ;若不夠減,跳至SJF4,求補(bǔ) CLR 25H ;和為正,符號位置0 RETSJF3:JB 24H,SJF5 ;被加數(shù)為負(fù),再判加數(shù)正負(fù) CLR C ;被加數(shù)為負(fù),加數(shù)為正,加數(shù)減去被加數(shù)(絕對值) MOV A,R4 SUBB A,R2 MOV R6,A MOV A,R3 SUBB A,R1 MOV R5,A JC SJF4 ;若不夠減,跳至SJF4,求補(bǔ) CLR 25H ;和為正,符號位置0RETSJF4:MOV A,R6 ;求補(bǔ)CPL AADD A,#01HMOV R6,AMOV A,R5CPL AADDC A,#00HMOV R5,ASETB 25H ;和為負(fù),符號位置1RETSJF5:MOV A,R2 ;兩數(shù)均為負(fù),絕對值相加ADD A,R4MOV R6,AMOV A,R1ADDC A,R3MOV R5,AJNC SJF6MOV R5,#0FFH ;若和超出FFFFH,則設(shè)為FFFFHMOV R6,#0FFHSJF6:SETB 25H ;和為負(fù),符號位置1 RET*PID控制算法子程序* PID:MOV A,5CH ;計(jì)算,先取溫度給定值CLR CSUBB A,4CH ;溫度給定值減去檢測值JNC PID1 ;判正負(fù),為正跳PID1CPL A ;為負(fù),求補(bǔ)ADD A,#01HSETB 30H ;為負(fù),符號位置1SJMP PID2PID1:CLR 30H ;為正,符號位置0PID2:MOV 6BH,A MOV R1,6BH ;計(jì)算MOV C,30H ;將的符號位置送20HMOV 21H,CMOV R2,6CH ;將值送R2MOV C,31H ;將的符號位值送21HMOV 21H,CLCALL DJF ;調(diào)用單字節(jié)帶符號數(shù)的減法子程序MOV 6EH,R3 ;將差值的符號位值送33H位MOV 33H,CMOV R1,6CH ;計(jì)算,先將值送R1MOV C,31H ;將的符號位送20HMOV 20H,CMOV R2,6DH ;將的值送R2MOV C,32H ;將的符號位值送21HMOV 21H,CLCALL DJF ;調(diào)用單字節(jié)帶符號數(shù)的減法子程序MOV 6FH,R3 ;將差值送6FH單元MOV C,22H ;將差值的符號位值送34H未MOV 34H,CMOV R1,6EH ;計(jì)算MOV C,33HMOV 20H,CMOV R2,6FHMOV C,34HMOV 21H,CLCALL DJF ;調(diào)用單字節(jié)帶符號數(shù)的減法子程序MOV 70H,R3 ;將差值送70HMOV C,22H ;將差值的符號位值送35HMOV 35H,CMOV A,68H ;計(jì)算MOV B,6EH ;將值送BMUL ABMOV 71H,B ;值存71H(高位)、72H(低位)MOV 72H,AMOV A,69H ;計(jì)算MOV B,6BHMUL ABMOV 73H,B ;值存73H(高位)、74H(低位)MOV 74H,AMOV A,6AH ;計(jì)算MOV B,70HMUL ABMOV 75H,BMOV 76H,AMOV R1,71H ;計(jì)算MOV R2,72HMOV C,33H ;將的符號位值送23H位MOV 23H,CMOV R3,73H ;將值送R3(高位)、R4(低位)MOV R4,74HMOV C,30HMOV 24H,CLCALL SJF ;調(diào)用雙字節(jié)帶符號數(shù)的加法子程序MOV 77H,R5 ;將值高位送77H、低位送78HMOV 78H,R6MOV C,25H ;符號位值送36HMOV 36H,CMOV R1,77H ;計(jì)算MOV R2,78HMOV C,36HMOV 23H,CMOV R3,75H ;將值送R3、R4MOV R4,76HMOV C,35HMOV 24H,CLCALL SJF ;調(diào)用雙字節(jié)帶符號數(shù)的加法子程序MOV 79H,R5 ;將值送79H(高位)、7AH(低位)MOV 7AH,R6MOV C,25H ;將的符號位值送37HMOV 37H,CMOV R1,7DH ;計(jì)算,將值送R1(高位)、R2(低位)MOV R2,7EHCLR 23H ;的符號位值恒為0MOV R3,79H ;將值送R3(高位)、R4(低位)MOV R4,7AHMOV C,37HMOV 24H,CLCALL SJF ;調(diào)用雙字節(jié)帶符號數(shù)的加法子程序JNB 25H,PID3 ;判計(jì)算結(jié)果是否為負(fù)MOV 7BH,#00H ;為負(fù),令輸出值為0MOV 7CH,#00HSJMP PID4PID3:MOV 7BH,R5 ;否則,將計(jì)算值置7BH(高位)、7CH(低位)MOV 7CH,R6PID4:MOV 6DH,6CH ;數(shù)據(jù)迭代,值送存儲單元MOV 6CH,6BH ;值送存儲單元MOV 7DH,7BH ;值送存儲單元MOV 7EH,7CHRET;*鍵盤掃描子程序*KEY1:ACALL KS1 ;調(diào)用判斷有無鍵按下子程序JNZ LK1 ;有鍵按下,(A)0,轉(zhuǎn)消抖AJMP KEY1 ;無鍵按下返回LK1:ACALL T10MS ;調(diào)延時(shí)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口,讀入行狀態(tài)JB ACC.0,LONE ;0行無鍵按下,轉(zhuǎn)查1行MOV A,#00H ;0行有鍵按下,行首鍵號#00H送AAJMP LKP ;轉(zhuǎn)求鍵號LONE:JB ACC.1,LTWO ;1行無鍵按下,轉(zhuǎn)查2行MOV A,#04H ;1行有鍵按下,行首鍵號#04H送AAJMP LKP LTWO:JB ACC.2,LTHR ;2行無鍵按下,轉(zhuǎn)查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 ;鍵號進(jìn)棧保護(hù)LK3:ACALL KS1 ;等待鍵釋放JNC LK3 ;未釋放,等待ACALL T10MS ;調(diào)用10ms子程序POP ACC ;鍵釋放,鍵號送ARET ;鍵掃描結(jié)束,出口狀態(tài):(A)鍵號NEXT:INC R4 ;指向下一列,列號加1MOV A,R2 ;判斷4列掃描完了沒有JNB ACC.3,KND ;掃描完,返回RL A ;掃描字左移一位MOV R2,A ;掃描字送R2AJMP LK4 ;轉(zhuǎn)下一列掃描KND:AJMP KEY1KS1:MOV DPTR,#7F01H ;指向PA口MOV A,#00H ;全掃描字MOVX DPTR,AINC DPTR ;指向PC口INC DPTRMOVX A,DPTR ;讀入PC口狀態(tài)CPL A ;高電平表示有鍵按下ANL A,#0FH ;屏蔽高4位RET ;出口狀態(tài):(A)0時(shí)有鍵按下T10MS:MOV R7,#14H ;延時(shí)10msTM:MOV R6,#0FFHTM6:DJNZ R6,TM6 DJNZ R7,TM RET;*鍵盤管理子程序*KIN:ACALL CHL ;預(yù)設(shè)溫度合法檢測MOV BT1,ST1MOV BT0,ST0 ;預(yù)設(shè)溫度送顯示緩沖區(qū)LCALL SISPLCALL KEY1ACALL SISPACALL KEYJZ KIN0MOV R1,#05HDNC R1JNZ KIN;*預(yù)設(shè)溫度合法檢測子程序*CKL:MOV A,# 5CH ;預(yù)設(shè)溫度上限低8位送ACLR C SUBB A,ST0 ;低8位減MOV A,# 5DH ;上限高8位送ASUBB A,ST1JC OUTA ;預(yù)設(shè)溫度越限,報(bào)警MOV A,#00H ;預(yù)設(shè)溫度合法標(biāo)志RETOUTA:MOV ST1,# 59H ;將1255寫入預(yù)設(shè)溫度數(shù)據(jù)區(qū) MOV ST0,#5AHCLR P3.2 ;報(bào)警10sACALL T10SSETB P3.2 ;停止報(bào)警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 ;顯示緩沖區(qū)首址送R0MOV R3, 01H ;使顯示器最右邊位亮 MOV A, R3LD0: MOV DPTR, 0101H ;掃描值送PA口MOVX DPTR, AINC DPTR ;指向PB口MOV A, R0 ;取顯示數(shù)據(jù)MOVX A, A+DPTR ;查表獲得七段碼MOV DPTR,#7F02H ;DPTR指向8155的PB口MOVX DPTR, A ;送出顯示ACALL DL1 ; 延時(shí) INC R0 ;緩沖區(qū)地址加 1MOV A, R3; ;修改后的位選字送R3JB ACC.3, LD1 ;掃到第 4 個(gè)顯示位了嗎?RR A ;沒有, R3 右環(huán)移一位, 掃描下一個(gè)顯示位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 ;延時(shí)子程序DL:MOV R6, 0FFHDL6:DJNZ R6, DL6DJNZ R7, DLRET ;*ADC574A轉(zhuǎn)換子程序*AD574:MOV R0,#7CH ;AD574端口地址MOV R1,#31H MOVX R0,A ;啟動(dòng)AD574進(jìn)行12位轉(zhuǎn)換SETB P1.0 ;置P1.0為輸入方式LOOP:JB P1.0,LOOP ;檢測STS的狀態(tài)INC R0 ;使R/C為1,按雙字節(jié)讀取轉(zhuǎn)換結(jié)果MOVX A,R0 ;讀高8位轉(zhuǎn)換結(jié)果MOV R1,A ;存高8位DEC R1INC R0INC R0 ;使R/C、A0均為1MOVX A,R0 ;讀取低4位結(jié)果ANL A,#0FH ;屏蔽高4位MOV R1,A ;存低4位RET;*DAC1208轉(zhuǎn)換子程序*DAC1208:MOV DPTR,#4001H ;使DPTR指向8位輸出鎖存器MOV R1,#50H ;使R1指向12位數(shù)的高8位單元MOV A,R1 ;取高8位轉(zhuǎn)換數(shù)據(jù)MOVX DPTR,A ;向DAC1208送高8位數(shù)據(jù)DEC DPTR ;使DPTR指向4位輸出鎖存器INC R1 ;使R1指向12位數(shù)的低4位數(shù)據(jù)MOV A,R1 ;取低4位轉(zhuǎn)換數(shù)據(jù)MOVX DPTR,A ;再向DAC1208送低4位數(shù)據(jù)MOV DPTR,#6000H ;使DPTR指向DAC鎖存器MOVX DPTR,A ;完成轉(zhuǎn)換;*數(shù)字濾波子程序*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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論