版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版品德與社會五年級上冊全冊教案
- 開發(fā)耐低溫材料保障極地工程安全
- 現(xiàn)代工程圖學(xué)習(xí)題集答案-第三版-主編楊裕根第3章
- 高一化學(xué)達標訓(xùn)練:第一單元化學(xué)反應(yīng)速率與反應(yīng)限度
- 2024屆西安市航空六一八中學(xué)高考化學(xué)四模試卷含解析
- 2024高中語文第一單元第2課裝在套子里的人提升訓(xùn)練含解析新人教版必修5
- 2024高考地理一輪復(fù)習(xí)第二章地球上的大氣第三講氣壓帶和風(fēng)帶學(xué)案
- 2024高考化學(xué)一輪復(fù)習(xí)第九章有機化合物第一講甲烷乙烯苯規(guī)范演練含解析新人教版
- 貸款違約調(diào)解協(xié)議書
- 大數(shù)據(jù)時代語言學(xué)
- 內(nèi)科胃癌護理查房
- 2024年廣東省公務(wù)員錄用考試《行測》試題及答案解析
- 蔣詩萌小品《誰殺死了周日》臺詞完整版
- 生涯發(fā)展展示
- 報價單(報價單模板)
- 2023年財務(wù)內(nèi)控管理模板
- 【家庭自制】 南北香腸配方及28種制作方法
- 電梯調(diào)度問題模型(共3頁)
- 廠房施工總結(jié)報告
- 公務(wù)員職務(wù)和級別工資檔次套改及級別對應(yīng)表
- GB∕T 41010-2021 生物降解塑料與制品降解性能及標識要求
評論
0/150
提交評論