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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  基于數(shù)控直流電流源系統(tǒng)的設計 </p><p>  宜春學院 物理科學與工程技術學院 電子信息科學與技術專業(yè) 李偉</p><p><b>  指導老師:胡振平</b></p><p>  摘要:隨著電子技術的發(fā)展、數(shù)字電路應用領域的擴展,人們對數(shù)控恒定電流器件的需求越來越高。應社會發(fā)展的需求,對基于單

2、片機控制的“數(shù)控直流電流源的設計”進行研究論證,并運用Proteus軟件進行仿真。以直流穩(wěn)壓電源和穩(wěn)流電源為核心,結合單片機最小系統(tǒng)實現(xiàn)對輸出電流的控制。首先采用了單片集成穩(wěn)壓芯片實現(xiàn)直流穩(wěn)壓,然后采用了分立元件實現(xiàn)穩(wěn)流。為實現(xiàn)對輸出電流的精確控制:一方面,通過D/A輸出實現(xiàn)電流的預置,再通過運算放大器控制晶體管的輸出電流;另一方面,運用A/D轉換器件將輸出電流的采樣值送入單片機,與預置值進行比較,將誤差值通過D/A轉換芯片添加到調整電

3、路,從而進一步降低了輸出電流的紋波。 </p><p>  Abstract:The requiements of numerical controlling constant current devices is increasing as development of electronic technology and expanding of di

4、gital circuit applicational field. As to satisfy society development, do a study based on " Numerical control dc current source design " of SCM controlling and</p><p>  apply Proteus to simulating

5、software.DC(digital current )Voltage regulator and DC current regulator is the key part of the design,its output current is controlled by single chip microprocessor,Firstly,single chip IC(integrated circuit)Voltage regul

6、ator LM338K is used to generate stable voltage, and then desperate devices is used to generate stabilize current . Tocontrol the output current ,on one hand ,system sets output current by D/A(digital/analogue converter

7、and controls current of transist</p><p><b>  目錄</b></p><p><b>  1 引言1</b></p><p>  1.1 數(shù)控直流電流源的發(fā)展現(xiàn)狀1</p><p>  1.2 數(shù)控直流電流源的研究意義1</p>

8、<p>  1.3 該研究解決的主要內容1</p><p>  2 設計任務及要求1</p><p><b>  2.1任務1</b></p><p>  2.2 設計思路2</p><p>  2.3 方案論證2</p><p>  2.4 總體方案設計2</p&

9、gt;<p>  3 硬件系統(tǒng)的設計3</p><p>  3.1 硬件系統(tǒng)的模塊3</p><p>  3.1.1 單片機最小系統(tǒng)3</p><p>  3.1.2 自制電源模塊6</p><p>  3.1.3 顯示模塊6</p><p>  3.1.4 鍵盤模塊8</p

10、><p>  3.1.5 電流源模塊8</p><p>  3.1.6 負載模塊9</p><p>  3.1.4 D/A、A/D轉換模塊9</p><p>  3.2 系統(tǒng)的原理圖10</p><p>  4 軟件系統(tǒng)的設計11</p><p>  4.1 單片機資源使用情況

11、11</p><p>  4.2 軟件系統(tǒng)的模塊11</p><p>  4.3 程序流程圖12</p><p>  4.4 程序清單16</p><p>  5 仿真測試及結果16</p><p>  5.1 設計結論及使用方法16</p><p>  5.2 仿真結果

12、16</p><p>  5.2.1 輸出電流范圍仿真16</p><p>  5.2.2 步進調整仿真17</p><p>  5.2.3 輸出電流仿真18</p><p>  5.3 誤差分析19</p><p><b>  6 總結20</b></p>&l

13、t;p><b>  參考文獻21</b></p><p><b>  謝辭22</b></p><p><b>  附 錄23</b></p><p><b>  1 引言</b></p><p>  1.1 數(shù)控直流電流源的發(fā)展現(xiàn)狀<

14、;/p><p>  電源技術尤其是數(shù)控電源技術是一門實踐性很強的工程技術,服務于各行各業(yè)。電子電力技術是電能的最佳應用技術之一?,F(xiàn)在電源技術融合了電子、電氣、系統(tǒng)集成、控制理論、材料等眾多領域。隨著數(shù)控電源在電子設備中的普遍使用,普通電源在工作時產(chǎn)生的誤差,會影響整個系統(tǒng)的精確度。電源在使用時會產(chǎn)生很多不良后果,世界各國紛紛對電源產(chǎn)品提出了不同要求并制定了一系列的產(chǎn)品精度標準。隨著經(jīng)濟全球化的發(fā)展,恒流源是電路中廣泛

15、使用的一種電路,恒流源的實質是利用器件對電流進行反饋,動態(tài)調節(jié)設備的供電狀態(tài),從而使得所輸出的電流趨于恒定。本課題對恒流源進行研究,設計出所需要的符合標準的數(shù)控制流電流源。</p><p>  1.2 數(shù)控直流電流源的研究意義</p><p>  數(shù)控直流電流源是我們生活中比較常見的設備,這次設計就是基于單片機為主體所設計的微機數(shù)字觸發(fā)式直流電流源,相比其他以往的電源設計,此次的課題更新

16、穎,更符合技術發(fā)展的潮流。設計中,對整體電源進行了硬件、軟件總體設計,從兩方面滿足設計的基本要求的同時,對整個微機控制的系統(tǒng)有了比較全面的了解。</p><p>  1.3 該研究解決的主要內容</p><p>  本次對數(shù)控直流電流源的設計主要是針對以下方面:如何實現(xiàn)對電源的輸出控制,該系統(tǒng)主要是應用單片機,用微處理器來替代傳統(tǒng)直流穩(wěn)壓電源中手動旋轉電位器,實現(xiàn)輸出電壓的連續(xù)可調,精度

17、要求高。實現(xiàn)的途徑很多,可以用DAC的模擬輸出控制電源的基準電壓或分壓電阻,或者用其它更有效的方法,因此如何選擇簡單有效的方法是本課題需要解決的首要問題;數(shù)控直流電流源要實現(xiàn)電流的鍵盤化輸出控制,同時對于輸出的電流的精度也具有相應的要求,如何有效的實現(xiàn)這些功能也是課題所需研究解決的問題。</p><p>  2 設計任務及要求</p><p><b>  2.1任務</b

18、></p><p>  設計并制作數(shù)控直流電流源。輸入交流200~240V,50Hz;輸出直流電壓≤10V。其原理示意圖如下所示。</p><p><b>  2.2 設計思路</b></p><p>  采用改進型單輸出端單向電流源電路來產(chǎn)生恒定的電流。此方法是利用精密電阻取樣得到反饋電壓,將反饋電壓和高精度的參考電壓比較得到誤差電壓,

19、該誤差電壓經(jīng)放大后輸出控制調整管的導通程度,使預設電流值和實測電流值的步步逼近,直到相等,從而達到數(shù)控的目的。</p><p><b>  2.3 方案論證</b></p><p>  對于數(shù)控直流電流源的設計有很多方案,下面做一下介紹:</p><p>  方案一:方框圖如圖1所示,數(shù)控直流電流源由鍵盤、控制器、顯示器、數(shù)模轉換、電壓電流轉換

20、和模數(shù)轉換等部分組成,鍵盤的作用是設定電流值和確定電流步進值;控制器的作用是將設定電流值的8位(或12位)二進制輸出;顯示器的作用是顯示設定電流值;數(shù)模轉換的作用是設定電流值的數(shù)字量轉換為模擬量;電壓電流轉換的作用是將電壓轉換成恒定電流輸出;模數(shù)轉換的作用是將輸出的模擬量再轉換為數(shù)字量反饋到控制器,使實際輸出電流值與設定電流值一致。</p><p>  圖1 方案一的方框圖</p><p&g

21、t;  方案二:方框圖如圖2所示,采用改進型的單輸出端單向電流源電路來產(chǎn)生恒定電流。該方法是用精密電阻取樣得到反饋電壓,將反饋電壓與高精度的參考電壓比較得到誤差電壓,此誤差電壓經(jīng)放大后輸出控制調整管的導通程度,使預設電流值和實測電流值的逐步逼近,直至相等,從而達到數(shù)控的目的。從題目的要求來分析,該題目最大的難點在于大電流輸出和高精度控制,所以在具體的方案確定中,大電流、功耗,以及精度、誤差等都是我們所必須要考慮和克服的。</p&g

22、t;<p>  2.4 總體方案設計</p><p>  方案一的數(shù)控直流電流源設計較簡單,對于電流的變化是用相比而言使用可編程芯片,如CPLD或FPGA等和DAC控制,采用LED數(shù)碼管進行實時顯示,操作也較方便。</p><p>  方案二的數(shù)控直流電源設計采用單片機作為核心控制,基本原理簡單,實現(xiàn)比較方便,電源的電流值也可以調整到較精確的數(shù)值,同樣的也是采用LCD進行顯示

23、。此方案采用保持電阻恒定而改變輸入電壓的方法來改變電流的大小。利用高精度D/A轉換器在單片機程序控制下提供可變的高精度的基準電壓,該基準電壓經(jīng)過V/I轉換電路得到電流,再通過A/D轉換器將輸出電流反饋至單片機進行比較,調整D/A的輸入電壓,從而達到數(shù)控的目的。該方案的難點在于穩(wěn)定恒流源的設計和高精度電流檢測電路的設計。特點是可精確的控制電流的步進量,負載變化對電流輸出的影響較小。</p><p>  根據(jù)題目要求

24、以及設計思路,比較之后,基于以上優(yōu)點以及對于單片機的成熟應用,因此我決定用單片機來作為控制器,我所采用的是第二種方案</p><p>  圖2 方案二方框圖</p><p>  3 硬件系統(tǒng)的設計</p><p>  3.1 硬件系統(tǒng)的模塊</p><p>  3.1.1 單片機最小系統(tǒng)</p><p><

25、;b> ?。?) 時鐘電路</b></p><p>  單片機必須在時鐘的驅動下才能工作.在單片機內部有一個時鐘振蕩電路,只需要外接一個振蕩源就能產(chǎn)生一定的時鐘信號送到單片機內部的各個單元,決定單片機的工作速度。</p><p>  一般選用石英晶體振蕩器。此電路在加電大約延遲10ms后振蕩器起振,在XTAL2引腳產(chǎn)生幅度為3V左右的正弦波時鐘信號,其振蕩頻率主要由石英晶

26、振的頻率確定。電路中石英晶體振蕩器的頻率為12MHz,兩個電容 C1、C2的作用有兩個:一是幫助振蕩器起振;二是對振蕩器的頻率進行微調。C1、C2的典型值為33PF。單片機的時鐘電路如圖3所示。</p><p><b> ?。?) 復位電路</b></p><p>  單片機的第9腳RST為硬件復位端,只要將該端持續(xù)4個機器周期的高電平即可實現(xiàn)復位,復位后單片機的各狀

27、態(tài)都恢復到初始化狀態(tài)。</p><p>  復位電路用于產(chǎn)生復位信號,通過RST引腳送入單片機,進行復位。因為AT89S52單片機的復位是靠外部電路實現(xiàn)的。復位電路的好壞直接影響單片機系統(tǒng)工作的可靠性,因此,要重視復位電路的設計和研究。只要RST端保持10ms以上的高電平,就能使單片機有效地復位。AT89S52單片機通常采用上電自動復位、按鍵復位、以及上電加按鍵復位等,我們采用的是上電加按鍵復位方式,這樣做的優(yōu)點

28、是上電后可以直接進入復位狀態(tài),當程序出現(xiàn)錯誤時,可以隨時使電路復位。則復位電路圖如圖4所示。</p><p> ?。?) AT89C52單片機</p><p>  AT89C52是一種帶8K字節(jié)閃爍可擦除可編程只讀存儲器的低電壓,高性能CMOS8位微處理器,簡稱單片機。AT89C52單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。</p><p>  AT

29、89C52共有4個8位的并行雙向I/O口,分別記作P0、P1、P2、P3,這4個口除可按字節(jié)尋址以外,還可按位尋址。P0口地址為80H,位地址為80H~87H。各位口線具有完全相同但又相互獨立的邏輯電路。P1口地址為90H,位地址為90H~97H。P1口只能作為通用數(shù)據(jù)I/O口使用,所以在電路結構上與P0口有些不同。P2口地址為A0H,位地址為A0H~A7H。P2口既可以作為系統(tǒng)高位地址線使用,也可以為通用I/O口使用,所以P2口電路邏

30、輯與P0口類似。P3口地址為B0H,位地址為B0H~B7H。雖然P3口可以作為通用I/O口使用,但在實際應用中它的第二功能信號更為重要。</p><p>  AT89C52單片機還有一個地址鎖存控制信號ALE,外部程序存儲器讀選通信號,訪問程序存儲器控制信號,復位信號RST,地線和+5V的電源。單片機最小系統(tǒng)圖如圖5所示.</p><p>  圖3 單片機的時鐘電路圖</p>

31、<p>  圖4 單片機復位電路圖</p><p>  圖5 單片機最小系統(tǒng)圖</p><p>  3.1.2 自制電源模塊</p><p>  這次設計的系統(tǒng)需要多個電源,單片機使用+穩(wěn)壓電源,A/D轉換器,D/A轉換器,運放等需要穩(wěn)壓電源。電源雖簡單,但在高精度的系統(tǒng)中,穩(wěn)壓電源有著非常重要的作用。在進行研究后得出以下方案。</p>

32、;<p>  如圖6所示,本電源先通過變壓器電壓變換隔離,橋式全波整流,電容濾波,再通過三端固定輸出集成穩(wěn)壓器產(chǎn)生穩(wěn)定電壓+15V,-15V,+5V,穩(wěn)壓器內部電路由恒流源,基準電壓,取樣電阻,比較放大,調整管,保護電路,溫度補償電路等組成。為了改善紋波特性,在輸入端加接電容。為了改善負載的瞬態(tài)響應,在輸出端加接電容。</p><p>  采用三端集成穩(wěn)壓器7805、7815、7915分別得到+5V

33、和±15V的穩(wěn)定電壓,再外對OP07加大功率場效應管構成擴流電路,可以提供2000mA的上限電流。利用該方法實現(xiàn)的電源電路簡單,工作穩(wěn)定可靠。穩(wěn)壓電源在實物上設計上是必不可少的部分,但在運用Proteus仿真時為了簡化電路,此模塊用軟件自帶的勵磁電壓代替。</p><p>  3.1.3 顯示模塊</p><p>  方案一:使用LED數(shù)碼管顯示。數(shù)碼管采用BCD編碼顯示數(shù)字,

34、對外界環(huán)境要求低,易于維護。但根據(jù)題目要求,如果需要同時顯示給定值和測量值,以及其他輸出特性值,需顯示的內容較多,要使用多個數(shù)碼管動態(tài)顯示,使電路變得復雜,加大了編程工作量。</p><p>  方案二:使用LCD液晶顯示。LCD具有輕薄短小,可視面積大,方便的顯示數(shù)字,分辨率高,抗干擾能力強,功耗小,且設計簡單等特點。</p><p>  LM016L液晶模塊采用HD44780控制器,H

35、D44780具有簡單而功能較強的指令集,可以實現(xiàn)字符移動,閃爍等功能,LM016L與單片機MCU通訊能采用4位或者8位并行傳輸?shù)膬煞N方式,HD44780控制器由兩個8位寄存器,指令寄存器(IR)和數(shù)據(jù)寄存器(DR)忙標志(BF),顯示數(shù)RAM(DDRAM),字符發(fā)生器ROMA(CGOROM)字符發(fā)生器RAM(CGRAM),地址計數(shù)器RAM(AC)。LM016L液晶模塊的引腳功能如下表1所示。</p><p>  

36、圖6 穩(wěn)壓電源電路圖</p><p>  表1 LM016L引腳功能</p><p>  綜上所述,選擇方案二。采用LM016L液晶顯示模塊同時顯示電流給定值和實測值以及負載內阻。連接電路圖如圖7所示。</p><p>  圖7 LM016L與單片機的接線圖</p><p>  3.1.4 鍵盤模塊</p><p&

37、gt;  采用標準4×4鍵盤,此類鍵盤采用矩陣式行列掃描方式,優(yōu)點是當按鍵較多時可降低占用單片機的I/O口數(shù)目,而且可以做到直接輸入電流值而不必步進。</p><p>  使用標準的4x4鍵盤,可以實現(xiàn)0~9數(shù)字輸入、“+”、“-”、“OK”、“SET”、“DEL”、“RESET/ON”這些功能按鍵。其電路圖如圖8所示。</p><p>  圖8 鍵盤與單片機的接線圖</

38、p><p>  3.1.5 電流源模塊</p><p>  采用運放和場效應管的壓控恒流源。該恒流源電路由運算放大器、大功率場效應管Q1、采樣電阻R2、負載電阻RL等組成硬件設計。采用場效應管,更加容易實現(xiàn)電壓線性控制電流,既滿足輸出電流最大達到2A的要求,電路簡潔也能較好地實現(xiàn)電壓近似線性地控制電流。該電路中,為了滿足題目的設計要求,調整管用大功率場效應管IRF640。當場效應管工作到飽和

39、區(qū)時,漏電流Id近似為電壓Ugs控制的電流。即當Ud為常數(shù)時,滿足:Id=f(Ugs),只要Ugs不變,Id就不變。在此電路中,R2為取樣電阻,采用康銅絲繞制阻值為1Ω。運放OP07作為電壓跟隨器,Uin=Up=Un,場效應管Id=Is 所以Iout=Is= Un/R2= Uin/R2。正因為Iout=Uin/R2,電流Iout被輸入電壓UI控制,即Iout不會隨RL的變化而變化,從而實現(xiàn)壓控恒流。電路原理圖如圖9所示</p>

40、;<p>  圖9 壓控恒流源模塊電路圖</p><p>  3.1.6 負載模塊</p><p>  根據(jù)題目要求,設計了如圖10所示的電路圖。電路綜合各方面的考慮因素在里面,由于TLC2543所測電壓值在5V內,而負載一端接15V電壓源另一端接功率管,因此采用差分增益電路采樣負載電壓,當Rb/Rc=Rd/Ra時,OP07輸出電壓ADin=Rb/Rc(Va-Vb),硬件

41、設置Rb/Rc=1/4,軟件還原負載電壓,保證測量精度。而采樣精密電阻R1為1Ω,通過采樣R1兩端電壓值換算成電流值即可得到輸出電流。</p><p>  3.1.4 D/A、A/D轉換模塊</p><p>  D/A、A/D模塊是單片機與外部數(shù)據(jù)連接的通道,因此這兩個模塊的選擇與使用應當合理。</p><p> ?。?)D/A轉換器 </p&g

42、t;<p>  采用DAC模塊提供高精度的基準電壓,即通過CPU發(fā)出的二進制轉換為的模擬電壓,送給誤差放大器,實現(xiàn)步進要求。</p><p>  根據(jù)題目擴展功能要求輸出,以1mA為步進,需要的級數(shù)由公式(1)可見。</p><p><b>  (1)</b></p><p>  ,故應采用12位D/A轉換器為D/A轉換芯片,供選

43、擇的很多,在此選LTC1456芯片。</p><p><b> ?。?)A/D轉換器</b></p><p>  A/D模塊的是反饋的核心,我采用Proteus元件庫中的TLC2543芯片實現(xiàn)。TLC2543是一種低功耗、低電壓的12位串行開關電容型AD轉換器。它使用逐次逼近技術完成A/D轉換過程。最大非線性誤差小于1LSB,轉換時間9µs。它具有三個控制器

44、輸入端,采用簡單的3線SPI串行接口可方便與微機進行連接,是12位數(shù)據(jù)采集系統(tǒng)的最佳選擇器件之一。</p><p> ?。?)D/A、A/D連接電路</p><p>  D/A 、A/D連接電路如圖11所示。</p><p>  圖10 負載電流、電壓測量電路圖</p><p>  。3.2 系統(tǒng)的原理圖</p><p

45、>  所繪制的系統(tǒng)原理圖采用的是Proteus軟件。其系統(tǒng)原理圖見附錄所示。</p><p>  圖11 D/A、A/D連接電路圖</p><p>  4 軟件系統(tǒng)的設計</p><p>  4.1 單片機資源使用情況</p><p>  本設計用到了單片機控制DA和AD轉換功能,另外用到了單片機的中斷功能,在數(shù)據(jù)的顯示時所采用的

46、是查表的方法,因此需要將表格、數(shù)據(jù)存到單片機的程序存儲器中去。數(shù)控直流電流源的數(shù)據(jù)要存儲到數(shù)據(jù)存儲器中去,用到了30H到50H之間的單元。</p><p>  由于數(shù)控直流電流源需要可以進行調節(jié),因此,需要在單片機的P口上加上按鍵,采用行列式鍵盤,直接接在P2口上。用到的液晶顯示器接到了單片機的P0口線上,液晶顯示器的使能端用到了P3口線。</p><p>  4.2 軟件系統(tǒng)的模塊&l

47、t;/p><p><b> ?。?)定時模塊</b></p><p>  在本設計中用到了幾個定時模塊,第一個定時是用于定時按鍵的抖動時間,因為當按鍵時都會出現(xiàn)電壓抖動,但對鍵盤工作有影響的是鍵閉合時的抖動,所以為了確保鍵掃描的正確性,每當掃描到有閉合鍵時,都要進行去抖動處理。本設計中采用的是軟件去抖動的方法,抖動的定時采用的軟件的延時進行定時的。</p>

48、<p>  第二個定時的功能是在數(shù)碼管顯示時的延時時間,即在數(shù)碼管顯示時是采用查表的方法進行顯示的,因此需要用到一定的延時,使得我們能夠看的清楚所顯示的內容,在這里用到的延時也是采用軟件的延時。</p><p><b> ?。?)按鍵操作模塊</b></p><p>  我用到了三個獨立式鍵盤進行按鍵的操作。因為本數(shù)控直流電流源的操作簡單,而只用到了三個鍵,

49、因此在鍵盤的操作時采用的是一步步遞進的方法,一步一步往下操作的,設置了鍵的名稱為ON/OFF鍵、ADD鍵、DEC鍵,在軟件設計中是在ON/OFF鍵按下了之后才會有ADD鍵、DEC鍵的操作,鍵與鍵之間的功能采用層層套用使得程序看起來更加清晰明了。</p><p>  采用查詢的方法對按鍵進行操作,當查詢到按鍵有動作時,則執(zhí)行相應的操作。獨立式鍵盤的程序設計一般把鍵盤掃描程序設計成子程序,以便其它各程序調用。鍵盤掃描

50、子程序KEY應具有以下功能:判定有無按鍵動作;去抖動;確認是否真正有閉合鍵;計算并保存閉合鍵鍵碼;判定閉合鍵是否釋放;恢復閉合鍵鍵碼。</p><p> ?。?) D/A轉換模塊</p><p>  主要是利用單片機做處理器,然后經(jīng)過數(shù)模轉換模塊進行轉換,將單片輸出的二進制代碼轉換成相應的模擬電壓輸出,這樣使得所設計的電流源更加精確。在此模塊中,因為進行換擋的轉換,在這里我所采用的是做除

51、法,然后再存儲除法得到的商和余數(shù),這里面我用到了兩個子程序,一個是將十進制轉換為十六進制數(shù),二個是采用移位相減的方法做除法。</p><p> ?。?)A/D轉換模塊</p><p>  當所設定的二進制代碼經(jīng)過數(shù)模轉換模塊輸出之后,經(jīng)過A/D轉換模塊進行采樣之后,由單片機進行處理。然后輸出相應的電流值大小。</p><p> ?。?) LCD顯示模塊</p

52、><p>  寄存器選擇控制表如表2所示。</p><p>  表2 寄存器選擇控制表</p><p>  注:關于E=H脈沖——開始時初始化E為0,然后置E為1,再清0。</p><p>  busy flag(DB7):在此位為被清除為0時,LCD將無法再處理其他的指令要求。</p><p>  1602液晶模塊內部的

53、字符發(fā)生存儲器已經(jīng)存儲了160個不同的點陣字符圖形,每一個字符都有一個固定的代碼,顯示時模塊把地址41H中的點陣字符圖形顯示出來,我們就能看到字母“A”。因為1602識別的是ASCII碼,試驗可以用ASCII碼直接賦值,在單片機編程中還可以用字符型常量或變量賦值,</p><p>  4.3 程序流程圖</p><p><b> ?。?)主控制流程圖</b><

54、/p><p>  在此次設計的過程中,我是采用模塊的設計方法,一個一個實現(xiàn)功能,在本次課程設計的過程中,我都是采用這種思想進行數(shù)控直流電流源的設計的。因此,在設計的過程,讓我能夠很輕易的就抓住了主要的設計核心。主控制流程圖如圖12所示。</p><p>  (2)按鍵操作流程圖</p><p>  對于鍵盤的設計,我專門設計了一個鍵盤掃描子程序,它的功能是,首先對鍵盤進

55、行處理,給每一個鍵都設置了一個鍵碼,那么只要判斷鍵盤的鍵碼就可以知道是否有鍵按下,如若有鍵按下也可以判斷是哪一個鍵按下了。</p><p>  這次設計中,鍵盤掃描子程序的代號為KEY,其鍵盤掃描程序設計的流程框圖如圖13所示。</p><p> ?。?)D/A轉換、A/D轉換流程圖</p><p>  本設計主要是用到LTC1456進行數(shù)模轉換,用到TLC2543

56、進行模數(shù)轉換,其轉換的流程圖如圖14所示。</p><p> ?。?) 數(shù)制轉換流程</p><p>  由于使用的十進制數(shù),而在做除法的時候,要進行數(shù)制的轉換,其轉換的流程圖如圖15所示。</p><p>  圖12 主控制流程圖</p><p>  圖13 按鍵掃描子程序流程圖</p><p>  圖14 D

57、/A轉換、A/D轉換流程圖</p><p>  圖15 數(shù)制轉換流程圖</p><p><b>  4.4 程序清單</b></p><p>  所設計的程序清單見附錄。</p><p>  5 仿真測試及結果</p><p>  5.1 設計結論及使用方法</p><

58、p>  本次通過對數(shù)控直流電流源的設計,知道了利用單片機處理之后,進行數(shù)控直流電流源的顯示。本次設計比較成功,在按鍵操作中能夠按照預先給定的功能進行操縱。</p><p>  打開Proteus軟件,打開設計的電路文件,然后輸入通過KEIL軟件編好的程序,點擊開始按鈕即可以進行測試。按了復位鍵之后,液晶顯示屏上也能顯示“S0200mA"。按下RESET/ON鍵顯示四項值。電流設定初始值為200mA

59、??梢园?,-鍵實現(xiàn)步進,數(shù)據(jù)實時顯示。要設置電流直接按數(shù)字鍵無效。此時需按SET鍵進入電流設置,之后屏幕顯示 “yichun xueyuan huan ying ni!”,按下OK鍵即可設定,如果不需要設定,按RESET/ON返回。在設定電流的過程中,需要有效按四次數(shù)字鍵,如果在設置的過程中想放棄修改,按下RESET/ON鍵,按DEL鍵可以修改已經(jīng)按下的數(shù)值,光標返回到上一個數(shù),重新按某一個數(shù)字鍵即完成修改。設置完成后屏幕顯示相應值。

60、操作顯示界面如圖16所示。如果設定的電流值不在200mA~2000mA內屏幕顯示 “ERROR! RESET”。</p><p>  圖16 仿真顯示器顯示界面圖</p><p><b>  5.2 仿真結果</b></p><p>  5.2.1 輸出電流范圍仿真</p><p>  在程序設計上限制了電流輸出范圍

61、是20~2000mA,限定了電壓值小于10V,當給定值在量程內時顯示“OK!”;當給定值超過量程時將顯示“ERROR! RESET”,如下圖17所示。</p><p>  若需要設定輸出電流值,當按下SET鍵時,出現(xiàn)如圖18所示界面,顯示器顯示“yichun xueyuan huan ying ni!”,此時按下OK鍵,出現(xiàn)如圖19所示界面,這是可隨意輸入一個4位數(shù),如果滿足200~2000mA,則顯示各種數(shù)據(jù),

62、若不滿足200~2000mA,則顯示器出現(xiàn)“ERROR!RESET!”報警畫面。如果發(fā)現(xiàn)輸入數(shù)字不在電流允許范圍,可以按SET鍵再次輸入數(shù)值。</p><p>  圖17 仿真報錯顯示界面圖</p><p>  圖18 輸出電流值確認SET顯示界面圖</p><p>  圖19 輸出電流值SET顯示界面圖</p><p>  5.2.2

63、 步進調整仿真</p><p>  在量程范圍內,通過“+”、“-”按鈕可實現(xiàn)1mA步進,通過顯示器可觀察到效果。通過鍵盤DEL鍵可以修改上一步輸錯的數(shù)字。如圖20所示。</p><p>  圖20 修改設定的輸出電流值界面圖</p><p>  5.2.3 輸出電流仿真</p><p>  下圖21所示是仿真最低電流200mA負載電阻為

64、2.0時候的狀態(tài),依據(jù)LED顯示內容可知,設定輸出電流值為200mA,實測電流值為201mA,輸出電壓為0.400V,負載電阻為2.0,都滿足設計要求。然后,通過改變設定輸出電流值進行仿真,記錄的仿真數(shù)據(jù)如表3所示。</p><p>  圖21 負載電阻為2.0仿真狀態(tài)圖</p><p>  表3 負載RL=2.0Ω的數(shù)據(jù)表格</p><p>  運用同樣的仿真步

65、驟,依次仿真負載電阻為3.0、4.3時這兩種狀態(tài),記錄的仿真數(shù)據(jù)分別如表4、表5所示。</p><p>  表4 負載RL=3.0Ω的數(shù)據(jù)表格</p><p>  表5 負載RL=4.3Ω的數(shù)據(jù)表格</p><p><b>  5.3 誤差分析</b></p><p><b>  測量結果分析:</

66、b></p><p>  步進1mA時設定值與實測值在200~2000mA之間,誤差在5mA以下。</p><p>  步進10mA時設定值與實測值在200~1000mA之間,誤差在5mA以下。在1000~2000mA之間時,誤差在10mA以下。</p><p>  在改變負載時,誤差在10mA以下。</p><p>  在改變輸出電壓

67、時,誤差在10mA以下。</p><p>  綜上所述,系統(tǒng)仿真實測數(shù)據(jù)滿足題目的基本要求,能滿足輸出電流與給定值偏差的絕對值≤給定值的1%+10 mA。說明本電路有較高的精度和穩(wěn)定性。</p><p><b>  誤差分析:</b></p><p>  紋波對電流輸出的影響,采用屏蔽的方法,遠離容易產(chǎn)生脈沖工作方式的器件,減少供電電源的紋波等

68、,對于選擇低噪聲的運放是解決問題的一種方法。另外在輸出接近低頻直流時,運放的失調電壓和失調電流也是產(chǎn)生低頻噪聲的源泉,在這里的解決方法是在運放前加一級晶體管或者場效應管的差分級。</p><p>  誤差可能出現(xiàn)的2種情況,第一個就是換擋電路的電壓基準值是否十分標準,能夠按照所理想設定的電壓值輸出。采用高標準測量電路,先將換擋電路的輸出電壓標準化。第二個就是達林管的是否能夠按照理想的工作狀態(tài)進行相應的工作,解決方

69、法可以產(chǎn)生一個相應的PWM信號控制。具體如下分析:</p><p>  (1)、由于普通運算放大器的運放零點漂移,溫度漂移等帶來的誤差。可以通過溫度補償措施來解決此誤差。</p><p>  (2)、由于采樣電阻在溫度上升時阻值會變化,因此會引起溫度漂移,給系統(tǒng)帶來測量的誤差。</p><p> ?。?)、受D/A轉換器精度,A/D轉換器精度,基準源穩(wěn)定程度等硬件本

70、身的限制,不可避免地帶來一定程度的誤差。</p><p><b>  6 總結</b></p><p>  在本次數(shù)控直流電流源的設計過程中,有許多感觸,首先對C語言,我覺得這是一門邏輯性很強的語言,但同時也是一門比較容易掌握的語言。這門語言和我們的實際聯(lián)系很機密,比如說里面很多傳送指令,都是根據(jù)實際存在的硬件而存在的,還有你面的與或指令、乘法、除法指令,其實都是和我

71、們從小就學的數(shù)學息息相關的。就C語言而言,對于同一種效果可以采用不同的指令完成,也可以采用相同的指令完成,但因為你所選用的方案不同使得所產(chǎn)生的效果也就有所不同,因此這也鍛煉了我們在思考同一個問題,如果能夠采用發(fā)散思維的話,往往會得到意想不到的結果。</p><p><b>  參考文獻</b></p><p>  [1] 沈國琴,51單片機C語言開發(fā)與實例 人民郵電

72、出版社2008 2月第一版.</p><p>  [2] 林敏等.74LSl64在5l單片機LED顯示電路中的應用.大連輕工業(yè)學院學報,20(2)2001.</p><p>  [3] 李群芳,肖看《單片機原理.接口及應用》[M]北京:青華大學出版社 2005年</p><p>  [4] 龔尚福,朱宇《微機原理與接口技術》[M]西安:西安電子科技大學出版社

73、2003年 </p><p>  [5] 戴佳,戴衛(wèi)恒《51單片機C語言應用程序設計實例精講 》北京:電子工業(yè)出版 2006 年 </p><p>  [6] 單片機典型模塊設計實例導航 人民郵電出版社,2005第四版</p><p>  [7] 胡漢才 單片機原理及接口技術 清華大學出版社 2004年2月第二版</p><p&

74、gt;  [8] 張毅坤 《單片微型計算機原理及應用》 西安電子科技大學出版社 1998 </p><p>  [9] 余錫存 曹國華《單片機原理及接口技術》[M].陜西:西安電子科技大學出版社,2000.7 [10] 雷麗文 《微機原理與接口技術》[M].北京:電子工業(yè)出版社,1997.2.</p><p><b>  謝辭</b></p>

75、<p>  走的最快的總是時間,來不及感嘆,大學生活已近尾聲,四年多的努力與付出,隨著本次論文的完成,將要劃上完美的句號。</p><p>  本論文是在胡振平導師的悉心指導下完成的,感謝余志核院長、李平書記、胡紅武書記、李小平主任等各位教導過我的老師。</p><p>  最后感謝母校四年來對我的培養(yǎng),為我的大學學習和生活提供一個美好的平臺和舒適的環(huán)境!</p>

76、<p><b>  附 錄</b></p><p><b>  系統(tǒng)原理圖A</b></p><p><b>  程序清單B:</b></p><p>  #include<reg52.h></p><p>  #define uchar unsign

77、ed char </p><p>  #define uint unsigned int</p><p>  sbit rs=P3^0; </p><p>  sbit rw=P3^1; </p><p>  sbit lcden=P3^2; //液晶顯示屏相關位定義</p><p>  

78、sbit AD_OUT=P1^0;</p><p>  sbit AD_IN=P1^1;</p><p>  sbit AD_CS=P1^2;</p><p>  sbit AD_CLOCK=P1^3;</p><p>  sbit DA_IN=P3^3;</p><p>  sbit DA_CK=P3^4;</

79、p><p>  sbit DA_CS=P3^5;</p><p>  sbit x=P1^4;</p><p>  uchar code table1[]="yichun xueyuan ";</p><p>  uchar code table2[]=" huan ying ni!";</p

80、><p>  uchar code table3[]=" ERROR!RESET ";</p><p>  unsigned long int temp0,temp1;</p><p>  uint ADCdat,i,AD_DAstart;</p><p>  float Voltage1,Voltage2,r;</

81、p><p>  int vol,rtt;</p><p>  uchar set,volarry0[4],volarry1[4],rt[2];</p><p>  char iset[5]={0,0,2,0,0,};</p><p>  void led_init(); //函數(shù)聲明</p><p&

82、gt;  void delayms(uint z);</p><p>  void delay(uint t);</p><p>  void write_com(uchar com);</p><p>  void write_date(uchar date);</p><p>  void display_AD();</p>

83、<p>  uint read2543(uchar port);</p><p>  void Send1456(uint DACdat);</p><p>  void keyscan();</p><p>  ;************************************************************</p>

84、<p>  ;****; 主程序 ****</p><p>  ;************************************************************</p><p><b>  main()</b></p><p>&l

85、t;b>  {</b></p><p>  led_init();</p><p><b>  i=20;</b></p><p>  display_AD();</p><p>  Send1456(20);</p><p><b>  while(1)</b&

86、gt;</p><p><b>  {</b></p><p>  keyscan();</p><p>  if(AD_DAstart==1)</p><p><b>  {</b></p><p>  display_AD();</p><p> 

87、 Send1456(iset[1]*1000+iset[2]*100+iset[3]*10+iset[4]);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void delayms(

88、uint z) //延時函數(shù),參數(shù)為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--); //z=1測試為大約1微秒<

89、/p><p><b>  }</b></p><p>  void delay(uint t) //極短延時</p><p><b>  {</b></p><p>  while(t--);</p><p><b>  }</b></p>

90、<p>  void write_com(uchar com) //寫命令函數(shù)</p><p><b>  {</b></p><p>  rs=0; //rs置0表示寫命令</p><p>  lcden=0; //按時序圖置低</p><p>  P0=com;

91、 //位聲明,按原理圖接P0口,輸入數(shù)據(jù)</p><p>  lcden=1; //置高</p><p>  delayms(5); //時序圖中須有thd2時間延時</p><p>  lcden=0; //按時序圖置低</p><p><b>  }</b></p>&l

92、t;p>  void write_date(uchar date) //寫數(shù)據(jù)函數(shù)</p><p><b>  {</b></p><p>  rs=1; //rs置1表示寫數(shù)據(jù)</p><p>  lcden=0; </p><p>  P0=date; //將數(shù)據(jù)賦到P0口</

93、p><p>  delayms(5); </p><p>  lcden=1; </p><p>  delayms(5); </p><p>  lcden=0; </p><p><b>  }</b></p><p>  void led_

94、init() //初始化函數(shù)</p><p><b>  {</b></p><p><b>  lcden=0;</b></p><p><b>  rw=0;</b></p><p>  write_com(0x38); //顯示模式設置:16X2顯示,5X

95、7點陣,8位數(shù)據(jù)</p><p>  write_com(0x0c); // 開顯示,關光標,光標不閃爍</p><p>  write_com(0x06); // 寫一個數(shù)據(jù)后地址指針加一,光標加一</p><p>  write_com(0x01); // 數(shù)據(jù)指針及數(shù)據(jù)清0</p><p>  write_com(0x

96、80); // 設置數(shù)據(jù)地址指針,第一行</p><p>  write_com(0x80+5);</p><p>  write_date(0x6d);</p><p>  write_date(0x41);</p><p>  write_com(0x80); </p><p>  write_date

97、(0x53);</p><p>  write_date(0x30+iset[1]);</p><p>  write_date(0x30+iset[2]);</p><p>  write_date(0x30+iset[3]);</p><p>  write_date(0x30+iset[4]);</p><p>

98、<b>  }</b></p><p>  ;************************************************************</p><p>  ;****; A/D轉換子程序 ****</p><p>  ;*******************

99、*****************************************</p><p>  void display_AD()</p><p><b>  {</b></p><p>  uchar num;</p><p>  temp0+= read2543(0x00);//進行AD轉換</p&g

100、t;<p>  temp1+= read2543(0x01);</p><p>  i--;//取20次AD轉換的結果,求平均值</p><p><b>  if(i==0)</b></p><p><b>  {</b></p><p>  ADCdat=temp1/2

101、0;</p><p><b>  temp1=0;</b></p><p>  Voltage2=(ADCdat*5.0)/4096; //基準電壓為5.0V</p><p>  vol=(int)((Voltage2*4)*1000);// 擴大1000倍</p><p>  volarry1[3]=vol/1000;

102、</p><p>  volarry1[2]=vol%1000/100;</p><p>  volarry1[1]=vol%100/10;</p><p>  volarry1[0]=vol%10;</p><p>  ADCdat=temp0/20;</p><p><b>  temp0=0;</

103、b></p><p><b>  i=20;</b></p><p>  Voltage1=(ADCdat*5.0)/4096; //基準電壓為5.0V</p><p>  vol=(int)(Voltage1*1000+1);// 擴大1000倍</p><p>  volarry0[3]=vol/1000;&l

104、t;/p><p>  volarry0[2]=vol%1000/100;</p><p>  volarry0[1]=vol%100/10;</p><p>  volarry0[0]=vol%10;</p><p>  write_com(0x80+0x40);</p><p>  write_date(0x54);&l

105、t;/p><p>  write_date(0x30+volarry0[3]);</p><p>  write_date(0x30+volarry0[2]);</p><p>  write_date(0x30+volarry0[1]);</p><p>  write_date(0x30+volarry0[0]);</p>&l

106、t;p>  write_date(0x6d);</p><p>  write_date(0x41);</p><p>  if(vol>2000||vol<200||volarry1[3]>10||volarry1[3]==10)</p><p><b>  {</b></p><p>  wr

107、ite_com(0x01); // 數(shù)據(jù)指針及數(shù)據(jù)清0</p><p>  write_com(0x80); // 設置數(shù)據(jù)地址指針,第一行</p><p>  for(num=0;num<16;num++)</p><p><b>  {</b></p><p>  write_date(table3

108、[num]);</p><p>  delayms(1); //循環(huán)方式寫第一行數(shù)據(jù)</p><p><b>  }</b></p><p><b>  set=1;</b></p><p>  AD_DAstart=0;</p><p><b>  }&

109、lt;/b></p><p><b>  else</b></p><p><b>  {</b></p><p>  write_com(0x80+0x40+13);</p><p>  write_date(0x4f);</p><p>  write_date(0

110、x4b);</p><p>  write_date(0x21);</p><p>  write_com(0x80+9);</p><p>  write_date(0x30+volarry1[3]);</p><p>  write_date(0x2e);</p><p>  write_date(0x30+vol

111、arry1[2]);</p><p>  write_date(0x30+volarry1[1]);</p><p>  write_date(0x30+volarry1[0]);</p><p>  write_date(0x56);</p><p>  r=Voltage2*4/Voltage1;</p><p>

112、  rtt=(int)(r*10);</p><p>  rt[1]=rtt/10;</p><p>  rt[0]=rtt%10;</p><p>  write_com(0x80+0x49);</p><p>  write_date(0x30+rt[1]);</p><p>  write_date(0x52);

113、</p><p>  write_date(0x30+rt[0]);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  ;********************

114、****************************************</p><p>  ;****; D/A轉換子程序 ****</p><p>  ;************************************************************</p><p>  u

115、int read2543(uchar port) //DA轉換子程序</p><p><b>  {</b></p><p>  uint ad=0,j;</p><p>  AD_CLOCK=0;</p><p><b>  AD_CS=0;</b></p><p>&

116、lt;b>  port<<=4;</b></p><p>  delay(50); </p><p>  for(j=0;j<12;j++)</p><p><b>  {</b></p><p>  if(AD_OUT) </p><p><b> 

117、 {</b></p><p><b>  ad|=0x01;</b></p><p><b>  }</b></p><p>  AD_IN=(bit)(port&0x80);</p><p>  AD_CLOCK=1;</p><p><b>

118、  delay(6);</b></p><p>  AD_CLOCK=0;</p><p><b>  delay(3);</b></p><p><b>  port<<=1;</b></p><p><b>  ad<<=1;</b>&l

119、t;/p><p><b>  }</b></p><p><b>  AD_CS=1;</b></p><p><b>  ad>>=1;</b></p><p>  return(ad);</p><p><b>  }</b&

120、gt;</p><p>  void Send1456(uint DACdat)</p><p><b>  {</b></p><p>  uchar i=0;</p><p><b>  DA_CK=0;</b></p><p><b>  delay(2);&

121、lt;/b></p><p><b>  DA_CS=0;</b></p><p><b>  delay(2);</b></p><p>  for(i=0;i<12;i++)</p><p><b>  {</b></p><p>  D

溫馨提示

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

評論

0/150

提交評論