基于單片機(jī)的直流數(shù)控電壓源課程設(shè)計(jì)(畢業(yè)設(shè)計(jì))完整方案_第1頁(yè)
基于單片機(jī)的直流數(shù)控電壓源課程設(shè)計(jì)(畢業(yè)設(shè)計(jì))完整方案_第2頁(yè)
基于單片機(jī)的直流數(shù)控電壓源課程設(shè)計(jì)(畢業(yè)設(shè)計(jì))完整方案_第3頁(yè)
基于單片機(jī)的直流數(shù)控電壓源課程設(shè)計(jì)(畢業(yè)設(shè)計(jì))完整方案_第4頁(yè)
基于單片機(jī)的直流數(shù)控電壓源課程設(shè)計(jì)(畢業(yè)設(shè)計(jì))完整方案_第5頁(yè)
已閱讀5頁(yè),還剩38頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

電子與信息工程學(xué)院綜合實(shí)驗(yàn)課程報(bào)告課題名稱直流數(shù)控電壓源設(shè)計(jì)專業(yè)電子與信息工程班級(jí)07電子(2)學(xué)生姓名學(xué)號(hào)指導(dǎo)教師直流數(shù)控電壓源設(shè)計(jì)一.系統(tǒng)硬件設(shè)計(jì)結(jié)構(gòu)框圖本數(shù)控直流穩(wěn)壓電源的設(shè)計(jì)以一穩(wěn)壓電源為基礎(chǔ),以高性能單片機(jī)系統(tǒng)為控制核心,以穩(wěn)壓驅(qū)動(dòng)放大電路、短路保護(hù)電路為外圍的硬件系統(tǒng),在檢測(cè)與控制軟件的支持下實(shí)現(xiàn)對(duì)電壓輸出的數(shù)字控制,通過對(duì)穩(wěn)壓電源輸出的電壓進(jìn)行數(shù)據(jù)采樣與給定數(shù)據(jù)比較,從而調(diào)整和控制穩(wěn)壓電源的工作狀態(tài)及監(jiān)測(cè)開關(guān)電路的輸出電流大小。本數(shù)控直流穩(wěn)壓電源實(shí)現(xiàn)以下功能:鍵盤可以直接設(shè)定輸出電壓值;可快速調(diào)整電壓;LCD顯示電壓值等。AT89S51矩陣AT89S51矩陣鍵盤LCD顯示D/A轉(zhuǎn)換DAC0832A/D轉(zhuǎn)換ADC0809可調(diào)穩(wěn)壓源穩(wěn)壓電源+5V+15-15V鍵盤編碼MM74C9221.18051簡(jiǎn)介我們采用8051系列的AT89S51作為CPU,AT89S51是一種帶4K字節(jié)FLASH可編程可擦除只讀存儲(chǔ)器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低電壓,高性能CMOS8位微處理器。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。1.2主要特性1)與MCS-51兼容;2)8位字長(zhǎng)的CPU;3)可在線ISP編程的4KB片內(nèi)FLASH存儲(chǔ)器,用于程序存儲(chǔ),可擦寫1000次;4)256B的片內(nèi)數(shù)據(jù)存儲(chǔ)器,其中高128字節(jié)地址被特殊功能寄存器SFR占用;5)可編程的32根I/O口線(P0~P3);6)2個(gè)可編程16位定時(shí)器;7)一個(gè)數(shù)據(jù)指針DPTR;8)1個(gè)可編程的全雙工串行通信口;9)具有“空閑”和“掉電”兩種低功耗工作方式;10)可編程的3級(jí)程序鎖定位;11)工作電源的電壓為5(1±0.2)V;12)振蕩器最高頻率為24MHz;13)編程頻率3~24MHz,編程電流1mA,編程電壓為5V。1.3芯片引腳排列與名稱DIP封裝形式的AT89S51的芯片引腳排列與名稱如圖1所示。VCC:供電電壓。GND:接地。P0口:P0口為一個(gè)8位,并行,圖1AT89S51的芯片引腳排列與名稱漏極開路雙向I/O口,作為輸出時(shí)可驅(qū)動(dòng)8個(gè)TTL負(fù)載。該口內(nèi)無(wú)上拉電阻,在設(shè)計(jì)中作為D/A,A/D及液晶顯示器的數(shù)據(jù)口。P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4個(gè)TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,該口在設(shè)計(jì)中低四位作為鍵盤輸入口,高四位與RST作為在線編程下載口。P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收/輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,可作為輸入。在作為輸出時(shí),P2口的管腳被外部拉低,將輸出電流。該口在設(shè)計(jì)中作為D/A,A/D及液晶顯示器的控制口。P3口:P3口管腳是帶內(nèi)部上拉電阻的8位雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流,這是由于上拉的緣故。P3口也可作為AT89S51的一些特殊功能口,如下表1所示:表1各端口引腳與復(fù)用功能表端口引腳復(fù)用功能P3.0TXD(串行輸入口)P3.1RXD(串行輸出口)P3.2/INT0(外部中斷0)P3.3/INT1(外部中斷1)P3.4T0(記時(shí)器0外部輸入)P3.5T1(記時(shí)器1外部輸入)P3.6/WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)P3.7/RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)該口在設(shè)計(jì)中使用其特殊功能作為D/A,A/D讀寫信號(hào)的控制口。和A/D的中斷輸入口。RST:該引腳為復(fù)位信號(hào)輸入端,高電平有效。在振蕩器穩(wěn)定工作情況下,該引腳被置成高電平并持續(xù)兩個(gè)機(jī)器周期以上是系統(tǒng)復(fù)位。ALE/PROG:當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。該引腳在設(shè)計(jì)中作為鎖存器器和A/D的時(shí)鐘信號(hào)。/PSEN:外部程序存儲(chǔ)器的選通信號(hào)。/EA/VPP:/EA為訪問芯片內(nèi)部和芯片外部程序存儲(chǔ)器的選擇信號(hào)。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。XTAL1:芯片內(nèi)振蕩器放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。XTAL2:芯片內(nèi)振蕩器放大器的輸出。2鍵盤控制器MM74C9222.1簡(jiǎn)介鍵盤的作用是對(duì)單片機(jī)輸入數(shù)據(jù),設(shè)計(jì)中要求能是電壓進(jìn)行“+”,“-”,及電壓值的設(shè)定,所以采用鍵盤為4×4的薄膜矩陣鍵盤,用MM74C922芯片進(jìn)行識(shí)別按鍵后送AT89S51的并行口P1,P1.0~P1.3作為鍵盤輸入口。傳統(tǒng)的4×4矩陣鍵盤識(shí)別處理程序的編寫相對(duì)煩瑣。所以采用MM74C922芯片來(lái)將4×4矩陣鍵盤的鍵值轉(zhuǎn)換成4位BCD碼以簡(jiǎn)化程序的編寫。2.2主要特性CMOS工藝技術(shù)制造,工作電壓3-15V,“二鍵鎖定”功能,編碼輸出為三態(tài)輸出,可直接與微處理器數(shù)據(jù)總線相連,內(nèi)部振蕩器能完成4×4矩陣鍵盤掃描,亦可用外部振蕩器使鍵盤操作與其他處理同步,通過外接電容避免開關(guān)發(fā)生前、后沿彈跳所許的延時(shí)。有按鍵按下時(shí)數(shù)據(jù)有效線變高,同時(shí)封鎖其他鍵,片內(nèi)鎖存器將保持鍵盤矩陣的4位編盤,可由微處理器讀出2.3芯片引腳排列與名稱DIP封裝形式的MM74C922的芯片引腳排列與名稱如圖4所示。VCC:供電電壓(+5~+15);GND:接地;Y1~Y2:矩陣鍵盤行輸入,圖4MM74C922其內(nèi)部接有上拉電阻;X1~X2:矩陣鍵盤列輸入;OUT1~OUT2:矩陣鍵盤列輸出;OSC:振蕩器輸入;DA:按鍵有效輸出,當(dāng)有任意鍵按下是DA輸出高電平;/OE:輸出有效端,低電平有效。3D/A轉(zhuǎn)換器DAC08323.3.1簡(jiǎn)介設(shè)計(jì)要求電壓輸出范圍是0.0V~9.9V,步進(jìn)0.1V,共有100種狀態(tài),因此采用8位的D/A轉(zhuǎn)換器就能滿足設(shè)計(jì)要求。因此采用常用的DAC0832芯片。8位字長(zhǎng)的D/A轉(zhuǎn)換器DAC0832具有256種狀態(tài),能滿足設(shè)計(jì)要求。DAC0832芯片是具有兩個(gè)輸入數(shù)據(jù)寄存器的8位DAC,它能直接與AT89S51單片機(jī)相連接,3.2主要特性1)8位分辨率;2)電流型輸出,穩(wěn)定時(shí)間為1uS;3)可雙緩沖輸入,單緩沖輸入或直接數(shù)字輸入;4)單一電源供電(+5~+15V);5低功耗(20mW;)3.3芯片引腳排列與名稱DIP封裝形式的DAC0832的芯片引腳排列與名稱如圖51所示。VCC:電源電壓,+5V。GND:地線輸入端。圖5DAC0832的芯片引腳排列與名稱D0~D7:8位數(shù)字量輸入引腳。單片機(jī)由這8根線傳送給D/A轉(zhuǎn)換數(shù)字量。D7為最高有效位,D0為最低有效位。Vref:參考電壓端。/CS:片選信號(hào),當(dāng)/CS為低電平時(shí)候,芯片被選中工作。ILE:允許數(shù)字量輸入線。高電平有效。/XREF:傳送控制輸入線,低電平有效。/WR1,/WR2:寫命令輸入線。Ffb:運(yùn)算放大器反饋線。Iout1,Iout2:模擬電流輸出線,Iout1+Iout2為一常數(shù)。二.硬件電路設(shè)計(jì)1.A/D轉(zhuǎn)換器ADC08091.1簡(jiǎn)介ADC0809是美國(guó)國(guó)家半導(dǎo)體公司生產(chǎn)的8位ADC,它是采用逐次逼近的方法完成A/D轉(zhuǎn)換的。ADC0809的內(nèi)部結(jié)構(gòu)框圖如圖所示。ADC0809由單一+5V電源供電,片內(nèi)有帶鎖存功能的8路模擬多路開關(guān),,可對(duì)8路0~5V的輸入模擬電壓信號(hào)分時(shí)進(jìn)行轉(zhuǎn)換,完成一次轉(zhuǎn)換約需100us;輸出具有TTL三臺(tái)鎖存緩沖器,可以直接接到單片機(jī)數(shù)據(jù)總線上。通過適當(dāng)?shù)耐饨与娐?,ADC0809可對(duì)0~5V的雙級(jí)性模擬信號(hào)進(jìn)行轉(zhuǎn)換。1.2主要特性

1)8路8位A/D轉(zhuǎn)換器,即分辨率8位。

2)具有轉(zhuǎn)換起??刂贫恕?/p>

3)轉(zhuǎn)換時(shí)間為100μs

4)單+5V電源供電

5)模擬輸入電壓范圍0~+5V,不需零點(diǎn)和滿刻度校準(zhǔn)。

6)工作溫度范圍為-40~+85攝氏度

7)低功耗,約15mW。1.3芯片引腳排列與名稱DIP封裝形式的ADC0809的芯片引腳排列與名稱如圖6所示各引腳功能說明如下:VCC:電源電壓,+5V。GND:地線輸入端。D0~D7:8位數(shù)字量輸出引腳。A/D轉(zhuǎn)換結(jié)果由這8根線傳送給單片機(jī)。D7為最高有效位,圖60809引腳圖排列與名稱D0為最低有效位。IN0~I(xiàn)N7:8路模擬量輸入引腳。Vref(+):參考電壓正端。。Vref(-):參考電壓負(fù)端。START:啟動(dòng)信號(hào)輸入端,START為正脈沖,其上升沿清除ADC0808的內(nèi)部的各寄存器,其下降沿啟動(dòng)A/D開始轉(zhuǎn)換。ALE:地址鎖存啟動(dòng)信號(hào),在ALE的上升沿,將A、B、C上的通道地址鎖存到內(nèi)部的地址鎖存器。START和ALE兩信號(hào)用于啟動(dòng)A/D轉(zhuǎn)換。EOC:轉(zhuǎn)換完成信號(hào),當(dāng)EOC上升為高電平時(shí),表明內(nèi)部A/D轉(zhuǎn)換已完成。OE:允許輸出信號(hào)。當(dāng)OE=1時(shí),即為高電平,允許輸出鎖存器輸出數(shù)據(jù)。CLK:時(shí)鐘輸入信號(hào),0809的時(shí)鐘頻率范圍在10~1200kHz,典型值為640kHz。A、B、C:3位地址輸入線,經(jīng)過譯碼后可選通IN0~I(xiàn)N78個(gè)通道中的一個(gè)通道進(jìn)行轉(zhuǎn)換。A、B、C的輸入與選通的通道的關(guān)系如表2所示:表2被選通的通道CBA被選通的通道CBAIN0000IN4100IN1001IN5101IN2010IN6110IN3011IN71112顯示器設(shè)計(jì)要求能顯示當(dāng)前電壓值,因此可采用液晶顯示或者數(shù)碼管顯示兩種方法??紤]到數(shù)碼管顯示過于單調(diào),因此采用采用液晶顯示。液晶顯示模塊具有體積小、功耗低、顯示內(nèi)容豐富等特點(diǎn),現(xiàn)在點(diǎn)陣型液晶顯示模塊已經(jīng)是單片機(jī)應(yīng)用設(shè)計(jì)中常用的信息顯示器件了。2.1簡(jiǎn)介本設(shè)計(jì)中采用了1602C型點(diǎn)陣式液晶顯示模塊。LCD技術(shù)和半導(dǎo)體技術(shù)的結(jié)合使該顯示模塊具有高可靠性和低功耗的特點(diǎn)。1602C型點(diǎn)陣式液晶顯示模塊內(nèi)部有字符產(chǎn)生存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器。該顯示模塊可直接與AT89s51單片機(jī)相接,所有的顯示功能由控制器用指令實(shí)現(xiàn)。由單一的+5V的電源供電,數(shù)據(jù)傳送方式有4位和8位兩種選擇。內(nèi)有顯示92個(gè)ASCII字符和92個(gè)特殊字符的字庫(kù)。2.2引腳排列與名稱1602C引腳排列與名稱如圖7所示。GND:電源地;VCC:電源正極,4.5-5.5V,通常使用5V電壓;VO:LCD對(duì)比度調(diào)節(jié)端,電壓調(diào)節(jié)范圍為0-5V;RS:寫入數(shù)據(jù)或者指令選擇端。要寫入指令時(shí),使RS為低電平;要寫入數(shù)據(jù)時(shí),使RS為高電平;R/W:讀寫控制端。R/W為高電平時(shí),讀取數(shù)據(jù);R/W為低電平時(shí),寫入數(shù)據(jù);E:LCD模塊使能信號(hào)控制端。寫數(shù)據(jù)時(shí),圖71602C引腳排列與名稱需要下降沿觸發(fā);。DB0-DB7:8位數(shù)據(jù)總線,三態(tài)雙向。如果I/O口資源緊張的話,該模塊也可以只使用4位數(shù)據(jù)線DB4-DB7接口傳送數(shù)據(jù)。A:LED背光正極。需要背光時(shí),A串接一個(gè)限流電阻接VDD,K接地,實(shí)測(cè)該模塊的背光電流為50mA左右;K:LED背光地端3.1MM設(shè)計(jì)中MM74C922的輸出口與P1口的低四位相接,DA端通過反向器與P3.2相接。每當(dāng)有按鍵按下時(shí),DA就產(chǎn)生高電平,同時(shí)向P1口低四位傳送16進(jìn)制的BCD碼,分別對(duì)應(yīng)16個(gè)按鍵。MM74C922與鍵盤及AT89S51的接線圖見圖9圖9MM74C3.2DAC0832接口電路DAC0832最具特色是輸入為雙緩沖結(jié)構(gòu),數(shù)字信號(hào)在進(jìn)入D/A轉(zhuǎn)換前,需經(jīng)過兩個(gè)獨(dú)立控制的8位鎖存器傳送。其優(yōu)點(diǎn)是D/A轉(zhuǎn)換的同時(shí),DAC寄存器中保留現(xiàn)有的數(shù)據(jù),而在輸入寄存器中可送入新的數(shù)據(jù)。系統(tǒng)中多個(gè)D/A轉(zhuǎn)換器內(nèi)容可用一公共的選通信號(hào)選通輸出。設(shè)計(jì)中用2個(gè)電壓控制字代表0.1V當(dāng)電壓控制字從0,2,4,……到198時(shí),可調(diào)穩(wěn)壓源輸出0.0,0.1,……,9.9。由于DAC0832是電流輸出型,輸出的電流隨輸入的電壓控制字線性變化。若要得到電壓,還需要外接一片運(yùn)放來(lái)實(shí)現(xiàn)電流到電壓的轉(zhuǎn)換。由于DAC0832輸出級(jí)沒有加集成運(yùn)放,所以需外加LM324相配適用??紤]到設(shè)計(jì)需要,采用了單緩沖雙級(jí)性的接法,如圖10所示:圖10DAC0832接口電路其計(jì)算公式為:其中Vref為參考電壓,D為DAC0832接收到的數(shù)據(jù)。5為DAC0832基準(zhǔn)電壓。如果圖中所示電阻RX,RY,RZ的阻值選取適當(dāng),則輸出電壓范圍在電壓控制字從0,2,4,……到198變換時(shí)根據(jù)上式計(jì)算可得輸出電壓為+4.9V~-5V,正好滿足后續(xù)電路的要求。其中P2.7為DAC0832的片選控制端。3.3ADC0809接口電路由于輸出電壓范圍是0.0V~9.9V超出了ADC0809的測(cè)量范圍,因此使用電位器將輸出電壓分壓后送至ADC0809的輸入端。ADC0809與AT89S51的接口電路如圖11所示圖11ADC0809接口電路其中P2.6為0809的片選信號(hào),與WR和RD分別通過或非門接到0809的START和OE上,EOC通過非門與AT89S51的INT0相接。由于0809需要時(shí)鐘信號(hào),因此可以從AT89S51的ALE端得到6分頻的振蕩信號(hào),為了使6分頻后的信號(hào)能滿足0809的需求,我們采用的是4M的晶體振蕩器。3.4LCD1602C接口電路LCD1602C與AT89S51的接口電路如圖12所示圖12LCD顯示電路3.5可調(diào)穩(wěn)壓源電路為了獲得大的負(fù)載電流,可調(diào)穩(wěn)壓部分使用了最大輸出電流為1A的7805三端集成穩(wěn)壓塊。7805原本是輸出固定電壓為5V的集成穩(wěn)壓塊,但可以外接電路來(lái)改變輸出電壓值。可調(diào)穩(wěn)壓的電路見圖13:設(shè)運(yùn)放理想。這時(shí),可認(rèn)為運(yùn)放輸入電壓很小。即:圖13可調(diào)穩(wěn)壓電路其中Vin為D/A部分輸出的雙級(jí)性電壓,5為7805的穩(wěn)壓值。由上式可見,Vout與Vin之間成線形關(guān)系,當(dāng)Vin變化時(shí),輸出電壓改變。由于Vin是DAC0832輸出的范圍是+4.9V~-5V的電壓,因而Vout的變化可以從0.0V~9.9V。經(jīng)實(shí)驗(yàn)證明:這種可調(diào)穩(wěn)壓輸出具有良好的負(fù)載特性,輸出最大負(fù)載電流可達(dá)到1A。電壓輸出端接上500mA負(fù)載與未接負(fù)載(空載)之間輸出電壓僅相差0.04V以內(nèi)。由于。3.6流穩(wěn)壓電路本設(shè)計(jì)共用到電源有三種:即±15V,+5V。可選用的有開關(guān)電源和穩(wěn)壓電源兩種,由于開關(guān)電源的紋波系數(shù)比較大,且設(shè)計(jì)要求電壓紋波不大于10mV。因此采用常用的穩(wěn)壓電源來(lái)作為整個(gè)系統(tǒng)的電源。穩(wěn)壓電源由電源變壓器、整流電路、濾波電路和穩(wěn)壓電路組成,如圖14所示圖14電源方框及波形圖整流和濾波電路:整流作用是將交流電壓U2變換成脈動(dòng)電壓U3。濾波電路一般由電容組成,其作用是脈動(dòng)電壓U3中的大部分紋波加以濾除,以得到較平滑的直流電壓U4。再通過穩(wěn)壓電路得到平直的直流電壓U5。電源變壓器采用了雙17.2V的變壓器,輸入220V,50Hz交流電,經(jīng)全橋整流,濾波,穩(wěn)壓后得到±15V和+5V三種輸出,+5V部分供單片機(jī)及D/A,A/D,顯示等部分使用,電流最大約400mA;+15V和-15V部分供運(yùn)放使用,最大電流不超過50mA。電路如圖15所示:圖15電源部分原理圖圖中繼電器部分是一個(gè)開關(guān)電路及短路保護(hù)電路。當(dāng)系統(tǒng)接到220V交流電后經(jīng)變壓器降壓,整流橋整流后接到K1,此時(shí)由于U1(7815)沒有輸入,所以K1沒有供電,整個(gè)后續(xù)系統(tǒng)處于關(guān)閉狀態(tài),當(dāng)按下SW_ON鍵時(shí)U1得到輸入,產(chǎn)生+15V的輸出,同時(shí)K1得電吸合,形成自鎖狀態(tài),同時(shí)79L15也得電輸出-15V電壓。松開SW_ON鍵后由于K1處于自鎖狀態(tài),整個(gè)系統(tǒng)處于開啟狀態(tài)。當(dāng)按下SW_OFF鍵時(shí),K1被短路,從而斷開電源達(dá)到關(guān)機(jī)的目的。同樣,在任一時(shí)刻如果產(chǎn)生短路,則K1也會(huì)斷開達(dá)到短路保護(hù)的目的。+5V部分的供電電流在400mA左右,因此采用了最大輸出電流為1A的7805三端穩(wěn)壓集成電路,由于功耗大,負(fù)載重,加裝了散熱片。而+15V和-15V部分最大電流不超過50mA。在設(shè)計(jì)過程中發(fā)現(xiàn)中兩片7805的均使用了散熱片且溫度偏高,因此加裝了風(fēng)扇,使用+15V電源,將78L15該為7815后可滿足風(fēng)扇需求。這樣在保證性能的同時(shí)也降低了成本。三.程序設(shè)計(jì)1主控程序圖16為系統(tǒng)主控程序。開始系統(tǒng)初始化開始系統(tǒng)初始化D/A子程序鍵盤處理子程序A/D子程序有鍵按下?顯示子程序是否圖16系統(tǒng)主控程序框圖2D/A子程序圖17為D/A子程序框圖。開始將顯示值開始將顯示值轉(zhuǎn)換成對(duì)應(yīng)的數(shù)字量數(shù)字量送D/A返回1圖17D/A子程序框圖可以看出,D/A子程序的作用是將設(shè)定的數(shù)字量通過變換送給D/A。3A/D子程序圖18為A/D子程序框圖。開始返回開始返回將輸出電壓轉(zhuǎn)換成數(shù)字量與送D/A數(shù)字量相比較是否相等?將送D/A數(shù)字量減01H相等不等大于送D/A數(shù)字量?是否將送D/A數(shù)字量加01H1圖18A/D子程序框圖由A/D子程序框圖看出,修改精度為一個(gè)數(shù)字量,由于A/D和D/A的精度限制,修改量只能達(dá)到0.05V,但足已滿足設(shè)計(jì)需要。4鍵盤子程序圖19為鍵盤子程序框圖。開始判斷按鍵開始判斷按鍵+-設(shè)置其它步進(jìn),步減子程序設(shè)置子程序返回圖19鍵盤子程序框圖框圖4.1步進(jìn)步減子程序圖20為步進(jìn),步減子程序框圖開始D/A數(shù)字量加02H開始D/A數(shù)字量加02H為“+”?1否是D/A數(shù)字量加02H返回是否為9.9V否是否為0.0V否保持不變?yōu)椤?”?是是是圖20步進(jìn),步減子程序框圖由步進(jìn),步減子程序框圖可以看出,如果每次把D/A的數(shù)字量加01H,可以使步進(jìn)量和步減量由0.1V變?yōu)?.05V。如果采用更高位的D/A轉(zhuǎn)換器??梢允共竭M(jìn)量和步減量進(jìn)一步的減小,以滿足更高的要求。

4.2設(shè)置子程序圖21為設(shè)置子程序框圖:開始返回?cái)?shù)字鍵?開始返回?cái)?shù)字鍵?顯示〈PLEASESET〉VOLTAGEV判斷按鍵顯示〈PLEASESET〉VOLTAGEXV否判斷按鍵是顯示〈PLEASESET〉VOLTAGEX.V是取消鍵?顯示〈SETCANCLE〉VOLTAGEA.BV(A.B為設(shè)置前電壓值)是否判斷按鍵“?!辨I?否取消鍵?是22否3數(shù)字鍵?否取消鍵?是否3判斷按鍵顯示〈PLEASESET〉VOLTAGEX.YV是4確認(rèn)鍵?否取消鍵?否是4顯示〈SETCOMPLATE〉VOLTAGEX.YV是圖21設(shè)置子程序框圖由設(shè)置子程序可以看出,進(jìn)入設(shè)置子程序后就屏蔽了“+”,“-”和設(shè)置鍵。然后逐步判斷按鍵,執(zhí)行相應(yīng)程序。五.設(shè)計(jì)總結(jié)在本次設(shè)計(jì)過程中,對(duì)紋波也沒有提出嚴(yán)格要求,所以常用的穩(wěn)壓集成電路就可以滿足要求。在電路中采用了模擬器件和數(shù)字器件所以需要+5V、和-15V電源供電。本設(shè)計(jì)輸出的電壓穩(wěn)壓精度高,可以用在對(duì)直流電壓要求較高的設(shè)備上,或在科研實(shí)驗(yàn)室中當(dāng)作實(shí)驗(yàn)電源使用。在本次設(shè)計(jì)的過程中,我發(fā)現(xiàn)很多的問題,給我的感覺就是很難,很不順手,看似很簡(jiǎn)單的電路,要?jiǎng)邮职阉o設(shè)計(jì)出來(lái),是很難的一件事,主要原因是我們沒有經(jīng)常動(dòng)手設(shè)計(jì)過電路,還有資料的查找也是一大難題,這就要求我們?cè)谝院蟮膶W(xué)習(xí)中,應(yīng)該注意到這一點(diǎn),更重要的是我們要學(xué)會(huì)把從書本中學(xué)到的知識(shí)和實(shí)際的電路聯(lián)系起來(lái),這不論是對(duì)我們以后的就業(yè)還是學(xué)習(xí),都會(huì)起到很大的促進(jìn)和幫助,我相信,通過這次的課程設(shè)計(jì),在下一階段的學(xué)習(xí)中我會(huì)更加努力,力爭(zhēng)把這門課學(xué)好,學(xué)精。同時(shí),通過本次課程設(shè)計(jì),鞏固了我們學(xué)習(xí)過的專業(yè)知識(shí),也使我們把理論與實(shí)踐從真正意義上相結(jié)合了起來(lái);考驗(yàn)了我們借助互聯(lián)網(wǎng)絡(luò)搜集、查閱相關(guān)文獻(xiàn)資料,和組織材料的綜合能力;從中可以自我測(cè)驗(yàn),認(rèn)識(shí)到自己哪方面有欠缺、不足,以便于在日后的學(xué)習(xí)中得以改進(jìn)、提高;通過使用電路CAD軟件Protel99se,也讓我們了解到計(jì)算機(jī)輔助設(shè)計(jì)(CAD)的智能化,有利于提高工作效率。本次關(guān)于簡(jiǎn)易數(shù)控直流穩(wěn)壓電源的設(shè)計(jì)與制作是在嚴(yán)輝老師以及其他輔導(dǎo)老師的精心指導(dǎo)下,和同組內(nèi)其他成員的共同交流下才得以順利完成。經(jīng)過本次畢業(yè)設(shè)計(jì)把我大學(xué)三年來(lái)所學(xué)的理論知識(shí)轉(zhuǎn)化為實(shí)際應(yīng)用,既鍛煉了我們的實(shí)際操作能力,又使理論知識(shí)得以加強(qiáng)和升華,激發(fā)了創(chuàng)新意識(shí)。再次感謝各位老師和同學(xué)們的幫助。六.附件 A、程序?qū)崿F(xiàn)單片機(jī)系統(tǒng)初始化和存儲(chǔ)器分配程序 $NOMOD51 ; ;ThisfileispartoftheC51Compilerpackage//這個(gè)文件是c51鏈接的數(shù)據(jù) ; ;STARTUP.A51:Thiscodeisexecutedafterprocessorreset.這個(gè)代碼在程序重啟之后執(zhí)行 ; ;TotranslatethisfileuseA51withthefollowinginvocation: ; ;A51STARTUP.A51 ; ;TolinkthemodifiedSTARTUP.OBJfiletoyourapplicationusethefollowing ;BL51invocation: ; ;BL51<yourobjectfilelist>,STARTUP.OBJ<controls> ; ; ; ;User-definedPower-OnInitializationofMemory ; ;WiththefollowingEQUstatementstheinitializationofmemory ;atprocessorresetcanbedefined: ; ;;theabsolutestart-addressofIDATAmemoryisalways0 IDATALENEQU80H;thelengthofIDATAmemoryinbytes.IDATA存儲(chǔ)的字節(jié)長(zhǎng)度 ;XDATASTARTEQU0H;theabsolutestart-addressofXDATAmemoryXDATA存儲(chǔ)的實(shí)際起始地址 XDATALENEQU0H;thelengthofXDATAmemoryinbytes. ; PDATASTARTEQU0H;theabsolutestart-addressofPDATAmemory PDATALENEQU0H;thelengthofPDATAmemoryinbytes. ; ;Notes:TheIDATAspaceoverlapsphysicallytheDATAandBITareasofthe ;8051CPU.AtminimumthememoryspaceoccupiedfromtheC51 ;run-timeroutinesmustbesettozero. ; ; ;ReentrantStackInitilization ; ;ThefollowingEQUstatementsdefinethestackpointerforreentrant ;functionsandinitializedit: ; ;StackSpaceforreentrantfunctionsintheSMALLmodel. IBPSTACKEQU0;setto1ifsmallreentrantisused. IBPSTACKTOPEQU0FFH+1;settopofstacktohighestlocation+1. ; ;StackSpaceforreentrantfunctionsintheLARGEmodel. XBPSTACKEQU0;setto1iflargereentrantisused. XBPSTACKTOPEQU0FFFFH+1;settopofstacktohighestlocation+1. ; ;StackSpaceforreentrantfunctionsintheCOMPACTmodel. PBPSTACKEQU0;setto1ifcompactreentrantisused. PBPSTACKTOPEQU0FFFFH+1;settopofstacktohighestlocation+1. ; ; ; ;PageDefinitionforUsingtheCompactModelwith64KBytexdataRAM ; ;ThefollowingEQUstatementsdefinethexdatapageusedforpdata ;variables.TheEQUPPAGEmustconformwiththePPAGEcontrolused ;inthelinkerinvocation. ; PPAGEENABLEEQU0;setto1ifpdataobjectareused. ; PPAGEEQU0;definePPAGEnumber. ; PPAGE_SFRDATA0A0H;SFRthatsuppliesuppermostaddressbyte ;(most8051variantsuseP2asuppermostaddressbyte) ; ; ;StandardSFRSymbols ACCDATA0E0H BDATA0F0H SPDATA81H DPLDATA82H DPHDATA83H NAMEC_STARTUP C_C51STARTUPSEGMENTCODE STACKSEGMENTIDATA RSEGSTACK DS1 EXTRNCODE(?C_START) PUBLICC_STARTUP CSEGAT0 ?C_STARTUP:LJMPSTARTUP1 RSEGC_C51STARTUP STARTUP1: IFIDATALEN<>0 MOVR0,#IDATALEN-1 CLRA IDATALOOP:MOV@R0,A DJNZR0,IDATALOOP ENDIF IFXDATALEN<>0 MOVDPTR,#XDATASTART MOVR7,#LOW(XDATALEN) IF(LOW(XDATALEN))<>0 MOVR6,#(HIGH(XDATALEN))+1 ELSE MOVR6,#HIGH(XDATALEN) ENDIF CLRA XDATALOOP:MOVX@DPTR,A INCDPTR DJNZR7,XDATALOOP DJNZR6,XDATALOOP ENDIF IFPPAGEENABLE<>0 MOVPPAGE_SFR,#PPAGE ENDIF IFPDATALEN<>0 MOVR0,#LOW(PDATASTART) MOVR7,#LOW(PDATALEN) CLRA PDATALOOP:MOVX@R0,A INCR0 DJNZR7,PDATALOOP ENDIF IFIBPSTACK<>0 EXTRNDATA(?C_IBP) MOVC_IBP,#LOWIBPSTACKTOP ENDIF IFXBPSTACK<>0 EXTRNDATA(?C_XBP) MOVC_XBP,#HIGHXBPSTACKTOP MOVC_XBP+1,#LOWXBPSTACKTOP ENDIF IFPBPSTACK<>0 EXTRNDATA(C_PBP) MOVC_PBP,#LOWPBPSTACKTOP ENDIF MOVSP,#STACK-1 ;ThiscodeisrequiredifyouuseL51_BANK.A51withBankingMode4 ;EXTRNCODE(B_SWITCH0) ;CALLB_SWITCH0;initbankmechanismtocodebank0 LJMPC_START END 鍵盤掃描程序 #include<reg52.h> #defineucharunsignedchar #defineuintunsignedint sbitkey1=P1^0; sbitkey2=P1^1; voiddelay(uintz); ucharkeyscan()//鍵盤掃描程序 { uchartemp,num; num=17; P1=0xfe;//p1.0口置0 temp=P1; temp=temp&0xf0; while(temp!=0xf0) { delay(20); temp=P1; temp=temp&0xf0; if(temp!=0xf0) { // delay(10);//延遲去抖 P1=P1&0xf0; while(P1!=0xf0); switch(temp) { case0xe0:num=7;break;//0xf0和0xe0的交處,即p1.0與p1.4的交處 case0xd0:num=8;break;//p1.0與p1.5的交處, case0xb0:num=9;break; case0x70:num=15;break; default:break; } } elsebreak; } P1=0xfd; temp=P1; temp=temp&0xf0; while(temp!=0xf0) { delay(20); temp=P1; temp=temp&0xf0; if(temp!=0xf0) { //delay(10); P1=P1&0xf0; while(P1!=0xf0); switch(temp) { case0xe0:num=4;break; case0xd0:num=5;break; case0xb0:num=6;break; case0x70:num=14;break; default:break; } } elsebreak; } P1=0xfb; temp=P1; temp=temp&0xf0; while(temp!=0xf0) { delay(20); temp=P1; temp=temp&0xf0; if(temp!=0xf0) { //delay(10); P1=P1&0xf0; while(P1!=0xf0); switch(temp) { case0xe0:num=1;break; case0xd0:num=2;break; case0xb0:num=3;break; case0x70:num=13;break; default:break; } } elsebreak; } P1=0xf7; temp=P1; temp=temp&0xf0; while(temp!=0xf0) { delay(20); temp=P1; temp=temp&0xf0; if(temp!=0xf0) { //delay(10); P1=P1&0xf0; while(P1!=0xf0); switch(temp) { case0xe0:num=10;break; case0xd0:num=0;break; case0xb0:num=11;break; case0x70:num=12;break; default:break; } } elsebreak; } returnnum; } 主程序 #include<reg52.h> #include<absacc.h> #include<intrins.h> #include<math.h> #include"keyscan.h" #defineucharunsignedchar #defineuintunsignedint #definedac0832XBYTE[0X7FFF]//P2.7作片選,啟動(dòng)DA轉(zhuǎn)換 #defineint0XBYTE[0X7FF8]//結(jié)束AD轉(zhuǎn)換,鎖存通道0,讀出AD值 ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, 0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};//數(shù)組table[]存放代碼 uchartemp1,weishu,flag,dot; ucharvolt[4]={0,0,0,0}; voiddelay(uintz) { uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } voiddisplay(ucharz)//LED顯示函數(shù) { ucharj; P2=0xFE;//P2.0口置0,選擇第一個(gè)數(shù)碼管 for(j=0;j<z;j++)//循環(huán)控制 { P0=table[volt[j]];//將P0口數(shù)據(jù)送LED顯示 delay(6); if(j<z-1)P2=_crol_(P2,1);//判斷,依次選擇P2.1,P2.2口 } } voidmain() { ucharkeynum,i; floatvoltage,xiaoshu,sum; i=0; voltage=0; temp1=0; flag=0; weishu=1;//定義數(shù)字量值temp1,進(jìn)位標(biāo)志flag,數(shù)碼管位數(shù)weishu等變量 while(1) { dac0832=temp1;//初始值設(shè)定為0 keynum=keyscan();//調(diào)用鍵盤掃描函數(shù) if(keynum==15)//如果鍵值15,代表復(fù)位,將p0置0 { P0=0;//p0口置0,復(fù)位 while(1) { keynum=keyscan();//調(diào)用鍵盤掃描函數(shù) if(keynum>=0&&keynum<=9)//判斷鍵值 { i++; for(weishu=0;weishu<i;weishu++) volt[i-weishu-1]=volt[i-weishu-2]; volt[0]=keynum;//將數(shù)值在第一個(gè)數(shù)碼管中顯示 if(flag==0) voltage=voltage*10+keynum; else{xiaoshu=pow(10,flag); xiaoshu=keynum/xiaoshu; sum=sum+xiaoshu; flag++;} }//數(shù)字處理顯示程序 elseif(keynum==10)//判斷按鍵,如果是點(diǎn)鍵,10代表點(diǎn)鍵 { flag++; dot=i; volt[0]=volt[0]+10;//在第二個(gè)數(shù)碼管輸出顯示小數(shù)點(diǎn) } elseif(keynum==11)//判斷按鍵,如果是確認(rèn)鍵 { weishu=i; if(flag==0) temp1=23*voltage; else { i=(int)(sum/0.05); temp1=23*voltage+i; } i=0; voltage=0; sum=0; flag=0; break; } if(int0>dac0832) {temp1=temp1-1;} if(int0<dac0832) {temp1=temp1+1;}//ADC轉(zhuǎn)換后于輸入數(shù)字量比較運(yùn)算程序 display(i);//調(diào)用顯示函數(shù) } elseif

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論