2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  直流數(shù)控電壓源設(shè)計</b></p><p>  一.系統(tǒng)硬件設(shè)計結(jié)構(gòu)框圖</p><p>  本數(shù)控直流穩(wěn)壓電源的設(shè)計以一穩(wěn)壓電源為基礎(chǔ),以高性能單片機系統(tǒng)為控制核心,以穩(wěn)壓驅(qū)動放大電路、短路保護電路為外圍的硬件系統(tǒng),在檢測與控制軟件的支持下實現(xiàn)對電壓輸出的數(shù)字控制,通過對穩(wěn)壓電源輸出的電壓進行數(shù)據(jù)采樣與給定數(shù)據(jù)比較,從而調(diào)整和控制穩(wěn)壓電

2、源的工作狀態(tài)及監(jiān)測開關(guān)電路的輸出電流大小。本數(shù)控直流穩(wěn)壓電源實現(xiàn)以下功能:鍵盤可以直接設(shè)定輸出電壓值;可快速調(diào)整電壓;LCD顯示電壓值等。</p><p>  1.1 8051簡介</p><p>  我們采用8051系列的AT89S51作為CPU,AT89S51是一種帶4K字節(jié)FLASH可編程可擦除只讀存儲器(FPEROM—Flash Programmable and Erasable

3、Read Only Memory)的低電壓,高性能CMOS8位微處理器。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。</p><p><b>  1.2 主要特性</b></p><p>  1)與MCS-51兼容 ;</p><p>  2)8位字長的CPU;</p>&l

4、t;p>  3)可在線ISP編程的4KB片內(nèi)FLASH存儲器,用于程序存儲,可擦寫1000次;</p><p>  4) 256B的片內(nèi)數(shù)據(jù)存儲器,其中高128字節(jié)地址被特殊功能寄存器SFR占用;</p><p>  5)可編程的32根I/O口線(P0~P3);</p><p>  6)2個可編程16位定時器;</p><p>  7)

5、一個數(shù)據(jù)指針DPTR;</p><p>  8)1個可編程的全雙工串行通信口;</p><p>  9)具有“空閑”和“掉電”兩種低功耗工作方式;</p><p>  10)可編程的3級程序鎖定位;</p><p>  11)工作電源的電壓為5(1±0.2)V;</p><p>  12)振蕩器最高頻率為24

6、MHz;</p><p>  13)編程頻率3 ~24 MHz,編程電流1mA,編程電壓為5V。</p><p>  1.3芯片引腳排列與名稱</p><p>  DIP封裝形式的AT89S51的芯片引腳排列與名稱如圖1所示。</p><p><b>  VCC:供電電壓。</b></p><p>

7、;<b>  GND:接地。</b></p><p>  P0口:P0口為一個8位,并行, 圖1 AT89S51的芯片引腳排列與名稱</p><p>  漏極開路雙向I/O口,作為輸出時可驅(qū)動8個TTL負載。該口內(nèi)無上拉電阻,在設(shè)計中作為D/A,A/D及液晶顯示器的數(shù)據(jù)口。</p><p>  P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙

8、向I/O口,P1口緩沖器能接收輸出4個TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,該口在設(shè)計中低四位作為鍵盤輸入口,高四位與RST作為在線編程下載口。</p><p>  P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收/輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,可作為輸入。在作為輸出時,P2口的管腳被外部拉低,將輸出電流。該口在設(shè)計中作為D/A

9、,A/D及液晶顯示器的控制口。</p><p>  P3口:P3口管腳是帶內(nèi)部上拉電阻的8位雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流,這是由于上拉的緣故。P3口也可作為AT89S51的一些特殊功能口,如下表1所示:</p><p>  表1 各端口引腳與復(fù)用功能表</p>

10、<p>  該口在設(shè)計中使用其特殊功能作為D/A,A/D讀寫信號的控制口。和A/D的中斷輸入口。</p><p>  RST:該引腳為復(fù)位信號輸入端,高電平有效。在振蕩器穩(wěn)定工作情況下,該引腳被置成高電平并持續(xù)兩個機器周期以上是系統(tǒng)復(fù)位。</p><p>  ALE/PROG:當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸

11、入編程脈沖。該引腳在設(shè)計中作為鎖存器器和A/D的時鐘信號。</p><p>  /PSEN:外部程序存儲器的選通信號。</p><p>  /EA/VPP:/EA為訪問芯片內(nèi)部和芯片外部程序存儲器的選擇信號。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。</p><p>  XTAL1:芯片內(nèi)振蕩器放大器的輸入及內(nèi)部時鐘工作電路的輸入。</p

12、><p>  XTAL2:芯片內(nèi)振蕩器放大器的輸出。 </p><p>  2 鍵盤控制器MM74C922</p><p><b>  2.1 簡介</b></p><p>  鍵盤的作用是對單片機輸入數(shù)據(jù),設(shè)計中要求能是電壓進行“+”,“-”,及電壓值的設(shè)定,所以采用鍵盤為4×4的薄膜矩陣鍵盤,用MM74C922

13、芯片進行識別按鍵后送AT89S51的并行口P1, P1.0~P1.3作為鍵盤輸入口。傳統(tǒng)的4×4矩陣鍵盤識別處理程序的編寫相對煩瑣。所以采用MM74C922芯片來將4×4矩陣鍵盤的鍵值轉(zhuǎn)換成4位BCD碼以簡化程序的編寫。</p><p><b>  2.2 主要特性</b></p><p>  CMOS工藝技術(shù)制造,工作電壓3-15V,“二鍵鎖定”

14、功能,編碼輸出為三態(tài)輸出,可直接與微處理器數(shù)據(jù)總線相連,內(nèi)部振蕩器能完成4×4矩陣鍵盤掃描,亦可用外部振蕩器使鍵盤操作與其他處理同步,通過外接電容避免開關(guān)發(fā)生前、后沿彈跳所許的延時。有按鍵按下時數(shù)據(jù)有效線變高,同時封鎖其他鍵,片內(nèi)鎖存器將保持鍵盤矩陣的4位編盤,可由微處理器讀出</p><p>  2.3 芯片引腳排列與名稱</p><p>  DIP封裝形式的MM74C922的

15、芯片引腳排列與名稱如圖4所示。</p><p>  VCC:供電電壓(+5~+15);</p><p><b>  GND:接地;</b></p><p>  Y1~Y2:矩陣鍵盤行輸入, 圖4 MM74C922芯片引腳排列與名稱</p><p>  其內(nèi)部接有上拉電阻;</p><p>

16、;  X1~X2:矩陣鍵盤列輸入;</p><p>  OUT1~OUT2:矩陣鍵盤列輸出;</p><p>  OSC:振蕩器輸入;</p><p>  DA:按鍵有效輸出,當(dāng)有任意鍵按下是DA輸出高電平;</p><p>  /OE:輸出有效端,低電平有效。</p><p>  3 D/A轉(zhuǎn)換器DAC0832<

17、;/p><p><b>  3.3.1簡介</b></p><p>  設(shè)計要求電壓輸出范圍是0.0V~9.9V,步進0.1V,共有100種狀態(tài),因此采用8位的D/A轉(zhuǎn)換器就能滿足設(shè)計要求。因此采用常用的DAC0832芯片。8位字長的D/A轉(zhuǎn)換器DAC0832具有256種狀態(tài),能滿足設(shè)計要求。DAC0832芯片是具有兩個輸入數(shù)據(jù)寄存器的8位DAC,它能直接與AT89S51

18、單片機相連接,</p><p><b>  3.2 主要特性</b></p><p><b>  1)8位分辨率;</b></p><p>  2)電流型輸出,穩(wěn)定時間為1uS;</p><p>  3)可雙緩沖輸入,單緩沖輸入或直接數(shù)字輸入;</p><p>  4)單一電

19、源供電(+5~+15V);</p><p>  5 低功耗(20mW;)</p><p>  3.3 芯片引腳排列與名稱</p><p>  DIP封裝形式的DAC0832的芯片引腳排列與名稱如圖51所示。</p><p>  VCC:電源電壓,+5V。</p><p>  GND:地線輸入端。

20、 圖5 DAC0832的芯片引腳排列與名稱</p><p>  D0~D7:8位數(shù)字量輸入引腳。單片機由這8根線傳送給D/A轉(zhuǎn)換數(shù)字量。D7為最高有效位,D0為最低有效位。</p><p>  Vref:參考電壓端。</p><p>  /CS:片選信號,當(dāng)/CS為低電平時候,芯片被選中工作。</p><p>  ILE:允許數(shù)字量輸

21、入線。高電平有效。</p><p>  /XREF:傳送控制輸入線,低電平有效。</p><p>  /WR1,/WR2:寫命令輸入線。</p><p>  Ffb:運算放大器反饋線。</p><p>  Iout1,Iout2:模擬電流輸出線,Iout1+Iout2為一常數(shù)。</p><p><b>  二

22、.硬件電路設(shè)計</b></p><p>  1.A/D轉(zhuǎn)換器ADC0809</p><p><b>  1.1 簡介</b></p><p>  ADC0809是美國國家半導(dǎo)體公司生產(chǎn)的8位ADC,它是采用逐次逼近的方法完成A/D轉(zhuǎn)換的。ADC0809的內(nèi)部結(jié)構(gòu)框圖如圖 所示。ADC0809由單一+5V電源供電,片內(nèi)有帶鎖存功能的

23、8路模擬多路開關(guān),,可對8路0~5V的輸入模擬電壓信號分時進行轉(zhuǎn)換,完成一次轉(zhuǎn)換約需100us;輸出具有TTL三臺鎖存緩沖器,可以直接接到單片機數(shù)據(jù)總線上。通過適當(dāng)?shù)耐饨与娐罚珹DC0809可對0~5V的雙級性模擬信號進行轉(zhuǎn)換。</p><p>  1.2主要特性  1)8路8位A/D轉(zhuǎn)換器,即分辨率8位。   2)具有轉(zhuǎn)換起??刂贫恕?  3)轉(zhuǎn)換時間為100μs  4)單+5V電源供電   5)模擬

24、輸入電壓范圍0~+5V,不需零點和滿刻度校準(zhǔn)。   6)工作溫度范圍為-40~+85攝氏度   7)低功耗,約15mW。</p><p>  1.3 芯片引腳排列與名稱</p><p>  DIP封裝形式的ADC0809的芯片引腳排列與名稱如圖6所示</p><p>  各引腳功能說明如下:</p><p>  VCC:電源電壓,+5V。

25、</p><p>  GND:地線輸入端。</p><p>  D0~D7:8位數(shù)字量輸出引腳。A/D轉(zhuǎn)換結(jié)</p><p>  果由這8根線傳送給單片機。D7為最高有效位, 圖6 0809引腳圖排列與名稱</p><p><b>  D0為最低有效位。</b></p><p>  IN0~

26、IN7:8路模擬量輸入引腳。</p><p>  Vref(+):參考電壓正端。。</p><p>  Vref(-):參考電壓負端。</p><p>  START:啟動信號輸入端,START為正脈沖,其上升沿清除ADC0808的內(nèi)部的各寄存器,其下降沿啟動A/D開始轉(zhuǎn)換。</p><p>  ALE:地址鎖存啟動信號,在ALE的上升沿,將

27、A、B、C上的通道地址鎖存到內(nèi)部的地址鎖存器。START和ALE兩信號用于啟動A/D轉(zhuǎn)換。</p><p>  EOC:轉(zhuǎn)換完成信號,當(dāng)EOC上升為高電平時,表明內(nèi)部A/D轉(zhuǎn)換已完成。</p><p>  OE:允許輸出信號。當(dāng)OE=1時,即為高電平,允許輸出鎖存器輸出數(shù)據(jù)。</p><p>  CLK:時鐘輸入信號,0809的時鐘頻率范圍在10~1200kHz,典

28、型值為640kHz。</p><p>  A、B、C:3位地址輸入線,經(jīng)過譯碼后可選通IN0~IN78個通道中的一個通道進行轉(zhuǎn)換。A、B、C的輸入與選通的通道的關(guān)系如表2所示:</p><p><b>  表2</b></p><p><b>  2 顯示器</b></p><p>  設(shè)計要求能顯

29、示當(dāng)前電壓值,因此可采用液晶顯示或者數(shù)碼管顯示兩種方法。考慮到數(shù)碼管顯示過于單調(diào),因此采用采用液晶顯示。液晶顯示模塊具有體積小、功耗低、顯示內(nèi)容豐富等特點,現(xiàn)在點陣型液晶顯示模塊已經(jīng)是單片機應(yīng)用設(shè)計中常用的信息顯示器件了。</p><p><b>  2.1 簡介</b></p><p>  本設(shè)計中采用了1602C型點陣式液晶顯示模塊。LCD技術(shù)和半導(dǎo)體技術(shù)的結(jié)合使

30、該顯示模塊具有高可靠性和低功耗的特點。1602C型點陣式液晶顯示模塊內(nèi)部有字符產(chǎn)生存儲器和數(shù)據(jù)存儲器。該顯示模塊可直接與AT89s51單片機相接,所有的顯示功能由控制器用指令實現(xiàn)。由單一的+5V的電源供電,數(shù)據(jù)傳送方式有4位和8位兩種選擇。內(nèi)有顯示92個ASCII字符和92個特殊字符的字庫。</p><p>  2.2 引腳排列與名稱</p><p>  1602C引腳排列與名稱如圖7所示

31、。</p><p><b>  GND:電源地;</b></p><p>  VCC:電源正極,4.5-5.5V,通常使用5V電壓;</p><p>  VO:LCD對比度調(diào)節(jié)端,電壓調(diào)節(jié)范圍為0-5V;</p><p>  RS:寫入數(shù)據(jù)或者指令選擇端。要寫入指令時,</p><p>  使RS

32、為低電平;要寫入數(shù)據(jù)時,使RS為高電平; </p><p>  R/W:讀寫控制端。R/W為高電平時,讀取數(shù)據(jù);R/W為低電平時,寫入數(shù)據(jù); </p><p>  E:LCD模塊使能信號控制端。寫數(shù)據(jù)時, 圖7 1602C引腳排列與名稱</p><p><b>  需要下降沿觸發(fā);。</b></p><p>  D

33、B0-DB7:8位數(shù)據(jù)總線,三態(tài)雙向。如果I/O口資源緊張的話,該模塊也可以只使用4位數(shù)據(jù)線DB4-DB7接口傳送數(shù)據(jù)。</p><p>  A: LED背光正極。需要背光時,A串接一個限流電阻接VDD,K接地,實測該模塊的背光電流為50mA左右;</p><p>  K: LED背光地端</p><p>  3.1 MM74C922接口電路</p>

34、<p>  設(shè)計中MM74C922的輸出口與P1口的低四位相接,DA端通過反向器與P3.2相接。每當(dāng)有按鍵按下時,DA就產(chǎn)生高電平,同時向P1口低四位傳送16進制的BCD碼,分別對應(yīng)16個按鍵。</p><p>  MM74C922與鍵盤及AT89S51的接線圖見圖9</p><p>  圖9 MM74C922接口電路</p><p>  3.2 DAC0

35、832接口電路</p><p>  DAC0832 最具特色是輸入為雙緩沖結(jié)構(gòu),數(shù)字信號在進入D/A 轉(zhuǎn)換前,需經(jīng)過兩個獨立控制的8 位鎖存器傳送。其優(yōu)點是D/A 轉(zhuǎn)換的同時,DAC 寄存器中保留現(xiàn)有的數(shù)據(jù),而在輸入寄存器中可送入新的數(shù)據(jù)。系統(tǒng)中多個D/A 轉(zhuǎn)換器內(nèi)容可用一公共的選通信號選通輸出。</p><p>  設(shè)計中用2個電壓控制字代表0.1V當(dāng)電壓控制字從0,2,4,……到198

36、時,可調(diào)穩(wěn)壓源輸出0.0,0.1,……,9.9。由于DAC0832是電流輸出型,輸出的電流隨輸入的電壓控制字線性變化。若要得到電壓,還需要外接一片運放來實現(xiàn)電流到電壓的轉(zhuǎn)換。由于DAC0832 輸出級沒有加集成運放,所以需外加LM324 相配適用。考慮到設(shè)計需要,采用了單緩沖雙級性的接法,如圖10所示:</p><p>  圖10 DAC0832接口電路</p><p><b>

37、;  其計算公式為:</b></p><p>  其中Vref為參考電壓,D為DAC0832接收到的數(shù)據(jù)。5為DAC0832基準(zhǔn)電壓。</p><p>  如果圖中所示電阻RX,RY,RZ的阻值選取適當(dāng),則輸出電壓范圍在電壓控制字從0,2,4,……到198變換時根據(jù)上式計算可得輸出電壓為+4.9V~-5V,正好滿足后續(xù)電路的要求。其中P2.7為DAC0832的片選控制端。<

38、;/p><p>  3.3 ADC0809接口電路</p><p>  由于輸出電壓范圍是0.0V~9.9V超出了ADC0809的測量范圍,因此使用電位器將輸出電壓分壓后送至ADC0809的輸入端。</p><p>  ADC0809與AT89S51的接口電路如圖11所示</p><p>  圖11 ADC0809接口電路</p>

39、<p>  其中P2.6為0809的片選信號,與WR和RD分別通過或非門接到0809的START和OE上,EOC通過非門與AT89S51的INT0相接。由于0809需要時鐘信號,因此可以從AT89S51的ALE端得到6分頻的振蕩信號,為了使6分頻后的信號能滿足0809的需求,我們采用的是4M的晶體振蕩器。</p><p>  3.4 LCD1602C接口電路</p><p>  

40、LCD1602C與AT89S51的接口電路如圖12所示</p><p>  圖12 LCD顯示電路</p><p>  3.5 可調(diào)穩(wěn)壓源電路</p><p>  為了獲得大的負載電流,可調(diào)穩(wěn)壓部分使用了最大輸出電流為1A 的7805三端集成穩(wěn)壓塊。7805原本是輸出固定電壓為5V的集成穩(wěn)壓塊,但可以外接電路來改變輸出電壓值??烧{(diào)穩(wěn)壓的電路見圖13:</p&g

41、t;<p>  設(shè)運放理想。這時,可</p><p>  認為運放輸入電壓很小。即: 圖13 可調(diào)穩(wěn)壓電路 </p><p>  其中Vin為D/A部分輸出的雙級性電壓,5為7805的穩(wěn)壓值。由上式可見,Vout與Vin之間成線形關(guān)系,當(dāng)Vin變化時,輸出電壓改變。由于Vin是DAC0832輸出的范圍是+4.9V~-5V的電壓,因而Vo

42、ut的變化可以從0.0V~9.9V。經(jīng)實驗證明:這種可調(diào)穩(wěn)壓輸出具有良好的負載特性,輸出最大負載電流可達到1A。電壓輸出端接上500mA負載與未接負載(空載)之間輸出電壓僅相差0.04V以內(nèi)。由于。</p><p><b>  3.6流穩(wěn)壓電路</b></p><p>  本設(shè)計共用到電源有三種:即±15V,+5V 。可選用的有開關(guān)電源和穩(wěn)壓電源兩種,由于開

43、關(guān)電源的紋波系數(shù)比較大,且設(shè)計要求電壓紋波不大于10mV 。因此采用常用的穩(wěn)壓電源來作為整個系統(tǒng)的電源。穩(wěn)壓電源由電源變壓器、整流電路、濾波電路和穩(wěn)壓電路組成,如圖14所示</p><p>  圖14 電源方框及波形圖</p><p>  整流和濾波電路:整流作用是將交流電壓U2變換成脈動電壓U3。濾波電路一般由電容組成,其作用是脈動電壓U3中的大部分紋波加以濾除,以得到較平滑的直流電壓

44、U4。再通過穩(wěn)壓電路得到平直的直流電壓U5。</p><p>  電源變壓器采用了雙17.2V的變壓器,輸入220V,50Hz交流電,經(jīng)全橋整流,濾波,穩(wěn)壓后得到±15V和+5V三種輸出,+5V部分供單片機及D/A,A/D,顯示等部分使用,電流最大約400mA;+15V和-15V部分供運放使用,最大電流不超過50mA。電路如圖15所示:</p><p>  圖15 電源部分原理圖

45、</p><p>  圖中繼電器部分是一個開關(guān)電路及短路保護電路。當(dāng)系統(tǒng)接到220V交流電后經(jīng)變壓器降壓,整流橋整流后接到K1,此時由于U1(7815)沒有輸入,所以K1沒有供電,整個后續(xù)系統(tǒng)處于關(guān)閉狀態(tài),當(dāng)按下SW_ON鍵時U1得到輸入,產(chǎn)生+15V的輸出,同時K1得電吸合,形成自鎖狀態(tài),同時79L15也得電輸出-15V電壓。松開SW_ON鍵后由于K1處于自鎖狀態(tài),整個系統(tǒng)處于開啟狀態(tài)。當(dāng)按下SW_OFF鍵時,

46、K1被短路,從而斷開電源達到關(guān)機的目的。同樣,在任一時刻如果產(chǎn)生短路,則K1也會斷開達到短路保護的目的。</p><p>  +5V部分的供電電流在400mA左右,因此采用了最大輸出電流為1A 的7805三端穩(wěn)壓集成電路,由于功耗大,負載重,加裝了散熱片。而+15V和-15V部分最大電流不超過50mA。在設(shè)計過程中發(fā)現(xiàn)中兩片7805的均使用了散熱片且溫度偏高,因此加裝了風(fēng)扇,使用+15V電源,將78L15該為78

47、15后可滿足風(fēng)扇需求。這樣在保證性能的同時也降低了成本。</p><p><b>  三.程序設(shè)計</b></p><p><b>  1主控程序</b></p><p>  圖16為系統(tǒng)主控程序。</p><p>  圖16 系統(tǒng)主控程序框圖</p><p><b&

48、gt;  2 D/A子程序</b></p><p>  圖17為D/A子程序框圖。</p><p>  圖17 D/A子程序框圖</p><p>  可以看出,D/A子程序的作用是將設(shè)定的數(shù)字量通過變換送給D/A。</p><p><b>  3 A/D子程序</b></p><p>

49、;  圖18為A/D子程序框圖。</p><p>  圖18 A/D子程序框圖</p><p>  由A/D子程序框圖看出,修改精度為一個數(shù)字量,由于A/D和D/A的精度限制,修改量只能達到0.05V,但足已滿足設(shè)計需要。</p><p><b>  4 鍵盤子程序</b></p><p>  圖19為鍵盤子程序框圖。&

50、lt;/p><p>  圖19 鍵盤子程序框圖框圖</p><p>  4.1 步進步減子程序</p><p>  圖20為步進,步減子程序框圖</p><p>  圖20 步進,步減子程序框圖</p><p>  由步進,步減子程序框圖可以看出,如果每次把D/A的數(shù)字量加01H,可以使步進量和步減量由0.1V變?yōu)?.0

51、5V。如果采用更高位的D/A轉(zhuǎn)換器??梢允共竭M量和步減量進一步的減小,以滿足更高的要求。</p><p><b>  4.2 設(shè)置子程序</b></p><p>  圖21為設(shè)置子程序框圖:</p><p>  圖21 設(shè)置子程序框圖</p><p>  由設(shè)置子程序可以看出,進入設(shè)置子程序后就屏蔽了“+”,“-”和設(shè)

52、置鍵。然后逐步判斷按鍵,執(zhí)行相應(yīng)程序。</p><p><b>  五.設(shè)計總結(jié)</b></p><p>  在本次設(shè)計過程中,對紋波也沒有提出嚴格要求,所以常用的穩(wěn)壓集成電路就可以滿足要求。在電路中采用了模擬器件和數(shù)字器件所以需要+5V、和-15V 電源供電。本設(shè)計輸出的電壓穩(wěn)壓精度高,可以用在對直流電壓要求較高的設(shè)備上,或在科研實驗室中當(dāng)作實驗電源使用。</

53、p><p>  在本次設(shè)計的過程中,我發(fā)現(xiàn)很多的問題,給我的感覺就是很難,很不順手,看似很簡單的電路,要動手把它給設(shè)計出來,是很難的一件事,主要原因是我們沒有經(jīng)常動手設(shè)計過電路,還有資料的查找也是一大難題,這就要求我們在以后的學(xué)習(xí)中,應(yīng)該注意到這一點,更重要的是我們要學(xué)會把從書本中學(xué)到的知識和實際的電路聯(lián)系起來,這不論是對我們以后的就業(yè)還是學(xué)習(xí),都會起到很大的促進和幫助,我相信,通過這次的課程設(shè)計,在下一階段的學(xué)習(xí)中

54、我會更加努力,力爭把這門課學(xué)好,學(xué)精。</p><p>  同時,通過本次課程設(shè)計,鞏固了我們學(xué)習(xí)過的專業(yè)知識,也使我們把理論與實踐從真正意義上相結(jié)合了起來;考驗了我們借助互聯(lián)網(wǎng)絡(luò)搜集、查閱相關(guān)文獻資料,和組織材料的綜合能力;從中可以自我測驗,認識到自己哪方面有欠缺、不足,以便于在日后的學(xué)習(xí)中得以改進、提高;通過使用電路CAD 軟件Protel 99 se , 也讓我們了解到計算機輔助設(shè)計(CAD)的智能化,有利

55、于提高工作效率。</p><p>  本次關(guān)于簡易數(shù)控直流穩(wěn)壓電源的設(shè)計與制作是在嚴輝老師以及其他輔導(dǎo)老師的精心指導(dǎo)下,和同組內(nèi)其他成員的共同交流下才得以順利完成。經(jīng)過本次畢業(yè)設(shè)計把我大學(xué)三年來所學(xué)的理論知識轉(zhuǎn)化為實際應(yīng)用,既鍛煉了我們的實際操作能力,又使理論知識得以加強和升華,激發(fā)了創(chuàng)新意識。</p><p>  再次感謝各位老師和同學(xué)們的幫助。</p><p>

56、<b>  六.附件</b></p><p><b>  A、程 序 實 現(xiàn)</b></p><p>  單片機系統(tǒng)初始化和存儲器分配程序</p><p><b>  $NOMOD51</b></p><p>  ;-------------------------------

57、-----------------------------------------------</p><p>  ; This file is part of the C51 Compiler package //這個文件是c51 鏈接的數(shù)據(jù)</p><p>  ;------------------------------------------------------------

58、------------------</p><p>  ; STARTUP.A51: This code is executed after processor reset. 這個代碼在程序重啟之后執(zhí)行</p><p><b>  ;</b></p><p>  ; To translate this file use A51 with

59、 the following invocation:</p><p><b>  ;</b></p><p>  ; A51 STARTUP.A51</p><p><b>  ;</b></p><p>  ; To link the modified STARTUP.OBJ file

60、to your application use the following</p><p>  ; BL51 invocation:</p><p><b>  ;</b></p><p>  ; BL51 <your object file list>, STARTUP.OBJ <controls></

61、p><p><b>  ;</b></p><p>  ;------------------------------------------------------------------------------</p><p><b>  ;</b></p><p>  ; User-define

62、d Power-On Initialization of Memory</p><p><b>  ;</b></p><p>  ; With the following EQU statements the initialization of memory</p><p>  ; at processor reset can be de

63、fined:</p><p><b>  ;</b></p><p>  ; ; the absolute start-address of IDATA memory is always 0</p><p>  IDATALEN EQU 80H ; the length of IDATA

64、 memory in bytes. IDATA存儲的字節(jié)長度</p><p><b>  ;</b></p><p>  XDATASTART EQU 0H ; the absolute start-address of XDATA memory XDATA 存儲的實際起始地址</p><p>  XDATALEN

65、 EQU 0H ; the length of XDATA memory in bytes.</p><p><b>  ;</b></p><p>  PDATASTART EQU 0H ; the absolute start-address of PDATA memory</p><

66、p>  PDATALEN EQU 0H ; the length of PDATA memory in bytes.</p><p><b>  ;</b></p><p>  ; Notes: The IDATA space overlaps physically the DATA and BIT areas of the&

67、lt;/p><p>  ; 8051 CPU. At minimum the memory space occupied from the C51 </p><p>  ; run-time routines must be set to zero. </p><p>  ;------------------------------

68、------------------------------------------------</p><p><b>  ;</b></p><p>  ; Reentrant Stack Initilization</p><p><b>  ;</b></p><p>  ; The f

69、ollowing EQU statements define the stack pointer for reentrant</p><p>  ; functions and initialized it:</p><p><b>  ;</b></p><p>  ; Stack Space for reentrant function

70、s in the SMALL model.</p><p>  IBPSTACK EQU 0 ; set to 1 if small reentrant is used.</p><p>  IBPSTACKTOP EQU 0FFH+1 ; set top of stack to highest location+1.</p>

71、<p><b>  ;</b></p><p>  ; Stack Space for reentrant functions in the LARGE model. </p><p>  XBPSTACK EQU 0 ; set to 1 if large reentrant is used.</p&

72、gt;<p>  XBPSTACKTOP EQU 0FFFFH+1; set top of stack to highest location+1.</p><p><b>  ;</b></p><p>  ; Stack Space for reentrant functions in the COMPACT model. &

73、lt;/p><p>  PBPSTACK EQU 0 ; set to 1 if compact reentrant is used.</p><p>  PBPSTACKTOP EQU 0FFFFH+1; set top of stack to highest location+1.</p><p><b>

74、  ;</b></p><p>  ;------------------------------------------------------------------------------</p><p><b>  ;</b></p><p>  ; Page Definition for Using the Compac

75、t Model with 64 KByte xdata RAM</p><p><b>  ;</b></p><p>  ; The following EQU statements define the xdata page used for pdata</p><p>  ; variables. The EQU PPAGE must

76、 conform with the PPAGE control used</p><p>  ; in the linker invocation.</p><p><b>  ;</b></p><p>  PPAGEENABLE EQU 0 ; set to 1 if pdata object are used

77、.</p><p><b>  ;</b></p><p>  PPAGE EQU 0 ; define PPAGE number. </p><p><b>  ;</b></p><p>  PPAGE_SFR DATA 0A0H

78、 ; SFR that supplies uppermost address byte</p><p>  ; (most 8051 variants use P2 as uppermost address byte)</p><p><b>  ;</b></p><p>  ;-----------------

79、-------------------------------------------------------------</p><p>  ; Standard SFR Symbols </p><p>  ACC DATA 0E0H</p><p>  B DATA 0F0H</p><p>  S

80、P DATA 81H</p><p>  DPL DATA 82H</p><p>  DPH DATA 83H</p><p>  NAME C_STARTUP</p><p>  C_C51STARTUP SEGMENT CODE</p><p>  STA

81、CK SEGMENT IDATA</p><p>  RSEG STACK</p><p><b>  DS 1</b></p><p>  EXTRN CODE (?C_START)</p><p>  PUBLIC C_STARTUP</p><p> 

82、 CSEG AT 0</p><p>  ?C_STARTUP: LJMP STARTUP1</p><p>  RSEG C_C51STARTUP</p><p><b>  STARTUP1:</b></p><p>  IF IDATALEN <> 0</p&g

83、t;<p>  MOV R0,#IDATALEN - 1</p><p><b>  CLR A</b></p><p>  IDATALOOP: MOV @R0,A</p><p>  DJNZ R0,IDATALOOP</p><p><b>  END

84、IF</b></p><p>  IF XDATALEN <> 0</p><p>  MOV DPTR,#XDATASTART</p><p>  MOV R7,#LOW (XDATALEN)</p><p>  IF (LOW (XDATALEN)) <> 0</p>&l

85、t;p>  MOV R6,#(HIGH (XDATALEN)) +1</p><p><b>  ELSE</b></p><p>  MOV R6,#HIGH (XDATALEN)</p><p><b>  ENDIF</b></p><p><b>  CLR

86、 A</b></p><p>  XDATALOOP: MOVX @DPTR,A</p><p>  INC DPTR</p><p>  DJNZ R7,XDATALOOP</p><p>  DJNZ R6,XDATALOOP</p><p><b>

87、  ENDIF</b></p><p>  IF PPAGEENABLE <> 0</p><p>  MOV PPAGE_SFR,#PPAGE</p><p><b>  ENDIF</b></p><p>  IF PDATALEN <> 0</p><

88、p>  MOV R0,#LOW (PDATASTART)</p><p>  MOV R7,#LOW (PDATALEN)</p><p><b>  CLR A</b></p><p>  PDATALOOP: MOVX @R0,A</p><p>  INC R0

89、</p><p>  DJNZ R7,PDATALOOP</p><p><b>  ENDIF</b></p><p>  IF IBPSTACK <> 0</p><p>  EXTRN DATA (?C_IBP)</p><p>  MOV C_IBP,#LOW I

90、BPSTACKTOP</p><p><b>  ENDIF</b></p><p>  IF XBPSTACK <> 0</p><p>  EXTRN DATA (?C_XBP)</p><p>  MOV C_XBP,#HIGH XBPSTACKTOP</p><p> 

91、 MOV C_XBP+1,#LOW XBPSTACKTOP</p><p><b>  ENDIF</b></p><p>  IF PBPSTACK <> 0</p><p>  EXTRN DATA (C_PBP)</p><p>  MOV C_PBP,#LOW PBPSTACKTOP&

92、lt;/p><p><b>  ENDIF</b></p><p>  MOV SP,#STACK-1</p><p>  ; This code is required if you use L51_BANK.A51 with Banking Mode 4</p><p>  ; EXTRN CODE (B_SWI

93、TCH0)</p><p>  ; CALL B_SWITCH0 ; init bank mechanism to code bank 0</p><p>  LJMP C_START</p><p><b>  END</b></p><p><b>  鍵盤掃

94、描程序</b></p><p>  #include<reg52.h></p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  sbit key1=P1^0;</p><p>  sb

95、it key2=P1^1;</p><p>  void delay(uint z); </p><p>  uchar keyscan() // 鍵盤掃描程序</p><p><b>  {</b></p><p>  uchar temp,num;</p&

96、gt;<p><b>  num=17;</b></p><p>  P1=0xfe; // p1.0口置0</p><p><b>  temp=P1;</b></p><p>  temp=temp&0xf0;</p><p> 

97、 while(temp!=0xf0)</p><p><b>  {</b></p><p>  delay(20);</p><p>  temp=P1; </p><p>  temp=temp&0xf0; </p><p>  if(temp!=0xf0)<

98、;/p><p><b>  {</b></p><p>  //delay(10); //延遲去抖</p><p>  P1=P1&0xf0; </p><p>  while(P1!=0xf0);</p><p>  switch(temp

99、)</p><p><b>  {</b></p><p>  case 0xe0:num=7;break; //0xf0和0xe0的交處,即p1.0與p1.4的交處</p><p>  case 0xd0:num=8;break; // p1.0與p1.5的交處,</p><p>  c

100、ase 0xb0:num=9;break;</p><p>  case 0x70:num=15;break; </p><p>  default:break;</p><p><b>  }</b></p><p><b>  }</b></p><p>  else

101、 break;</p><p><b>  }</b></p><p><b>  P1=0xfd;</b></p><p><b>  temp=P1;</b></p><p>  temp=temp&0xf0;</p><p>  while

102、(temp!=0xf0)</p><p><b>  {</b></p><p>  delay(20);</p><p><b>  temp=P1;</b></p><p>  temp=temp&0xf0;</p><p>  if(temp!=0xf0)<

103、;/p><p><b>  {</b></p><p>  //delay(10);</p><p>  P1=P1&0xf0;</p><p>  while(P1!=0xf0);</p><p>  switch(temp)</p><p><b>  {

104、</b></p><p>  case 0xe0:num=4;break;</p><p>  case 0xd0:num=5;break;</p><p>  case 0xb0:num=6;break;</p><p>  case 0x70:num=14;break;</p><p>  defaul

105、t:break;</p><p><b>  }</b></p><p><b>  }</b></p><p>  else break;</p><p><b>  }</b></p><p><b>  P1=0xfb;</b>

106、;</p><p><b>  temp=P1;</b></p><p>  temp=temp&0xf0;</p><p>  while(temp!=0xf0)</p><p><b>  {</b></p><p>  delay(20);</p>

107、<p><b>  temp=P1;</b></p><p>  temp=temp&0xf0;</p><p>  if(temp!=0xf0)</p><p><b>  {</b></p><p>  //delay(10);</p><p>  P

108、1=P1&0xf0;</p><p>  while(P1!=0xf0);</p><p>  switch(temp)</p><p><b>  {</b></p><p>  case 0xe0:num=1;break;</p><p>  case 0xd0:num=2;break

109、;</p><p>  case 0xb0:num=3;break;</p><p>  case 0x70:num=13;break;</p><p>  default:break;</p><p><b>  }</b></p><p><b>  }</b></

110、p><p>  else break;</p><p><b>  }</b></p><p><b>  P1=0xf7;</b></p><p><b>  temp=P1;</b></p><p>  temp=temp&0xf0;</p

111、><p>  while(temp!=0xf0)</p><p><b>  {</b></p><p>  delay(20);</p><p><b>  temp=P1;</b></p><p>  temp=temp&0xf0;</p><p&

112、gt;  if(temp!=0xf0)</p><p><b>  {</b></p><p>  //delay(10);</p><p>  P1=P1&0xf0;</p><p>  while(P1!=0xf0);</p><p>  switch(temp)</p>

113、<p><b>  {</b></p><p>  case 0xe0:num=10;break;</p><p>  case 0xd0:num=0;break;</p><p>  case 0xb0:num=11;break;</p><p>  case 0x70:num=12;break;</

114、p><p>  default:break;</p><p><b>  }</b></p><p><b>  }</b></p><p>  else break;</p><p><b>  }</b></p><p>  re

115、turn num;</p><p><b>  }</b></p><p><b>  主程序</b></p><p>  #include<reg52.h></p><p>  #include<absacc.h></p><p>  #includ

116、e<intrins.h></p><p>  #include<math.h></p><p>  #include"keyscan.h"</p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p&

117、gt;<p>  #define dac0832 XBYTE[0X7FFF] //P2.7作片選,啟動DA轉(zhuǎn)換</p><p>  #define int0 XBYTE[0X7FF8] //結(jié)束AD轉(zhuǎn)換,鎖存通道0,讀出AD值</p><p>  uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0

118、x7d,0x07,0x7f,0x6f,</p><p>  0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef}; //數(shù)組table[]存放代碼</p><p>  uchar temp1,weishu,flag,dot;</p><p>  uchar volt[4]={0,0,0,0};</p>

119、<p>  void delay(uint z)</p><p><b>  {</b></p><p><b>  uint x,y;</b></p><p>  for(x=z;x>0;x--)</p><p>  for(y=110;y>0;y--);</p>

120、<p><b>  }</b></p><p>  void display(uchar z) //LED顯示函數(shù)</p><p><b>  {</b></p><p><b>  uchar j;</b></p><p>  P2=0

121、xFE; //P2.0口置0 ,選擇第一個數(shù)碼管</p><p>  for(j=0;j<z;j++) // 循環(huán)控制</p><p><b>  {</b></p><p>  P0=table[volt[j]]; // 將P0口數(shù)據(jù)送 L

122、ED顯示</p><p><b>  delay(6);</b></p><p>  if(j<z-1) P2=_crol_(P2,1); //判斷,依次選擇P2.1,P2.2口 </p><p><b>  }</b></p><p><b>  }</b>

123、</p><p>  void main()</p><p><b>  { </b></p><p>  uchar keynum,i;</p><p>  float voltage,xiaoshu,sum;</p><p><b>  i=0;</b></p>

124、;<p>  voltage=0;</p><p><b>  temp1=0;</b></p><p><b>  flag=0;</b></p><p>  weishu=1; //定義數(shù)字量值temp1,進位標(biāo)志flag,數(shù)碼管位數(shù)weishu等變量</p><p>&

125、lt;b>  while(1)</b></p><p><b>  { </b></p><p>  dac0832=temp1; // 初始值設(shè)定為0</p><p>  keynum=keyscan(); //調(diào)用鍵盤掃描函數(shù)</p>&l

126、t;p>  if(keynum==15) //如果鍵值15,代表復(fù)位,將p0置0</p><p><b>  {</b></p><p>  P0=0; //p0口置0,復(fù)位</p><p>  while(1) <

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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

提交評論