《單片機技術(shù)及應(yīng)用項目化教程》課件第5章_第1頁
《單片機技術(shù)及應(yīng)用項目化教程》課件第5章_第2頁
《單片機技術(shù)及應(yīng)用項目化教程》課件第5章_第3頁
《單片機技術(shù)及應(yīng)用項目化教程》課件第5章_第4頁
《單片機技術(shù)及應(yīng)用項目化教程》課件第5章_第5頁
已閱讀5頁,還剩119頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

項目五模/數(shù)轉(zhuǎn)換接口及應(yīng)用

任務(wù)1數(shù)字電壓表的設(shè)計

任務(wù)2簡易數(shù)控電源任務(wù)1數(shù)字電壓表的設(shè)計

知識目標:了解和掌握單片機的外圍基本芯片的搭接,掌握轉(zhuǎn)換模塊、數(shù)據(jù)處理模塊及顯示模塊。

能力目標:A/D轉(zhuǎn)換采用ADC0808對輸入的模擬信號進行轉(zhuǎn)換,控制核心AT89C51再對轉(zhuǎn)換的結(jié)果進行運算處理,最后驅(qū)動輸出裝置LED顯示數(shù)字電壓信號。

1.任務(wù)要求

(1)以MCS-51系列單片機為核心器件,組成一個簡單的直流數(shù)字電壓表。

(2)采用一路模擬量輸入,能夠測量0~5V之間的直流電壓值。

(3)電壓顯示用4位一體的LED數(shù)碼管顯示,至少能夠顯示兩位小數(shù)。

(4)盡量使用較少的元器件。

2.硬件電路的設(shè)計與制作

1)設(shè)計方案

硬件電路設(shè)計由6個部分組成:A/D轉(zhuǎn)換電路、AT89C51單片機、LED顯示系統(tǒng)、時鐘電路、復(fù)位電路以及測量電壓輸入電路。硬件電路設(shè)計框圖如圖5-1所示。圖5-1數(shù)字電壓表系統(tǒng)硬件設(shè)計框圖復(fù)位電路設(shè)計:單片機在啟動運行時都需要復(fù)位,使CPU和系統(tǒng)中的其他部件都處于一個確定的初始狀態(tài),并從這個狀態(tài)開始工作。MCS-51單片機有一個復(fù)位引腳RST,采用施密特觸發(fā)輸入。當(dāng)振蕩器起振后,只要該引腳上出現(xiàn)2個機器周期以上的高電平即可確保使器件復(fù)位。復(fù)位完成后,如果RST端繼續(xù)保持高電平,MCS-51就一直處于復(fù)位狀態(tài),只有RST恢復(fù)低電平后,單片機才能進入其他工作狀態(tài)。單片機的復(fù)位方式有上電自動復(fù)位和手動復(fù)位兩種,圖5-2是51系列單片機系統(tǒng)常用的上電復(fù)位和手動復(fù)位組合電路,只要Vcc上升時間不超過1ms,它們都能很好的工作。時鐘電路設(shè)計:電路中的器件選擇可以通過計算和實驗確定,也可以參考一些典型電路的參數(shù)。如圖5-3所示時鐘電路中,電容器C1和C2對振蕩頻率有微調(diào)作用,通常的取值范圍是30pF?±?10pF,在這個系統(tǒng)中選擇了33pF;石英晶振選擇范圍最高可選24MHz,它決定了單片機電路產(chǎn)生的時鐘信號振蕩頻率,在本系統(tǒng)中選擇的是12MHz,因而時鐘信號的振蕩頻率為12MHz。圖5-2復(fù)位電路圖5-3時鐘電路

2)硬件電路的總體設(shè)計

數(shù)字電壓表硬件電路總體設(shè)計如圖5-4所示。此電路的工作原理是:+5V模擬電壓信號通過變阻器VR1分壓后,由ADC0808的IN0通道進入(由于使用的IN0通道,所以ADDA、ADDB、ADDC均接低電平);經(jīng)過模/數(shù)轉(zhuǎn)換后,產(chǎn)生相應(yīng)的數(shù)字量經(jīng)過其輸出通道D0~D7傳送給AT89C51芯片的P1口,AT89C51負責(zé)把接收到的數(shù)字量經(jīng)過數(shù)據(jù)處理,產(chǎn)生正確的7段數(shù)碼管的顯示段碼傳送給四位LED,同時它還通過其四位I/O口P2.0、P2.1、P2.2、P2.3產(chǎn)生位選信號控制數(shù)碼管的亮滅。此外,AT89C51還控制ADC0808的工作。其中,單片機AT89C51通過定時器中斷從P2.4輸出方波接到ADC0808的CLOCK,P2.6發(fā)正脈沖啟動A/D轉(zhuǎn)換,P2.5檢測A/D轉(zhuǎn)換是否完成,轉(zhuǎn)換完成后,P2.7置高,從P1口讀取轉(zhuǎn)換結(jié)果送給LED顯示出來。圖5-4硬件電路總體設(shè)計簡易數(shù)字直流電壓表的硬件電路已經(jīng)設(shè)計完成,就可以選取相應(yīng)的芯片和元器件,利用Proteus軟件繪制出硬件的原理,并仔細地檢查修改,直至形成完善的硬件原理圖。但要真正實現(xiàn)電路對電壓的測量和顯示的功能,還需要有相應(yīng)的軟件配合,才能達到設(shè)計要求。

3.應(yīng)用程序設(shè)計

根據(jù)模塊的劃分原則,將該程序劃分為初始化模塊、A/D轉(zhuǎn)換子程序和顯示子程序,這三個程序模塊構(gòu)成了整個系統(tǒng)軟件的主程序,如圖5-5所示。圖5-5數(shù)字式直流電壓表主程序框圖

1)初始化程序

所謂初始化,是對將要用到的MCS-51系列單片機內(nèi)部部件或擴展芯片進行初始工作狀態(tài)設(shè)定,初始化子程序的主要工作是設(shè)置定時器的工作模式、初值預(yù)置、開中斷和打開定時器等。

2)?A/D轉(zhuǎn)換子程序

A/D轉(zhuǎn)換子程序用來控制對輸入的模塊電壓信號的采集測量,并將對應(yīng)的數(shù)值存入相應(yīng)的內(nèi)存單元,其轉(zhuǎn)換流程圖如圖5-6所示。圖5-6A/D轉(zhuǎn)換流程圖

3)顯示子程序

顯示子程序采用動態(tài)掃描實現(xiàn)四位數(shù)碼管的數(shù)值顯示,在采用動態(tài)掃描顯示方式時,要使得LED顯示的比較均勻,又有足夠的亮度,需要設(shè)置適當(dāng)?shù)膾呙桀l率,當(dāng)掃描頻率在70Hz左右時,能夠產(chǎn)生比較好的顯示效果,一般可以采用間隔10ms對LED進行動態(tài)掃描一次,每一位LED的顯示時間為1ms。

在本設(shè)計中,為了簡化硬件設(shè)計,主要采用軟件定時的方式,即用定時器0溢出中斷功能實現(xiàn)11μs定時,通過軟件延時程序來實現(xiàn)5ms的延時。

4.系統(tǒng)調(diào)試

軟件調(diào)試的主要任務(wù)是排查錯誤,錯誤主要包括邏輯和功能錯誤,這些錯誤有些是顯性的,而有些是隱性的,可以通過仿真開發(fā)系統(tǒng)發(fā)現(xiàn)并逐步改正。Proteus軟件可以對基于微控制器的設(shè)計連同所有的周圍電子器件一起仿真,用戶甚至可以實時采用諸如LED/LCD、鍵盤、RS232終端等動態(tài)外設(shè)模型來對設(shè)計進行交互仿真。Proteus支持的微處理芯片包括8051系列、AVR系列、PIC系列、HC11系列及Z80系列等。Proteus可以完成單片機系統(tǒng)原理圖電路繪制、PCB設(shè)計,更為顯著的特點是可以與μVisions3IDE工具軟件結(jié)合進行編程仿真調(diào)試[8]。本系統(tǒng)的調(diào)試主要以軟件為主,其中,系統(tǒng)電路圖的繪制和仿真采用的是Proteus軟件,而程序方面,采用的是匯編語言,用Keil軟件產(chǎn)生、Hex文件并通過燒錄軟件將程序?qū)懭雴纹瑱C。

1)顯示結(jié)果分析

(1)當(dāng)IN0口輸入電壓值為0V時,顯示結(jié)果如圖5-7所示,測量誤差為0V。

(2)當(dāng)IN0輸入電壓值為1.50V時,顯示結(jié)果如圖5-8所示,測量誤差為0.01V。

(3)當(dāng)IN0口輸入電壓值為3.50V時,顯示結(jié)果如圖5-9所示,測量誤差為0V。圖5-7輸入電壓為0V時LED的顯示結(jié)果圖5-8輸入電壓為1.50V時LED的顯示結(jié)果圖5-9輸入電壓為3.50V時LED的顯示結(jié)果

2)誤差分析

通過以上仿真測量結(jié)果可得到簡易數(shù)字電壓表與“標準”數(shù)字電壓表對比測試表,如表5-1所示。

由于單片機AT89C51為8位處理器,當(dāng)輸入電壓為5.00V時,ADC0808輸出數(shù)據(jù)值為255(FFH),因此單片機最高的數(shù)值分辨率為0.0196V(5/255)。這就決定了電壓表的最高分辨率只能到0.0196V,從上表可看出,測試電壓一般以0.01V的幅度變化。表5-1簡易數(shù)字電壓表與“標準”數(shù)字電壓表對比測試表

從表5-1可以看出,簡易數(shù)字電壓表測得的值基本上比標準電壓值偏大0~0.01V,這可以通過校正ADC0808的基準電壓來解決。因為該電壓表設(shè)計時直接用5V的供電電源作為電壓,所以電壓可能有偏差。當(dāng)要測量大于5V的電壓時,可在輸入口使用分壓電阻,而程序中只要將計算程序的除數(shù)進行調(diào)整就可以了。

程序清單:

ORG 0000H

SJMP MAIN

ORG 0003H

LJMP PINT0

MAIN: MOV 50H,#19H

MOV 54H,#78H

MOV DPTR,#7FF8H

MOV 51H,DPH

MOV 52H,DPL

MOV R0,#04H

MOV 53H,#00H

MOV R7,#00H

SETB EA

SETB IT0

SETB EX0

L4: MOV R1,#00H;R1存放十六進制轉(zhuǎn)換成十進制后的低兩位

MOV R2,#00H;R2存放十六進制轉(zhuǎn)換成十進制后的高兩位

MOV R3,#0FFH ;循環(huán)顯示十進制數(shù)

MOV R4,#00H ;存放A/D轉(zhuǎn)換后的十六進制數(shù)

MOV R5,#00H ;存放0.5相加后的數(shù)

MOVX @DPTR,A ;開始A/D轉(zhuǎn)換

LCALL DELAY ;調(diào)用延時大于A/D轉(zhuǎn)換的時間

MOVX A,@DPTR ;取A/D轉(zhuǎn)換后的十六進制數(shù)

INC DPTR ;A/D轉(zhuǎn)換芯片的地址加一

PUSH DPL ;壓入堆棧

PUSH DPH

DEC R0 ;4路轉(zhuǎn)換的次數(shù)減一

JZ SB2 ;判斷是否是0V

MOV R4,A

L1: MOV A,R1;進行十六進制到十進制的調(diào)整

ADD A,50H ;每次加19

DA A

MOV R1,A

JC L2 ;如果溢出則跳轉(zhuǎn)到L2

MOV A,R5 ;進行0.5V相加

ADD A,54H

DAA

MOV R5,A

JC L3;如果溢出則跳轉(zhuǎn)到L3

SB1: DJNZ R4,L1;判斷十六進制數(shù)是否轉(zhuǎn)換完成,如果沒有則循環(huán)

MOV A,R5

SWAP A

ANL A,#0FH

MOV B,R1

ADD A,B

DA A

MOV R1,A

SB2: LCALL DISP

LCALL DJW

DJNZ R3,SB2

POP DPH

POP DPL

MOV A,53H

INC A

MOV 53H,A

CJNE R0,#00H,L4

LJMP MAIN

L2:CLR C

MOV A,R2

ADD A,#01H

DAA

MOV R2,A

LJMP SB1

L3:CLR C ;0.5V相加溢出后進位

MOV A,R1

ADD A,#01H

DA A

MOV R1,A

LJMP SB1

DISP: MOV A,R1 ;顯示電壓子程序

SWAP A

ANL A,#0FH

MOV DPTR,#TAB1

MOVC A,@A+DPTR

CLR P3.0

MOV P1,A

LCALL DELAY

SETB P3.0

MOV A,R2

ANL A,#0FH

MOV DPTR,#TAB1

MOVC A,@A+DPTR

CLR P3.1

MOV P1,A

LCALL DELAY

SETB P3.1

MOV A,R2

SWAP A

ANL A,#0FH

MOV DPTR,#TAB2

MOVC A,@A+DPTR

CLR P3.4

MOV P1,A

LCALL DELAY

SETB P3.4

RET

DJW: MOV A,53H ;顯示第幾路轉(zhuǎn)換電壓子程序

MOV DPTR,#TAB1

MOVC A,@A+DPTR

CLR P3.5

MOV P1,A

LCALL DELAY

SETB P3.5

RET

INTV: PUSH ACC ;只顯示其中一路中斷

PUSH 53H

MOV 53H,#00H

CX2: MOV R1,#00H

MOV R2,#00H

MOV R3,#0FFH

MOV R4,#00H

MOV DPH,51H

MOV DPL,52H

MOVX @DPTR,A

LCALL DELAY

MOVX A,@DPTR

MOV R4,A

JZ SB22

L11: MOV A,R1

ADD A,50H

DA A

MOV R1,A

JC L22

MOV A,R5;進行0.5V相加

ADD A,54H

DA A

MOV R5,A

JC L33

SB11: DJNZ R4,L11

MOV A,R5

SWAP A

ANL A,#0FH

MOV B,R1

ADD A,B

DA A

MOV R1,A

SB22: LCALL DISP

LCALL DJW

JNB P3.3,EXIT

DJNZ R3,SB22

JNB P3.2,CX1

LJMP CX2

L22: CLR C

MOV A,R2

ADD A,#01H

DA A

MOV R2,A

LJMP SB11

L33: CLR C

MOV A,R1

ADD A,#01H

DA A

MOV R1,A

LJMP SB11

CX1: INC R7

MOV A,53H

INC A

MOV 53H,A

MOV DPH,51H

MOV DPL,52H

INC DPTR

MOV 51H,DPH

MOV 52H,DPL

CJNE R7,#04H,CX2

MOV R7,#00H

MOV 53H,#01H

MOV DPTR,#7FF8H

MOV 51H,DPH

MOV 52H,DPL

LJMP CX2

EXIT: POP 53H

POP ACC

RETI

DELAY: MOV R6,#1H ;延時子程序

D1: MOV R5,#50H

D2: NOP

NOP

DJNZ R5,D2

DJNZ R6,D1

RET

TAB1: DB3FH,06H,5BH,4FH,66H ;碼表

DB6DH,7DH,07H,7FH,6FH

TAB2: DB0BFH,86H,0DBH,0CFH,0E6H;小數(shù)點的段碼表

DB0EDH,0FDH,87H,0FFH,0EFH

END

5.知識鏈接(本任務(wù)涉及到的新知識介紹)

1)

ADC0808的引腳及功能介紹

(1)芯片概述:ADC0808是一種典型的A/D轉(zhuǎn)換器。它是由8位A/D轉(zhuǎn)換器、一個8路模擬量開關(guān)、8位模擬量地址鎖存譯碼器和一個三態(tài)數(shù)據(jù)輸出鎖存器組成;+5?V單電源供電,轉(zhuǎn)化時間在100?μs左右;內(nèi)部沒有時鐘電路,故需外部提供時鐘信號。芯片模型如圖5-10所示。

(2)引腳簡介:

①IN0~IN7——8路模擬量輸入端。

②D0~D7——8位數(shù)字量輸出端口。圖5-10ADC0808芯片模型③START——A/D轉(zhuǎn)換啟動信號輸入端。

④ALE——地址鎖存允許信號,高電平有效。

⑤EOC——輸出允許控制信號,高電平有效。

⑥OE——輸出允許控制信號,高電平有效。

⑦CLOCK——時鐘信號輸入端。

⑧A、B、C——轉(zhuǎn)換通道地址,控制8路模擬通道的切換。A、B、C分別與地址線或數(shù)據(jù)線相連,三位編碼對應(yīng)8個通道地址端口,A、B、C?=?000~111分別對應(yīng)IN0~IN7通道的地址端口。

(3)?ADC0808的轉(zhuǎn)換原理:ADC0808采用逐次比較的方法完成A/D轉(zhuǎn)換,由單一的+5?V電源供電。片內(nèi)帶有鎖存功能的8路選1的模擬開關(guān),由A、B、C的編碼來決定所選的通道。ADC0808完成一次轉(zhuǎn)換需100μs左右,它具有輸出TTL三態(tài)鎖存緩沖器,可直接連接到AT89C51的數(shù)據(jù)總線上。通過適當(dāng)?shù)耐饨与娐?,ADC0808可對0~5V的模擬信號進行轉(zhuǎn)換。

2)?74LS373芯片的引腳及功能

(1)芯片概述:74LS373是一種帶有三態(tài)門的8D鎖存器,其在本設(shè)計中是鎖存P0口的低8位地址,芯片模型如圖5-11所示。

圖5-1174LS373芯片模型

(2)引腳介紹:

①D0~D7——8位數(shù)據(jù)輸入線。

②Q0~Q7——8位數(shù)據(jù)輸出線。

③G——數(shù)據(jù)輸入鎖存選通信號。當(dāng)加到該引腳的信號為高電平時,外部數(shù)據(jù)選通到內(nèi)部鎖存器,負跳變時,數(shù)據(jù)鎖存到鎖存器中。

④——數(shù)據(jù)輸出允許信號,低電平有效。當(dāng)該信號為低電平時,三態(tài)門打開,鎖存器中的數(shù)據(jù)輸出到數(shù)據(jù)輸出線上,當(dāng)該信號為高電平時,輸出線為高阻態(tài)。

3)?LED數(shù)碼管的控制顯示

(1)?LED數(shù)碼管的模型如圖5-12所示。

(2)?LED數(shù)碼管的接口簡介:LED的段碼端口A~G分別接至AT89C51的P1.0~P1.7口,位選端1~4分別接至P3.5、P3.4、P3.1、P3.0,如圖5-13所示。圖5-12LED數(shù)碼管模型圖5-13LED與AT89C51的硬件連線

6.任務(wù)總結(jié)

基于單片機的簡易數(shù)字電壓表基本完成。但設(shè)計中的不足之處仍然存在。本次設(shè)計用Proteus實現(xiàn)了仿真。在電路設(shè)計過程中,對單片機的使用等都有了新的認識。通過這次設(shè)計,更進一步的學(xué)習(xí)了Proteus和Keil軟件的使用方法,掌握了從系統(tǒng)的需要、方案的設(shè)計、功能模塊的劃分、原理圖的設(shè)計和電路圖的仿真的設(shè)計流程。

本次設(shè)計主要實現(xiàn)了簡易數(shù)字電壓表測量1路電壓的功能,詳細說明了從原理圖的設(shè)計、電路圖的仿真再到軟件的調(diào)試。設(shè)計中除了單片機還用到了模/數(shù)轉(zhuǎn)換芯片ADC0808,設(shè)計基本上達到了功能要求。

任務(wù)2簡易數(shù)控電源

知識目標:了解和掌握單片機的外圍基本芯片的搭接,掌握數(shù)/模轉(zhuǎn)換模塊、數(shù)據(jù)處理模塊及顯示模塊。

能力目標:?D/A轉(zhuǎn)換采用ADC0832對輸出的數(shù)字量信號進行轉(zhuǎn)換,學(xué)習(xí)OP-07和LF356運算放大器,TIP122和TIP127構(gòu)成閉環(huán)推挽輸出電路的運用。

1.任務(wù)要求

(1)以MCS-51系列單片機為核心器件,組成一個簡單的數(shù)控電源。

(2)采用1路數(shù)字量輸出,能夠測量0~10V之間的直流電壓值。

(3)電壓顯示用4位一體的LED數(shù)碼管顯示,至少能夠顯示三位小數(shù)。

(4)盡量使用較少的元器件。

2.硬件電路的設(shè)計

本系統(tǒng)的硬件電路設(shè)計共包括三個模塊:電源模塊、數(shù)控模塊、穩(wěn)壓輸出模塊。

1)電源模塊

設(shè)計的芯片供電的電源電路如圖5-14所示。電源部分輸入220V/50Hz交流電,輸出全機所需要的三種電壓:+5V,+15V和-15V。+5V主要供數(shù)控部分和D/A轉(zhuǎn)換芯片使用,電流最大約為400mA;+15V作為運放的正電源,同時也是穩(wěn)壓輸出電路的主電源,最大電流約650mA;-15V作為運放的負電源,同時也給基準電壓源(LM336,-5V)供電,該電流較小,不超過50mA。

電路中,7805和7815負載重,功耗大,應(yīng)加裝散熱片。圖5-14電源模塊

(1)?±15V電源(0.6A):其電路如圖5-14所示。

對于濾波電容的選擇,要考慮三點:整流管的壓降、7815/7915最小允許壓降Ud、電網(wǎng)波動10%。由此而計算得允許紋波的峰-峰值:

按近似電流放電計算,并設(shè)⊙?=?00(通角),則

故選取濾波電容C?=?2200μF/30V。

(2)?+5V電源(1A):其電路如圖2-1所示。計算允許的最大紋波峰-峰值:

故選取濾波電容C?=?4700μF/16V。

2)數(shù)控模塊

該模塊主要由數(shù)字電路構(gòu)成,完成鍵盤控制、預(yù)置拔碼開關(guān)輸入控制、電壓控制字輸出、數(shù)碼管顯示控制、電流過流保護等功能。由于控制功能多,選用89S52最小應(yīng)用系統(tǒng),如圖5-15所示。

3)穩(wěn)壓輸出模塊

穩(wěn)壓輸出模塊原理圖如圖5-16所示。這部分將控制部分送來的電壓控制字數(shù)據(jù)轉(zhuǎn)換成穩(wěn)定電壓輸出。它由數(shù)/模轉(zhuǎn)換器(DAC0832)、集成運放OP-07、LF356、晶體三極管VT8(TIP122)、VT9(127)、VT10(9014)、VT11(9015)和基準電壓源LM336-5組成。圖5-15數(shù)控模塊圖5-16穩(wěn)壓輸出模塊

(1)主電路的工作原理及參數(shù)計算。

電壓輸出范圍0~9.9V,步進0.1V,共有100種狀態(tài),8位字長的D/A轉(zhuǎn)換器具有256種狀態(tài),能滿足要求。設(shè)計中用兩個電壓控制代表0.1V,當(dāng)電壓控制字為0、2、4、…、198時,電源輸出為0V、0.1V、0.2V、…、9.9V。電路選用的D/A轉(zhuǎn)換芯片是DAC0832,該芯片價廉且精度較高。DAC0832屬于電流輸出型D/A,輸出的電流隨輸入的電壓控制字線性變化。若要得到電壓,還需要外接一片運放來實現(xiàn)電流到電壓的轉(zhuǎn)換。該運放輸入端的輸入電流對轉(zhuǎn)換精度影響很大,DAC0832輸出的電流有幾十微安的變化,若運放輸入端的輸入電流為0.1μA,如UA741的輸入電流約為此值,且有一定變化,則會引入相當(dāng)于1~2個電壓控制字的誤差,因此應(yīng)選用高輸入阻抗的運放,如JFETL輸入的運放LF356(或OP07),它的輸入電流可以忽略。DAC0832需外接基準電壓,具有高穩(wěn)定度和低通方波,故選取LM336-5作為基準源。當(dāng)DAC0832采用5V基準電壓時,D/A轉(zhuǎn)換電路的滿幅輸出為5V(電壓控制字為255)。由于實際用到的最大電壓控制字為198,因此D/A部分最大輸出電壓為V將它寫成通式,即

D/A轉(zhuǎn)換部分輸出電壓Ui作為電源功放級的輸入電壓。功率級由U9(LF356)和VT8(TIP122)、VT9(TIP127)構(gòu)成閉環(huán)推挽輸出電路。該電路屬于典型的電壓串聯(lián)負反饋電路。于是可以寫出輸出電壓Uo與輸入電壓Ui的關(guān)系式,即將式代入得

當(dāng)Ui?=?3.882V、R2?=?10kΩ、R3?=?9.1kΩ、Vo?=?9.9V時,由上述方程可求得

RP1?=?6.402kΩ

現(xiàn)選取RP1?=?10kΩ的精密多圈電位器。當(dāng)CPU輸入電壓控制字(10111100)2?=?(198)10時,Ui?=?3.882V,調(diào)節(jié)RP1,使Uo?=?9.9V。由圖5-16所示,VT10、VT11構(gòu)成過流保護電路。當(dāng)正常工作時,VT10集成電路電壓為-15V,使VT8截止,A點輸出高電平,不觸發(fā)中斷。當(dāng)輸出電流過大(如Io>500mA)時,取樣電阻R16上的壓降大于0.75?V。調(diào)節(jié)RP3使VT7的UBE>0.6V時,VT7管會導(dǎo)通,VT7的等電極電平提高,于是VT8也導(dǎo)通,A點呈現(xiàn)低電平,觸發(fā)9031中斷,執(zhí)行中斷保護程序。

3.軟件設(shè)計

1)主程序流程圖

主程序流程圖如圖5-17所示。

2)電壓步進增減流程圖

電壓步進增減流程圖如圖5-18所示。圖5-17主程序流程圖圖5-18電壓步進增減流程圖程序清單:

PORT EQU0FE00H

PORTA EQU0FE01H

PORTB EQU0FE02H

PORTC EQU0FE03H

DISP0 EQU30H

DISP1 EQU31H

DISP2 EQU32H

DISP3 EQU33H

DISP4 EQU34H

DISP5 EQU35H

DISP6 EQU36H

DISP7 EQU37H

WEI EQU38H ;位碼

DATB1 EQU27;乘0.54

DATB EQU50;除

PPPP EQU85

ADADH EQU0FB00H;AD地址

DAADH EQU ;DA地址

DBUFH EQU3CH;DA高四位

DBUFL EQU3DH;DA低八位

LENG1 EQU24;雙字節(jié)二進制變BCD,40H~44H

LENG2 EQU4

LENG3 EQU3

NUMB1 EQU40H

NUMB2 EQU43H

ORG 0000H

AJMP MAIN

ORG 000BH

AJMP LED

ORG 0013H

AJMP KEYSCAN

MAIN: CLR P1.1

SETB P1.1

CLR P1.1

MOV R0,#00H

MOV R1,#00H

MOV SP,#50H

SETB PT0

MOV TMOD,#01H

MOV TH0,#0F8H ;2ms,顯示掃描間隔

MOV TL0,#30H

SETB EA

SETB ET0

SETB TR0

SETB IT1

SETB EX1

CLR 00H ;電流千位合法位

CLR 01H ;顯示閃爍

MOV 3EH,#00H ;顯示數(shù)據(jù)

MOV 3FH,#00H

MOV 39H,#00H ;合字暫存

MOV 3CH,#00H

MOV 3DH,#00H

MOV 45H,#00H ;拆字暫存

SETB P1.0 ;過載

MOV DPTR,#PORT ;AB出C口入

MOV A,#03H

MOVX @DPTR,A

MOV DPTR,#PORTA ;列掃描輸出低電平

MOV A,#0H

MOVX @DPTR,A

MOV 3AH,#00H

MOV 3BH,#00H

MOV 30H,#0

MOV 31H,#0

MOV 32H,#0

MOV 33H,#0

MOV 34H,#0

MOV 35H,#0

MOV 36H,#0

MOV 37H,#0

MOV WEI,#00H

SETB RS0

SETB RS1

MOV R0,#DISP0;顯示指針,一定要用兩組

MOV R6,#8 ;顯示位數(shù)

MOV R1,#DISP0;鍵盤指針

MOV R7,#4 ;鍵盤位數(shù)

CLR RS0

CLR RS1

LOOP: ACALL LOOPP

ACALL DTOA

ACALL ATOD

AJMP LOOP

;******************電流設(shè)置子程序***************

LOOPP: MOV A,3AH

CJNE A,#15,PASS1

ACALL SETONE

PASS1: CJNE A,#10,PASS2

ACALL JIA

PASS2: CJNE A,#11,PASS3

ACALL JIAN

PASS3:

RET

;******************DA轉(zhuǎn)換子程序*****************

DTOA: PUSH PSW

SETB RS0

MOV R2,3CH

MOV R3,3DH

;MOV R2,#00H

;MOV R3,#00H

CLR P3.5

SETB P3.5

SETB P2.3

CLR C

CLR A

MOV A,R2

MOV R7,#4

LOOP11: RLC A

DJNZ R7,LOOP11

MOV R7,#4

LOOP22: LCALL PRD

DJNZ R7,LOOP22

CLR C

CLR A

MOV A,R3

MOV R7,#8

LOOP34: LCALL PRD

DJNZ R7,LOOP34

CPL P2.3

POP PSW

RET

PRD: RLC A

MOV P3.0,C

SETB P3.1

CPL P3.1

RET

;*****************************AD采樣子程序******************************

ATOD:

HUMID: MOV DPTR,#0FB00H

CLR A

MOVX @DPTR,A

WAIT: JNB P3.4,READ ;轉(zhuǎn)換結(jié)束信號

SJMP WAIT

READ: MOVX A,@DPTR

MOV B,#8

MUL AB

MOV 40H,A ;低位

MOV 41H,B ;高位

;MOV 40H,#0F8H

;MOV 41H,#07H

MOV 42H,#00H

;雙字節(jié)二進制變BCD

;入口二進制42H,41H,40H由高到低

;出口44H~43H,由高到低

MUBTD: MOV R0,#NUMB2

MOV R7,#LENG2

CLR A

LOOP18: MOV @R0,A

INC R0

DJNZ R7,LOOP18

MOV R7,#LENG1

LOOP48: MOV R1,#NUMB1

MOV R6,#LENG3

CLR C

LOOP28: MOV A,@R1

RLC A

MOV @R1,A

INC R1

DJNZ R6,LOOP28

MOV R5,#LENG2

MOV R0,#NUMB2

LOOP38: MOV A,@R0

ADDC A,@R0

DA A

MOV @R0,A

INC R0

DJNZ R5,LOOP38

DJNZ R7,LOOP48

;拆字程序*************

MOV R0,#DISP4

MOV A,44H

ACALL SEPA1

MOV R0,#DISP6

MOV A,43H

ACALL SEPA1

RET

SEPA1: MOV 45H,A

ANL A,#0F0H

SWAP A

MOV @R0,A

INC R0

MOV A,45H

ANL A,#0FH

;SWAP A

MOV @R0,A

;RET

MOV DPTR,#0FB01H

CLR A

MOVX @DPTR,A

WAIT1: JNB P3.4,READ1 ;轉(zhuǎn)換結(jié)束信號

SJMP WAIT1

READ1: MOVX A,@DPTR

CLR C

;MOV A,#68

CJNE A,#PPPP,LLI

LLI: JNC LL2 ;集電極電壓大于5V則不報警

CLR P1.0 ;負載電壓大于10V

RET

LL2: SETB P1.0

RET

;閉環(huán)*****************************

CLR C

MOV A,43H

SUBB A,3FH

MOV 46H,A ;低

MOV A,44H

SUBB A,3EH

MOV 47H,A ;高

;***********鍵盤顯示中斷程序*****************

;用定時中斷0顯示掃描,30H~37H是段碼存放地址,38H是位碼地址

;8155PB0~PB3段碼輸出,PB4~PB7位碼輸出

;用外部中斷1鍵盤掃描,PA0~PA3列掃描輸出,PC0~PC3;輸入,P2.0接CS,P2.1接IO/M

;出口數(shù)值是0~15,存在3AH中,3BH用作放鍵暫存

;用寄存器第3組

;已用R0,R2,R3,R4,R5,R6,其中R0,R6為顯示用,R1,R2,R3,R7為鍵盤用,R4,R5延時用

;*******************中斷顯示掃描子程序*****************

LED: PUSH PSW

PUSH ACC

PUSH B

PUSH DPH

PUSH DPL

SETB RS0

SETB RS1

MOV TH0,#0F8H;2MS

MOV TL0,#30H

MOV A,@R0

ADD A,WEI

MOV DPTR,#PORTB

MOVX @DPTR,A

MOV A,WEI

ADD A,#10H

MOV WEI,A

INC R0

;ACALL DELAY

DJNZ R6,LED1

MOV WEI,#00H

MOV R0,#DISP0

MOV R6,#8

LED1: POP DPL

POP DPH

POP B

POP ACC

POP PSW

RETI

;**************中斷鍵盤掃描子程序************

KEYSCAN:?PUSH PSW

PUSH ACC

PUSH B

PUSH DPH

PUSH DPL

SETB RS0

SETB RS1

ACALL DELAY1 ;消抖延時

JNB P3.3,LIST

MOV DPTR,#PORTA ;恢復(fù)B口輸出低電平

MOV A,#00H

MOVX @DPTR,A

POP DPL

POP DPH

POP B

POP ACC

POP PSW

RETI ;沒有按

LIST:MOV DPTR,#PORTC

MOVX A,@DPTR

MOV 3BH,A

MOV R2,#0FEH

MOV R3,#00H

LINE0:MOV DPTR,#PORTA

MOV A,R2

MOVX @DPTR,A

MOV DPTR,#PORTC

MOVX A,@DPTR

JB ACC.0,LINE1

MOV A,#0

AJMP TRYK

LINE1:JB ACC.1,LINE2

MOV A,#1

AJMP TRYK

LINE2:JB ACC.2,LINE3

MOV A,#2

AJMP TRYK

LINE3:JB ACC.3,NEXT

MOV A,#3

AJMP TRYK

NEXT:INC R3

MOV A,R3

ADD A,#4

MOV R3,A

MOV A,R2

JNB ACC.3,EXIT

RL A

MOV R2,A

AJMP LINE0

EXIT:MOV DPTR,#PORTA ;恢復(fù)B口輸出低電平

MOV A,#00H

MOVX @DPTR,A

POP DPL

POP DPH

POP B

POP ACC

POP PSW

RETI ;沒有按

TRYK:ADD A,R3

MOV 3AH,A

LETK:MOV DPTR,#PORTC

MOVX A,@DPTR

XRL A,3BH

JZ LETK

MOV DPTR,#PORTA ;恢復(fù)B口輸出低電平

MOV A,#00H

MOVX @DPTR,A

POP DPL

POP DPH

POP B

POP ACC

POP PSW

RETI

;*******************電流設(shè)置****************

SETONE:

SETB RS0

SETB RS1

;SETB 01H ;置顯示閃爍位

SETONE1:MOV A,3AH

CJNE A,#10,L1

L1:JNC SETONE1

JB 00H,L3

CJNE A,#2,L2 ;2000MA

MOV DISP0,#2

MOV DISP1,#0

MOV DISP2,#0

MOV DISP3,#0

;CLR 01H

CLR RS0

CLR RS1

PUSH PSW

SETB RS1

ACALL BCDHEX;十六位BCD變十六進制

ACALL SUBBV ;*2再送DA

POP PSW

CLR A

RET

L2:MOV 3AH,#0FFH

JNC SETONE1

SETB 00H

L3:MOV @R1,A ;即時刷新顯示緩沖區(qū)

INC R1

MOV 3AH,#0FFH

DJNZ R7,SETONE

MOV R7,#4

MOV R1,#30H

CLR 00H

;CLR 01H

CLR RS0

CLR RS1

PUSH PSW

SETB RS1

ACALL BCDHEX ;16字節(jié)BCD變二進制

ACALL SUBBV ;*5/8

POP PSW

CLR A

RET

;**********加電流

JIA:MOV 3AH,#0FFH

MOV A,DISP3

INC A

MOV DISP3,A

CJNE A,#10,OUT

MOV DISP3,#0

MOV A,DISP2

INC A

MOV DISP2,A

CJNE A,#10,OUT

MOV DISP2,#0

MOV A,DISP1

INC A

MOV DISP1,A

CJNE A,#10,OUT

MOV DISP1,#0

MOV A,DISP0

INC A

MOV DISP0,A

CJNE A,#2,OUT

MOV DISP0,#1

MOV DISP1,#9

MOV DISP2,#9

MOV DISP3,#9

OUT:PUSH PSW

SETB RS1

ACALL BCDHEX

ACALL SUBBV

POP PSW

CLR A

RET

;**********減電流

JIAN:MOV 3AH,#0FFH

MOV A,DISP3

DEC A

MOV DISP3,A

CJNE A,#0FFH,OUT1

MOV DISP3,#9

MOV A,DISP2

DEC A

MOV DISP2,A

CJNE A,#0FFH,OUT1

MOV DISP2,#9

MOV A,DISP1

DEC A

MOV DISP1,A

CJNE A,#0FFH,OUT1

MOV DISP1,#9

MOV A,DISP0

DEC A

MOV DISP0,A

CJNE A,#0FFH,OUT1

MOV DISP0,#0

MOV DISP1,#0

MOV DISP2,#0

MOV DISP3,#0OUT1:

PUSH PSW

SETB RS1

ACALL BCDHEX

ACALL SUBBV

POP PSW

CLR A

RET

BCDHEX:

MOV R7,#03H

MOV R0,#DISP0

CLR A

MOV R1,A

MOV R2,A

MOV R4,A

MOV R5,A

MOV R3,A

MOV A,@R0

MOV R1,A

CLR C

LOOP16:MOV A,R1

ADD A,R1

MOV R1,A

MOV A,R2

ADDC A,R2

MOV R2,A

MOV A,R1

MOV R3,A

MOV A,R2

MOV R4,A

MOV A,R1

ADD A,R1

MOV R1,A

MOV A,R2

ADDC A,R2

MOV R2,A

MOV A,R1

ADD A,R1

MOV R1,A

MOV A,R2

ADDC A,R2

MOV R2,A

MOV A,R1

ADD A,R3

MOV R1,A

MOV A,R2

ADDC A,R4

MOV R2,A

INC

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論