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

下載本文檔

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

文檔簡介

1、<p><b>  畢業(yè)設(shè)計</b></p><p>  課 題 名 稱: 簡易數(shù)控直流電源設(shè)計 </p><p>  專 業(yè) 班 級: 應(yīng)用電子技術(shù)(10電子302) </p><p>  學 生 姓 名: </p><p>  指 導(dǎo) 教 師:

2、 </p><p>  二O一 三 年 三 月 六 日</p><p><b>  摘 要</b></p><p>  本次簡易數(shù)控電源的設(shè)計采用AT89C51作為系統(tǒng)的控制單元,通過鍵盤按鍵對D/A輸出的電壓進行如初值設(shè)置、單加單減、連加連減等簡易數(shù)控,再經(jīng)功率放大電路模塊實現(xiàn)輸出電流為500mA,將最終的輸出

3、電壓衰減后輸給A/D轉(zhuǎn)換,最后再將鍵盤輸入的電壓初值與輸出實際電壓值處理后顯示在LCD1602上。本系統(tǒng)具有輸出精度高、液晶顯示直觀等特點,并實現(xiàn)了輸出電壓范圍為0--9.9V,步進為0.1V,紋波不大于10mV的可預(yù)置電壓的數(shù)控電源。</p><p>  關(guān)鍵詞:AT89C51 DAC0832 ADC0809 數(shù)控 lcd1602</p><p><b> 

4、 目錄</b></p><p>  一、設(shè)計任務(wù)與要求4</p><p>  1.1. 基本功能4</p><p>  1.2擴展與創(chuàng)新5</p><p>  二、系統(tǒng)整體方案設(shè)計及分析5</p><p>  3.1.4 數(shù)控穩(wěn)壓輸出部分9</p><p>  4.1單片機

5、概述10</p><p>  4.2單片機概述10</p><p>  4.3單片機的主要特點有11</p><p><b>  五、芯片簡介11</b></p><p>  5.1 MSC—51芯片簡介11</p><p>  5.1.1 MSC—51單片機內(nèi)部結(jié)構(gòu)11</p&

6、gt;<p>  5.1.2 MCS-51的引腳說明:13</p><p>  5.2 8255芯片簡介15</p><p>  5.2.1 8255可編程并行接口芯片簡介:15</p><p>  5.2.2 8255可編程并行接口芯片方式控制字格式說明:16</p><p>  5.2.3 8255可編程并行

7、接口芯片工作方式說明:17</p><p>  六、軟件設(shè)計流程圖17</p><p>  7.3系統(tǒng)誤差分析20</p><p><b>  八、總結(jié)21</b></p><p><b>  參考文獻21</b></p><p><b>  引言<

8、/b></p><p>  隨著人們生活水平的不斷提高,數(shù)字化控制無疑是人們追求的目標之一,它所給人們帶來的方便是不可否定的,其中數(shù)控直流穩(wěn)壓電源就是一個很好的典型例子,但人們對他的要求也越來越高,要為現(xiàn)代人工作,科研,生活提供更好的,更方便的設(shè)施就需要從數(shù)字電子技術(shù)入手,一切向數(shù)字化,智能化方向發(fā)展。</p><p>  因此,在這里做一個數(shù)控直流電源的設(shè)計。該數(shù)控電源采用步進調(diào)整

9、方式,調(diào)整范圍為0.0V~9.9V,調(diào)整手段采用按鍵進行調(diào)整,當需要改變電壓值時,啟動數(shù)控系統(tǒng),輸入想要得到的電壓值,再按下確定鍵,即可輸出相應(yīng)的電壓。該系統(tǒng)采用單片機作主控器件,結(jié)合軟件和硬件設(shè)計方法,使該系統(tǒng)的結(jié)構(gòu)較簡單,可控性強,使用也很方便。</p><p><b>  一、設(shè)計任務(wù)與要求</b></p><p><b>  1.1. 基本功能<

10、;/b></p><p>  根據(jù)設(shè)計要求和使用需要,設(shè)計的簡易數(shù)控電源具有以下功能:</p><p>  電源輸出電壓范圍0.0--9.9V,步進0.1V,紋波小于10mV,輸出電壓值由LCD1602顯示,額定輸出電流500mA。</p><p>  用戶對數(shù)控電源的控制,通過鍵盤進行鍵盤設(shè)計。</p><p>  (3)整機由自制穩(wěn)

11、壓電源供電,輸入交流220V,輸出直流±15V和+5V。</p><p> ?。?)由于是簡易電源,在設(shè)計時充分注意成本因素,是電源具有較高的性價比。</p><p>  設(shè)計出有一定輸出電壓范圍和功能的數(shù)控電源。其原理示意圖如下: </p><p><b>  1.2擴展與創(chuàng)新</b></p><p> ?。?/p>

12、1)輸出電壓可預(yù)置在 0~9.9V 之間的任意一個值; </p><p> ?。?)用自動掃描代替人工按鍵,實現(xiàn)輸出電壓變化(步進 0.1V 不變); </p><p> ?。?)擴展輸出電壓種類(比如三角波等)。</p><p>  二、系統(tǒng)整體方案設(shè)計及分析</p><p><b>  2.1系統(tǒng)方案</b><

13、/p><p>  2.1.1總體設(shè)計方案</p><p>  方案一:方案一如圖2-1-1所示,采用單片機+數(shù)字電位器方案。此方案就是把常用的電位器調(diào)節(jié)電源中的機械式電位器用數(shù)字電位器代替。數(shù)字電位器是沒有機械抽頭,具有較小的震動公差和較高的機械可靠性,且其可編能力允許可重復(fù)可靠地返回同一抽頭位置,因此此方案線路較為簡單、可靠。但現(xiàn)有的數(shù)字電位器分辨率有限,常見的有32抽頭、64抽頭,構(gòu)成的分

14、壓電路精度有限,無法滿足設(shè)計要求。</p><p>  圖 2-1-1 方案一</p><p>  方案二:方案二如圖2-1-2所示,此電路包括電源模塊、控制電路、鍵盤電路、顯示電路、D/A轉(zhuǎn)換電路以及電壓放大電路。</p><p>  圖2-1-2 方案二</p><p>  綜合以上兩種方案,我所采用的是第二種。方案二,是我們常常接觸

15、到的,它可以更直觀的表達出此電路的意思,讓它變得更加的簡單明了。使人們一眼就能明白本電路要完成的東西是什么?讓不明白電子的人,也能更加清楚的知道它的流程與走向。</p><p>  三、 系統(tǒng)硬件設(shè)計 </p><p><b>  3.1直流穩(wěn)壓電源</b></p><p>  穩(wěn)壓電源是能為負載提供穩(wěn)定交流電源或直流電源的電子裝置。對一個理想

16、的直穩(wěn)壓電源來說,應(yīng)具有下述特點:</p><p>  (l)在直流和所有頻率下,輸出阻抗為零;</p><p>  (2)在交流電源電壓很寬的范圍內(nèi),并在供電電路所要求的負載電流范圍內(nèi),調(diào)整率為零;(直流電壓輸出恒定)</p><p><b>  (3)功耗為零;</b></p><p>  (4)電網(wǎng)電壓和負載電流變

17、化時,輸出電壓能立即恢復(fù)穩(wěn)定;</p><p>  (5)當過載電流消除時,過載保護裝置能自動恢復(fù)到正常工作狀態(tài)。</p><p>  為了給元器件提供穩(wěn)定的電流輸出,我自制了一個直流穩(wěn)壓電源,電路圖如下:</p><p><b>  圖3-1</b></p><p>  3.1.1 電壓放大和電流放大</p&g

18、t;<p>  要想實現(xiàn)Vout最大值到9.9V,還需要經(jīng)過運放的電壓放大,放大倍數(shù)為9.9/3.882=2.55倍。設(shè)計要求電流負載能力為500mA,故采用TIP122功率管,其放大倍數(shù)為1000倍,將運放電壓驅(qū)動電流降為0.5mA。如圖3-1-1所示,Vout=[(R1+R2)/(R2*0.525)]Vin=2.55Vin。</p><p>  而保護電路由R4和Q1構(gòu)成,當電源輸出電流I增加到

19、一定大小時,R4上的壓降使得Q1管導(dǎo)通,分掉了功放管的基極電流,使得I不再增加。設(shè)Imax=600mA,Q1的導(dǎo)通電壓為0.6V,則R4=0.6V/600mA=1.0Ω。</p><p>  圖3-1-1電壓電流放大</p><p>  3.1.2 鍵盤顯示電路 </p><p>  此次的顯示部分由鍵盤顯示板來完成,它由2個8位LED數(shù)碼顯示器和2片SN74HC

20、164CN芯片加上8個按鍵組成,具體電路圖如下圖3-1-2。</p><p><b>  圖3-1-2</b></p><p>  3.1.3 ADC0809</p><p>  將輸出的模擬電壓轉(zhuǎn)換為數(shù)字量經(jīng)單片機輸出到LCD,并顯示其值。由于基準電壓為5V,因此還需要將輸出的電壓在硬件上衰減2.5倍,然后在單片機上處理時在放大2.5倍。&l

21、t;/p><p>  3.1.4 數(shù)控穩(wěn)壓輸出部分</p><p>  這兩部分的核心是一個AT89C51最小應(yīng)用系統(tǒng),包括一片AT89C51芯片,雖然理論上這兩部分需要的接口較多,單片機無法滿足,但由于在軟件上采用了對P0口分時復(fù)用的方法(即每次對一個擴展芯片進行數(shù)據(jù)交換后均對P0口復(fù)位),因此并不需要外加一片8255擴展I/O口,節(jié)約了成本。其總的系統(tǒng)框圖如圖3-1-4所示。</p&

22、gt;<p>  圖3-1-4數(shù)控電源系統(tǒng)框圖</p><p>  3.1.5 主電路的工作原理及參數(shù)計算</p><p>  電壓輸出范圍0~9.9V,步進0.1V,共有100種狀態(tài),8為字長的D/A轉(zhuǎn)換器具有256種狀態(tài),能滿足要求,設(shè)計中用兩個電壓控制字代表0.1V,當電壓控制字從0,2,4,…,198時,電源輸出電壓為0.0V,0.1V, …,9.9V。電路選用的D/

23、A轉(zhuǎn)換芯片是DAC0832,該芯片價廉且精度較高。DAC0832屬于電流輸出型D/A,輸出的電流隨輸入的電壓控制字線性變化。為了得到電壓,還需外接一片運放來實現(xiàn)電流到電壓的轉(zhuǎn)換。該運放輸入端的輸入電流對轉(zhuǎn)換精度影響打,DAC0832輸出地電流有幾十微安的變化,若運放輸入端的輸入電流為0.1uA,如uA741的輸入電流約為此值,且有一定變化,則會引入相當于1~2個電壓控制字的誤差,因此應(yīng)選用高輸入阻抗的運放,如JFET輸入的運放LF356

24、,他的輸入電流可以忽略。DAC0832需要外接基準電壓,此基準電壓的性能決定了輸出電壓的性能,要求基準電壓具有高穩(wěn)定度和低紋波,故選用LM336-5作為基準源,當DAC0832采用5V基準電壓時,D/A轉(zhuǎn)換電路的滿幅輸出為5.0V(電壓控制字為255時),由于實際最大用到電壓控制字198,因此D/A部分最大輸</p><p>  D/A轉(zhuǎn)換部分輸出電壓Ui作為電源功放機的輸入電壓。其輸出電壓</p>

25、<p>  U0=(1+(Rpi+R3)/R2)Ui</p><p>  3.1.6擴展輸出負電源</p><p>  輸出負電壓只要在D/A轉(zhuǎn)換端再介入一級反相加法器,其輸出電壓U0與輸入電壓Ui的關(guān)系為</p><p>  U0 = -2Ui + 3.882 (V)</p><p>  這樣一來輸出電壓的變化范圍為 – 3.

26、882 ~ 3.882 V,從而擴展了負電路</p><p><b>  四、背景</b></p><p><b>  4.1單片機概述</b></p><p>  第一代:七十年代后期, 4 位邏輯控制器件發(fā)展到 8 位。使用 NMOS 工藝(速度低,功耗大、集成度低)。代表產(chǎn)品: MC6800 、 Intel 8048

27、 。 </p><p>  第二代:八十年代初,采用 CMOS 工藝,并逐漸被高速低功耗的 HMOS 工藝代替。代表產(chǎn)品: MC146805 、 Intel 8051 。 </p><p>  第三代:近十年來, MCU 的發(fā)展出現(xiàn)了許多新特點: </p><p>  ( 1 )在技術(shù)上,由可擴展總線型向純單片型發(fā)展,即只能工作在單片方式。 </p>

28、<p> ?。?2 ) MCU 的擴展方式從并行總線型發(fā)展出各種串行總線。 </p><p> ?。?3 )將多個 CPU 集成到一個 MCU 中。 </p><p>  ( 4 )在降低功耗,提高可靠性方面, MCU 工作電壓已降至 3.3V 。 </p><p>  第四代: FLASH 的使用使 MCU 技術(shù)進入了第四代。</p>&l

29、t;p><b>  4.2單片機概述</b></p><p>  單片機微型計算機是微型計算機的一個重要分支,也是頗具生命力的機種。單片機微型計算機簡稱單片機,特別適用于控制領(lǐng)域,故又稱為微控制器。</p><p>  通常,單片機由單塊集成電路芯片構(gòu)成,內(nèi)部包含有計算機的基本功能部件:中央處理器、存儲器和I/O接口電路等。因此,單片機只需要和適當?shù)能浖巴獠吭O(shè)

30、備相結(jié)合,便可成為一個單片機控制系統(tǒng)。</p><p>  單片機經(jīng)過1、2、3、4代的發(fā)展,目前單片機正朝著高性能和多品種方向發(fā)展,它們的CPU功能在增強,內(nèi)部資源在增多,引腳的多功能化,以及低電壓低功耗。</p><p>  4.3單片機的主要特點有</p><p><b>  具有優(yōu)異的性價比。</b></p><p&

31、gt;  集成度高、體積小、可靠性高。</p><p><b>  控制功能強。</b></p><p><b>  低電壓,的功能。</b></p><p><b>  五、芯片簡介</b></p><p>  5.1 MSC—51芯片簡介</p><p&

32、gt;  5.1.1 MSC—51單片機內(nèi)部結(jié)構(gòu)</p><p>  8051是MSC-51系列單片機的典型產(chǎn)品,它包含中央處理器、程序存儲器(ROM)、數(shù)據(jù)存儲器(RAM)、定時/計數(shù)器、并行接口、串行接口和中斷系統(tǒng)等幾大單元及數(shù)據(jù)總線、地址總線和控制總線等三大總線,現(xiàn)在我們分別加以說明:</p><p><b>  中央處理器:</b></p>&l

33、t;p>  中央處理器(CPU)是整個單片機的核心部件,是8位數(shù)據(jù)寬度的處理器,能處理8位二進制數(shù)據(jù)或代碼,CPU負責控制、指揮和調(diào)度整個單元系統(tǒng)協(xié)調(diào)的工作,完成運算和控制輸入輸出功能等操作。</p><p>  數(shù)據(jù)存儲器(RAM)</p><p>  8051內(nèi)部有128個8位用戶數(shù)據(jù)存儲單元和128個專用寄存器單元,它們是統(tǒng)一編成的,專用寄存器只能用于存放控制指令數(shù)據(jù),用戶只能

34、訪問,而不能用于存放用戶數(shù)據(jù),所以,用戶能使用的RAM只有128個,可存放讀寫的數(shù)據(jù),運算的中間結(jié)果或用戶定義的字型表。</p><p><b>  圖 1</b></p><p>  程序存儲器(ROM):</p><p>  8051共有4096個8位掩模ROM,用于存放用戶程序,原始數(shù)據(jù)或表格。</p><p>&

35、lt;b>  定時/計數(shù)器:</b></p><p>  8051有兩個16位的可編程定時/計數(shù)器,以實現(xiàn)定時或計數(shù)產(chǎn)生中斷用于控制程序轉(zhuǎn)向。</p><p>  并行輸入輸出(I/O)口:</p><p>  8051共有4組8位I/O口(P0、P1、P2或P3),用于對外部數(shù)據(jù)的傳輸。</p><p><b>

36、  全雙工串行口:</b></p><p>  8051內(nèi)置一個全雙工串行通信口,用于與其它設(shè)備間的串行數(shù)據(jù)傳送,該串行口既可以用作異步通信收發(fā)器,也可以當同步移位器使用。</p><p><b>  中斷系統(tǒng):</b></p><p>  8051具備較完善的中斷供能,有兩個外中斷、兩個定時/計數(shù)器和一個串行中斷,可滿足不同的控制

37、要求,并且有2級的優(yōu)先級別選擇。</p><p><b>  時鐘電路:</b></p><p>  8051內(nèi)設(shè)最高頻率達12MHZ的時鐘電路,用于產(chǎn)生整個單片機運行的脈沖時序,但8051單片機需外設(shè)震蕩電容。</p><p>  單片機的結(jié)構(gòu)有兩種類型,一種是程序存儲器和數(shù)據(jù)存儲器分開的形式,即哈佛(Harvard)結(jié)構(gòu),另一種是采用通用計

38、算機廣泛使用的程序存儲器和數(shù)據(jù)存儲器合二為一的結(jié)構(gòu),即普林斯頓(Princeton)機構(gòu)。INTEL和MCS-51系列單片機采用的是哈佛結(jié)構(gòu)的形式,而后續(xù)產(chǎn)品16位的MCS-96系列單片機則采用普林斯頓結(jié)構(gòu)。</p><p>  下圖是MSC-51系列單片機的內(nèi)部結(jié)構(gòu)示意圖二:</p><p>  MCS-51系列單片機的內(nèi)部結(jié)構(gòu)示意圖</p><p><b&

39、gt;  圖 2</b></p><p>  5.1.2 MCS-51的引腳說明:</p><p>  MSC-51系列單片機中的8031、8051及8751均采用40Pin封裝的雙列直接DIP結(jié)構(gòu),下圖(圖三)是它們的引腳分配,40個引腳中,正電源和底線兩根,外置石英振蕩器的時鐘線兩根,4組8位共32個I/O口,中斷口線與P3口線復(fù)用?,F(xiàn)在我們對這些引腳的功能加以說明:<

40、;/p><p><b>  圖 3</b></p><p>  Pin9:RESET/V(pd)復(fù)位信號復(fù)用腳,當8051通電,時鐘電路開始工作,在RESET引腳上出現(xiàn)24個時鐘周期以上的高電平,系統(tǒng)即初始復(fù)位。初始化后,程序計數(shù)器PC指向0000H,P0-P3輸出口全部為高電平,堆棧指針寫入07H,其它專用寄存器被清“0”。RESET由高電平下降為低電平后,系統(tǒng)即從00

41、00H地址開始執(zhí)行程序。然而,初始復(fù)位不改變RAM(包括工作寄存器R0-R7)的狀態(tài),8051的初始態(tài)。</p><p>  8051的復(fù)位方式可以是自動復(fù)位,也可以是手動復(fù)位,見下圖4。此外,RESET/Vpd還是一復(fù)用腳,Vcc掉電其間,此腳可接上備用電源,以保證單片機內(nèi)部RAM的數(shù)據(jù)不丟失。</p><p>  Pin30:ALE/當訪問外部程序器時,ALE(地址鎖存)的輸出用于鎖存

42、地址的低位字節(jié)。而訪問內(nèi)部程序存儲器時,ALE端將有一個1/6時鐘頻率的正脈沖信號,這個信號可以用于識別單片機是否工作,也可以當作一個時鐘向外輸出。更有一個特點,當訪問外部程序存儲器,ALE會跳過一個脈沖。</p><p>  如果單片機是EPROM,在編程其間,將用于輸入編程脈沖。</p><p>  Pin29:當訪問外部程序存儲器時,此腳輸出負脈沖選通信號,PC的16位地址數(shù)據(jù)將出現(xiàn)

43、在P0和P2口上,外部程序存儲器則把指令數(shù)據(jù)放到P0口上,由CPU讀入并執(zhí)行。</p><p>  Pin31:EA/Vpp程序存儲器的內(nèi)外部選通線,8051和8751單片機,內(nèi)置有4kB的程序存儲器,當EA為高電平并且程序地址小于4kB時,讀取內(nèi)部程序存儲器指令數(shù)據(jù),而超過4kB地址則讀取外部指令數(shù)據(jù)。如EA為低電平,則不管地址大小,一律讀取外部程序存儲器指令。顯然,對內(nèi)部無程序存儲器的8031,EA端必須接地

44、。</p><p>  在編程時,EA/Vpp腳還需加上21V的編程電壓。</p><p>  5.2 8255芯片簡介</p><p>  5.2.1 8255可編程并行接口芯片簡介:</p><p>  8255可編程并行接口芯片有三個輸入輸出端口,即A口、B口和C口,對應(yīng)于引腳PA7~PA0、PB7~PB0和PC7~PC0。其內(nèi)部還

45、有一個控制寄存器,即控制口。通常A口、B口作為輸入輸出的數(shù)據(jù)端口。C口作為控制或狀態(tài)信息的端口,它在方式字的控制下,可以分成4位的端口,每個端口包含一個4位鎖存器。它們分別與端口A/B配合使用,可以用作控制信號輸出或作為狀態(tài)信號輸入。</p><p>  8255芯片引腳圖:</p><p><b>  圖 4</b></p><p>  與C

46、PU相連的各個引腳說明如下:</p><p>  CS:芯片選擇信號。來自地址譯碼器,低電平有效。</p><p>  RD:芯片讀出信號。來自系統(tǒng)總線,低電平有效。</p><p>  WR:芯片寫入信號。來自系統(tǒng)總線,低電平有效。</p><p>  RESET :復(fù)位信號。但它為高電平時,清除所有內(nèi)部寄存器的內(nèi)容,并將3個數(shù)據(jù)端口PA、

47、PB、PC置為輸入方式。</p><p>  A1、A0:端口地址選擇信號。用于選擇8255A的3個數(shù)據(jù)端口和一個控制端口。當A1A0為00、01、10時,分別選擇數(shù)據(jù)端口PA、PB、PC;當A1A0為11時,選擇控制口。</p><p>  Vcc、GND:電源和地線。</p><p>  5.2.2 8255可編程并行接口芯片方式控制字格式說明:</p&

48、gt;<p>  8255有兩種控制命令字;一個是方式選擇控制字;另一個是C口按位置位/復(fù)位控制字。其中C口按位置位/復(fù)位控制字方式使用較為繁難,說明也較冗長,故在此不作敘述,需要時用戶可自行查找有關(guān)資料。</p><p>  方式控制字格式說明如表一:</p><p><b>  表 2</b></p><p>  D7:設(shè)定工

49、作方式標志,1有效。</p><p>  D6、D5:A口方式選擇</p><p><b>  0 0 方式 0</b></p><p><b>  0 1 方式1</b></p><p><b>  1 ×方式2</b></p><p>  

50、D4:A口功能 (1=輸入,0=輸出)</p><p>  D3:C口高4位功能 (1=輸入,0=輸出)</p><p>  D2:B口方式選擇 (0=方式0,1=方式1)</p><p>  D1:B口功能 (1=輸入,0=輸出)</p><p>  D0:C口低4位功能 (1=輸入,0=輸出)</p>

51、;<p>  5.2.3 8255可編程并行接口芯片工作方式說明:</p><p>  方式0:基本輸入/輸出方式。適用于三個端口中的任何一個。每一個端口都可以用作輸入或輸出。輸出可被鎖存,輸入不能鎖存。</p><p>  方式1:選通輸入/輸出方式。這時A口或B口的8位外設(shè)線用作輸入或輸出,C口的4條線中三條用作數(shù)據(jù)傳輸?shù)穆?lián)絡(luò)信號和中斷請求信號。</p>

52、<p>  方式2 :雙向總線方式。只有A口具備雙向總線方式,8位外設(shè)線用作輸入或輸出,此時C口的5條線用作通訊聯(lián)絡(luò)信號和中斷請求信號。</p><p><b>  六、軟件設(shè)計流程圖</b></p><p>  程序的設(shè)計采用了模塊化的思想,有一個主控程序、五個模塊應(yīng)用程序和一個中斷程序。</p><p>  主控程序首先進行系統(tǒng)初

53、始化及置預(yù)置值,再對液晶進行初始化并輸出預(yù)定字符串,然后進行鍵值掃描、鍵值處理、送液晶顯示初始值電壓值、D/A轉(zhuǎn)換及A/D轉(zhuǎn)換,最后把A/D轉(zhuǎn)換的值送給液晶顯示。需要注意的是:由于采用分時對P0口復(fù)用的方法,因此需要在每次完成一個模塊功能后對P0復(fù)位,以防止數(shù)據(jù)沖突。五個模塊程序即分別為鍵值掃描程序,鍵值處理程序,液晶顯示程序,D/A轉(zhuǎn)換和A/D轉(zhuǎn)換程序。中斷程序主要實現(xiàn)對A/D送CLOCK的功能。程序的具體流程如圖6-1所示。<

54、/p><p>  圖6-1、軟件流程圖</p><p>  七、測試結(jié)果及結(jié)果分析</p><p>  7.1 系統(tǒng)功能測試</p><p> ?。?) 直流穩(wěn)壓電源調(diào)試</p><p>  此模塊的輸入電壓為16V的交流變壓器,經(jīng)LM7805 LM7905 LM7815 LM7915芯片和一些電容及電感濾波后輸出正負

55、5V,正負15V的直流電壓,穩(wěn)度精度可以達到要求。</p><p> ?。?) DAC測試:</p><p>  調(diào)整Iout1/Iout2的基準電壓使輸入255時輸出電壓7.5V。用軟件測試輸出。</p><p> ?。?) 放大器調(diào)試:</p><p>  經(jīng)DAC0832輸出后輸入OP07,經(jīng)調(diào)試后可行。</p>&l

56、t;p><b>  7.2系統(tǒng)指標測試</b></p><p> ?。?) 輸出端接空載</p><p>  測量儀器: 萬用表及示波器。 記錄數(shù)據(jù)如下表5.1 </p><p><b>  數(shù)據(jù)記錄(室溫下)</b></p><p><b>  表5.1</b&

57、gt;</p><p>  (2)輸出0.5A時</p><p>  測量儀器:萬用表及示波器。 記錄數(shù)據(jù)如下表5.2 數(shù)據(jù)記錄(室溫下)</p><p><b>  表5.2</b></p><p><b>  7.3系統(tǒng)誤差分析</b></p><p> 

58、 從電路的原理框圖可以看出,系統(tǒng)的主要誤差來源于:</p><p> ?。?)DAC0832的量化誤差</p><p>  DAC0832為8位D/A轉(zhuǎn)換器,滿量程為10V的量化誤差為</p><p>  +/-(1/2)Lmbs≈+/-20mV</p><p>  按滿度歸一化的相對誤差為+/-0.2%。</p><p&

59、gt;<b>  (2)運放零點漂移</b></p><p>  由運算放大器的零點漂移,溫度漂移等帶來的誤差,可以通過溫度補償措施來解決此誤差。</p><p> ?。?)A/D,D/A轉(zhuǎn)換誤差</p><p>  受AD轉(zhuǎn)換器精度及基準源穩(wěn)定程度的限制,不可避免地帶來一定的誤差,為了更精確的輸出恒流電源,必須選用更多位數(shù)的AD、DA芯片。&

60、lt;/p><p> ?。?)因外界突發(fā)干擾或儀表顯示值等引起的隨機誤差或粗大誤差。</p><p>  (5)基準電壓溫漂引入的誤差 </p><p>  LM336在0~40℃范圍內(nèi)漂移不大于4mV,故相對誤差=+/-2mV/5mV=+/-0.04%</p><p><b>  八、總結(jié) </b></p&g

61、t;<p>  在本次設(shè)計中,讓我知道我們學的知識是遠遠不夠的,因此在做這次畢業(yè)設(shè)計的時候總是不知從何做起走,特別是在單片機這塊上是遠遠不夠的,連基本的運用都不會,還有就是整個電路圖的仿真與調(diào)試,也是這次論文的一個難題,往往只有那么一點小錯誤,但是就是自己檢查不出來,從而導(dǎo)致寫論文的速度??傊瑢τ谖襾碚f單片機就是一個很大的難題。</p><p><b>  參考文獻</b>&

62、lt;/p><p>  [1] 張 義 例說51單片機(C語言版)(第3版),人民郵電出版社 ,2010.6</p><p>  [2] 余錫存 曹國華 單片機原理及接口技術(shù)【M】陜西:西安電子科技大學出版社,2000.7</p><p>  [3] 付家才 單片機控制工程實踐技術(shù)【M】 人民郵電出版社,1999.9</p><p>

63、  [4] 何立民 單片機應(yīng)用技術(shù)選編9 北京航空航天大學出版社,2004.3</p><p>  [5] 謝自美 電子線路設(shè)計·實驗·測試【M】 華中理工大學出版社,2001</p><p>  [6] 陸 伸 電子設(shè)計技術(shù)1 電子科技大學出版社,1997 </p><p><b>  附錄A</b>

64、</p><p>  #include<reg51.h></p><p>  #define uint unsigned int //無符號字符8位</p><p>  #define uchar unsigned char //無符號整數(shù)16位</p><p>  sbit dula=P2^6;

65、 //鎖存器段選 數(shù)碼管</p><p>  sbit wela=P2^7; //鎖存器位選</p><p>  sbit lcdrs=P3^1; //1602數(shù)據(jù)命令選擇</p><p>  sbit lcden=P3^0; //1602使能信號端</p><

66、;p>  sbit key1=P2^3; //+鍵</p><p>  sbit key2=P2^2; //-鍵</p><p>  sbit key3=P2^1; //波產(chǎn)生鍵</p><p>  sbit key0=P2^0; //功能鍵</p>

67、<p>  sbit wr_da=P2^5; //DAC選鍵</p><p>  uchar num,num0,num1,zsys,xsys,bxsz;</p><p>  uchar code table_x[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //編碼表 無點數(shù)碼管顯示

68、</p><p>  uchar code table_z[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef}; //編碼表 帶點數(shù)碼管顯示</p><p>  uchar code table1[]="Welcome to";</p><p>  uchar code table2[]=&

69、quot; NC Power!";</p><p>  uchar code table3[]=" Voltage Step";</p><p>  uchar code table4[]="Step width:0.01V";</p><p>  uchar code table5[]="Pre

70、set voltage";</p><p>  uchar code table6[]="Range:0-9.9V";</p><p>  uchar code table7[]="Waveform chooses";</p><p>  uchar code table8[]="Output wavefo

71、rm";</p><p>  uchar code table9[]=":triangle wave";</p><p>  uchar code table10[]="trapezoidal wave";</p><p>  uchar code table11[]=":sawtooth wave&quo

72、t;;</p><p>  uchar code table12[]=":square wave";</p><p>  void delay(uint z); //延時程序</p><p>  void display_bjys(uchar zsys,uchar xsys);</p><p>

73、  void display_bxsz(uchar bxsz);</p><p>  void trigle();</p><p>  void trap();</p><p>  void saw();</p><p>  void square();</p><p>  void keycan_bjys();<

74、;/p><p>  void keycan_bxsz();</p><p>  void write_com(uchar com);</p><p>  void write_date(uchar date);</p><p>  void init_kjhm();</p><p>  void init_bjhm();&

75、lt;/p><p>  void init_yshm();</p><p>  void init_bxxzhm();</p><p>  void init_trigle();</p><p>  void init_trap();</p><p>  void init_saw();</p><p&

76、gt;  void init_square();</p><p>  void init();</p><p>  void main()</p><p>  { init_kjhm();</p><p>  init(); //初始化子程序</p><p><b>  while(1)

77、</b></p><p>  { dula=1;</p><p><b>  P1=0x3f;</b></p><p><b>  dula=0;</b></p><p><b>  wela=1;</b></p><p><b&

78、gt;  P1=0xf0;</b></p><p><b>  wela=0;</b></p><p>  if(key1==0||key2==0)</p><p>  { if(key0==0)</p><p>  init_bjhm();</p><p>  if(key

79、0!=0)</p><p>  init_yshm();</p><p><b>  while(1)</b></p><p>  { keycan_bjys();</p><p>  if(key3==0)</p><p>  { dula=1;</p><p>&l

80、t;b>  P1=0xff;</b></p><p><b>  dula=0;</b></p><p><b>  wela=1;</b></p><p><b>  P1=0xff;</b></p><p><b>  wela=0;</b

81、></p><p><b>  }</b></p><p>  if(key3==0)break; </p><p><b>  }</b></p><p><b>  }</b></p><p>  if(key3==0)</p>

82、<p>  { init_bxxzhm();</p><p><b>  while(1)</b></p><p>  { keycan_bxsz();</p><p>  if(key1==0||key2==0)</p><p>  { dula=1;</p><p>&

83、lt;b>  P1=0xff;</b></p><p><b>  dula=0;</b></p><p><b>  wela=1;</b></p><p><b>  P1=0xff;</b></p><p><b>  wela=0;</

84、b></p><p><b>  }</b></p><p>  if(key1==0||key2==0) break;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }<

85、;/b></p><p><b>  }</b></p><p>  void delay(uint z) //延時程序</p><p>  { uint x,y;</p><p>  for(x=z;x>0;x--)</p><p>  for(

86、y=110;y>0;y--);</p><p><b>  }</b></p><p>  void dispaly_bjys(uchar zsys,uchar xsys) //預(yù)設(shè)&步進 數(shù)碼管掃描子函數(shù)</p><p>  { dula=1;</p><p>  P1=table_z[zsys

87、];</p><p><b>  dula=0;</b></p><p><b>  P1=0xff;</b></p><p><b>  wela=1;</b></p><p><b>  P1=0xfe;</b></p><p>

88、;<b>  wela=0;</b></p><p><b>  delay(1);</b></p><p><b>  dula=1;</b></p><p>  P1=table_x[xsys];</p><p><b>  dula=0;</b>&l

89、t;/p><p><b>  P1=0xff;</b></p><p><b>  wela=1;</b></p><p><b>  P1=0xfd;</b></p><p><b>  wela=0;</b></p><p><

90、;b>  delay(1);</b></p><p><b>  }</b></p><p>  void dispaly_bxsz(uchar bxsz) //波形設(shè)置 數(shù)碼管掃描子函數(shù)</p><p>  { dula=1;</p><p>  P1=table_x[bxsz];</

91、p><p><b>  dula=0;</b></p><p><b>  P1=0xff;</b></p><p><b>  wela=1;</b></p><p><b>  P1=0xf0;</b></p><p><b&

92、gt;  wela=0;</b></p><p><b>  delay(1);</b></p><p><b>  }</b></p><p>  void trigle() //三角波</p><p><b>  { num=0;</b></

93、p><p>  for(num=0;num<121;num++)</p><p>  { P0=num;</p><p><b>  wr_da=0;</b></p><p><b>  }</b></p><p>  for(num=121;num>0;num-

94、-)</p><p>  { P0=num;</p><p><b>  wr_da=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void trap() //梯形波

95、</p><p>  { num=0;</p><p>  for(num=0;num<121;num++)</p><p>  { P0=num;</p><p><b>  wr_da=0;</b></p><p><b>  }</b></p>

96、;<p><b>  delay(5);</b></p><p>  for(num=121;num>0;num--)</p><p>  { P0=num;</p><p><b>  wr_da=0;</b></p><p><b>  }</b>&l

97、t;/p><p><b>  } </b></p><p>  void saw() //鋸齒波</p><p>  { num=0;</p><p>  for(num=0;num<121;num++)</p><p>  { P0=num;</p>&l

98、t;p><b>  wr_da=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void square() //方波</p><p>  { P0=0x65;</p>&l

99、t;p><b>  wr_da=0;</b></p><p><b>  delay(5);</b></p><p><b>  P0=0;</b></p><p><b>  wr_da=0;</b></p><p><b>  dela

100、y(5);</b></p><p><b>  }</b></p><p>  void keycan_bjys() //預(yù)設(shè)&步進 按鍵掃描</p><p>  { if(key1==0) //按key1鍵加數(shù) </p><p>  { delay(5);&l

101、t;/p><p>  if(key1==0)</p><p>  { num++;</p><p>  if(num==100)</p><p><b>  num=0;</b></p><p><b>  }</b></p><p>  while(

102、!key1);</p><p><b>  delay(5);</b></p><p>  while(!key1);</p><p><b>  }</b></p><p>  if(key2==0) //按key2鍵減數(shù)</p><p>  { delay(5);

103、</p><p>  if(key2==0)</p><p>  { num--;</p><p>  if(num==-1)</p><p><b>  num=99;</b></p><p><b>  }</b></p><p>  whil

104、e(!key2);</p><p><b>  delay(5);</b></p><p>  while(!key2);</p><p><b>  }</b></p><p>  zsys=num/10;</p><p>  xsys=num%10;</p>

105、<p>  dispaly_bjys(zsys,xsys);</p><p>  if(key0==0) //預(yù)設(shè)功能</p><p>  { P0=num;</p><p><b>  wr_da=0;</b></p><p><b>  delay(1);</b>

106、</p><p><b>  }</b></p><p><b>  }</b></p><p>  void keycan_bxsz() //波形 按鍵掃描</p><p><b>  { </b></p><p>  if(key3=

107、=0)</p><p>  { delay(5);</p><p>  if(key3==0)</p><p>  { num1++; //num1 自加 選擇波形</p><p>  if(num1==5)</p><p><b>  num1=1;</b></p>&l

108、t;p>  bxsz=num1;</p><p>  dispaly_bxsz(bxsz);</p><p>  while(!key3);</p><p><b>  delay(5);</b></p><p>  while(!key3);</p><p><b>  }<

109、;/b></p><p>  if(key0==0) //功能按鍵下 確定波形輸出</p><p>  { if(num1==1)</p><p>  { init_trigle();</p><p><b>  while(1) </b></p><p>  { trigle

110、();</p><p>  if(key0!=0)break;</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(num1==2)</p><p>  { init_trap();</p><p&

111、gt;<b>  while(1)</b></p><p>  { trap();</p><p>  if(key0!=0)break;</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(nu

112、m1==3)</p><p>  { init_saw();</p><p><b>  while(1)</b></p><p>  { saw();</p><p>  if(key0!=0)break;</p><p><b>  }</b></p>

113、<p><b>  }</b></p><p>  if(num1==4)</p><p>  { init_square();</p><p><b>  while(1)</b></p><p>  { square();</p><p>  if(

114、key0!=0)break;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }&

115、lt;/b></p><p>  void write_com(uchar com) //寫指令到1602</p><p>  { lcdrs=0;</p><p><b>  P1=com;</b></p><p><b>  delay(5);</b></p>

116、<p><b>  lcden=1;</b></p><p><b>  delay(5);</b></p><p><b>  lcden=0;</b></p><p><b>  }</b></p><p>  void write_da

117、te(uchar date) //寫數(shù)據(jù)到1602</p><p>  { lcdrs=1;</p><p><b>  P1=date;</b></p><p><b>  delay(5);</b></p><p><b>  lcden=1;</b>&l

118、t;/p><p><b>  delay(5);</b></p><p><b>  lcden=0;</b></p><p><b>  }</b></p><p>  void init_kjhm() //初始化 1 開機顯示畫面函數(shù)</p><p&

119、gt;<b>  {</b></p><p><b>  dula=0;</b></p><p><b>  wela=0;</b></p><p><b>  lcden=0;</b></p><p>  write_com(0x38);</p&g

120、t;<p>  write_com(0x0e);</p><p>  write_com(0x06);</p><p>  write_com(0x01);</p><p>  write_com(0x80);</p><p>  for(num0=0;num0<10;num0++)</p><p>

121、;  { write_date(table1[num0]);</p><p>  delay(50);</p><p><b>  }</b></p><p>  write_com(0x80+0x40);</p><p>  for(num0=0;num0<14;num0++)</p><

122、;p>  { write_date(table2[num0]);</p><p>  delay(50);</p><p><b>  }</b></p><p><b>  }</b></p><p>  void init_bjhm() //初始化 2 步進電壓顯示畫面函數(shù)&l

123、t;/p><p><b>  {</b></p><p><b>  dula=0;</b></p><p><b>  wela=0;</b></p><p><b>  lcden=0;</b></p><p>  write_co

124、m(0x38);</p><p>  write_com(0x0e);</p><p>  write_com(0x06);</p><p>  write_com(0x01);</p><p>  write_com(0x80);</p><p>  for(num0=0;num0<14;num0++)<

125、/p><p>  { write_date(table3[num0]);</p><p>  delay(50);</p><p><b>  }</b></p><p>  write_com(0x80+0x40);</p><p>  for(num0=0;num0<16;num0++

126、)</p><p>  { write_date(table4[num0]);</p><p>  delay(50);</p><p><b>  }</b></p><p><b>  }</b></p><p>  void init_yshm() //初始化

127、 3 預(yù)設(shè)電壓顯示畫面函數(shù)</p><p><b>  {</b></p><p><b>  dula=0;</b></p><p><b>  wela=0;</b></p><p><b>  lcden=0;</b></p><

128、;p>  write_com(0x38);</p><p>  write_com(0x0e);</p><p>  write_com(0x06);</p><p>  write_com(0x01);</p><p>  write_com(0x80);</p><p>  for(num0=0;num0&l

129、t;15;num0++)</p><p>  { write_date(table5[num0]);</p><p>  delay(50);</p><p><b>  }</b></p><p>  write_com(0x80+0x40);</p><p>  for(num0=0;n

130、um0<12;num0++)</p><p>  { write_date(table6[num0]);</p><p>  delay(50);</p><p><b>  }</b></p><p><b>  }</b></p><p>  void init

131、_bxxzhm() //初始化 4 波形設(shè)置顯示畫面函數(shù)</p><p><b>  {</b></p><p><b>  dula=0;</b></p><p><b>  wela=0;</b></p><p><b>  lcden=0;</b&

132、gt;</p><p>  write_com(0x38);</p><p>  write_com(0x0e);</p><p>  write_com(0x06);</p><p>  write_com(0x01);</p><p>  write_com(0x80);</p><p> 

133、 for(num0=0;num0<16;num0++)</p><p>  { write_date(table7[num0]);</p><p>  delay(50);</p><p><b>  }</b></p><p>  write_com(0x80+0x40);</p><p

134、>  write_date(':');</p><p>  delay(50);</p><p><b>  }</b></p><p>  void init_trigle() //初始化 5 三角波輸出顯示畫面函數(shù)</p><p><b>  {</b></p

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論