單片機控制的數(shù)控電源_第1頁
單片機控制的數(shù)控電源_第2頁
單片機控制的數(shù)控電源_第3頁
單片機控制的數(shù)控電源_第4頁
單片機控制的數(shù)控電源_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、摘要:本文介紹了一種以AT89S51單片機為核心設(shè)計制作的數(shù)控電源裝置。它通過逐步按下按鈕來調(diào)整輸出電壓。設(shè)備可實時顯示電壓調(diào)整過程和輸出電壓結(jié)果。電壓調(diào)節(jié)范圍寬,精度高,調(diào)節(jié)方便。同時具有電流監(jiān)測過流保護功能。它是計算機技術(shù)與數(shù)模轉(zhuǎn)換技術(shù)相結(jié)合的一種具體應(yīng)用。關(guān)鍵詞:鍵盤、步進、顯示、調(diào)整、D/A轉(zhuǎn)換前言:直流穩(wěn)壓電源常用于電子技術(shù)領(lǐng)域,廣泛應(yīng)用于電子設(shè)備的科研、生產(chǎn)和生產(chǎn)。在生活的各個領(lǐng)域中,傳統(tǒng)直流電源輸出電壓的調(diào)節(jié)需要通過粗調(diào)(波段開關(guān))和微調(diào)(電位器)來調(diào)節(jié)。當(dāng)電壓變化0.1V時,難度較大,不易實現(xiàn)。使用時間長了,波段開關(guān)和電位器難免接觸不良,電阻值發(fā)生變化,勢必影響輸出電壓的調(diào)節(jié)效

2、果。在普通直流電源中,常使用指針式電壓表來指示電壓的大小。這種儀表誤差較大,指示的電壓值只能作為參考。不能準(zhǔn)確顯示實際電壓值,精度差。從直流穩(wěn)壓電源的結(jié)構(gòu)來看,直流穩(wěn)壓電源大多采用串聯(lián)穩(wěn)壓電路來限制過載電流或采用電流切斷保護電路。電路復(fù)雜,穩(wěn)壓精度不高。現(xiàn)代科學(xué)技術(shù)正在發(fā)生突飛猛進的變化。數(shù)字技術(shù)與微機技術(shù)相結(jié)合,實現(xiàn)了直流電源的智能化開發(fā)和應(yīng)用,既可以解決傳統(tǒng)直流穩(wěn)壓電源的各種問題,又可以實現(xiàn)傳統(tǒng)直流穩(wěn)壓電源。不可能的功能。這是電源技術(shù)的一個里程碑,而本文介紹的單片機數(shù)控電源的設(shè)計就是這兩種技術(shù)的具體應(yīng)用。文本一、程序的選擇數(shù)控電源電路中電壓的逐級調(diào)整有三種方案。首先是使用標(biāo)準(zhǔn)邏輯器件,由于

3、集成度低,很難改變。二是采用PLC等可編程邏輯器件,外圍元件少,可根據(jù)現(xiàn)場工控設(shè)備的實際控制要求,改變設(shè)計程序即可滿足。編程簡單,但價格和成本相對較高。三是采用單片機等微處理器,通過編程可以方便地滿足控制要求,信號處理容易實現(xiàn),成本低。二、設(shè)計要求:輸出電壓為:0.0V 9.9V2:輸出電壓的調(diào)整方式為步進式,步進式表示每按一次按鍵,電壓有0.1V的變化。3:最大輸出電流為100mA。4:電路具有過流保護功能。5:用兩位數(shù)碼管顯示電壓的調(diào)整過程和輸出電壓的大小。三、硬件設(shè)計框圖如下數(shù)碼管顯示電路數(shù)碼管顯示電路 鍵盤電路鍵盤電路單片機電路單片機電路數(shù)字數(shù)字/模擬轉(zhuǎn)換電路 模擬信號放大電路模擬信號

4、放大電路 負載負載過流保護電路過流保護電路 如圖,通過鍵盤按下需要輸出的電壓,每一步向單片機輸入0.1V,單片機驅(qū)動數(shù)碼管顯示電壓的過程調(diào)整。調(diào)整完成后,將數(shù)碼管顯示的十進制數(shù)發(fā)送給數(shù)碼管。在模擬轉(zhuǎn)換電路DAC0832的數(shù)據(jù)線上進行D/A轉(zhuǎn)換。此時數(shù)碼管顯示的數(shù)據(jù)不僅是送D/A轉(zhuǎn)換的十進制數(shù),即BCD碼(00H99H),還有數(shù)控電源輸出的電壓值。輸出電壓范圍為(0.0V 9.9V)。數(shù)模轉(zhuǎn)換電路輸出的模擬電壓很小。模擬信號的電壓經(jīng)外接補償運放LM301放大,使輸出電壓與數(shù)碼管顯示的數(shù)值一致,滿足負載的實際要求。經(jīng)過三極管的電流放大電路后,輸出電流增大,負載變化對輸出電壓的影響減小,負載上的電壓

5、穩(wěn)定。為了防止在負載電阻變得很小的情況下輸出電流過大而危及電源的安全,即使在電源輸出端短路的情況下,也增加了一級電流保護電路到電路。當(dāng)輸出電流超過允許值時,過流保護動作,關(guān)閉D/A轉(zhuǎn)換電路,使輸出電壓為0,同時給出報警信號。這是對這種壓力調(diào)節(jié)裝置的整個工作過程的簡要說明。四、本設(shè)備使用的主要硬件簡述:1:單片機AT89S51由ATMEL公司生產(chǎn),采用PDIP-40封裝。它具有4KB在系統(tǒng)可編程FLASH程序存儲器ROM和256B數(shù)據(jù)存儲器RAM,可外部擴展至64KB。外部程序存儲器 ROM 被統(tǒng)一尋址。是的,內(nèi)部ROM地址從0000H到0FFFH,外部ROM地址從1000H到0FFFFH,RO

6、M總共有64KB。外部數(shù)據(jù)存儲器 RAM 單獨尋址。內(nèi)部RAM的地址從0000H到00FFH,共有256B。外部 RAM 的地址為 0000H 到 0FFFFH,共有 64KB。 CSVCCAT89S51單片機具有時鐘靜態(tài)工作模式,降低了自身功耗,非常適合便攜式儀器。該單片機的外部40個引腳和功能與INTEL公司的8051系列單片機相同,應(yīng)用指令和時鐘頻率相同,此處不再贅述。 CSVCC WR1ILE1 20 2 193 184 175 166 157 148 139 1210 114 WR1ILE1 20 2 193 184 175 166 157 148 139 1210 114 sAGN

7、DXFERWR2是與MCS51系列微控制器完全接口AGNDXFERWR2DI4 DI2 DI3兼容的匹配數(shù)字/模擬,8 位分辨率DI4 DI2 DI3 DI1DI6DI5轉(zhuǎn)換芯片,其PDIP-20 pinout如圖 DI1DI6DI5DI7 VR DI0DI7 VR DI0IOUT2 RFIOUT2 RFIOUT1DGNDIOUT1DGNDDI0 - DI7為8位數(shù)據(jù)輸入線,VR接參考電源,IOUT1和IOUT2用于輸出模擬電流,RFB用于將輸出端的反饋信號引入芯片。 CS為片選信號,WR1為輸入鎖存寫選通信號,ILE為輸入鎖存使能信號。當(dāng) CS 和 WR1 為低電平,ILE 為高電平時,輸入

8、鎖存器的使能信號 LE1 有效,單片機傳輸?shù)臄?shù)據(jù)通過 DI0-DI7 數(shù)據(jù)線鎖入輸入鎖存器。 XFER為數(shù)據(jù)傳輸控制信號輸入線,WR2為DAC寄存器寫選通信號輸入線。當(dāng)XFER和WR2同時有效時,DAC鎖存器的使能信號LE2有效,再次鎖定輸入鎖存器的鎖存數(shù)據(jù)。將其存儲在DAC鎖存器中,同時進入D/A轉(zhuǎn)換器開始轉(zhuǎn)換為模擬信號。AGND為芯片模擬電路的接地點,DGND為芯片數(shù)字電路的接地點。將 DACO832 連接到微控制器有三種方法,如下所述。(1) 直通模式:CS、WR1、WR2、XFER 信號管腳均直接接地。當(dāng) ILE 引腳接高電平時,輸入鎖存器和 DAC 鎖存器處于直通模式。一旦8位數(shù)字量

9、送入DI0-DI7數(shù)據(jù)輸入線,立即進行D/A轉(zhuǎn)換,直接完成一次D/A轉(zhuǎn)換,無需選通。這種方法簡單,很少使用。(2)單緩沖方式:WR2和XFER直接接地,使DAC鎖存器處于直通狀態(tài),輸入鎖存器處于受控狀態(tài)。只要數(shù)據(jù)通過輸入鎖存器,就可以完成D/A轉(zhuǎn)換,有一個門控過程。(3)雙緩沖模式:輸入鎖存器和DAC鎖存器都處于受控狀態(tài)。這時,當(dāng)單片機的數(shù)據(jù)送到8位數(shù)據(jù)線時,經(jīng)過兩次選通就可以完成D/A轉(zhuǎn)換。它的優(yōu)點是可以同時進行數(shù)據(jù)接收和轉(zhuǎn)換的啟動。下一個數(shù)據(jù)可以在 D/A 轉(zhuǎn)換的同時接收。提高了轉(zhuǎn)換速度。該裝置不強調(diào)工作速度,可輸出轉(zhuǎn)換后的模擬電流,與單片機直通連接。3:運算放大器LM324它由4組相同的

10、運算放大器組成,是一種高倍率的直接耦合、線性集成放大器。每組運算器有兩個輸入端(同相輸入端和反相輸入端)和一個輸出端。使用時可作為反相比例放大器,信號可從反相端輸入。作為同相比例放大器,信號可以從同相端輸入。用作微分比例放大器時,可以同時從正負端輸入信號。 LM324 可用于放大直流信號。本設(shè)備使用LM324將DAC0832輸出的模擬電流轉(zhuǎn)換為模擬電壓輸出,后面的調(diào)試過程會介紹。RG RG1 82 73 64 54RG RG1 82 73 64 5V+VIN-INA126 的引腳如左圖所示V+VIN-V0VINV0VINREFVREFVINA126 是一款用于便攜式儀器和數(shù)據(jù)采集系統(tǒng)的低噪聲差

11、分信號采集精密儀器放大器該部分設(shè)計有兩個運算放大器。 INA126 用于單電源時,其共模電壓為 1/2VCC。如果使用的傳感器是橋式傳感器,則中點電位為 1/2VCC。當(dāng)輸入信號為0時,輸出直流電壓為1/2VCC。在兩個 RG 1 和 8 之間連接一個可調(diào)電阻,以調(diào)節(jié) INA126 的電壓放大倍數(shù)。其參數(shù)如下a:寬電源電壓供電范圍:(1.35V18V)b:低失調(diào)電壓:最大 250Ac:低失調(diào)漂移電壓:最大 3V/度d:低靜態(tài)電流:最大 175Ae:低噪音:380dB maxf:低輸入偏置電流:(+250nA-250nA )該裝置采用可調(diào)電阻W2調(diào)節(jié)INA126的電壓放大倍數(shù),使數(shù)控電源輸出電流

12、為100mA時,74LS14的輸出電壓反向,輸出為低電平,單片機進入外部中斷0的中斷服務(wù)程序。5:顯示解碼驅(qū)動MC14495MC14495可將十六進制數(shù)對應(yīng)的BCD碼翻譯成可在數(shù)碼管上顯示的七段字符碼,驅(qū)動LED數(shù)碼管點亮顯示芯片。6:與門芯片CD4082BECD4082是一個4輸入1輸出的與門電路。當(dāng)所有 4 個輸入為高時,輸出為高,當(dāng)一個輸入為低時,輸出為低。電路中,CD4082輸出的低電平使單片機進入外部中斷1的中斷服務(wù)程序。7:外補通用運算放大器LM301LM301是一款單片通用外補償運算放大器,具有輸入輸出過載保護、零失調(diào)電壓調(diào)節(jié)、無阻塞現(xiàn)象、輸入電流小、保證漂移。最大電源電壓為18

13、V,最大輸入失調(diào)電壓為10V,最大溫漂電壓為30V/度,最大輸入失調(diào)電流為70PA,最大輸入偏置電流為0.3A。本裝置采用LM301將LM324輸出的模擬電壓放大到與數(shù)碼管顯示的數(shù)據(jù)相同。電路中使用的其他元件的型號規(guī)格見附錄二。五、軟件程序設(shè)計程序中使用外部中斷 0 和外部中斷 1,外部中斷 0 用于 CNC 電源輸出電流過大時進行保護。關(guān)閉 D/A 轉(zhuǎn)換并顯示報警信息。由于過流保護的重要性,其中斷優(yōu)先級設(shè)置為高。外部中斷 1 用于 4 個按鍵的操作,分別是數(shù)字選擇鍵、遞增鍵、遞減鍵和 D/A 轉(zhuǎn)換鍵。單片機開機時,單片機初始化,兩個數(shù)碼管都顯示0,負載上沒有電壓。當(dāng)鍵盤上的任意鍵被按下時,單

14、片機程序進入外部中斷1。在這個中斷服務(wù)程序中,首先延遲按鍵的抖動以消除抖動。然后判斷是否有按鍵按下,如果沒有按鍵則返回主程序。如果某個鍵被按下,則根據(jù)被按下的鍵的鍵號產(chǎn)生相應(yīng)的操作,執(zhí)行后返回主程序。按 K1 鍵確定要調(diào)整的數(shù)字。每按一次,數(shù)碼管交替顯示00和01。 00 表示要調(diào)整的十位,01 表示要調(diào)整的一位。按K2鍵相應(yīng)位加1,按K3鍵相應(yīng)位減1。兩個數(shù)碼管分別顯示電壓調(diào)整過程。使用寄存器R3 保存十位數(shù)值,使用寄存器R5 保存一位數(shù)值。通過按K2和K3調(diào)出一個數(shù)據(jù),按K4時,R3和R5這兩個寄存器中的數(shù)字組成一個十進制數(shù),送到DAC0832完成數(shù)模轉(zhuǎn)換。寄存器R3和R5用于存放程序中的

15、數(shù)字,有利于十進制數(shù)的兩位數(shù)的調(diào)試和組合。程序流程圖見附錄3程序見附錄四,六、調(diào)試過程單片機數(shù)控電源工作原理見附錄1,數(shù)控電源輸出電壓通過手動按鈕步進調(diào)節(jié),每步進0.1V,輸出電壓范圍為( 0.0V 9.9 V),調(diào)整電壓一共需要99步,BCD碼為(00H99H),其數(shù)字量為十六進制數(shù)(00H63H),發(fā)送到DAC0832的8位數(shù)據(jù)線,公式為數(shù)模轉(zhuǎn)換為:255/5=D/A。D為已知數(shù)字量,模擬電壓A=5D/255,最大輸出模擬電壓A=599/255,計算A=1.94V,所需輸出電壓為9.9V,則電壓放大倍數(shù)為Av=9.9/1.94=5.1倍。按鍵盤輸入DAC0832數(shù)字量,測量LM324轉(zhuǎn)換后

16、的模擬輸出電壓,與理論計算的輸出電壓數(shù)據(jù)比較如下。表1:DAC0832數(shù)模轉(zhuǎn)換電路測試結(jié)果表,輸入數(shù)據(jù)理論輸出模擬電壓/V實測輸出模擬電壓/V絕對誤差/相對誤差/%00H0.000.000.000.010H-0.31-0.300.013.220H-0.63-0.620.011.630H-0.94-0.930.011.140小時-1.25-1.240.010.850小時-1.57-1.550.021.360H-1.88-1.860.021,163H-1.94-1.920.021.0由上表可知,經(jīng)DAC0832數(shù)模轉(zhuǎn)換后LM324輸出端測得的模擬電壓與理論推導(dǎo)數(shù)據(jù)存在一定誤差。LM301用于放大L

17、M324經(jīng)過數(shù)模轉(zhuǎn)換后輸出的模擬電壓。從附錄1的原理圖可以看出,DAC0832輸出的電流模擬信號從IOUT1送到LM324的反相端。這是一個反相運算放大器。輸出模擬電壓為負值。再經(jīng)LM301放大,與兩位數(shù)碼管的數(shù)據(jù)相同。 .三極管T1和T2組成的達林頓管結(jié)構(gòu)的發(fā)射極輸出器件放大負載的電流,會降低數(shù)控電源的輸出電阻,使負載變小,即輸出電流較大時,數(shù)控電源的輸出電壓會下降。不要太多。 LM301反饋電阻接法可以進一步降低其輸出電阻,穩(wěn)定數(shù)控電源的輸出電壓。以下是數(shù)控電源輸出端接100歐負載時實測輸出電壓與所需輸出電壓數(shù)據(jù)對比表表二:所需輸出電壓/V實測傳輸電壓/V絕對誤差相對誤差%0.00.000

18、.000.001.01.01+0.011.002.02.01+0.010.503.03.01+0.010.334.04.02+0.020.505.05.02+0.020.406.06.03+0.030.507.07.04+0.040.578.08.05+0.050.629.09.04+0.040.44通過表2和表1的分析比較,測得的輸出電壓經(jīng)運放LM301放大調(diào)整后,所需的電壓誤差精度高于LM324的輸出電壓誤差精度。數(shù)控電源的過流保護來自采樣電阻R9上的電壓。采樣電阻R9與負載RL串聯(lián)。與RL相比,R9的電阻極小。正常工作時,其上的電壓降很小。它不會影響 RL 上的電壓。當(dāng)輸出電流增加時,R

19、9上的電壓增加,R9并聯(lián)到差分精密儀表運算放大器INA126的IN+和IN-輸入端。調(diào)節(jié)INA126的1、8腳兩個RG端的電位器W2,確定INA126的電壓放大倍數(shù)。當(dāng)輸出電流達到保護動作值時,R9上的電壓升高,INA126的輸出電壓進行反向施密特觸發(fā)器比較。器件 74LS14 的輸出從高電平 5V 翻轉(zhuǎn)到低電平 0V。這個低電平信號被送到AT89S51 MCU的外部中斷0(INT0),使MCU程序進入外部中斷0的服務(wù)程序。在這個程序中,00H數(shù)據(jù)被送到DAC0832,D/ A轉(zhuǎn)換關(guān)閉,負載上的輸出電壓為0V,兩個數(shù)碼管同時顯示EE的報警信號。此時,根據(jù)實際情況,按鍵盤調(diào)出相應(yīng)的數(shù)據(jù),發(fā)送給D

20、AC0832,使輸出電壓滿足負載要求。表3:負載為100歐時,測量計算得到的過流保護電路數(shù)據(jù)如表所示NC電源輸出電壓/V0.002.014.026.038.0410.05數(shù)控電源輸出電流/mA0.0020.140.260.380.4100.5INA126 輸出電壓/V0.000.601.231.862.493.1174LS14輸出電壓/V5.005.005.005.005.000.20當(dāng)數(shù)控電源輸出電流達到100.5mA時,INA126的輸出電壓為3.11V,使74LS14的輸出電平反轉(zhuǎn)。七、注意事項1:本設(shè)備供電電壓為+12V、-12V、+5V。單片機AT89S51和數(shù)模轉(zhuǎn)換DAC0832采

21、用+5V電壓供電,運放LM324和差分精密儀表放大器INA126采用+12V和-12V兩種電壓供電。注意不要給單片機加12V電壓,或者電路中的任何5V電源,以免燒壞單片機等意外。2:采用步進法調(diào)整數(shù)據(jù)時,輸出電壓不能隨之變化,使調(diào)整過程中加在負載上的電壓不能滿足要求。完成數(shù)據(jù)的步進調(diào)整后,再次按K4鍵,實現(xiàn)D/A轉(zhuǎn)換,輸出電壓給負載綜上所述:本裝置采用單片機和各種芯片設(shè)計制造數(shù)控直流電源。電源的輸出電壓由鍵盤逐步調(diào)整。這種電壓調(diào)節(jié)方法比使用電位器更方便、更準(zhǔn)確。每次調(diào)整的電壓僅為0.1V,提高了精度。用數(shù)碼管顯示電壓調(diào)整過程和輸出電壓比指針表更準(zhǔn)確直觀。分兩步調(diào)節(jié)電壓和輸出電壓,使電壓滿足負載

22、的要求。輸出電流采用閉環(huán)實時監(jiān)控保護,提高了設(shè)備的使用功能。如果在該電路中加入變壓器、整流器、濾波和功率放大器,并在軟件程序設(shè)計中考慮抗干擾因素,可用于10V以下精確穩(wěn)壓的實用電源。至:在撰寫論文的過程中,我得到了石瑞馬電源秀研工程師的大力幫助,在此表示感謝。由于本人知識有限,寫作時間短,有些問題沒有完全理解,解釋不好,文中的錯漏在所難免。觀點。參考文獻。1:王維清、邱文勛。 51單片機應(yīng)用開發(fā)案例精選:人民郵電,2007.72 :何建國。單片機在電子電路設(shè)計中的應(yīng)用。:清華大學(xué),2006.53:史文華。單片機原理與應(yīng)用:中國電力,2005.24:大明。單片機控制應(yīng)用技術(shù):機械工業(yè),2006.

23、45:傅家菜。單片機控制工程實用技術(shù):化工,2004.5附錄一:MCU數(shù)控電源工作原理圖附錄二:組件列表序列號元件符號組件名稱型號規(guī)格數(shù)量評論1R1R4碳膜電阻器RXT-5.1K-1/4W42R5碳膜電阻器RXT-4.7K-1/4W13R6、R7、R10碳膜電阻器RXT-10K-1/4W34R8碳膜電阻器RXT-47K-1/4W15R9碳膜電阻器RXT-5R-1/4W16W1可調(diào)電阻134T-8.7K17W2可調(diào)電阻B102AE-1K18C1電解電容器CXD-10UF-25V19C2、C3陶瓷電容器CP-30PF210H晶體振蕩器12MHZ111T1, T2三極管S9014-C331212引領(lǐng)

24、數(shù)碼管ULS-3161AS213K1K4按鈕414U1運算放大器LM324115U2單片機AT89S51116U3BCD解碼驅(qū)動MC14495217U4數(shù)模轉(zhuǎn)換DAC0832118U5精密儀表放大器INA126119U6六個反相施密特觸發(fā)器74LS14120U7四輸入與門集成塊CD4082BE1附錄 3:程序流程圖1:主程序和外部中斷0過流保護報警程序開始開始系統(tǒng)初始化系統(tǒng)初始化開中斷開中斷0和中斷130H30H,40H,50H內(nèi)容清零等中斷等中斷結(jié)束結(jié)束NONOINT1=0INT0=0NONOINT1=0INT0=0YESYESYESYESA P2A 0EEHA P2A 0EEHA (A)A

25、 (A)0FHP1 A20H AP0 00H20H AP0 00H延時延時10毫秒按鍵去抖動A P2A P2A (A (A)0FHNOA=20HNOA=20HYESYESD/A轉(zhuǎn)換數(shù)值減少數(shù)值增加數(shù)據(jù)位選擇D/A轉(zhuǎn)換數(shù)值減少數(shù)值增加數(shù)據(jù)位選擇A=20H2:數(shù)據(jù)位選擇程序A=20HNOP2.0=0NOP2.0=0YES主YES主SA 50HA 50HA=0A=0NOYESNOYES50H 50H 00H50H 01HP1 (P1 (50H)等中斷等中斷A=20H3:D/A轉(zhuǎn)換程序A=20HNOP2.3=0NOP2.3=0YESYES A R3 A R3A3A30 A7A (A (A)R5DPTR

26、 ADPTR AP1 AP1 A等中斷等中斷A=20H4:數(shù)值增量程序A=20HNOP2.1=0NOP2.1=0YESYESA 50HA 50HA=0A=0調(diào)十位調(diào)個位NOYES調(diào)十位調(diào)個位NOYESA 40HA 30HA 40HA 30H P1 A R3 A P1 A R3 A R5 AA3 R5 AA30 A7 P1 A40H ( P1 A40H (40H)+130H (30H (30H)+1NOR5=09HR3=NOR5=09HR3=09HNOYESYESYESYES40H 00H30H 00H40H 00H30H 00H等中斷等中斷A=20H5:數(shù)值縮減程序A=20HNOP2.2=0N

27、OP2.2=0YESYESA 50H(505A 50H(505A=0A=0調(diào)十位NO調(diào)個位YES調(diào)十位NO調(diào)個位YESA 30HA 40HA 30HA 40H R3 A P1 A R3 A P1 AA30 AA30 A7 R5 A P1 A P1 A40H (40H)40H (40H)130H (30H)1 A R3 A R3NONOA=00HNONOA=00HA=00HYESYESYESYES40H 09H30H 09H40H 09H30H 09H等中斷等中斷附錄四:程序組織結(jié)構(gòu) 0000H ;主程序啟動LJMP 主要;主程序跳轉(zhuǎn)到 MAIN組織機構(gòu) 0003H ;外部中斷0入口地址LJMP

28、 WZT0;外部中斷 0 跳轉(zhuǎn)到 WZT0組織機構(gòu) 0013H;外部中斷1入口地址LJMP WZT1;外部中斷1跳轉(zhuǎn)到WZT1有機玻璃 0100H ;主程序在標(biāo)號為MAIN且地址為0100H的地方執(zhí)行主:MOV SP,#70H ;設(shè)置堆棧指針地址為70H移動IE,#85H;打開中斷0和中斷1SETB IT1;外設(shè)中斷 1 觸發(fā)方式為負脈沖下降沿CLR IT0;外設(shè)中斷0觸發(fā)方式為低電平SETB PX0;外圍中斷是高優(yōu)先級MOV P0,#00H ; DAC0832 輸出的數(shù)據(jù)為 00HMOV P1,#00H ;兩個數(shù)碼管都顯示0MOV P2,#0FFH ;將P2口設(shè)置為鍵盤輸入口移動 30H,

29、#00H ;輸出電壓十位緩沖存儲器30H容量為00H移動 40H, #00H ;輸出電壓個位緩沖存儲器 40H 為 00H移動 50H, #00H ;十位和個位的選擇緩沖存儲器 50H 為 00HSJMP $;主程序在這里等待中斷有機玻璃 0200H;外部中斷 1 在標(biāo)簽 WZT1 和地址 0200H 處執(zhí)行WZT1:推PSW;將 PSW 壓入堆棧推加速;將 ACC 壓入堆棧SETB RS1;注冊選擇組 2MOV A,P2;將端口P2的每個key的內(nèi)容讀入累加器ANL A,#0FH ;只保留讀取數(shù)據(jù)的低四位移動 20H,A ;數(shù)據(jù)結(jié)果存儲在20H呼叫蒂姆斯;延遲0.1秒,消除按鍵抖動MOV A

30、, P2 ;延遲時間到后,讀取P2的數(shù)據(jù)ANL A, #0FH ;保留P2數(shù)據(jù)的低四位CJNE A,20H,關(guān)鍵;比較A和20H中的內(nèi)容,如果沒有按鍵,則轉(zhuǎn)到KEY,如果有按鍵,則執(zhí)行序列JNB P2.0,KEY0 ;判斷數(shù)據(jù)位選擇鍵是否按下JNB P2.1,KEY1 ;判斷數(shù)據(jù)增加鍵是否被按下JNB P2.2,KEY2;判斷是否按下了數(shù)據(jù)縮減鍵JNB P2.3,KEY3;判斷數(shù)模轉(zhuǎn)換鍵是否按下KEY:POP ACC;當(dāng)沒有按鍵被按下時,將 ACC 和 PSW 的內(nèi)容彈出堆棧POP PSW視網(wǎng)膜;中斷結(jié)束,返回主程序SJMP$繼續(xù)等待中斷KEY0:AJMP KEY00 ;由數(shù)據(jù)位選擇的程序在標(biāo)

31、簽 KEY00 處執(zhí)行KEY1:AJMP KEY10 ;數(shù)據(jù)添加程序在標(biāo)簽KEY10中執(zhí)行KEY2:AJMP KEY20;數(shù)據(jù)縮減程序在標(biāo)簽 KEY20 處執(zhí)行KEY3:MOV A,R3;進行數(shù)模轉(zhuǎn)換,讀取R3的十位數(shù)據(jù)內(nèi)容交換一個; A的高低四位交換奧爾拉,R5; A 和 R5 位數(shù)據(jù)兼容 OR 操作,存儲在 AMOV P1,A;結(jié)果發(fā)送到P1端口讓數(shù)碼管顯示發(fā)送到DAC0832的數(shù)據(jù)MOV P0,A ;結(jié)果發(fā)送到端口 P0 開始數(shù)模轉(zhuǎn)換LJMP 密鑰;數(shù)模轉(zhuǎn)換程序完成,返回主程序KEY00:MOV A,50H;數(shù)據(jù)位選擇,50H內(nèi)讀取數(shù)據(jù)JZ KEY01;判斷(A)=00H,轉(zhuǎn)KEY01M

32、OV 50H, #00H ;(A)=01H, 發(fā)送 00H 到 50HSJMP KEY02;轉(zhuǎn)到KEY02KEY01:MOV 50H,#01H;(A)=00H,發(fā)送01H到50HKEY02:MOV A,50H;讀入 50HANL A,#0FH;保留50H的低四位數(shù)據(jù)移動 P1,A ;發(fā)送 50H 到端口 P1 進行顯示LJMP 鍵;返回主程序KEY10:MOV A,50H;數(shù)據(jù)增加執(zhí)行,讀取50H數(shù)據(jù)JZ KEY12 ;根據(jù)50H中的數(shù)據(jù)判斷是增加個位還是十位MOV A,40H; (50H)=01H,將要加的一位讀入一位寄存器的40H數(shù)據(jù)移動 P1,A ;顯示40H數(shù)據(jù)MOV R5,A; 40H數(shù)據(jù)存儲在R5中CJNE R5,#09H,KEY11;如果40H存儲在R5中的數(shù)據(jù)不是09H,則傳輸?shù)終EY11移動 40H, #00H ;當(dāng)顯示的40H內(nèi)容為09H時,將40H內(nèi)容清0LJMP 密鑰KEY11:INC 40

溫馨提示

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

評論

0/150

提交評論