單片機(jī)原理及應(yīng)用.ppt_第1頁
單片機(jī)原理及應(yīng)用.ppt_第2頁
單片機(jī)原理及應(yīng)用.ppt_第3頁
單片機(jī)原理及應(yīng)用.ppt_第4頁
單片機(jī)原理及應(yīng)用.ppt_第5頁
已閱讀5頁,還剩133頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、單片機(jī)原理及應(yīng)用,第七章 MCS-51應(yīng)用系統(tǒng)的研制和調(diào)試,鍵盤與顯示接口技術(shù) 步進(jìn)電機(jī)的單片機(jī)控制 單片機(jī)溫度控制系統(tǒng),7.1 鍵盤和顯示接口技術(shù),7.1.1 鍵盤接口技術(shù) 7.1.2 顯示接口技術(shù),7.1 鍵盤和顯示接口技術(shù),在單片機(jī)應(yīng)用系統(tǒng)中,鍵盤用于輸入數(shù)據(jù)、代碼和命令;顯示器用來顯示單片機(jī)的鍵入值、控制過程中間信息及運(yùn)算結(jié)果等。鍵盤和顯示器是實現(xiàn)人機(jī)對話,兩個必不可少的功能配置。下面介紹鍵盤、LED顯示器及LCD顯示器與單片機(jī)(MCU)的接口技術(shù)。,7.1.1 鍵盤接口技術(shù),鍵盤分兩類:獨(dú)立連接多鍵盤和行列式鍵盤。,獨(dú)立式按鍵結(jié)構(gòu)的鍵盤是最簡單的鍵盤電路,每個鍵獨(dú)立接入一根輸入線。這

2、種鍵盤的優(yōu)點是結(jié)構(gòu)簡單、使用十分方便,目前這種結(jié)構(gòu)的鍵盤應(yīng)用還相當(dāng)普遍,這種鍵盤的缺點是隨著鍵數(shù)數(shù)量的增加所占用的I/O口線也增加。 獨(dú)立式按鍵結(jié)構(gòu)的鍵盤在沒有鍵按下時,數(shù)據(jù)輸入線均為高電平,當(dāng)有鍵按下時,與之對應(yīng)的數(shù)據(jù)線將變成低電平。因此可用位指令判別是否有鍵按下。,獨(dú)立式按鍵編程,ORG 0000H LJMP START START:MOV P1,#0FFH MOV A,P1 ;鍵字送A MOV DPTR,#ADRSS ;散轉(zhuǎn)表首地址 MOV R1,#00H ;初始鍵號 LP1: RRC A ;開始查找鍵字 JNC LP2 ;有鍵按下則轉(zhuǎn)至LP2 INC R1 LJMP LP1,采用查詢法

3、,利用位判別加散轉(zhuǎn)指令,實現(xiàn)鍵盤的人機(jī)對話功能。,LP2: MOV A,R1 ;修正變址值,實現(xiàn)程序散轉(zhuǎn) ADD A,A JMP A+DPTR ADRSS:AJMP LOOP0 ;地址數(shù)據(jù)表 AJMP LOOP - AJMP LOOP7 LOOP0: - LOOP0: - ;散轉(zhuǎn)入口地址 - LJMP START - LOOP7: - - LJMP START END LOOP0: -,上例沒有考慮去抖動,也沒 有考慮有幾個鍵同時按下的情況在實際應(yīng)用中是要考慮!,注意,行列式鍵盤,行列式鍵盤的結(jié)構(gòu),直接使用I/O的鍵盤電路 MCU的I/O口輸出具有鎖存器,輸入具有緩沖器,因此應(yīng)用I/O口直接與

4、行線與列線相連就可以組成行列式鍵盤。 利用I/O口和譯碼器的接口電路 利用串行口的鍵盤接口電路,讀輸入口P10P13的狀態(tài),若輸入緩沖器的狀態(tài)全部為“1”,則表示所在行無鍵按下;若輸入緩沖器不全為“1”,說明所在行有鍵按下,CPU停止當(dāng)前行線掃描,轉(zhuǎn)入到列線掃描,列線P10 P13為“0”狀態(tài)的列表示對應(yīng)列有鍵按下。這樣,行線與列數(shù)交叉鍵就是掃描到的按鍵。,行列式鍵盤工作原理,鍵掃描方式,程控掃描方式:CPU從執(zhí)行程序就開始了鍵盤的掃描,等待來是鍵盤的命令。 定時掃描方式:在程序初始化時,先對定時/計數(shù)器進(jìn)行設(shè)置,使其每10ms中斷一次,每次中斷,CPU將去掃描一次鍵盤,若兩次中斷掃描到有鍵按

5、下(這里考慮了消抖動),CPU將對鍵作相應(yīng)的處理。 中斷掃描方式:采用中斷掃描方式必需有外部中斷接口,當(dāng)有鍵按下時,產(chǎn)生中斷請請求,CPU響應(yīng)中斷,在中斷服務(wù)程序掃描鍵盤,作相應(yīng)處理。這是多任務(wù)應(yīng)用系統(tǒng)常用的一種方式。,中斷方式鍵盤編程 下面以44鍵盤為例來說明程序掃描鍵盤程序的編寫:,ORG 0000H LJMP START ORG 2000H START:MOV R0,#0F7H;掃描初值(P13=0) M0V R1,#00H ;取碼指針,為取碼作準(zhǔn)備 LP1: MOV A,R0 ;開始掃描 MOV P1,A MOV A,P1 ;讀P1狀態(tài) MOV R2,A ;為鍵盤消抖作準(zhǔn)備 SETB

6、C MOV R3,#04H ;每次列掃描數(shù),LP2:RLC A ;按鍵字左移一位 JNC KEY ;有鍵按下轉(zhuǎn)KEY LP3:INC R1 ;無鍵按下,取碼指針加1 DJNZ R3,LP2 ;4列未完,則繼續(xù)掃描列線 MOV A,R0 ;掃描值送累加器 SETB C ;掃描下一行 RRC A MOV R0,A ;取回當(dāng)前掃描值 JC LP1 ;未掃描完繼續(xù)掃 LJMP START ;4行掃描完后程序回到起始位置 ;重新開始掃描 KEY:LCALL DS10MS ;10ms后取回的掃描值仍等于原值, ;說明有鍵按下,否則當(dāng)鍵抖動處理。,MOV A,P1 XRL A,R2 JNZ LP3 ;所取掃

7、描值與原值不等,;程序轉(zhuǎn)LP3 LP4 : MOV A,P1 ;判按鍵是否放下 XRL A,R2 JZ LP4 MOV A,R1 ;取碼指針?biāo)屠奂悠?MOV DPTR,#TAB ;鍵值數(shù)據(jù)表起始地址 MOVC A,A+DPTR LJMP START DS10MS:MOV R6,#60,LOOP1: MOV R7,#248 DJNZ R7,$ DJNZ R6,LOOP1 RET ORG TAB TAB: DB 01H,02H,03H,0AH DB 04H,05H,06H,0BH DB 07H,08H,09H,0CH DB 0EH,00H,0FH,0DH END,7.1.2 顯示接口技術(shù),一)顯示

8、器結(jié)構(gòu)與原理,數(shù)碼管既可直接接單片機(jī)的口線(如果是P0口的話,只能接共陽極的,接共陰的要接上拉電阻),又可通過鎖存器接單片機(jī)口線。,二)LED顯示接口技術(shù),(1)靜態(tài)顯示接口技術(shù),所謂靜態(tài)顯示,就是每一個顯示器都要占用單獨(dú)的具有鎖存功能的I/O接口用于筆劃段字形代碼。 通過MCU的口線的顯示接口電路,通過MCU口線和譯碼驅(qū)動的顯示接口,利用串行總線控制的顯示接口,(2)動態(tài)顯示接口技術(shù),動態(tài)掃描顯示接口電路。接口電路是把所有顯示器的8個筆劃段a-h同名端連在一起,而每一個顯示器的公共極COM是各自獨(dú)立地受I/O線控制。,所謂動態(tài)掃描就是指我們采用分時的方法,輪流控制各個顯示器的COM端,使各個

9、顯示器輪流點亮。,ORG 0000H LJMP START ORG 0030H START:MOV A,20H MOV DPTR #TAB MOVC A,A+DPTR MOV P0,A CLR P1.1 LCALL DS1MS SETB P1.1 MOV A,21H MOV DPTR,#TAB,MOVC A,A+DPTR MOV P0,A CLR P1.0 LCALL DS1MS SETB P1.0 LJMP START DS1MS:MOV R7,#03 LP: MOV R6,#248 DJNZ R6,$ DJNZ R7,LP ORG TAB TAB: DB 0COH,OF9H,0A4H,0B

10、0H,99H,92H, 82H,0F8H,80H,90H END,三)LCD顯示接口技術(shù),(1)字符型LCD顯示器接口技術(shù) 字符型液晶模塊是一種用5x7點陣圖形來顯示字符的液晶顯示器,根據(jù)顯示的容量可以分為1行16個字、2行16個字、2行20個字等等。以2行16個字的SMC1602A液晶模塊來介紹它與單片機(jī)的接口技術(shù)和編程方法。,SMC1602A液晶模引腳功能表,1 SMC1602A液晶模塊,RAM地址映射圖 SMC1602A液晶模塊內(nèi)部存儲了160個不同的點陣字符圖形,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“B”的

11、代碼是0100010B(42H),顯示時模塊把地址42H中的點陣字符圖形顯示出來,我們就能看到字母“B”。作為用戶,只能選用其中的代碼,不能更改。,2 SMC1602A液晶顯示模塊與單片機(jī)接口方式,3 基本操作時序,讀狀態(tài):輸入:RS=L,RW=H,E=H 輸出:D0-D7=狀態(tài)字 寫指令:輸入:RS=L,RW=L D0-D7=指令 E=高脈沖 輸出:無 讀數(shù)據(jù):輸入:RS=H,RW=H,E=H 輸出:D0-D7 寫數(shù)據(jù):輸入:RS=H,RW=L,D0-D7=數(shù)據(jù) E=高脈沖 輸出:無,4 程序設(shè)計,SMC1602A液晶模塊指令表,RS EQU P3.0 RW EQU P3.1 E EQU P

12、3.5 ORG 0000H LJMP START ORG 2000H START: MOV P1,#01H ;清屏 ACALL ENABLE ;ENABLE為寫入控制命令子程序 MOV P1,#38H ;顯示模式設(shè)置成8位2行5x7點陣 ACALL ENABLE MOV P1,#0FH ;顯示開/關(guān)及光標(biāo)設(shè)置 ACALL ENABLE MOV P1,#06H ;文字不動,光標(biāo)自動右移 ACALL ENABLE MOV P1,#83H ;寫入顯示起始地址(第1行第4個位置) ACALL ENABLE,程序,MOV DPTR,#TAB ;“I LOVE MCU”數(shù)據(jù)表 MOV R0,#10 ;帶空

13、格共10個 LP:MOV A,#00H ;取數(shù)欲寫入的數(shù)據(jù) MOVC A,A+DPTR ACALL WRITE INC DPTR DJNZ R0,LP ;未寫完再繼續(xù)寫 SJMP $ WRITE:MOV P1,A ;寫數(shù)據(jù)子程序 SETB RS CLR RW CLR E ACALL BUSY SETB E ;E=1 RET ENABLE: CLR RS ;寫入控制命令的子程序 CLR RW,CLR E ACALL BUSY SETB E RET BUSY: MOV P1,#0FFH ;判斷液晶顯示器是否忙的子程序 CLR RS SETB RW CLR E NOP SETB E JB P1.7,

14、BUSY ;如果P1.7為高電平表示忙就循環(huán)等 待 RET ORG TAB TAB:DB 49H,20H,4CH,4FH,56H,45H,20H, 4DH,43H, 55H END,模塊的外部接口信號,(2)繪圖型LCD顯示器接口技術(shù),寄存器選擇,指令表,DDRAM地址表,CS1 EQU P2.4 ;片選CS1接P2.4 CS2 EQU P2.3 ;片選CS2接P2.3 D/I EQU P2.2 ;寄存器選取擇信號D/I接P2.2 R/W EQU P2.1 ;讀/寫選擇信號接P2.1 E EQU P2.0 ;使能信號接P2.0 左區(qū)驅(qū)動子程序(GM12864的左區(qū))- 寫指令代碼子程序 : P

15、RMO: CLRCS2 SETB CS1 CLR D/I SETB R/W PRM01: MOVP1,#OFFH SETBE MOVA,P1;讀狀態(tài)字 CLRE;E=0,程序,JBACC.7,PRM01;判“忙”標(biāo)志為“0”否,否再讀 CLRR/W;R/W=0 MOVP1,COM ;寫指令代碼(COM為指令代碼) SETBE;E=1 CLRE;E=0 RET 寫顯示數(shù)據(jù)子程序 : PRM1:CLRCS2;片選設(shè)置為“01” SETBCS1 CLRD/I;D/I=0 SETBR/W;R/W=1 PRM11: MOVP0,#OFFH;P1口置“1” SETBE;E=0 MOVA,P0;讀狀態(tài)字 C

16、LR E ;E=0,JB ACC.7,PRM11 ;判“忙”標(biāo)志為“0”否,否再讀 SETB D/I ;D/I=1 CLR R/W ;R/W=0 MOV P0,DAT ;寫數(shù)據(jù) SETB E ;E=1 CLR E ;E=0 RET 讀顯示數(shù)據(jù)子程序 : PRM2: CLR CS2 SETB CS1 CLR D/I SETB R/W PRM21: MOV P0, #0FFH SETB E,MOV A, P0 CLR E JB ACC.7, PRM21 SETB D/I MOV P0, #0FFH SETB E MOV DAT ,P0 CLR E RET,7.2 步進(jìn)電機(jī)的單片機(jī)控制,7.2.1

17、步進(jìn)電機(jī)工作原理 7.2.2 步進(jìn)電機(jī)驅(qū)動電路原理 7.2.3 步進(jìn)電機(jī)控制原理及實例,前言,現(xiàn)在比較常用的步進(jìn)電機(jī)包括反應(yīng)式步進(jìn)電機(jī)、永磁式步進(jìn)電機(jī)、混合式步進(jìn)電機(jī)和單相式步進(jìn)電機(jī)等。,現(xiàn)階段,反應(yīng)式步進(jìn)電機(jī)獲得最多的應(yīng)用。,7.2.1 步進(jìn)電機(jī)工作原理,電脈沖信號按照順序輪流接通直流電源, 由于步進(jìn)電機(jī)中的勵磁繞組在空間中按一定的規(guī)律排列,輪流接通直流電源后就會在空間形成一種階躍變化的旋轉(zhuǎn)磁場,使轉(zhuǎn)子轉(zhuǎn)過一定角度(稱為步距角)。,在正常運(yùn)行情況下,電機(jī)轉(zhuǎn)過的總角度與輸入的脈沖數(shù)成正比。電機(jī)的轉(zhuǎn)速與輸入脈沖頻率保持嚴(yán)格的對應(yīng)關(guān)系,電機(jī)的運(yùn)動方向由脈沖相序控制。,電機(jī)定子上有m相勵磁繞阻,其軸

18、線分 別與轉(zhuǎn)子齒軸線偏移1/m,2/m(m-1)/m,1。 并且導(dǎo)電按一定的相序電機(jī)就能正反轉(zhuǎn)被控 制這是步進(jìn)電機(jī)旋轉(zhuǎn)的物理條件。 只要符合這一條件,理論上可以制造任何 相的步進(jìn)電機(jī)。,控制步進(jìn)電機(jī)必須由脈沖信號、信號分配、功率放大等組成的控制系統(tǒng) 其方框圖如下:,7.2.2 步進(jìn)電機(jī)的驅(qū)動電路原理,步進(jìn)電機(jī)和普通電機(jī)的區(qū)別主要就在于其 驅(qū)動的形式,須使用專用的步進(jìn)電機(jī)驅(qū)動控制器才能使步進(jìn)電機(jī)運(yùn)轉(zhuǎn)。 驅(qū)動器如下圖所示,它一般由脈沖發(fā)生單元,脈沖分配單元,功率驅(qū)動單元,保護(hù)和反饋單元組成。除功率驅(qū)動單元以外,其他部分越來越趨向于用軟件實現(xiàn)。,步進(jìn)電機(jī)的驅(qū)動電路主要有單極性驅(qū)動電路和雙極性驅(qū)動電路

19、兩種。 單極性驅(qū)動電路中又分為單電壓驅(qū)動電路、高低壓驅(qū)動電路、斬波恒流驅(qū)動電路等等。不同的驅(qū)動電路,要求單片機(jī)給出的控制信號也不一樣。下面主要介紹單極性驅(qū)動電路的原理。,對于反應(yīng)式步進(jìn)電極,繞組電流只要求往一個方向流動,故驅(qū)動電路可以采用單極性驅(qū)動。,圖示是單電壓功率驅(qū)動電路的一相,繞組中串聯(lián)的電阻Rs 使回路的時間常數(shù)減小,以便使電機(jī)高頻運(yùn)行時能產(chǎn)生較大的電磁轉(zhuǎn)矩,并能緩解電機(jī)的低頻共振現(xiàn)象。,從圖中的單步響應(yīng)曲線看出區(qū)別:曲線1 是不串電阻Rs ,曲線2 是串電阻Rs 并調(diào)高電源電壓以保持與曲線1 相同繞組的靜態(tài)電流,但Rs 會引起附加損耗,故一般只適用于小功率步進(jìn)電機(jī)中.D1能把電機(jī)運(yùn)轉(zhuǎn)

20、時繞組產(chǎn)生的高壓鉗位于電源電壓附近,以保護(hù)驅(qū)動管。,對步進(jìn)電機(jī)進(jìn)行定位或速度控制,有開 環(huán)控制和閉環(huán)控制兩類。開環(huán)控制不需要位 置或速度反饋,因此系統(tǒng)簡單;閉環(huán)控制利用 位置或速度反饋實現(xiàn)精確控制。無論是開環(huán) 控制還是閉環(huán)控制, 控制方式可分為串行控 制和并行控制兩種:,7.2.3 步進(jìn)電機(jī)控制原理實例,串行控制,單片機(jī)輸出步進(jìn)脈沖信號(CP )和旋轉(zhuǎn)方向信號,經(jīng)脈沖分配器(也叫環(huán)形分配器)按電機(jī)的相數(shù)和工作方式產(chǎn)生多相循環(huán)變化的脈沖。例如三相電機(jī)采用單三拍工作方式,脈沖分配器三路輸出順序是:A,B,C,A ;反向旋轉(zhuǎn)時順序為A,C,B,A 。,并行控制,并行控制是指單片機(jī)用硬件或軟件方法實現(xiàn)

21、脈沖分配器功能,得出多相脈沖信號,經(jīng)功率放大后驅(qū)動各相繞組。,單片機(jī)的P1.0P1.3 作為并行輸出,驅(qū)動四相反應(yīng)式步進(jìn)電機(jī)。如電機(jī)以四相八拍方式工作,正轉(zhuǎn)時相狀態(tài)是: AABBBCCCDDDAA, 那么對應(yīng)的口線狀態(tài): 1110 11001101 1001 10110011011101101110 。 為了實現(xiàn)脈沖分配器功能,我們在單片機(jī)的存儲空間存放一張表與上述八拍的口線狀態(tài)相對應(yīng)的表,叫狀態(tài)表。如下圖:,控制系統(tǒng)根據(jù)應(yīng)用要求,電機(jī)每走一步,拍序加一(正轉(zhuǎn))或拍序減一(反轉(zhuǎn)),然后由拍序查狀態(tài)表得出相狀態(tài)(即口線狀態(tài)),并將其送到相應(yīng)輸出口即可實現(xiàn)控制要求。,程序為:,OutPhaseSt

22、atus: MOV A, PhaseStatus ANL A, #00000111B MOV DPTR,#PhaseTab ;把表地址給bptr MOVC A,A+DPTR ORL A, #StepPortMask ;輸出相序而不影響其它口線 ANL StepPort, A RET PhaseTab: DB 0FEH, 0FCH, 0FDH, 0F9H, 0FBH, 0F3H, 0F7H, 0F6H,步進(jìn)電動機(jī)轉(zhuǎn)速控制,步進(jìn)電動機(jī)的轉(zhuǎn)速控制,實際上就是控制各相線通電狀態(tài)持續(xù)時間的長短。這可以采取兩種方法:一種是軟件延時,另一種是定時器延時。,(1) 軟件延時法 這種方法是在每次轉(zhuǎn)換通電狀態(tài)(簡

23、稱換相)后調(diào)用一個延時子程序,待延時結(jié)束后執(zhí)行換相子程序。如此反復(fù),就可使步進(jìn)電機(jī)按某一確定的轉(zhuǎn)速運(yùn)轉(zhuǎn)。以下程序?qū)⒖刂撇竭M(jìn)電機(jī)正向連續(xù)旋轉(zhuǎn)。,ContinueStep LCALL HardSoftPostiveStep ;正轉(zhuǎn)子程序 MOV A,#DealyValue ;DealyValue決定延時時間 LCALL StepDealy ;調(diào)用延時子程序 LJMP ContinueStep ;繼續(xù)循環(huán)執(zhí)行 StepDealy:;延時DealyV1 x 2 + 3 x ACC + 2 個機(jī)器周期 MOV R0, #DealyV1;延時DealyV1 x 2 + 1 個機(jī)器周期 DJNZ R0, $

24、 DJNZ ACC, StepDealy RET,程序為:,(2) 定時器延時法 利用定時器,加載適當(dāng)?shù)亩〞r值以控制延時的長短,在定時器溢出產(chǎn)生中斷時,執(zhí)行步進(jìn)電機(jī)換相子程序。每中斷一次,電動機(jī)就換相一次,從而實現(xiàn)對電動機(jī)的速度控制。,程序為:,CalDelay: ;/計算速度,走步延時 mov a,DelayIncDec cjne a,#0 x7f,ChkDir ChkDir: mov RotationDir,c ;/DelayIncDec=0 x7f 時 ;正轉(zhuǎn)(RotationDir=0) mov r7,#0 x7f jnc CalDelay1 xch a,r7,CalDelay1: c

25、lr c subb a,r7 mov SpeedSV,a mov r7,#0 x80 xch a,r7 subb a,r7 mov DelayStepSV,a ret,HardSoft1Step: ;/走一步子程序 jb RotationDir,PostiveStep mov a,PhaseStatus ;正轉(zhuǎn)時口線相狀態(tài)右移 rr a jmp OutStep PostiveStep: mov a,PhaseStatus ;反轉(zhuǎn)時口線相狀態(tài)左移 rl a,OutStep: mov PhaseStatus,a orl a,#StepPortMask ;輸出相序而不影響其它口線 mov r7,a

26、mov a,StepPort orl a,#NOT(StepPortMask) anl a,r7 mov StepPort,a ret end,T0_INT: clr tr0 ;/定時器設(shè)置 mov th0,#high(0 xffff-5000) mov tl0,#low(0 xffff-5000) setb tr0 push acc push psw mov psw,#00001000b ;/using 1 dec DelayStepCNT ;/走步延時計數(shù)器減一 mov a,DelayStepCNT jnz MoreDelay lcall HardSoft1Step ;/走步延時計數(shù)器=

27、0 走一步 mov DelayStepCNT,DelayStepSV,7.3 單片機(jī)溫度控制系統(tǒng),7.3.1 硬件電路 7.3.2 溫度控制的算法和程序,7.3 應(yīng)用實例 單片機(jī)溫度控制系統(tǒng),在工業(yè)生產(chǎn)中,電流,電壓,溫度,壓力,流量,流速和開關(guān)量都是常用的主要被控參數(shù)。例如:在冶金工業(yè),化工生產(chǎn),電力工程,機(jī)械制造和食品加工等許多領(lǐng)域中,人們都需要對各類加熱爐,熱處理爐,反應(yīng)爐和鍋爐中溫度進(jìn)行檢測和控制。采用單片機(jī)來對他們進(jìn)行控制不僅具有控制方便,簡單和靈活性大等優(yōu)點,而且可以大幅度提高被控溫度的技術(shù)指標(biāo),從而能夠大大提高產(chǎn)品的質(zhì)量和數(shù)量。因此,單片機(jī)對溫度的控制問題是一個工業(yè)生產(chǎn)中經(jīng)常會遇

28、到的控制問題?,F(xiàn)以它為例進(jìn)行介紹。這不僅使讀者把所學(xué)理論知識加以升華,而且希望收到舉一反三和觸類旁通的效果。,7.3.1 硬件電路,下圖為一采用熱電偶為溫度檢測元件的單片機(jī)溫度控制系統(tǒng)電路原理圖。,各部分電路敘述 :,溫度檢測和變送器,接口電路,溫度控制電路,1) 溫度檢測和變送器,溫度檢測元件和變送器的類型選擇和被控溫度及精度等級有關(guān)。 鎳鉻/鎳鋁熱電偶適用于01000的溫度測量范圍,相應(yīng)輸出電壓為041.32mV。 變送器由毫伏變送器和電流/電壓變送器組成:毫伏變送器用于把熱電偶輸出的041.32 mV變成010mA范圍內(nèi)的電流,電流/電壓變送器用于把毫伏變送器輸出的010mA電流變成05

29、V范圍內(nèi)的電壓。,為了提高測量精度,變送器可以進(jìn)行零點遷移。例如:若溫度測量范圍為4001000,則熱電偶輸出為16.4mV41.32mV,毫伏變送器零點遷移后輸出010mA范圍電流。這樣,采用8位A/D轉(zhuǎn)器就可使量化溫度誤差達(dá)到+/-2.34以內(nèi)。,接口電路有8155和ADC0809等芯片。8155用于鍵盤/LED顯示接口, ADC0809為溫度測量電路的輸入接口。,2) 接口電路,ADC0809的IN0和變送器輸出端相連,故IN0上輸入的0V +5V的范圍的模擬電壓經(jīng)A/D轉(zhuǎn)換后可由89C52經(jīng)過程序從P0口輸入到它的內(nèi)部RAM單元。在P2.2=0和WR=0時,89C52可使ALE和STA

30、RT變?yōu)楦唠娖蕉鴨覣DC0809工作;在P2.2=0和RD=0時,89C52可從ADC0809接收A/D轉(zhuǎn)換后的數(shù)字量。這就是說:ADC0809可以視為89C52的一個外部RAM單元,地址為03F8H(有很大的地址重疊范圍)。因此,89C52執(zhí)行如下程序可以啟動ADC0809工作,8155用于鍵盤/LED顯示接口:,MOV DPTR, #03F8H MOVX DPTR, A 若89C52改為執(zhí)行: MOV DPTR, #03F8H MOVX A, DPTR 則可以從ADC0809輸入A/D轉(zhuǎn)換后的數(shù)字量。,89C52對溫度的控制是通過可控硅調(diào)功器電路實現(xiàn)的。,3) 溫度控制電路,雙向可控硅管

31、和加熱電阻絲串接在交流 220V,50HZ市電回路。在給定周期T內(nèi),89C52只要改變可控硅管的接通時間便可改變加熱絲功率,達(dá)到調(diào)節(jié)溫度的目的。,可控硅在給定周期T的100時間內(nèi)接通時的功率最大。,顯然,是一種50HZ交流電壓過零時刻的脈沖,可使可控硅在交流電壓正弦波過零時觸發(fā)通導(dǎo)。過零同步脈沖由過零觸發(fā)電路產(chǎn)生,如圖7.29所示,圖中電壓比較器LM311用于把50HZ正弦交流電壓變成方波。方波的正邊緣和負(fù)邊緣分別作為兩個單穩(wěn)態(tài)觸發(fā)器的輸入觸發(fā)信號,單穩(wěn)壓觸發(fā)器輸出的兩個窄脈沖經(jīng)二極管或門混合后就得到對應(yīng)于交流220V市電的過零同步脈沖。此脈沖一方面作為可控硅的觸發(fā)同步脈沖加到溫度控制電路,另

32、一方面還作為計數(shù)脈沖加到89C52的T0和T1端。,過零同步脈沖,過零觸發(fā)電路,7.3.2 溫度控制的算法和程序,1) 溫度控制的算法,通常,電阻爐爐溫控制采用偏差控制法。偏差控制的原理是先求出實測爐溫對所爐溫的偏差值,然后對偏差值處理而獲得控制信號去調(diào)節(jié)電阻爐的加熱功率,以實現(xiàn)對爐溫的控制。,在工業(yè)上,偏差控制多用PID控制。這是工業(yè)過程控制中應(yīng)用最廣泛的一種形式,一般都能收到令人滿意的效果??刂普摳嬖V我們,PID控制的理想微分方程為:,式中,e(t)=r(t)-y(t)稱為偏差值,可作為溫度調(diào)節(jié)器的輸入信號。其中r(t)為給定值,y(t)為被測變量值,KP為比例系數(shù),Ti為積分時間常數(shù),為

33、Td為微分時間常數(shù),U(t)為調(diào)節(jié)器的輸出控制電壓信號。,由于計算機(jī)只能處理數(shù)字信號,故上述數(shù)學(xué)方程必須加以變換。若設(shè)溫度的采樣周期為T,第n次采樣得到的輸入偏差為en,調(diào)節(jié)器輸出為un,則有:,理想微分方程便可改寫為 :,寫成遞推方式:,2)溫度控制程序,溫度控制程序的設(shè)計應(yīng)考慮如下問題:1. 鍵盤掃描,鍵盤識別,溫度顯示;2. 爐溫采樣,數(shù)字濾波;3. 數(shù)據(jù)處理時把所有數(shù)轉(zhuǎn)換成定點純小數(shù)補(bǔ)碼 形式,然后把8位溫度采樣直,Umin和 Umax都變成16位參加運(yùn)算,運(yùn)算結(jié)果取8位 有效直;4. 越限報警和處理;5. PID計算,溫度標(biāo)度轉(zhuǎn)換。 通常,符合上述功能的溫度控制程序由主程序和T0中斷

34、服務(wù)程序組成。,主程序,主程序應(yīng)包括89C52本身的初始化,8155初始化等等。為簡化起見,本程序只給出有關(guān)標(biāo)志,暫存單元和顯示緩沖區(qū)清零,T0初始化、開CPU中斷。溫度顯示和鍵盤掃描等程序。,程序清單為: ORG 0100H DISM0 DATA 78H DISM1 DATA 79H DISM2 DATA 7AH DISM3 DATA 7BH DISM4 DATA 7CH DISM5 DATA 7DH,MOV SP, #50H ; 50H送SP CLR 5EH ; 清本次越限標(biāo)志 CLR 5FH ; 清上次越限標(biāo)志 CLR A ;清累加器A MOV 2FH, A MOV 30H, A MOV

35、 3BH, A,MOV 3CH, A;清暫存單元 MOV 3DH, A ; MOV 3EH, A ; MOV 44H, A ; MOV DISM0, A ; MOV DISM1, A ; MOV DISM2, A ; MOV DISM3, A ;清顯示緩沖區(qū),MOV DISM4, A ; MOV DISM5, A ; MOV TMOD, #56H ;設(shè)T0為記數(shù)方式2,T1為記數(shù)方式1 MOV TL0, #06H ; MOV TH0, #06H ;T0賦初值 CLR PT0 ;令T0為底中斷優(yōu)先級 SETB TR0 ; 啟動T0工作,SETB ET0 ;允許T0中斷 SETB EA ;開CPU

36、中斷 LOOP : ACALL DISPLY;調(diào)用顯示程序 ACALL SCAN ;調(diào)用掃描程序 AJMP LOOP ;等待中斷,T0中斷服務(wù)程序是溫度控制系統(tǒng)的主體程序,用于啟動A/D轉(zhuǎn)換,讀入采樣數(shù)據(jù),數(shù)字濾波,越限溫度報警和越限處理,PID計算和輸出可控硅的同步觸發(fā)脈沖等。P1.3引腳輸出的該同步觸發(fā)脈沖寬度由T1計數(shù)器的溢出中斷控制,89C52利用等待T1溢出中斷空隙時間完成把本次采樣值轉(zhuǎn)換成顯示值而放入顯示緩沖區(qū)和調(diào)用溫度顯示程序。89C52從T1中斷服務(wù)程序返回后便可以恢復(fù)現(xiàn)場和返回主程序,以等待下次T0中斷。,T0 中斷服務(wù)程序CT0,T0中斷服務(wù)框圖如下圖:,在T0中斷服務(wù)程序

37、中,還需要用到一系列子程序。例如:溫度采樣值的子程序,數(shù)字濾波子程序,越限處理子程序,PID計算程序,標(biāo)度轉(zhuǎn)換程序和溫度顯示程序。在PID計算程序中,也需要雙字節(jié)加法子程序,雙字節(jié)求補(bǔ)子程序和雙字節(jié)帶符號數(shù)乘法子程序等。,圖7.32 T0中斷服務(wù)程序流程圖,ORG 000BH AJMP CT0 CT0 :PUSH ACC ; PUSH DPL ;保護(hù)現(xiàn)場 PUSH DPH ; SETB D5H ;置標(biāo)志 ACALL SAMP ;調(diào)用采樣子程序 ACALL FILTER ;調(diào)用數(shù)字濾波程序,程序清單為:,CJNE A, 42H, TPL ; WL: MOV C, 5EH ; MOV 5FH, C

38、 ; CLR 5EH ;清5Eh單元 ACALL UPL ;轉(zhuǎn)上限處理程序(略) POP DPH POP DPL POP ACC RETI ;中斷返回,TPL : JNC TPL1; 若Ui(K)Umax,則TPL1 CLR 5FH ; 清上次越限標(biāo)志 CJNE A , 43H, MTPL ;若Ui(K)Umin,則MTPL HAT : SETB P1.1 ;若溫度不越限,則令綠燈亮,ACALL PID ;調(diào)用計算PID子程序 MOV A, 2FH;PID值送A對PID值 ;求補(bǔ),作為TL1值 CPL A ; INC A ; NM: SETB P1.3 ;令P1.3輸出高電平脈沖 MOV TL

39、1, A ;,MOV TH1, #0FFH ; T1賦初值 SETB PT1 ;T1高優(yōu)先級中斷 SETB TR1 ;啟動T1 SETB ET1 ;允許T1中斷 ACALL TRAST ;調(diào)用標(biāo)度轉(zhuǎn)化程序 LOOP : ACALL DISPLY ;顯示溫度 JB D5H, LOOP ;等待T1中斷 POP DPH ; POP DPL ;恢復(fù)現(xiàn)場 POP ACC ; RETI ;中斷返回,MTPL: JNC HAT ;若Ui(K)Umin ,則HAT SETB P1.0;否則越下限聲光報警 MOV A, 45H;取PID最大值輸出對 ;PID值求補(bǔ),作為TL1值 CPL A ; INC A ;

40、AJMP NM ;轉(zhuǎn)NM 執(zhí)行 TPL1: SETB 5EH;若Ui(K)Umax,則5EH單;元置位,JNB 5FH, WL;若上次未越限。則轉(zhuǎn)WL INC 44H ;越限計數(shù)器加“1” MOV A, 44H CLR C SUBB A, #N ;越限N次嗎 ? JNZ WL ;越限小于N 次,則WL SETB P1.2 ;否則越上限聲光報警 CLR 5EH ; CLR 5FH ;清越限標(biāo)志 POP DPH ; POP DPL ;恢復(fù)現(xiàn)場 POP ACC ; RETI ;中斷返回,T1 中斷服務(wù)子程序 ORG 001BH AJMP CT1 CT1: CLR D5H ; 清標(biāo)志 CLR P1.3

41、 ; 令P1.3變?yōu)榈碗娖?RETI ; 中斷返回,圖7.33 采樣子程序流程圖,子程序,SAMP: MOV R0, #2CH ;采樣值始送P0 MOV R2, #03H ;采樣次數(shù)初值送R2 MOV DPTR, 03F8H SAM1: MOVX DPTR, A ;啟動ADC0809工作 MOV R3, #20H DLY: DJNZ R3, DLY ;延時 HERE: JB P3.3, HERE ;等待A/D完成 MOVX A, DPTR ;采樣值送A MOV R0, A ;存放采樣值 INC R0 DJNZ R2, SAM1 ;若采樣未完,則SAM1 RET ;若已采樣完,則返回,采樣子程序

42、,FITER: MOV A, 2CH ;(2CH)送A CJNE A, 2DH, CMP1;若(2CH)(2DH),則CMP1 AJMP CMP2 ;否則,轉(zhuǎn)CMP2 CMP1: JNC CMP2;若(2CH)(2DH),則 XCH A, 2DH ; XCH A, 2DH ; CMP2: MOV A, 2DH ;(2DH)送A CJNE A, 2EH, CMP3;若(2DH)(2EH),則CMP MOV 2AH,A ;否則,(2DH)送2AH RET ;返回,數(shù)字濾波子程序,CMP3: JC CMP4 ;若(2DH)(2EH),則CMP4 MOV 2AH, A ;否則, (2DH)送2AH R

43、ET ;返回 CMP4: MOV A, 2EH ;(2EH)送A CJNE A, 2CH, CMP5 ;若(2EH)(2CH),則 CMP5 MOV 2AH, A ;否則,(2EH)送2AH RET ;返回 CMP5: JC CMP6 ;若(2EH)(2CH),則CMP6 XCH A, 2CH ;否則, (2EH) (2CH) CMP6: MOV 2AH, A ;A送2AH RET,數(shù)字濾波子程序,PID 計算程序:,Ur 送R5R4PID: MOV R5, 31H ; MOV R4, 32H ; Ui(K) 送R3R2: MOV R3, 2AH ; MOV R2, #00H ; ACALL

44、CPL1 ;取ui(K)的補(bǔ)碼 ACALL DSUM ;計算E(K) E(K)送39H和3AH單元: MOV 39H, R7 ; MOV 3AH, R6 ; K1送R5R4: MOV R5 , 35H ; MOV R4, 36H ; MOV R0 #4AH ;積地址4A送HR0 ACALL MULT1 ;計算Pi=KiE(k),PID計算程序,E(K)送R5R4 MOV R5, 39H MOV R4, 3AH E(K-1)送R3R2 MOV R3, 3BH MOV R2, 3CH ACALL CPL1 ;對E(K-1)求補(bǔ) ACALL DSUM ;求E(K)-E(K-1) Kp送R5R4 MO

45、V R5, 33H MOV R4, 34H MOV R0, #46H ;積地址46H送R0 ACALL MULT1 ;求得Pp,PID計算程序,Pp的高16位送R5R4 MOV R5, 49H MOV R4, 48H KP1送R3R2 MOV R3, 4DH MOV R2, 4CH ACALL DSUM ;求得Pp+p1 存入4AH和4BH單元 MOV 4AH, R7 MOV 4BH,R8 E(K)送R5R4 MOV R5, 39H MOV R4, 3AH E(K-2)送R3R2 MOV R3, 3DH MOV R2, 3EH ACALL DSUM ;計算E(K)+E(K-2),PID計算程序,存入R5R4 MOV R5, R7 MOV R4, R6 E(K-1)送

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論