基于單片機(jī)控制的智能穩(wěn)壓電源設(shè)計(jì)說明_第1頁
基于單片機(jī)控制的智能穩(wěn)壓電源設(shè)計(jì)說明_第2頁
基于單片機(jī)控制的智能穩(wěn)壓電源設(shè)計(jì)說明_第3頁
基于單片機(jī)控制的智能穩(wěn)壓電源設(shè)計(jì)說明_第4頁
基于單片機(jī)控制的智能穩(wěn)壓電源設(shè)計(jì)說明_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、. . . . 機(jī)電??茖W(xué)校基于單片機(jī)的智能穩(wěn)壓電源設(shè)計(jì):班級:學(xué)號:專業(yè):基于單片機(jī)控制的智能電源第1節(jié)引 言通信電源是保證通信暢通的基礎(chǔ),其基礎(chǔ)地位確保了電源專業(yè)將長久的興旺發(fā)展并保持其專業(yè)的穩(wěn)定性和獨(dú)立性,特殊的作用不會被其它專業(yè)所取代,所以自60年代以來通信電源事業(yè)一直方興未艾,技術(shù)在不斷的進(jìn)步,設(shè)備在不斷的更新,專業(yè)地位日益得到提高,特別是進(jìn)入90年代以來,隨著通信事業(yè)超常規(guī)的快速發(fā)展,電源專業(yè)尤為得到了長足的進(jìn)步,新型的電子器件、新設(shè)備、微電子技術(shù)、計(jì)算機(jī)集中監(jiān)控技術(shù)等正在廣泛的被通信電源所采用。全球通信電源技術(shù)發(fā)展呈現(xiàn)以下幾大趨勢:(1)高效率,高功率密度,高的使用環(huán)境溫度;運(yùn)營

2、商的設(shè)備不斷增多、用電量加劇、機(jī)房面積緊等客觀因素的存在,對電源產(chǎn)品提出了高效率、高功率密度、寬的使用環(huán)境溫度的要求。(2)網(wǎng)絡(luò)化智能化的監(jiān)控管理;隨著網(wǎng)絡(luò)的日益發(fā)展,巨大網(wǎng)絡(luò)設(shè)備需要大量人力、物力投在設(shè)備的管理和維護(hù)工作上,如:通信設(shè)施所處環(huán)境越來越復(fù)雜,人煙稀少、交通不便這些都增大了維護(hù)的難度。這對電源設(shè)備的監(jiān)控管理提出了新的要求。(3)全數(shù)字化控制;數(shù)字化技術(shù)的發(fā)展逐步表現(xiàn)出了傳統(tǒng)模擬技術(shù)無法實(shí)現(xiàn)的優(yōu)勢,如:采用全數(shù)字化控制技術(shù),有效縮小電源體積降低了成本,大大提高了設(shè)備的可靠性和對用戶的適應(yīng)性。(4)安全、防護(hù)、良好EMC指標(biāo);考慮到設(shè)備復(fù)雜的運(yùn)行環(huán)境,電源設(shè)備須滿足相關(guān)的安全、防護(hù)、

3、防雷標(biāo)準(zhǔn),才能保證電源的可靠運(yùn)行。(5)綠色環(huán)保;環(huán)保一方面的指標(biāo)是,通信電源的電流諧波符合要求。降低電源的輸入諧波,不但可以改善電源對電網(wǎng)的負(fù)載特性,減小給電網(wǎng)帶來的污染,也可減少對其他網(wǎng)絡(luò)設(shè)備的諧波干擾。另一個重要方面是,材料可循環(huán)利用和對環(huán)境無污染。這方面需要產(chǎn)品滿足WEEE、ROHS指令。WEEE、ROHS指令包括兩部分的容,即涉與循環(huán)再利用WEEE和限制使用有害物質(zhì)的ROHS。所以設(shè)計(jì)一個智能電源十分必要。1.1 智能電源系統(tǒng)概述信息事業(yè)的迅猛發(fā)展,給電源市場帶來了巨大的市場機(jī)會和挑戰(zhàn),同時對電源提出了一些新的需求。例如:多種物理設(shè)備放在一起,有電磁兼容的需求和機(jī)房面積與承重的要求;

4、網(wǎng)絡(luò)設(shè)備種類變多使電源的負(fù)載變大,負(fù)載種類變多,對電源效率和種類有要求;機(jī)房和基站數(shù)目增多,對電源的可靠性和易維護(hù)性提出更高的要求,以滿足無人值守需要。電源工作環(huán)境的差異對電源的應(yīng)用環(huán)境也提出了新的需求,如更強(qiáng)電網(wǎng)適應(yīng)能力、環(huán)境適應(yīng)能力等,戶外電源就是這一需求的典型代表。本次單片機(jī)課程設(shè)計(jì)是設(shè)計(jì)一個基于單片機(jī)的智能電源,硬件設(shè)計(jì)的主要任務(wù)是:蓄電池充電電路的設(shè)計(jì)、三組不同大小的電源設(shè)計(jì)、系統(tǒng)穩(wěn)壓電源設(shè)計(jì)、AD0809模數(shù)轉(zhuǎn)換電路設(shè)計(jì)、看門狗電路設(shè)計(jì)、顯示模塊設(shè)計(jì)、3-8譯碼電路設(shè)計(jì)、AT89C51基本工作電路設(shè)計(jì)、74LS161分頻器設(shè)計(jì)和輔助電路設(shè)計(jì);軟件設(shè)計(jì)的任務(wù)是:初始化程序設(shè)計(jì)、按鍵程

5、序設(shè)計(jì)、充放電控制程序設(shè)計(jì)、A/D轉(zhuǎn)換程序設(shè)計(jì)、過流保護(hù)程序設(shè)計(jì)、顯示程序設(shè)計(jì)。在硬件設(shè)計(jì)過程中,遇到的問題不是很大,但是在軟件的設(shè)計(jì)中,主要需要解決的問題是單片機(jī)端口不夠,必須復(fù)用。在AD0809采樣中,對電壓和電流的采樣的先后順序也需要注意。1.2 本設(shè)計(jì)任務(wù)和主要容本文主要介紹一種基于AT89C51單片機(jī)的智能電源設(shè)計(jì),該系統(tǒng)總共有三組電源輸出:一組輸出為12V,一組輸出3V、4.5V、6V、9V,一組輸出1.5V-12V的連續(xù)可調(diào)電壓;具有輸出電壓、電流的顯示功能;可更換的選擇其中一端輸出作為顯示;具有電流保護(hù)功能,電流超過2A的時候,系統(tǒng)停止電壓輸出,過流保護(hù)后必須按復(fù)位鍵該端才能重

6、新輸出;具有蓄電池供電,功率在20W時可連續(xù)工作5小時;還有充電控制電路和過放保護(hù)電路。第2節(jié)基于AT89C51智能電源系統(tǒng)硬件設(shè)計(jì)基于AT89C51單片機(jī)控制的智能電源系統(tǒng)的硬件設(shè)計(jì)是整個設(shè)計(jì)過程中的最重要的部分,也是最困難的部分。硬件設(shè)計(jì)需要充分了解各方的設(shè)計(jì)需求,確定合適的解決方案。啟動一個硬件開發(fā)項(xiàng)目,原始的推動力會來自于很多方面,比如市場的需要,基于整個系統(tǒng)架構(gòu)的需要,應(yīng)用軟件部門的功能實(shí)現(xiàn)需要,提高系統(tǒng)某方面能力的需要等等,所以作為一個硬件系統(tǒng)的設(shè)計(jì)者,要主動的去了解各個方面的需求,并且綜合起來,提出最合適的硬件解決方案。2.1 硬件設(shè)計(jì)的任務(wù)1. 蓄電池充電電路的設(shè)計(jì):為12V的

7、蓄電池充電,并且具有防止過充的功能。2. 三組不同大小的電源設(shè)計(jì):一組是12V的電源輸出、一組是3V、4.5V、6V、9V的電源輸出、一組是1.5V-12V的連續(xù)可調(diào)電源輸出。3. 系統(tǒng)穩(wěn)壓電源設(shè)計(jì):為整個系統(tǒng)提供12V和+5V穩(wěn)壓電源。4. AD0809模數(shù)轉(zhuǎn)換電路設(shè)計(jì):把模擬的電壓電流信號轉(zhuǎn)換成數(shù)字信號。5. 看門狗電路設(shè)計(jì):使單片機(jī)在程序跑飛的情況自動復(fù)位。6. 顯示模塊設(shè)計(jì):把輸出的電壓、電流顯示在顯示器上。7. 3-8譯碼電路設(shè)計(jì):譯碼電路選擇顯示的位置和AD采樣.8. AT89C51基本工作電路設(shè)計(jì):使單片機(jī)正常工作。9. 74LS161分頻器設(shè)計(jì):對AT89C51的ALE進(jìn)行4分

8、頻為AD0809提供時鐘頻率。10. 輔助電路設(shè)計(jì):單片機(jī)晶振電路、邏輯電路和按鍵電路。2.2 基于AT89C51智能電源系統(tǒng)設(shè)計(jì)框圖圖2-1是以AT89C51單片機(jī)為核心的智能電源系統(tǒng)硬件設(shè)計(jì)的結(jié)構(gòu)框圖。該測量系統(tǒng)主要由蓄電池充電模塊、12V電源輸出模塊、3V、4.5V、6V、9V的電源輸出模塊、1.5V-12V連續(xù)電壓電源模塊、AT89C51單片機(jī)、看門狗電路、顯示模塊、3-8譯碼模塊、分頻模塊和鍵盤模塊等組成。圖中12V的電源輸出模塊,3V、4.5V、6V、9V的電源輸出模塊,1.5V-12V連續(xù)電壓電源模塊通過AD0809模數(shù)轉(zhuǎn)換送到單片機(jī)。經(jīng)過單片機(jī)處理,輸出控制信號。同時也可以通過

9、鍵盤控制輸出的電壓的大小。除此之外,系統(tǒng)還有看門電路,以防止系統(tǒng)在運(yùn)行的時候,程序跑飛。以與通過看門狗電路里面的電壓比較,來監(jiān)視蓄電池的電壓是不是過低,如果電壓過低系統(tǒng)自動為蓄電池充電。圖2-1系統(tǒng)總體設(shè)計(jì)框圖2.3 基于AT89C51智能電源系統(tǒng)硬件設(shè)計(jì)詳細(xì)分析2.3.1 蓄電池充電電路的設(shè)計(jì) 圖2-2為蓄電池充電電路,該電路具有防止過充的功能,充電電壓是220V、50Hz的市電。蓄電池輸出電壓為12V,功率在20W時可連續(xù)工作5小時。本電路包括下面幾個電路。(1)降壓整流電路:由變壓器T、整流二極管D11、D12組成。(2)Q11可控硅觸發(fā)電路:由電阻R11、二極管D14、可控硅Q11組成

10、。(3)大電充電電路:整流電路與可控硅Q11(4)小電流充電電路:由整流電路、二極管D13、電阻R12、電位器R13組成。(5)大電流切斷電路:由電阻R11、R17可控硅Q12、穩(wěn)壓管D15、電位器R15以與電阻R14等組成。圖2-2 蓄電池充電電路本電路防止過充電的原理是:當(dāng)Q11被觸發(fā)導(dǎo)通后即對蓄電池進(jìn)行大電流充電。當(dāng)充電電壓升高到規(guī)定的上限值時,由于預(yù)先調(diào)節(jié)R15使電位器R15的滑動點(diǎn)與地之間的電壓等于穩(wěn)壓管D15的穩(wěn)壓值與可控硅觸發(fā)電壓之和,所以這時可控硅Q12被觸發(fā)導(dǎo)通。Q12導(dǎo)通后,Q11觸發(fā)電路受蓄電池電壓反向偏置而關(guān)斷。此后,電源通過D13、R12、R13對蓄電池進(jìn)行小電流充電

11、。調(diào)節(jié)R13使電流限制在允許圍。2.3.2 三組不同電源輸出設(shè)計(jì) 本次課程設(shè)計(jì)需要系統(tǒng)具有三組電壓輸出:一組是12V的電源輸出;一組是3V、4.5V、6V、9V的電源輸出;一組是1.5V-12V的連續(xù)可調(diào)電源輸出。圖2-3為12V的電源輸出的電路,該電路中輸入的電壓是經(jīng)過穩(wěn)壓以后的12V,后面是一個三級管開關(guān)電路,當(dāng)P1.2輸出為低的時候,經(jīng)過反相器在三級管的基極產(chǎn)生一個高電壓是三級管導(dǎo)通,導(dǎo)通后在23F的線圈里面就有電流,產(chǎn)生磁性,是開關(guān)K1導(dǎo)通,在Vout端輸出12V電壓。圖2-3 12V的電源輸出圖2-4為3V、4.5V、6V、9V的電源輸出,該電路的輸入和上面的是一樣的,不同的是后面的

12、3V、4.5V、6V、9V是有一塊LM317可調(diào)的穩(wěn)壓的芯片實(shí)現(xiàn)的。LM317是常見的可調(diào)集成穩(wěn)壓器,最大輸出電流為2.2A,輸出電壓圍為1.2537V。1,2腳之間為1.25V電壓基準(zhǔn)。為保證穩(wěn)壓器的輸出性能,R31應(yīng)小于240歐姆。改變1腳與地之間的阻值即可調(diào)整穩(wěn)壓電壓值。D32,D33用于保護(hù)LM317。CD4066是一種雙向模擬開關(guān),在集成電路有4個獨(dú)立的能控制數(shù)字與模擬信號傳送的模擬開關(guān)。每個開關(guān)有一個輸人端和一個輸出端,它們可以互換使用,還有一個選通端(又稱為控制端),當(dāng)選通端為高電平時,開關(guān)導(dǎo)通;當(dāng)選通端為低電平時,開關(guān)截止。使用時選通端是不允許懸空的。本次設(shè)計(jì)中我使用了四個CD

13、4066,每個CD4066的輸入端接地,輸出端接LM317的1腳,控制端接單片機(jī)的P1.4、P1.5、P1.6、P1.7的引腳。通過單片機(jī)輸出相應(yīng)的信號,就可以控制輸出相應(yīng)的電壓大小。后面的三級管開關(guān)電路和前面的一樣,區(qū)別是這里是用的單片機(jī)的P1.1引腳控制的。圖2-4 3V、4.5V、6V、9V的電源輸出圖2-5為1.5V-12V的連續(xù)可調(diào)電源輸出電路,該電路的原理是和前面一樣的,所不同的這里使用的電阻是連續(xù)可變的,所以輸出的電壓也是連續(xù)可調(diào)的。圖2-5為1.5V-12V的連續(xù)可調(diào)電源輸出2.3.3系統(tǒng)穩(wěn)壓電源設(shè)計(jì)本次設(shè)計(jì)基于AT89C51智能電源系統(tǒng)中使用到了+12V和+5V的電源,電源設(shè)

14、計(jì)的原理圖如圖2-6,輸入有蓄電池提供12V的直流電源。電路中使用到的兩個芯片是7812和7805,7812是12伏的穩(wěn)壓芯片,7805是5伏的穩(wěn)壓芯片,這種芯片的好處是應(yīng)用比較的簡單,只需要接上幾個電容就可以使用了。而且如果前段如果電源有輕微的波動幾乎對后面的輸出沒有影響,這種芯片具有自己調(diào)節(jié)功能。圖2-6 穩(wěn)壓電源電路2.3.4 AD0809模數(shù)轉(zhuǎn)換電路設(shè)計(jì) 圖2-7中ADC0809是一個8位模擬數(shù)字轉(zhuǎn)換器件,其中IN0IN7一共8個輸入通道,但每次只能用其中的一個,通道的選擇由ADD_A、ADD_B、 ADD_C三根地址信號控制,本次設(shè)計(jì)我選用IN_0和IN_1,通道的選擇可以通過ADD

15、_A的高低電平來區(qū)分。2_12_8是8位輸出,接入單片機(jī)的AT89C51的P0.0P0.7引腳,其中的2_8是低位應(yīng)接P0.0,2_1是高位應(yīng)接P0.7。引腳10是時鐘輸入端,時鐘的頻率為640KHz1280KHz。引腳6、22是開始采樣端,高電平有效,引腳9是使能端。AD0809只能對電壓信號進(jìn)行模數(shù)轉(zhuǎn)換,而且輸入的電壓在05V之間的,如果輸入的電流信號,必須進(jìn)行信號轉(zhuǎn)換成電壓信號,如果輸入的電壓信號大于5V,可以通過分壓電路進(jìn)行分壓。圖2-7 AD0809模數(shù)轉(zhuǎn)換電路圖中的IN_0輸入的是電壓信號,其中R72和R73組成了分壓電路。IN_1輸入的是電流信號,該電流信號通過R71轉(zhuǎn)變成電壓信

16、號。ref(-)接地,ref(+)接5V電壓。2.3.5 AT89C51基本工作電路設(shè)計(jì)本設(shè)計(jì)的核心是單片機(jī)電路,考慮到我需要兩個中斷輸入,存儲容量、外部接口對單片機(jī)端口的需要以與兼顧到節(jié)約成本的原則,我選用了常用的AT89C51單片機(jī)。AT89C51是低功耗、高性能、經(jīng)濟(jì)的8位CMOS微處理器,工作頻率為024MHz,置4K字節(jié)可編程只讀閃存,128x8位的部RAM,32位可編程IO總線。它采用Atmel公司的非易儲器制造技術(shù),與MCS51的指令設(shè)置和芯片引腳可兼容。AT89C51可以按照常規(guī)方法進(jìn)行編程,也可以在線編程。其將通用的微處理器和Flash存儲器結(jié)合在一起,特別是可反復(fù)擦寫的Fl

17、ash存儲器可有效地降低開發(fā)成本。圖2-8 T89C51基本工作電路AT89C51工作的最簡單的電路是其外圍接一個晶振和一個復(fù)位電路,給單片機(jī)接上電源和地,單片機(jī)就可以工作了。圖2-8片機(jī)最簡單的工作電路。2.3.6 74LS161分頻器設(shè)計(jì)模擬數(shù)字轉(zhuǎn)換器件A/D0809要正常工作,必須要有一個時鐘頻率,在89C51的第30引腳ALE是單片機(jī)輸入時鐘頻率的1/6,也就是2M(因?yàn)閱纹瑱C(jī)的時鐘是12M的晶振),而A/D0809需要一個500K800K的時鐘,所以只需要對ALE引腳的輸出信號進(jìn)行3分頻,我用的分頻器是74LS161計(jì)數(shù)器如圖2-9進(jìn)行分頻。圖2-9 74LS161分頻3分頻電路2.

18、3.7看門狗電路設(shè)計(jì)應(yīng)用系統(tǒng)受到干擾后,都要進(jìn)行復(fù)位,而一般RC電路往往不能保證系統(tǒng)的安全可靠工作,因此便出現(xiàn)了看門狗。看門狗就是監(jiān)控定時器的簡稱,它的用來檢測微處理器是否工作正常,如果工作不正常,程序跑飛或者死機(jī),看門狗電路的輸入端沒有被與時觸發(fā),那么看門狗就會產(chǎn)生一個復(fù)位脈沖,能有效地使系統(tǒng)復(fù)位以使系統(tǒng)恢復(fù)正常運(yùn)轉(zhuǎn)?!翱撮T狗”技術(shù)軟件和硬件技術(shù)均可實(shí)現(xiàn),本設(shè)計(jì)采用硬件設(shè)計(jì),如圖2-10所示。圖2-10 看門狗電路所謂硬件狗,就是一個能發(fā)出“復(fù)位”信號的計(jì)數(shù)器或定時器電路,MAX813L芯片就是這么一種芯片。該芯片具有監(jiān)控電路,如圖 所示。其工作原理是:單片機(jī)P17作為看門狗的“喂狗”信號定

19、時給出一脈沖,當(dāng)程序正常運(yùn)行時,單片機(jī)每隔t輸出一脈沖給WDI觸發(fā)MAX813L電路,使RESET始終為低電平;若單片機(jī)程序一旦出現(xiàn)異常,不能在1.6s送出一“喂狗”脈沖,MAX813L的RESET將產(chǎn)生一正脈沖到單片機(jī)的RESET口,使單片機(jī)系統(tǒng)復(fù)位,使其能重新正常運(yùn)行。2.3.8顯示模塊設(shè)計(jì)和3-8譯碼電路設(shè)計(jì)本次課程設(shè)計(jì)顯示是采用7個八段數(shù)共陰碼管,第一個數(shù)碼管顯示的標(biāo)志位,顯示當(dāng)前輸出的電壓是什么狀態(tài)??偣灿辛N狀態(tài),分別是:1表示當(dāng)前輸出的12V,2表示當(dāng)前輸出的3V,3表示當(dāng)前輸出的4.5V,4表示當(dāng)前輸出的6V,5表示當(dāng)前輸出的9V,6表示當(dāng)前輸出的1.5V-12V的連續(xù)可調(diào)電壓

20、。后面的三個數(shù)碼管顯示的輸出的電壓的大小,前兩個是電壓的整數(shù)部分,后一個是電壓的小數(shù)部分。最后的三個數(shù)碼管顯示的當(dāng)前輸出的電流大小,前一個是電流的整數(shù)部分,后兩位顯示是電流的小數(shù)部分。沒有數(shù)碼管都有8根數(shù)據(jù)線和一根公共線,公共線接正,表示數(shù)碼管為共陽,公共線接地,表示數(shù)碼管為共陰,每一根線對應(yīng)一根發(fā)光二極管。圖2-11為顯示電路和3-8譯碼電路:圖2-11 顯示電路和3-8譯碼電路圖過單片機(jī)的P0端口向數(shù)碼管送顯示的數(shù)據(jù),通過P2.5 P2.6、P2.7三根地址線經(jīng)過3-8譯碼器選擇顯示的位置。其中最后一個Y7可以作為P0端口送數(shù)據(jù)到數(shù)碼管還是從AD0809讀取數(shù)據(jù)的選擇信號。2.3.9 輔助

21、電路設(shè)計(jì)輔助電路雖然比較簡單,但卻是每個系統(tǒng)中必不可少的部分。有些時候,系統(tǒng)的穩(wěn)定性就取決于這些看似不起眼的輔助電路上。圖2-12為晶振電路,為單片機(jī)工作的必須的部件。圖2-12 晶振電路圖2-13為邏輯電路圖,經(jīng)過邏輯變化,實(shí)現(xiàn)單片機(jī)控制AD0809正常工作。圖2-13 邏輯電路圖2-14為電源濾波電路,可以有效的防止信號的相互干擾,可以是器件更穩(wěn)定的工作。圖2-14 電源濾波電路2.4 基于AT89C51智能電源系統(tǒng)電路合成 經(jīng)過前面的各個部分電路的詳細(xì)介紹后,下面就需要把這些分散的電路有效的合成一個完整的電路來實(shí)現(xiàn)我需要的功能。電路的合成不是簡單的把這些電路堆在一起,需要考慮他們之間的資

22、源分配,主次,先后等關(guān)系。綜合考慮多方面的因素,得到實(shí)現(xiàn)預(yù)期功能的電路圖,如圖2-15:圖2-15實(shí)現(xiàn)預(yù)期功能的電路圖第3節(jié)基于AT89C51智能電源系統(tǒng)軟件設(shè)計(jì)3.1 軟件設(shè)計(jì)軟件設(shè)計(jì)是一個創(chuàng)造性的過程,對一些設(shè)計(jì)者來說需要一定的資質(zhì),而最后設(shè)計(jì)通常都是由一些初步設(shè)計(jì)演變而來的。從書本上學(xué)不會設(shè)計(jì),只能經(jīng)過實(shí)踐,通過對實(shí)際系統(tǒng)的研究和實(shí)踐才能學(xué)會。對于高效的軟件工程,良好的設(shè)計(jì)是關(guān)鍵,一個設(shè)計(jì)得好的軟件系統(tǒng)應(yīng)該是可直接實(shí)現(xiàn)和易于維護(hù)、易懂和可靠的。設(shè)計(jì)得不好的系統(tǒng),盡管可以工作,但很可能維護(hù)起來費(fèi)用昂貴、測試?yán)щy和不可靠,因此,設(shè)計(jì)階段是軟件開發(fā)過程中最重要的階段。直到最近,軟件設(shè)計(jì)在很大程

23、度上仍是一個特定過程。一般用自然語言給定一個需求集,預(yù)先作非正式設(shè)計(jì),常常用流程圖的形式說明,接著開始編碼,當(dāng)系統(tǒng)實(shí)現(xiàn)時設(shè)計(jì)還需修改。當(dāng)實(shí)現(xiàn)階段完成后,設(shè)計(jì)往往已與起初形式相去甚遠(yuǎn)以至于設(shè)計(jì)的原始文檔完全不適合對系統(tǒng)的描述。3.2 軟件設(shè)計(jì)任務(wù)軟件設(shè)計(jì)主要是針對硬件設(shè)計(jì)里面的控制部分的,這里指AT89C51單片機(jī),一般的單片機(jī)均可用匯編語言和C語言進(jìn)行編程。C語言直觀,相對比較的簡單,但占用的程序存儲器的存比較大,匯編語言是針對硬件設(shè)計(jì)的語言,如果想用匯編語言設(shè)計(jì)的話必須要對硬件有很大的了解,相對C語言就比較的復(fù)雜,但是比較的精簡,占用的程序存儲器的空間比較的小。作為還在學(xué)生階段的我,用匯編語

24、言進(jìn)行編程對我理解單片機(jī)的部結(jié)構(gòu)、資源都有很好的幫助,因此本論文的程序都是基于匯編語言的。要完成的任務(wù)是:初始化程序設(shè)計(jì)、按鍵程序設(shè)計(jì)、充放電控制程序設(shè)計(jì)、A/D轉(zhuǎn)換程序設(shè)計(jì)、過流保護(hù)程序設(shè)計(jì)、顯示程序設(shè)計(jì)。3.3 軟件設(shè)計(jì)的步驟大型的軟件設(shè)計(jì)是一個龐大的系統(tǒng)工程,需要前期的市場調(diào)查、需求分析,還需要各個行業(yè)的支持。本次課程設(shè)計(jì)的程序是一個很簡單的過程,所以步驟也相對應(yīng)的簡單了許多。第一步:分析整個系統(tǒng)可以由幾個子系統(tǒng)組成,并考慮幾個子系統(tǒng)之間的在的關(guān)系。第二步:編寫各個子系統(tǒng)的程序,最后組合在一起,得到整個系統(tǒng)。第三步:編譯,查錯,改錯(包括語法錯誤、邏輯錯誤)第四步:把編譯,看是否得到我需

25、要的結(jié)果,如果得不到結(jié)果就回到第三步,直到最后得到我想要的結(jié)果。3.4 軟件設(shè)計(jì)的工具本次課程設(shè)計(jì)所選用Keil C51中的編譯/連接器軟件Keil uVision2作為編譯器/連接工具,使用萬利公司Medwin軟件作為集成開發(fā)環(huán)境。Medwin是萬利電子的軟件,Medwin是一個具有Microsoft Visual Studio窗口風(fēng)格的集成開發(fā)環(huán)境。支持帶語法分析的彩色文本顯示、源程序斷點(diǎn)設(shè)置記憶、實(shí)時程序計(jì)數(shù)器、PC顯示、仿真器斷電自動重載、自適應(yīng)連接仿真器等功能,并且支持全空間程序代碼和數(shù)據(jù)空間的模擬仿真、Trace Buffer跟蹤器。3.5 軟件設(shè)計(jì)流程流程圖是一種傳統(tǒng)的算法表示法

26、,它利用幾何圖形的框來代表各種不同性質(zhì)的操作,用流程線來指示算法的執(zhí)行方向。由于它簡單直觀,所以應(yīng)用廣泛,特別是在早期語言階段,只有通過流程圖才能簡明地表述算法,流程圖成為程序員們交流的重要手段。本次課程設(shè)計(jì)在軟件設(shè)計(jì)方面的難度不是很大,主要是對一些電路的控制。由于控制信號比較的多,AT89C51單片機(jī)的引腳已經(jīng)不能滿足需要了,我采用AD0809和數(shù)碼管顯示端口復(fù)用的技術(shù),這就需要我在編寫程序的時候需要特別小心這些信號之間的關(guān)系。除此之外,程序設(shè)計(jì)中還設(shè)計(jì)了兩個中斷程序,一個是AD0809模數(shù)轉(zhuǎn)換中斷,一個是電壓過低自動充電中斷,這個兩個中斷的設(shè)計(jì)也是相對比較難的。由于電壓、電流出現(xiàn)小數(shù)部分,

27、而單片機(jī)處理小數(shù)相對比較的困難,我通過對電壓乘以10和對電流乘以100的處理方法,然后在數(shù)碼管的相應(yīng)的地方通過硬件點(diǎn)亮小數(shù)點(diǎn)的方法解決小數(shù)問題,實(shí)際證明了這樣的方法大大簡化了整個的程序設(shè)計(jì)。圖3-1為整個系統(tǒng)程序設(shè)計(jì)的流程圖。單片機(jī)初始化關(guān)閉所有電源輸出掃描鍵盤是否有按鍵是否是按鍵2從AD0809讀取電流大小是否是按鍵3是否是按鍵4是否是按鍵5判斷電流超過2A從AD0809讀取電壓大小送數(shù)據(jù)到LED數(shù)碼顯示管輸出1.512V可調(diào)電壓顯示功能的選擇3V/4.5V/6V/9V的電源輸出12V的電源輸出關(guān)閉電源輸出是否是按鍵1NYNNNNYYYYNYNY圖3-1程序設(shè)計(jì)流程圖3.6 編寫程序有了前面

28、的對整個系統(tǒng)的分析后畫出的流程圖,下面的工作就是根據(jù)流程圖編寫程序。編寫程序是一個相當(dāng)復(fù)雜的過程,要求編程人員具有很強(qiáng)邏輯思維,而且要在對整個系統(tǒng)工作原理相當(dāng)熟悉的基礎(chǔ)上面才能完成任務(wù)。在編寫程序的時候要養(yǎng)成作注釋的習(xí)慣,這樣既利于自己以后的修改,又利于以后程序的維護(hù)。尤其是使用匯編語言編寫程序的時候更是要注釋,因?yàn)閰R編語言是一門比較低級的語言,跟我的高級語言不同,匯編語言比較的煩瑣。根據(jù)上面的流程圖,編寫程序如下:ORG0000HLJMPMAINORG0003HLJMPINTT0ORG0013HLJMPINTT1ORG0100H INT0FLAG EQU 20H ;中斷0到來標(biāo)注位 IRET

29、FLAG EQU 21H ;過流保護(hù)復(fù)位標(biāo)注位 DISFLAG EQU 22H ;顯示功能的選擇標(biāo)注位 VOITFLAG EQU 23H ;3V、4.5V、6V、9V的輸出的選擇標(biāo)志位VFLAG EQU 24H V12VFLAG EQU 25H ;12V電壓輸出標(biāo)注位 CONTFLAG EQU 26H ;連續(xù)電壓輸出標(biāo)注位 VOUT EQU 30H ;電壓A/D轉(zhuǎn)換輸入 IOUT EQU 31H ;電流A/D轉(zhuǎn)換輸入 0 EQU 32H ;電壓的小數(shù)部分 V1 EQU 33H ;電壓的整數(shù)部分的個位 I0 EQU 35H ;電流的小數(shù)部分的第二位 I1 EQU 36H ;電流的小數(shù)部分的第一位

30、 I2 EQU 37H ;電流的整數(shù)部分;*鍵盤掃描程序*KEYSCAN: SETB P2.0CLR CMOV C,P2.0JC KEYJUMP1SETB IRETFLAGKEYJUMP1:SETB P2.1CLR CMOV C,P2.1JC KEYJUMP2KEYJUMP2: SETB P2.2 ;3V、4.5V、6V、9V的輸出按鍵CLR CMOV C,P2.2JC KEYJUMP3 CLR P3.0 ;打開總電源輸出開關(guān)CLR V12VFLAGCLR CONTFLAGSETB VFLAGDJNZ VOITFLAG,KEYJUMP3MOV VOITFLAG,#03HKEYJUMP3: SE

31、TB P2.3 ;12V電壓輸出按鍵CLR CMOV C,P2.3JC KEYJUMP4 CLR P3.0 ;打開總電源輸出開關(guān)CLR CONTFLAGCLR VFLAGSETB V12VFLAGKEYJUMP4: SETB P2.4 ;連續(xù)電壓輸出按鍵CLR CMOV C,P2.4JC KEYJUMP5 CLR P3.0 ;打開總電源輸出開關(guān)CLR VFLAGCLR V12VFLAGSETB CONTFLAGKEYJUMP5:RET;*電壓輸出程序*VOUTPUT:JNB V12VFLAG,VTJUMP1 MOV DISFLAG,#01H SETB P1.1SETB P1.3CLR P1.2

32、 RETVTJUMP1:JNB VFLAG,VTJUMP2SETB P1.2SETB P1.3CLR P1.1MOV A,VOITFLAGCJNE A,#00H,VTJUMP11 MOV DISFLAG,#02H ;3V電壓輸出SETB P1.5SETB P1.6SETB P1.7CLR P1.4RETVTJUMP11:MOV A,VOITFLAGCJNE A,#01H,VTJUMP12 MOV DISFLAG,#03H ;4.5V電壓輸出SETB P1.4SETB P1.6SETB P1.7CLR P1.5RETVTJUMP12:MOV A,VOITFLAGCJNE A,#02H,VTJUM

33、P13 MOV DISFLAG,#04H ;6V電壓輸出SETB P1.4SETB P1.5SETB P1.7CLR P1.6RETVTJUMP13:MOV A,VOITFLAGCJNE A,#03H,VTJUMP14 MOV DISFLAG,#05H ;9V電壓輸出SETB P1.4SETB P1.5SETB P1.6CLR P1.7VTJUMP14:RETVTJUMP2: MOV DISFLAG,#06H ;1.5V-12V的連續(xù)可調(diào)電壓輸出SETB P1.1SETB P1.2CLR P1.3RET;*電壓、電流A/D轉(zhuǎn)換中斷服務(wù)子程序*INTT0:PUSH ACCPUSH PSWSETB

34、 P2.5SETB P2.6SETB P2.7 CLR P3.4 ;復(fù)位ADC SETB INT0FLAG ;中斷到,標(biāo)志位置1 CLR P3.5 ;允許讀AD0809 P3.6,INT0JUMP1 MOV VOUT,P0 ;存放電壓的數(shù)據(jù)LJMP INT0JUMP2INT0JUMP1: MOV IOUT,P0 ;存放電流的數(shù)據(jù)INT0JUMP2: SETB P3.5 ;禁止讀信號 CLR EX0POP PSWPOP ACCRETI;*電壓過低充電程序*INTT1:PUSH ACCPUSH PSWSETB P1.0POP PSWPOP ACCRETI;*電流處理程序*IDEAL:CLR CMO

35、V A,IOUTSUBB A,#0C8HJNC IDEALJUMP CLR IRETFLAG ;清楚過流保護(hù)的標(biāo)注位 SETB P3.0 ;關(guān)所有的電源輸出LCALL KEYSCANJNB IRETFLAG,$ LJMP MAIN ;過流保護(hù)IDEALJUMP:MOV B,#64HMOV A,IOUTDIV AB MOV I2,A ;得到電流的整數(shù)部分MOV R1,BMOV B,#0AHMOV A,R1DIV AB MOV I1,A ;得到電流的小數(shù)部分的第一位 MOV I0,B ;得到電流的小數(shù)部分的第二位RET;*電壓處理程序*VDEAL: MOV B,#05HMOV A,VOUTDIV

36、ABMOV R2,AMOV B,#03HMOV A,R2MUL ABMOV VOUT,BMOV B,#64HMOV A,VOUTDIV AB MOV V2,A ;得到電壓的整數(shù)部分的十位MOV R3,BMOV B,#0AHMOV A,R3DIV AB MOV V1,A ;得到整數(shù)部分的個位 MOV V0,B ;得到小數(shù)部分RET;*顯示程序設(shè)計(jì)*DISPLAY:MOV DPTR,#TABCLR P2.5CLR P2.6CLR P2.7MOV A,I0MOVC A, A+DPTRMOV P0,A LCALL DELAY ;顯示電流的小數(shù)部分的第二位CLR P2.5CLR P2.6SETB P2.

37、7MOV A,I1MOVC A, A+DPTRMOV P0,A LCALL DELAY ;顯示電流的小數(shù)部分的第一位CLR P2.5SETB P2.6CLR P2.7MOV A,I2MOVC A, A+DPTRMOV P0,A LCALL DELAY ;顯示電流的整數(shù)部分CLR P2.5SETB P2.6SETB P2.7MOV A,V0MOVC A, A+DPTRMOV P0,A LCALL DELAY ;顯示電壓的小數(shù)部分SETB P2.5CLR P2.6CLR P2.7MOV A,V1MOVC A, A+DPTRMOV P0,A LCALL DELAY ;顯示電壓的整數(shù)部分的個位SETB

38、 P2.5CLR P2.6SETB P2.7MOV A,V2MOVC A, A+DPTRMOV P0,A LCALL DELAY ;顯示電壓的整數(shù)部分的十位SETB P2.5SETB P2.6CLR P2.7MOV A,DISFLAGMOVC A, A+DPTRMOV P0,ALCALL DELAYRET;*延時程序*DELAY:MOV R5,#0FFHLOOP0:MOV R6,#0FFHLOOP1:DJNZ R6,LOOP1DJNZ R5,LOOP0RET;*09七段碼-共陰*TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;*初始化主程序*MA

39、IN: ANL TCON,#00HMOV SP,#60H SETB EA ;打開全部的中斷使能MOV VOITFLAG,#03H SETB IRETFLAG ;置過流保護(hù)復(fù)位標(biāo)注位 SETB P3.0 ;關(guān)所有的電源輸出JUMP1: LCALL KEYSCAN ;掃描鍵盤 P3.0,JUMP1 LCALL VOUTPUT ;根據(jù)鍵盤控制,輸出相應(yīng)的電壓CLR INT0FLAG SETB EX0 ;打開INTTO中斷的使能 CLR P3.7 ;片選A/D轉(zhuǎn)換器 SETB P3.5 ;禁止讀信號 CLR P3.4 ;復(fù)位ADC SETB P3.6 ;選擇AD0809的IN1通道 SETB P3.4

40、 ;在START/ALE上產(chǎn)生啟動A/D轉(zhuǎn)換的信號JNB INT0FLAG,$ LCALL IDEAL ;電流處理CLR INT0FLAG SETB EX0 ;打開INTTO中斷的使能 CLR P3.7 ;片選A/D轉(zhuǎn)換器 SETB P3.5 ;禁止讀信號 CLR P3.4 ;復(fù)位ADC CLR P3.6 ;選擇AD0809的IN0通道 SETB P3.4 ;在START/ALE上產(chǎn)生啟動A/D轉(zhuǎn)換的信號JNB INT0FLAG,$ LCALL VDEAL ;電壓處理 LCALL DISPLAY ;調(diào)用顯示程序LJMP JUMP1END3.7 編譯仿真程序 編寫好的程序,下面就是編譯仿真,編譯只要是查找有沒有語法錯誤,其他的有沒有邏輯錯誤需要把程序燒寫到單片機(jī)中進(jìn)行硬件的仿真

溫馨提示

  • 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

提交評論