畢業(yè)設(shè)計(論文)-基于單片機控制的智能穩(wěn)壓電源設(shè)計.doc_第1頁
畢業(yè)設(shè)計(論文)-基于單片機控制的智能穩(wěn)壓電源設(shè)計.doc_第2頁
畢業(yè)設(shè)計(論文)-基于單片機控制的智能穩(wěn)壓電源設(shè)計.doc_第3頁
畢業(yè)設(shè)計(論文)-基于單片機控制的智能穩(wěn)壓電源設(shè)計.doc_第4頁
畢業(yè)設(shè)計(論文)-基于單片機控制的智能穩(wěn)壓電源設(shè)計.doc_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

基于單片機智能穩(wěn)壓電源設(shè)計 機電??茖W(xué)校基于單片機的智能穩(wěn)壓電源設(shè)計姓名: 班級: 學(xué)號: 專業(yè): 基于單片機控制的智能電源 第1節(jié) 引 言通信電源是保證通信暢通的基礎(chǔ),其基礎(chǔ)地位確保了電源專業(yè)將長久的興旺發(fā)展并保持其專業(yè)的穩(wěn)定性和獨立性,特殊的作用不會被其它專業(yè)所取代,所以自60年代以來通信電源事業(yè)一直方興未艾,技術(shù)在不斷的進(jìn)步,設(shè)備在不斷的更新,專業(yè)地位日益得到提高,特別是進(jìn)入90年代以來,隨著通信事業(yè)超常規(guī)的快速發(fā)展,電源專業(yè)尤為得到了長足的進(jìn)步,新型的電子器件、新設(shè)備、微電子技術(shù)、計算機集中監(jiān)控技術(shù)等正在廣泛的被通信電源所采用。全球通信電源技術(shù)發(fā)展呈現(xiàn)以下幾大趨勢:(1)高效率,高功率密度,高的使用環(huán)境溫度;運營商的設(shè)備不斷增多、用電量加劇、機房面積緊張等客觀因素的存在,對電源產(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ù)無法實現(xiàn)的優(yōu)勢,如:采用全數(shù)字化控制技術(shù),有效縮小電源體積降低了成本,大大提高了設(shè)備的可靠性和對用戶的適應(yīng)性。(4)安全、防護(hù)、良好emc指標(biāo);考慮到設(shè)備復(fù)雜的運行環(huán)境,電源設(shè)備須滿足相關(guān)的安全、防護(hù)、防雷標(biāo)準(zhǔ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指令包括兩部分的內(nèi)容,即涉及循環(huán)再利用weee和限制使用有害物質(zhì)的rohs。所以設(shè)計一個智能電源十分必要。1.1 智能電源系統(tǒng)概述信息事業(yè)的迅猛發(fā)展,給電源市場帶來了巨大的市場機會和挑戰(zhàn),同時對電源提出了一些新的需求。例如:多種物理設(shè)備放在一起,有電磁兼容的需求和機房面積與承重的要求;網(wǎng)絡(luò)設(shè)備種類變多使電源的負(fù)載變大,負(fù)載種類變多,對電源效率和種類有要求;機房和基站數(shù)目增多,對電源的可靠性和易維護(hù)性提出更高的要求,以滿足無人值守需要。電源工作環(huán)境的差異對電源的應(yīng)用環(huán)境也提出了新的需求,如更強電網(wǎng)適應(yīng)能力、環(huán)境適應(yīng)能力等,戶外電源就是這一需求的典型代表。本次單片機課程設(shè)計是設(shè)計一個基于單片機的智能電源,硬件設(shè)計的主要任務(wù)是:蓄電池充電電路的設(shè)計、三組不同大小的電源設(shè)計、系統(tǒng)穩(wěn)壓電源設(shè)計、ad0809模數(shù)轉(zhuǎn)換電路設(shè)計、看門狗電路設(shè)計、顯示模塊設(shè)計、3-8譯碼電路設(shè)計、at89c51基本工作電路設(shè)計、74ls161分頻器設(shè)計和輔助電路設(shè)計;軟件設(shè)計的任務(wù)是:初始化程序設(shè)計、按鍵程序設(shè)計、充放電控制程序設(shè)計、a/d轉(zhuǎn)換程序設(shè)計、過流保護(hù)程序設(shè)計、顯示程序設(shè)計。在硬件設(shè)計過程中,遇到的問題不是很大,但是在軟件的設(shè)計中,主要需要解決的問題是單片機端口不夠,必須復(fù)用。在ad0809采樣中,對電壓和電流的采樣的先后順序也需要注意。1.2 本設(shè)計任務(wù)和主要內(nèi)容本文主要介紹一種基于at89c51單片機的智能電源設(shè)計,該系統(tǒng)總共有三組電源輸出:一組輸出為12v,一組輸出3v、4.5v、6v、9v,一組輸出1.5v-12v的連續(xù)可調(diào)電壓;具有輸出電壓、電流的顯示功能;可更換的選擇其中一端輸出作為顯示;具有電流保護(hù)功能,電流超過2a的時候,系統(tǒng)停止電壓輸出,過流保護(hù)后必須按復(fù)位鍵該端才能重新輸出;具有蓄電池供電,功率在20w時可連續(xù)工作5小時;還有充電控制電路和過放保護(hù)電路。第2節(jié) 基于at89c51智能電源系統(tǒng)硬件設(shè)計 基于at89c51單片機控制的智能電源系統(tǒng)的硬件設(shè)計是整個設(shè)計過程中的最重要的部分,也是最困難的部分。硬件設(shè)計需要充分了解各方的設(shè)計需求,確定合適的解決方案。啟動一個硬件開發(fā)項目,原始的推動力會來自于很多方面,比如市場的需要,基于整個系統(tǒng)架構(gòu)的需要,應(yīng)用軟件部門的功能實現(xiàn)需要,提高系統(tǒng)某方面能力的需要等等,所以作為一個硬件系統(tǒng)的設(shè)計者,要主動的去了解各個方面的需求,并且綜合起來,提出最合適的硬件解決方案。2.1 硬件設(shè)計的任務(wù)1. 蓄電池充電電路的設(shè)計:為12v的蓄電池充電,并且具有防止過充的功能。2. 三組不同大小的電源設(shè)計:一組是12v的電源輸出、一組是3v、4.5v、6v、9v的電源輸出、一組是1.5v-12v的連續(xù)可調(diào)電源輸出。3. 系統(tǒng)穩(wěn)壓電源設(shè)計:為整個系統(tǒng)提供12v和+5v穩(wěn)壓電源。4. ad0809模數(shù)轉(zhuǎn)換電路設(shè)計:把模擬的電壓電流信號轉(zhuǎn)換成數(shù)字信號。5. 看門狗電路設(shè)計:使單片機在程序跑飛的情況自動復(fù)位。6. 顯示模塊設(shè)計:把輸出的電壓、電流顯示在顯示器上。7. 3-8譯碼電路設(shè)計:譯碼電路選擇顯示的位置和ad采樣.8. at89c51基本工作電路設(shè)計:使單片機正常工作。9. 74ls161分頻器設(shè)計:對at89c51的ale進(jìn)行4分頻為ad0809提供時鐘頻率。10. 輔助電路設(shè)計:單片機晶振電路、邏輯電路和按鍵電路。2.2 基于at89c51智能電源系統(tǒng)設(shè)計框圖圖2-1是以at89c51單片機為核心的智能電源系統(tǒng)硬件設(shè)計的結(jié)構(gòu)框圖。該測量系統(tǒng)主要由蓄電池充電模塊、12v電源輸出模塊、3v、4.5v、6v、9v的電源輸出模塊、1.5v-12v連續(xù)電壓電源模塊、at89c51單片機、看門狗電路、顯示模塊、3-8譯碼模塊、分頻模塊和鍵盤模塊等組成。圖中12v的電源輸出模塊,3v、4.5v、6v、9v的電源輸出模塊,1.5v-12v連續(xù)電壓電源模塊通過ad0809模數(shù)轉(zhuǎn)換送到單片機。經(jīng)過單片機處理,輸出控制信號。同時也可以通過鍵盤控制輸出的電壓的大小。除此之外,系統(tǒng)還有看門電路,以防止系統(tǒng)在運行的時候,程序跑飛。以及通過看門狗電路里面的電壓比較,來監(jiān)視蓄電池的電壓是不是過低,如果電壓過低系統(tǒng)自動為蓄電池充電。圖2-1系統(tǒng)總體設(shè)計框圖2.3 基于at89c51智能電源系統(tǒng)硬件設(shè)計詳細(xì)分析2.3.1 蓄電池充電電路的設(shè)計 圖2-2為蓄電池充電電路,該電路具有防止過充的功能,充電電壓是220v、50hz的市電。蓄電池輸出電壓為12v,功率在20w時可連續(xù)工作5小時。本電路包括下面幾個電路。(1)降壓整流電路:由變壓器t、整流二極管d11、d12組成。(2)q11可控硅觸發(fā)電路:由電阻r11、二極管d14、可控硅q11組成。(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的滑動點與地之間的電壓等于穩(wěn)壓管d15的穩(wěn)壓值與可控硅觸發(fā)電壓之和,所以這時可控硅q12被觸發(fā)導(dǎo)通。q12導(dǎo)通后,q11觸發(fā)電路受蓄電池電壓反向偏置而關(guān)斷。此后,電源通過d13、r12、r13對蓄電池進(jìn)行小電流充電。調(diào)節(jié)r13使電流限制在允許范圍內(nèi)。2.3.2 三組不同電源輸出設(shè)計 本次課程設(shè)計需要系統(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的電源輸出,該電路的輸入和上面的是一樣的,不同的是后面的3v、4.5v、6v、9v是有一塊lm317可調(diào)的穩(wěn)壓的芯片實現(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),在集成電路內(nèi)有4個獨立的能控制數(shù)字及模擬信號傳送的模擬開關(guān)。每個開關(guān)有一個輸人端和一個輸出端,它們可以互換使用,還有一個選通端(又稱為控制端),當(dāng)選通端為高電平時,開關(guān)導(dǎo)通;當(dāng)選通端為低電平時,開關(guān)截止。使用時選通端是不允許懸空的。本次設(shè)計中我使用了四個cd4066,每個cd4066的輸入端接地,輸出端接lm317的1腳,控制端接單片機的p1.4、p1.5、p1.6、p1.7的引腳。通過單片機輸出相應(yīng)的信號,就可以控制輸出相應(yīng)的電壓大小。后面的三級管開關(guān)電路和前面的相同,區(qū)別是這里是用的單片機的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è)計 本次設(shè)計基于at89c51智能電源系統(tǒng)中使用到了+12v和+5v的電源,電源設(shè)計的原理圖如圖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è)計 圖2-7中adc0809是一個8位模擬數(shù)字轉(zhuǎn)換器件,其中in0in7一共8個輸入通道,但每次只能用其中的一個,通道的選擇由add_a、add_b、 add_c三根地址信號控制,本次設(shè)計我選用in_0和in_1,通道的選擇可以通過add_a的高低電平來區(qū)分。2_12_8是8位輸出,接入單片機的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)變成電壓信號。ref(-)接地,ref(+)接5v電壓。2.3.5 at89c51基本工作電路設(shè)計 本設(shè)計的核心是單片機電路,考慮到我需要兩個中斷輸入,存儲容量、外部接口對單片機端口的需要以及兼顧到節(jié)約成本的原則,我選用了常用的at89c51單片機。at89c51是低功耗、高性能、經(jīng)濟(jì)的8位cmos微處理器,工作頻率為024mhz,內(nèi)置4k字節(jié)可編程只讀閃存,128x8位的內(nèi)部ram,32位可編程io總線。它采用atmel公司的非易儲器制造技術(shù),與mcs51的指令設(shè)置和芯片引腳可兼容。at89c51可以按照常規(guī)方法進(jìn)行編程,也可以在線編程。其將通用的微處理器和flash存儲器結(jié)合在一起,特別是可反復(fù)擦寫的flash存儲器可有效地降低開發(fā)成本。圖2-8 t89c51基本工作電路at89c51工作的最簡單的電路是其外圍接一個晶振和一個復(fù)位電路,給單片機接上電源和地,單片機就可以工作了。圖2-8片機最簡單的工作電路。2.3.6 74ls161分頻器設(shè)計模擬數(shù)字轉(zhuǎn)換器件a/d0809要正常工作,必須要有一個時鐘頻率,在89c51的第30引腳ale是單片機輸入時鐘頻率的1/6,也就是2m(因為單片機的時鐘是12m的晶振),而a/d0809需要一個500k800k的時鐘,所以只需要對ale引腳的輸出信號進(jìn)行3分頻,我用的分頻器是74ls161計數(shù)器如圖2-9進(jìn)行分頻。圖2-9 74ls161分頻3分頻電路2.3.7 看門狗電路設(shè)計應(yīng)用系統(tǒng)受到干擾后,都要進(jìn)行復(fù)位,而一般rc電路往往不能保證系統(tǒng)的安全可靠工作,因此便出現(xiàn)了看門狗。看門狗就是監(jiān)控定時器的簡稱,它的用來檢測微處理器是否工作正常,如果工作不正常,程序跑飛或者死機,看門狗電路的輸入端沒有被及時觸發(fā),那么看門狗就會產(chǎn)生一個復(fù)位脈沖,能有效地使系統(tǒng)復(fù)位以使系統(tǒng)恢復(fù)正常運轉(zhuǎn)?!翱撮T狗”技術(shù)軟件和硬件技術(shù)均可實現(xiàn),本設(shè)計采用硬件設(shè)計,如圖2-10所示。圖2-10 看門狗電路所謂硬件狗,就是一個能發(fā)出“復(fù)位”信號的計數(shù)器或定時器電路,max813l芯片就是這么一種芯片。該芯片具有監(jiān)控電路,如圖 所示。其工作原理是:單片機p17作為看門狗的“喂狗”信號定時給出一脈沖,當(dāng)程序正常運行時,單片機每隔t輸出一脈沖給wdi觸發(fā)max813l電路,使reset始終為低電平;若單片機程序一旦出現(xiàn)異常,不能在1.6s內(nèi)送出一“喂狗”脈沖,max813l的reset將產(chǎn)生一正脈沖到單片機的reset口,使單片機系統(tǒng)復(fù)位,使其能重新正常運行。2.3.8 顯示模塊設(shè)計和3-8譯碼電路設(shè)計本次課程設(shè)計顯示是采用7個八段數(shù)共陰碼管,第一個數(shù)碼管顯示的標(biāo)志位,顯示當(dāng)前輸出的電壓是什么狀態(tài)。總共有六種狀態(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)電壓。后面的三個數(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譯碼電路圖中通過單片機的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 輔助電路設(shè)計輔助電路雖然比較簡單,但卻是每個系統(tǒng)中必不可少的部分。有些時候,系統(tǒng)的穩(wěn)定性就取決于這些看似不起眼的輔助電路上。圖2-12為晶振電路,為單片機工作的必須的部件。圖2-12 晶振電路圖2-13為邏輯電路圖,經(jīng)過邏輯變化,實現(xiàn)單片機控制ad0809正常工作。圖2-13 邏輯電路圖2-14為電源濾波電路,可以有效的防止信號的相互干擾,可以是器件更穩(wěn)定的工作。圖2-14 電源濾波電路2.4 基于at89c51智能電源系統(tǒng)電路合成 經(jīng)過前面的各個部分電路的詳細(xì)介紹后,下面就需要把這些分散的電路有效的合成一個完整的電路來實現(xiàn)我需要的功能。電路的合成不是簡單的把這些電路堆在一起,需要考慮他們之間的資源分配,主次,先后等關(guān)系。綜合考慮多方面的因素,得到實現(xiàn)預(yù)期功能的電路圖,如圖2-15:圖2-15實現(xiàn)預(yù)期功能的電路圖第3節(jié) 基于at89c51智能電源系統(tǒng)軟件設(shè)計3.1 軟件設(shè)計軟件設(shè)計是一個創(chuàng)造性的過程,對一些設(shè)計者來說需要一定的資質(zhì),而最后設(shè)計通常都是由一些初步設(shè)計演變而來的。從書本上學(xué)不會設(shè)計,只能經(jīng)過實踐,通過對實際系統(tǒng)的研究和實踐才能學(xué)會。對于高效的軟件工程,良好的設(shè)計是關(guān)鍵,一個設(shè)計得好的軟件系統(tǒng)應(yīng)該是可直接實現(xiàn)和易于維護(hù)、易懂和可靠的。設(shè)計得不好的系統(tǒng),盡管可以工作,但很可能維護(hù)起來費用昂貴、測試?yán)щy和不可靠,因此,設(shè)計階段是軟件開發(fā)過程中最重要的階段。 直到最近,軟件設(shè)計在很大程度上仍是一個特定過程。一般用自然語言給定一個需求集,預(yù)先作非正式設(shè)計,常常用流程圖的形式說明,接著開始編碼,當(dāng)系統(tǒng)實現(xiàn)時設(shè)計還需修改。當(dāng)實現(xiàn)階段完成后,設(shè)計往往已與起初形式相去甚遠(yuǎn)以至于設(shè)計的原始文檔完全不適合對系統(tǒng)的描述。3.2 軟件設(shè)計任務(wù)軟件設(shè)計主要是針對硬件設(shè)計里面的控制部分的,這里指at89c51單片機,一般的單片機均可用匯編語言和c語言進(jìn)行編程。c語言直觀,相對比較的簡單,但占用的程序存儲器的內(nèi)存比較大,匯編語言是針對硬件設(shè)計的語言,如果想用匯編語言設(shè)計的話必須要對硬件有很大的了解,相對c語言就比較的復(fù)雜,但是比較的精簡,占用的程序存儲器的空間比較的小。作為還在學(xué)生階段的我,用匯編語言進(jìn)行編程對我理解單片機的內(nèi)部結(jié)構(gòu)、資源都有很好的幫助,因此本論文的程序都是基于匯編語言的。要完成的任務(wù)是:初始化程序設(shè)計、按鍵程序設(shè)計、充放電控制程序設(shè)計、a/d轉(zhuǎn)換程序設(shè)計、過流保護(hù)程序設(shè)計、顯示程序設(shè)計。3.3 軟件設(shè)計的步驟大型的軟件設(shè)計是一個龐大的系統(tǒng)工程,需要前期的市場調(diào)查、需求分析,還需要各個行業(yè)的支持。本次課程設(shè)計的程序是一個很簡單的過程,所以步驟也相對應(yīng)的簡單了許多。第一步:分析整個系統(tǒng)可以由幾個子系統(tǒng)組成,并考慮幾個子系統(tǒng)之間的內(nèi)在的關(guān)系。第二步:編寫各個子系統(tǒng)的程序,最后組合在一起,得到整個系統(tǒng)。第三步:編譯,查錯,改錯(包括語法錯誤、邏輯錯誤)第四步:把編譯,看是否得到我需要的結(jié)果,如果得不到結(jié)果就回到第三步,直到最后得到我想要的結(jié)果。3.4 軟件設(shè)計的工具本次課程設(shè)計所選用keil c51中的編譯/連接器軟件keil uvision2作為編譯器/連接工具,使用萬利公司medwin軟件作為集成開發(fā)環(huán)境。medwin是萬利電子有限公司的軟件,medwin是一個具有microsoft visual studio窗口風(fēng)格的集成開發(fā)環(huán)境。支持帶語法分析的彩色文本顯示、源程序斷點設(shè)置記憶、實時程序計數(shù)器、pc顯示、仿真器斷電自動重載、自適應(yīng)連接仿真器等功能,并且支持全空間程序代碼和數(shù)據(jù)空間的模擬仿真、trace buffer跟蹤器。3.5 軟件設(shè)計流程流程圖是一種傳統(tǒng)的算法表示法,它利用幾何圖形的框來代表各種不同性質(zhì)的操作,用流程線來指示算法的執(zhí)行方向。由于它簡單直觀,所以應(yīng)用廣泛,特別是在早期語言階段,只有通過流程圖才能簡明地表述算法,流程圖成為程序員們交流的重要手段。本次課程設(shè)計在軟件設(shè)計方面的難度不是很大,主要是對一些電路的控制。由于控制信號比較的多,at89c51單片機的引腳已經(jīng)不能滿足需要了,我采用ad0809和數(shù)碼管顯示端口復(fù)用的技術(shù),這就需要我在編寫程序的時候需要特別小心這些信號之間的關(guān)系。除此之外,程序設(shè)計中還設(shè)計了兩個中斷程序,一個是ad0809模數(shù)轉(zhuǎn)換中斷,一個是電壓過低自動充電中斷,這個兩個中斷的設(shè)計也是相對比較難的。由于電壓、電流出現(xiàn)小數(shù)部分,而單片機處理小數(shù)相對比較的困難,我通過對電壓乘以10和對電流乘以100的處理方法,然后在數(shù)碼管的相應(yīng)的地方通過硬件點亮小數(shù)點的方法解決小數(shù)問題,實際證明了這樣的方法大大簡化了整個的程序設(shè)計。圖3-1為整個系統(tǒng)程序設(shè)計的流程圖。單片機初始化關(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è)計流程圖3.6 編寫程序有了前面的對整個系統(tǒng)的分析后畫出的流程圖,下面的工作就是根據(jù)流程圖編寫程序。編寫程序是一個相當(dāng)復(fù)雜的過程,要求編程人員具有很強邏輯思維,而且要在對整個系統(tǒng)工作原理相當(dāng)熟悉的基礎(chǔ)上面才能完成任務(wù)。在編寫程序的時候要養(yǎng)成作注釋的習(xí)慣,這樣既利于自己以后的修改,又利于以后程序的維護(hù)。尤其是使用匯編語言編寫程序的時候更是要注釋,因為匯編語言是一門比較低級的語言,跟我的高級語言不同,匯編語言比較的煩瑣。根據(jù)上面的流程圖,編寫程序如下: org 0000h ljmp main org 0003h ljmp intt0 org 0013h ljmp intt1 org 0100h int0flag equ 20h ;中斷0到來標(biāo)注位 iretflag 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ù)部分的第一位 i2 equ 37h ;電流的整數(shù)部分;*鍵盤掃描程序*keyscan: setb p2.0 clr c mov c,p2.0 jc keyjump1 setb iretflagkeyjump1: setb p2.1 clr c mov c,p2.1 jc keyjump2keyjump2: setb p2.2 ;3v、4.5v、6v、9v的輸出按鍵 clr c mov c,p2.2 jc keyjump3 clr p3.0 ;打開總電源輸出開關(guān) clr v12vflag clr contflag setb vflag djnz voitflag,keyjump3 mov voitflag,#03hkeyjump3: setb p2.3 ;12v電壓輸出按鍵 clr c mov c,p2.3 jc keyjump4 clr p3.0 ;打開總電源輸出開關(guān) clr contflag clr vflag setb v12vflagkeyjump4: setb p2.4 ;連續(xù)電壓輸出按鍵 clr c mov c,p2.4 jc keyjump5 clr p3.0 ;打開總電源輸出開關(guān) clr vflag clr v12vflag setb contflagkeyjump5: ret;*電壓輸出程序*voutput: jnb v12vflag,vtjump1 mov disflag,#01h setb p1.1 setb p1.3 clr p1.2 retvtjump1: jnb vflag,vtjump2 setb p1.2 setb p1.3 clr p1.1 mov a,voitflag cjne a,#00h,vtjump11 mov disflag,#02h ;3v電壓輸出 setb p1.5 setb p1.6 setb p1.7 clr p1.4 retvtjump11: mov a,voitflag cjne a,#01h,vtjump12 mov disflag,#03h ;4.5v電壓輸出 setb p1.4 setb p1.6 setb p1.7 clr p1.5 retvtjump12: mov a,voitflag cjne a,#02h,vtjump13 mov disflag,#04h ;6v電壓輸出 setb p1.4 setb p1.5 setb p1.7 clr p1.6 retvtjump13: mov a,voitflag cjne a,#03h,vtjump14 mov disflag,#05h ;9v電壓輸出 setb p1.4 setb p1.5 setb p1.6 clr p1.7vtjump14: retvtjump2: mov disflag,#06h ;1.5v-12v的連續(xù)可調(diào)電壓輸出 setb p1.1 setb p1.2 clr p1.3 ret;*電壓、電流a/d轉(zhuǎn)換中斷服務(wù)子程序*intt0: push acc push psw setb p2.5 setb p2.6 setb p2.7 clr p3.4 ;復(fù)位adc setb int0flag ;中斷到,標(biāo)志位置1 clr p3.5 ;允許讀ad0809 jb p3.6,int0jump1 mov vout,p0 ;存放電壓的數(shù)據(jù) ljmp int0jump2int0jump1: mov iout,p0 ;存放電流的數(shù)據(jù)int0jump2: setb p3.5 ;禁止讀信號 clr ex0 pop psw pop acc reti;*電壓過低充電程序*intt1: push acc push psw setb p1.0 pop psw pop acc reti;*電流處理程序*ideal: clr c mov a,iout subb a,#0c8h jnc idealjump clr iretflag ;清楚過流保護(hù)的標(biāo)注位 setb p3.0 ;關(guān)所有的電源輸出 lcall keyscan jnb iretflag,$ ljmp main ;過流保護(hù)idealjump: mov b,#64h mov a,iout div ab mov i2,a ;得到電流的整數(shù)部分 mov r1,b mov b,#0ah mov a,r1 div ab mov i1,a ;得到電流的小數(shù)部分的第一位 mov i0,b ;得到電流的小數(shù)部分的第二位 ret;*電壓處理程序*vdeal: mov b,#05h mov a,vout div ab mov r2,a mov b,#03h mov a,r2 mul ab mov vout,b mov b,#64h mov a,vout div ab mov v2,a ;得到電壓的整數(shù)部分的十位 mov r3,b mov b,#0ah mov a,r3 div ab mov v1,a ;得到整數(shù)部分的個位 mov v0,b ;得到小數(shù)部分 ret;*顯示程序設(shè)計*display: mov dptr,#tab clr p2.5 clr p2.6 clr p2.7 mov a,i0 movc a, a+dptr mov p0,a lcall delay ;顯示電流的小數(shù)部分的第二位 clr p2.5 clr p2.6 setb p2.7 mov a,i1 movc a, a+dptr mov p0,a lcall delay ;顯示電流的小數(shù)部分的第一位 clr p2.5 setb p2.6 clr p2.7 mov a,i2 movc a, a+dptr mov p0,a lcall delay ;顯示電流的整數(shù)部分 clr p2.5 setb p2.6 setb p2.7 mov a,v0 movc a, a+dptr mov p0,a lcall delay ;顯示電壓的小數(shù)部分 setb p2.5 clr p2.6 clr p2.7 mov a,v1 movc a, a+dptr mov p0,a lcall delay ;顯示電壓的整數(shù)部分的個位 setb p2.5 clr p2.6 setb p2.7 mov a,v2 movc a, a+dptr mov p0,a lcall delay ;顯示電壓的整數(shù)部分的十位 setb p2.5 setb p2.6 clr p2.7 mov a,disflag movc a, a+dptr mov p0,a lcall delay ret;*延時程序*delay: mov r5,#0ffhloop0: mov r6,#0ffhloop1: djnz r6,loop1 djnz r5,loop0 ret;*09七段碼-共陰*tab: db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh;*初始化主程序*main: anl tcon,#00h mov sp,#60h setb ea ;打開全部的中斷使能 mov voitflag,#03h setb iretflag ;置過流保護(hù)復(fù)位標(biāo)注位 setb p3.0 ;關(guān)所有的電源輸出jump1: lcall keyscan ;掃描鍵盤 jb 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 ;在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 jump1 end3.7 編譯仿真程序 編寫好的程序,下面就是編譯仿真,編譯只要是查找有沒有語法錯誤,其他的有沒有邏輯錯誤需要把程序燒寫到單片機中進(jìn)行硬件的仿真才能知道。結(jié)束語短暫而又寶

溫馨提示

  • 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

提交評論