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

下載本文檔

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

文檔簡介

1、<p><b>  綜合電子設(shè)計實驗</b></p><p>  數(shù)控直流電流源的設(shè)計</p><p>  學 院: 計算機與電子工程學院 </p><p>  學生姓名: </p><p>  學 號 :

2、 </p><p>  指導教師: 職稱 副教授 </p><p>  專 業(yè): 電子信息工程 </p><p>  班 級: </p><p>  完成時間: 2012 - 10 </p><p>&l

3、t;b>  數(shù)控直流電流源</b></p><p><b>  1 設(shè)計任務(wù)及要求</b></p><p><b>  1.1 設(shè)計任務(wù)</b></p><p>  設(shè)計并制作數(shù)控直流電流源。輸入交流200~240V,50Hz;輸出直流電壓≤10V。其原理示意圖如下所示。</p><

4、p><b>  圖1.1 原理圖</b></p><p><b>  1.2 設(shè)計要求</b></p><p>  1.2.1 基本要求</p><p> ?。?)輸出電流范圍:200mA~2000mA;</p><p> ?。?)可設(shè)置并顯示輸出電流給定值,要求輸出電流與給定值偏差的絕

5、對值≤給定值的1%+10 mA;</p><p> ?。?)具有“+”、“-”步進調(diào)整功能,步進≤10mA;</p><p> ?。?)改變負載電阻,輸出電壓在10V以內(nèi)變化時,要求輸出電流變化的絕對值≤輸出電流值的1%+10 mA; </p><p>  1.2.2 發(fā)揮部分</p><p> ?。?)輸出電流范圍為20mA~2000mA,

6、步進1mA;</p><p>  (2)設(shè)計、制作測量并顯示輸出電流的裝置 (可同時或交替顯示電流的給定值和實測值),測量誤差的絕對值≤測量值的0.1%+3個字;</p><p> ?。?)改變負載電阻,輸出電壓在10V以內(nèi)變化時,要求輸出電流變化的絕對值≤輸出電流值的0.1%+1 mA;</p><p><b> ?。?)其他。</b><

7、;/p><p><b>  2 方案設(shè)計與論證</b></p><p><b>  2.1 設(shè)計思想</b></p><p>  采用改進型的單輸出端單向電流源電路來產(chǎn)生恒定電流。該方法是用精密電阻取樣得到反饋電壓,將反饋電壓與高精度的參考電壓比較得到誤差電壓,此誤差電壓經(jīng)放大后輸出控制調(diào)整管的導通程度,使預(yù)設(shè)電流值和實測電

8、流值的逐步逼近,直至相等,從而達到數(shù)控的目的。從題目的要求來分析,該題目最大的難點在于大電流輸出和高精度控制,所以在具體的方案確定中,大電流、功耗,以及精度、誤差等都是我們所必須要考慮和克服的。</p><p><b>  2.2 方案論證</b></p><p>  對于數(shù)控直流電流源的設(shè)計有很多方案,下面做一下介紹:</p><p>  

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

10、t;<p>  圖2.1 方案一的方框圖</p><p>  方案一的數(shù)控直流電流源設(shè)計比較簡單,對于電流的變化是采用相比而言使用可編程芯片,如CPLD或FPGA等和DAC控制,采用LED數(shù)碼管進行實時顯示,操作也比較方便。</p><p>  方案二:方框圖如圖2.2所示,采用改進型的單輸出端單向電流源電路來產(chǎn)生恒定電流。該方法是用精密電阻取樣得到反饋電壓,將反饋電壓與高

11、精度的參考電壓比較得到誤差電壓,此誤差電壓經(jīng)放大后輸出控制調(diào)整管的導通程度,使預(yù)設(shè)電流值和實測電流值的逐步逼近,直至相等,從而達到數(shù)控的目的。從題目的要求來分析,該題目最大的難點在于大電流輸出和高精度控制,所以在具體的方案確定中,大電流、功耗,以及精度、誤差等都是我們所必須要考慮和克服的。</p><p>  圖2.2 方案二方框圖</p><p>  方案二的數(shù)控直流電源設(shè)計采用單片機

12、作為核心控制,基本原理簡單,實現(xiàn)比較方便,電源的電流值也可以調(diào)整到較精確的數(shù)值,同樣的也是采用LCD進行顯示。此方案采用保持電阻恒定而改變輸入電壓的方法來改變電流的大小。利用高精度D/A轉(zhuǎn)換器在單片機程序控制下提供可變的高精度的基準電壓,該基準電壓經(jīng)過V/I轉(zhuǎn)換電路得到電流,再通過A/D轉(zhuǎn)換器將輸出電流反饋至單片機進行比較,調(diào)整D/A的輸入電壓,從而達到數(shù)控的目的。該方案的難點在于穩(wěn)定恒流源的設(shè)計和高精度電流檢測電路的設(shè)計。特點是可精確

13、的控制電流的步進量,負載變化對電流輸出的影響較小。</p><p>  根據(jù)題目要求以及設(shè)計思路,比較之后,基于以上優(yōu)點以及對于單片機的成熟應(yīng)用,因此我決定用單片機來作為控制器,我所采用的是第二種方案。</p><p>  3 硬件系統(tǒng)的設(shè)計</p><p>  3.1 單片機最小系統(tǒng)</p><p>  3.1.1 時鐘電路</

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

15、 C1、C2的作用有兩個:一是幫助振蕩器起振;二是對振蕩器的頻率進行微調(diào)。C1、C2的典型值為33PF。單片機的時鐘電路如圖3.1所示。</p><p>  圖3.1 單片機的時鐘電路圖</p><p>  3.1.2 復位電路</p><p>  單片機的第9腳RST為硬件復位端,只要將該端持續(xù)4個機器周期的高電平即可實現(xiàn)復位,復位后單片機的各狀態(tài)都恢復到初始化

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

17、進入復位狀態(tài),當程序出現(xiàn)錯誤時,可以隨時使電路復位。則復位電路圖如圖3.2所示。</p><p>  圖3.2 單片機復位電路圖</p><p>  3.1.3 AT89C51單片機</p><p>  此單片機共有4個8位的并行雙向I/O口,分別記作P0、P1、P2、P3,這4個口除可按字節(jié)尋址以外,還可按位尋址。P0口地址為80H,位地址為80H~87H。各

18、位口線具有完全相同但又相互獨立的邏輯電路。P1口地址為90H,位地址為90H~97H。P1口只能作為通用數(shù)據(jù)I/O口使用,所以在電路結(jié)構(gòu)上與P0口有些不同。P2口地址為A0H,位地址為A0H~A7H。P2口既可以作為系統(tǒng)高位地址線使用,也可以為通用I/O口使用,所以P2口電路邏輯與P0口類似。P3口地址為B0H,位地址為B0H~B7H。雖然P3口可以作為通用I/O口使用,但在實際應(yīng)用中它的第二功能信號更為重要。P3口的第二功能如表3.1

19、所示。</p><p>  AT89C51單片機還有一個地址鎖存控制信號ALE,外部程序存儲器讀選通信號,訪問程序存儲器控制信號,復位信號RST,地線和+5V的電源。</p><p>  單片機最小系統(tǒng)圖如圖3.3所示。</p><p>  表3.1 P3口線第二功能</p><p>  圖3.3 單片機最小系統(tǒng)圖</p>

20、<p><b>  3.3 顯示模塊</b></p><p>  方案一:使用LED數(shù)碼管顯示。數(shù)碼管采用BCD編碼顯示數(shù)字,對外界環(huán)境要求低,易于維護。但根據(jù)題目要求,如果需要同時顯示給定值和測量值,以及其他輸出特性值,需顯示的內(nèi)容較多,要使用多個數(shù)碼管動態(tài)顯示,使電路變得復雜,加大了編程工作量。</p><p>  方案二:使用LCD液晶顯示。LCD具

21、有輕薄短小,可視面積大,方便的顯示數(shù)字,分辨率高,抗干擾能力強,功耗小,且設(shè)計簡單等特點。</p><p>  LM016L液晶模塊采用HD44780控制器,hd44780具有簡單而功能較強的指令集,可以實現(xiàn)字符移動,閃爍等功能,LM016L與單片機MCU通訊可采用8位或4位并行傳輸兩種方式,hd44780控制器由兩個8位寄存器,指令寄存器(IR)和數(shù)據(jù)寄存器(DR)忙標志(BF),顯示數(shù)RAM(DDRAM),字

22、符發(fā)生器ROMA(CGOROM)字符發(fā)生器RAM(CGRAM),地址計數(shù)器RAM(AC)。IR用于寄存指令碼,只能寫入不能讀出,DR用于寄存數(shù)據(jù),數(shù)據(jù)由內(nèi)部操作自動寫入DDRAM和CGRAM,或者暫存從DDRAM和CGRAM讀出的數(shù)據(jù),BF為1時,液晶模塊處于內(nèi)部模式,不響應(yīng)外部操作指令和接受數(shù)據(jù),DDTAM用來存儲顯示的字符,能存儲80個字符碼,CGROM由8位字符碼生成5*7點陣字符160中和5*10點陣字符32種.8位字符編碼和字

23、符的對應(yīng)關(guān)系,CGRAM是為用戶編寫特殊字符留用的,它的容量僅64字節(jié),可以自定義8個5*7點陣字符或者4個5*10點陣字符,AC可以存儲DDRAM和CGRAM的地址,如果地址碼隨指令寫入IR,則IR自動把地址碼裝入AC,同時選擇DDRAM或CGRAM,L</p><p>  表3.2 LM016L引腳功能</p><p>  綜上所述,選擇方案二。采用LM016L液晶顯示模塊同時顯示電

24、流給定值和實測值以及負載內(nèi)阻。連接電路圖如圖3.4所示。</p><p>  圖3.4 LM016L與單片機的接線圖</p><p><b>  3.4 鍵盤模塊</b></p><p>  方案一:采用獨立式按鍵電路,每個按鍵單獨占有一根I/O接口線,每個I/O口的工作狀態(tài)互不影響,此類鍵盤采用端口直接掃描方式。缺點為當按鍵較多時占用單片

25、機的I/O口數(shù)目較多。</p><p>  方案二:采用標準4×4鍵盤,此類鍵盤采用矩陣式行列掃描方式,優(yōu)點是當按鍵較多時可降低占用單片機的I/O口數(shù)目,而且可以做到直接輸入電流值而不必步進。</p><p>  題目要求可進行電流給定值的設(shè)置和步進調(diào)整,需要的按鍵比較多。綜合考慮兩種方案及題目要求,采用方案二,使用標準的4x4鍵盤,可以實現(xiàn)0~9數(shù)字輸入、“+”、“-”、“OK

26、”、“SET”、“DEL”、“RESET/ON”這些功能按鍵。其電路圖如圖3.5所示。</p><p>  圖3.5 鍵盤與單片機的接線圖</p><p>  3.5 電流源模塊</p><p>  方案一:采用集成穩(wěn)壓器運放構(gòu)成的線性恒流源。如圖3.6所示。D/A輸出電壓作為恒流源的參考電壓,運算放大器U1與晶體管Q1,Q2組成的達林頓電路構(gòu)成電壓跟隨器。利用

27、晶體管平坦的輸出特性即可得到恒流輸出。由于跟隨器是一種深度的電壓負擔虧電路,因此電流源具有較好的穩(wěn)定性。本電流源的穩(wěn)定度優(yōu)于0.5%。為了提高穩(wěn)定度,Rs采用大線徑康銅絲制作,康銅絲溫度系數(shù)很小,大線徑可以使其溫度影響減至最小。U1采用精密運算放大器OP37A,該放大器有調(diào)節(jié)零點漂移的功能,Q1采用9014大倍數(shù)大約為400.Q2采用低頻功率管3DD15,他的放大倍數(shù)為10~20倍,漏電流很小。Q1的加入是為了增加復合管的放大倍數(shù)。&l

28、t;/p><p>  圖3.6 穩(wěn)壓器運放線性恒流源模塊電路圖</p><p>  方案二:采用運放和場效應(yīng)管的壓控恒流源。電路原理圖如圖3.7所示。該恒流源電路由運算放大器、大功率場效應(yīng)管Q1、采樣電阻R2、負載電阻RL等組成硬件設(shè)計。采用場效應(yīng)管,更易于實現(xiàn)電壓線性控制電流,既能滿足輸出電流最大達到2A的要求,電路簡潔也能較好地實現(xiàn)電壓近似線性地控制電流。此電路中,為了滿足題目的設(shè)計要求

29、,調(diào)整管采用大功率場效應(yīng)管IRF640。當場效應(yīng)管工作于飽和區(qū)時,漏極電流Id近似為電壓Ugs控制的電流。即當Ud為常數(shù)時,滿足:Id=f(Ugs),只要Ugs不變,Id就不變。在此電路中,R7為取樣電阻,采用康銅絲繞制(阻值隨溫度的變化較?。┳柚禐?Ω。運放OP07作為電壓跟隨器,Uin=Up=Un,場效應(yīng)管Id=Is(柵極電流相對很小,可忽略不計) 所以Iout=Is= Un/R7= Uin/R7。正因為Iout=Uin/R7,電路

30、輸入電壓Uin控制電流Iout,即Iout不隨RL的變化而變化,從而實現(xiàn)壓控恒流。</p><p>  圖3.7 壓控恒流源模塊電路圖</p><p>  綜上所述,進行綜合比較,方案二電路較簡單,穩(wěn)定性較高,故采用方案二,使用高精度運放和大功率場效應(yīng)管等構(gòu)成一個恒流源電路。</p><p><b>  3.6 負載模塊</b></p

31、><p>  根據(jù)題目要求,設(shè)計了如圖3.8所示的電路圖。電路綜合各方面的考慮因素在里面,由于TLC2543所測電壓值在5V內(nèi),而負載一端接17V電壓源,另一端接功率管,因此采用差分增益電路采樣負載電壓,Va/din1=(1+R1/R2)[(R4/R3)/(1+R4/R3)]Va-R1/R2Vb,當R1/R2=R4/R3時,OP07輸出電壓Va/din1=R4/R3(Va-Vb),硬件設(shè)置R4/R3=1/4,軟件還原

32、負載電壓,保證測量精度。而采樣精密電阻R1為1Ω,通過采樣R7兩端電壓值換算成電流值即可得到輸出電流。</p><p>  圖3.8 負載電流、電壓測量電路圖</p><p>  3.7 D/A、A/D轉(zhuǎn)換模塊</p><p>  D/A、A/D模塊是單片機與外部數(shù)據(jù)連接的通道,因此這兩個模塊的選擇與使用應(yīng)當合理。</p><p>  3

33、.7.1 D/A轉(zhuǎn)換器 </p><p>  本設(shè)計中應(yīng)采用DAC模塊提供高精度的基準電壓,即通過CPU發(fā)出的二進制轉(zhuǎn)換為的模擬電壓,送給誤差放大器,實現(xiàn)步進要求。</p><p><b> ?。?)</b></p><p>  根據(jù)題目擴展功能要求輸出,以1mA為步進,需要的級數(shù)由公式(1)可見。</p><

34、p>  ,故應(yīng)采用12位D/A轉(zhuǎn)換器為D/A轉(zhuǎn)換芯片,供選擇的很多,在此選用proteus元件庫中的LTC1456芯片。其內(nèi)部結(jié)構(gòu)電路圖如圖3.9所示。</p><p>  圖3.9 TLC1456內(nèi)部結(jié)構(gòu)電路圖</p><p>  3.7.2 A/D轉(zhuǎn)換器</p><p>  A/D模塊的是反饋的核心,我們采用Proteus元件庫中的TLC2543芯片實

35、現(xiàn)。TLC2543是一種低功耗、低電壓的12位串行開關(guān)電容型AD轉(zhuǎn)換器。它使用逐次逼近技術(shù)完成A/D轉(zhuǎn)換過程。最大線性誤差小于1LSB,轉(zhuǎn)換時間10µs。它具有三個控制器輸入端,采用簡單的3線SPI串行接口可方便與微機進行連接,是12位數(shù)據(jù)采集系統(tǒng)的最佳選擇器件之一。TLC2543引腳功能如表3.3所示,其特點如下: ①11個模擬輸入通道;</p><p> ?、?路內(nèi)置自測試方式;</p

36、><p> ?、鄄蓸勇蕿?6kbps; ④線性誤差±1LSBmax; ⑤有轉(zhuǎn)換結(jié)束輸出EOC; ⑥具有單、雙極性輸出; ⑦可編程的MSB或LSB前導; </p><p> ?、嗫删幊梯敵鰯?shù)據(jù)長度。</p><p>  表3.3 LTC2543引腳功能</p><p>  轉(zhuǎn)換過程:上電后,片選CS必須從高到低,才能開始一次工作

37、周期,此時EOC為高,輸入數(shù)據(jù)寄存器被置為0,輸出數(shù)據(jù)寄存器的內(nèi)容是隨機的。開始時,CS片選為高,I/O CLOCK、DATA INPUT被禁止,DATA OUT 呈高阻狀,EOC為高。使CS變低,I/OCLOCK、DATAINPUT使能,DATAOUT脫離高阻狀態(tài)。12個時鐘信號從I/OCLOCK端依次加入,隨著時鐘信號的加入,控制字從DATAINPUT一位一位地在時鐘信號的上升沿時被送入TLC2543(高位先送入),同時上一周期轉(zhuǎn)換

38、的A/D數(shù)據(jù),即輸出數(shù)據(jù)寄存器中的數(shù)據(jù)從DATAOUT一位一位地移出。TLC2543收到第4個時鐘信號后,通道號也已收到,此時TLC2543開始對選定通道的模擬量進行采樣,并保持到第12個時鐘的下降沿。在第12個時鐘下降沿,EOC變低,開始對本次采樣的模擬量進行A/D轉(zhuǎn)換,轉(zhuǎn)換時間約需10μs,轉(zhuǎn)換完成后EOC變高,轉(zhuǎn)換的數(shù)據(jù)在輸出數(shù)據(jù)寄存器中,待下一個工作周期輸出。此后,可以進行新的工作周期。</p><p>

39、  3.7.3 D/A、A/D連接電路</p><p>  D/A 、A/D連接電路如圖3.10所示。</p><p>  圖3.10 D/A、A/D連接電路圖</p><p><b>  4 軟件系統(tǒng)的設(shè)計</b></p><p>  4.1 單片機資源使用情況</p><p>  本設(shè)

40、計用到了單片機控制DA和AD轉(zhuǎn)換的功能,此外用到了單片機的中斷功能,在數(shù)據(jù)的顯示時所采用的是查表的方法,因此需要將表格、數(shù)據(jù)存到單片機的程序存儲器中去。數(shù)控直流電流源的數(shù)據(jù)要存儲到數(shù)據(jù)存儲器中去,用到了30H到50H之間的單元。</p><p>  由于數(shù)控直流電流源需要可以進行調(diào)節(jié),因此,需要在單片機的P口上加上按鍵,本設(shè)計采用行列式鍵盤,直接接在P2口上。用到的液晶顯示器接到了單片機的P0口線上,液晶顯示器的

41、使能端用到了P3口線。</p><p>  4.2 軟件系統(tǒng)的模塊</p><p>  4.2.1 定時模塊</p><p>  在本設(shè)計中用到了幾個定時模塊,第一個定時是用于定時按鍵的抖動時間,因為當按鍵時都會出現(xiàn)電壓抖動,但對鍵盤工作有影響的是鍵閉合時的抖動,所以為了確保鍵掃描的正確性,每當掃描到有閉合鍵時,都要進行去抖動處理。本設(shè)計中采用的是軟件去抖動的方

42、法,抖動的定時采用的軟件的延時進行定時的。</p><p>  第二個定時的功能是在數(shù)碼管顯示時的延時時間,即在數(shù)碼管顯示時是采用查表的方法進行顯示的,因此需要用到一定的延時,使得我們能夠看的清楚所顯示的內(nèi)容,在這里用到的延時也是采用軟件的延時。</p><p>  4.2.2 按鍵操作模塊</p><p>  在本次設(shè)計中,用到了三個獨立式鍵盤進行按鍵的操作。因

43、為本數(shù)控直流電流源的操作比較簡單,而只用到了三個鍵,因此在鍵盤的操作時采用的是層層遞進的方法,一步一步往下操作的,設(shè)置了鍵的名稱為ON/OFF鍵、ADD鍵、DEC鍵,在軟件設(shè)計中是在ON/OFF鍵按下了之后才會有ADD鍵、DEC鍵的操作,鍵與鍵之間的功能采用層層套用使得程序看起來更加清晰明了。</p><p>  在按鍵的程序掃描中是采用查詢的方法對按鍵進行操作的,當查詢到按鍵有動作時,則執(zhí)行相應(yīng)的操作。獨立式鍵

44、盤的程序設(shè)計一般把鍵盤掃描程序設(shè)計成子程序,以便其它各程序調(diào)用。本設(shè)計中的鍵盤掃描子程序的名稱為KEY,則鍵盤掃描子程序KEY應(yīng)具有以下功能:判定有無按鍵動作;去抖動;確認是否真正有閉合鍵;計算并保存閉合鍵鍵碼;判定閉合鍵是否釋放;恢復閉合鍵鍵碼。</p><p>  4.2.3 D/A轉(zhuǎn)換模塊</p><p>  本設(shè)計主要是利用單片機做處理器,然后經(jīng)過數(shù)模轉(zhuǎn)換模塊進行轉(zhuǎn)換,將單片輸出

45、的二進制代碼轉(zhuǎn)換成相應(yīng)的模擬電壓輸出,這樣使得所設(shè)計的電流源更加精確。在此模塊中,因為進行換擋的轉(zhuǎn)換,在這里我所采用的是做除法,然后再存儲除法得到的商和余數(shù),這里面我用到了兩個子程序,一個是將十進制轉(zhuǎn)換為十六進制數(shù),二個是采用移位相減的方法做除法。</p><p>  4.2.4 A/D轉(zhuǎn)換模塊</p><p>  當所設(shè)定的二進制代碼經(jīng)過數(shù)模轉(zhuǎn)換模塊輸出之后,經(jīng)過A/D轉(zhuǎn)換模塊進行采樣

46、之后,由單片機進行處理。然后輸出相應(yīng)的電流值大小。</p><p>  4.2.5 LCD顯示模塊</p><p>  寄存器選擇控制表如表4.1所示。</p><p>  表4.1 寄存器選擇控制表</p><p>  注:關(guān)于E=H脈沖——開始時初始化E為0,然后置E為1,再清0。</p><p>  busy

47、 flag(DB7):在此位為被清除為0時,LCD將無法再處理其他的指令要求。</p><p>  1602液晶模塊內(nèi)部的字符發(fā)生存儲器(CGROM)已經(jīng)存儲了160個不同的點陣字符圖形,這些字符有:阿拉伯數(shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時模塊把地址41H中的點陣字符圖形顯示出來,我們就能看到字母“A

48、”。因為1602識別的是ASCII碼,試驗可以用ASCII碼直接賦值,在單片機編程中還可以用字符型常量或變量賦值,如“A”。</p><p>  4.3 程序流程圖</p><p>  4.3.1 主控制流程圖</p><p>  在此次設(shè)計的過程中,我是采用模塊的設(shè)計方法,一個一個實現(xiàn)功能,可以說如果完成了一個任務(wù)的程序框圖,就是完成了整個設(shè)計任務(wù)的百分之三十

49、左右,在本次課程設(shè)計的過程中,我都是采用這種思想進行數(shù)控直流電流源的設(shè)計的。因此,在設(shè)計的過程,讓我能夠很輕易的就抓住了主要的設(shè)計核心。主控制流程圖如圖4.1所示。</p><p>  圖4.1 主控制流程圖</p><p>  4.3.2 按鍵操作流程圖</p><p>  在本次程序設(shè)計中對于鍵盤的設(shè)計,我專門設(shè)計了一個鍵盤掃描子程序,它所完成的功能是,首先

50、對鍵盤進行處理,給每一個鍵都設(shè)置了一個鍵碼,那么只要判斷鍵盤的鍵碼就可以知道是否有鍵按下,如若有鍵按下也可以判斷是哪一個鍵按下了。</p><p>  這次設(shè)計中,鍵盤掃描子程序的代號為KEY,其鍵盤掃描程序設(shè)計的流程框圖如圖4.2所示。</p><p>  圖4.2 按鍵掃描子程序流程圖</p><p>  4.3.3 D/A轉(zhuǎn)換、A/D轉(zhuǎn)換流程圖</p

51、><p>  本設(shè)計主要是用到LTC1456進行數(shù)模轉(zhuǎn)換,用到TLC2543進行模數(shù)轉(zhuǎn)換,其轉(zhuǎn)換的流程圖如圖4.3所示。</p><p>  圖4.3 D/A轉(zhuǎn)換、A/D轉(zhuǎn)換流程圖</p><p>  4.3.4 數(shù)制轉(zhuǎn)換流程圖</p><p>  由于使用的十進制數(shù),而在做除法的時候,要進行數(shù)制的轉(zhuǎn)換,其轉(zhuǎn)換的流程圖如圖4.4所示。<

52、/p><p>  圖4.4 數(shù)制轉(zhuǎn)換流程圖</p><p>  4.3.5 LCD顯示流程圖</p><p>  由于本設(shè)計的顯示比較簡單,因此我所用到的是LCD顯示,其LCD顯示的流程圖如圖4.5所示。</p><p>  圖4.5 LCD顯示子程序流程圖</p><p>  5 仿真測試及結(jié)果</p>

53、;<p>  5.1 設(shè)計結(jié)論及使用方法</p><p>  本次通過對數(shù)控直流電流源的設(shè)計,了解了利用單片機處理之后,進行數(shù)控直流電流源的顯示。本次設(shè)計比較成功,在按鍵操作中能夠按照預(yù)先給定的功能進行操縱。</p><p>  打開Proteus軟件,打開設(shè)計的電路文件,然后輸入通過KEIL軟件編好的程序,點擊開始按鈕即可以進行測試。具體操作說明:按了復位鍵之后,液晶顯示

54、屏上也能顯示“S0200mA"。按下RESET/ON鍵顯示四項值,包括電源設(shè)定值、電流AD測量值、負載電壓值、負載阻值。電流設(shè)定初始值為200mA??梢园?,-鍵實現(xiàn)步進,數(shù)據(jù)實時顯示。要設(shè)置電流直接按數(shù)字鍵無效。此時需按SET鍵進入電流設(shè)置,之后屏幕顯示 “Are you sure to set?”,按下OK鍵即可設(shè)定,如果不需要設(shè)定,按RESET/ON返回。在設(shè)定電流的過程中,需要有效按四次數(shù)字鍵,如果在設(shè)置的過程中想放棄

55、修改,按下RESET/ON鍵,如果需要修改已經(jīng)按下的數(shù)值,可以按DEL鍵,光標返回到上一個數(shù),重新按某一個數(shù)字鍵即完成修改。設(shè)置完成后屏幕顯示相應(yīng)值。操作顯示界面如圖5.1所示。如果設(shè)定的電流值不在200mA~2000mA內(nèi)屏幕顯示 “ERROR! RESET”。</p><p>  圖5.1 仿真顯示器顯示界面圖</p><p><b>  5.2 仿真結(jié)果</b&g

56、t;</p><p>  5.2.1 輸出電流范圍仿真</p><p>  由于在程序設(shè)計上限制了電流輸出范圍是200~2000mA,限定了電壓值小于10V,當給定值在量程內(nèi)時顯示“OK!”;當給定值超過量程時將顯示“ERROR! RESET!”,如下圖5.2所示。</p><p>  圖5.2 仿真報錯顯示界面圖</p><p>  若

57、需要設(shè)定輸出電流值,當按下SET鍵時,出現(xiàn)如圖5.3所示界面,顯示器顯示“Are you sure to set?”,此時按下OK鍵,出現(xiàn)如圖5.4所示界面,這是可自由輸入一個4位數(shù),若滿足200~2000mA,則顯示各種數(shù)據(jù),若不滿足200~2000mA,則顯示器出現(xiàn)“ERROR!RESET!”報警畫面。若發(fā)現(xiàn)輸入數(shù)字超出電流允許范圍,可以按SET鍵再次輸入數(shù)值。</p><p>  圖5.3 輸出電流值確認

58、SET顯示界面圖</p><p>  圖5.4 輸出電流值SET顯示界面圖</p><p>  5.2.2 步進調(diào)整仿真</p><p>  在量程范圍內(nèi),通過“+”、“-”按鈕可實現(xiàn)1mA步進,通過顯示器可觀察到效果。通過鍵盤DEL鍵可以修改上一步輸錯的數(shù)字。如圖5.5所示。</p><p>  圖5.5 修改設(shè)定的輸出電流值界面&l

59、t;/p><p>  5.2.3 輸出電流仿真</p><p>  下圖5.6所示是仿真最低電流200mA負載電阻為2.0時的狀態(tài),根據(jù)顯示器顯示內(nèi)容可知,設(shè)定輸出電流值為200mA,實測電流值為201mA,輸出電壓為0.400V,負載電阻為2.0,都滿足設(shè)計要求。然后,通過改變設(shè)定輸出電流值進行仿真,記錄的仿真數(shù)據(jù)如表5.1所示。</p><p>  圖5.6 負

60、載電阻為2.0仿真狀態(tài)圖</p><p>  表5.1 負載RL=2.0Ω的數(shù)據(jù)表格</p><p>  運用同樣的仿真步驟,依次仿真負載電阻為3.0、4.0時這兩種狀態(tài),記錄的仿真數(shù)據(jù)分別如表5.2、表5.3所示。</p><p>  表5.2 負載RL=3.0Ω的數(shù)據(jù)表格</p><p>  表5.3 負載RL=4.0Ω的數(shù)據(jù)表格&

61、lt;/p><p><b>  5.3 誤差分析</b></p><p><b>  測量結(jié)果分析:</b></p><p>  步進1mA時設(shè)定值與實測值在200~2000mA之間,誤差在5mA以下。</p><p>  在改變負載時,誤差在10mA以下。</p><p> 

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

63、供電電源的紋波等,對于選擇低噪聲的運放是解決問題的一種方法。另外在輸出接近低頻直流時,運放的失調(diào)電壓和失調(diào)電流也是產(chǎn)生低頻噪聲的源泉,在這里的解決方法是在運放前加一級晶體管或者場效應(yīng)管的差分級。</p><p>  該數(shù)控直流電流源的誤差出現(xiàn)還有可能有幾個地方,第一個就是換擋電路的電壓基準值是否十分標準,能夠按照所理想設(shè)定的電壓值輸出。采用高標準測量電路,先將換擋電路的輸出電壓標準化。第二個就是達林管的是否能夠按

64、照理想的工作狀態(tài)進行相應(yīng)的工作,解決方法可以產(chǎn)生一個相應(yīng)的PWM信號控制。具體如下分析:</p><p> ?。?)、由于普通運算放大器的運放零點漂移,溫度漂移等帶來的誤差。可以通過溫度補償措施來解決此誤差。</p><p> ?。?)、由于采樣電阻在溫度上升時阻值會變化,因此會引起溫度漂移,給系統(tǒng)帶來測量的誤差。</p><p> ?。?)、受D/A轉(zhuǎn)換器精度,A

65、/D轉(zhuǎn)換器精度,基準源穩(wěn)定程度等硬件本身的限制,不可避免地帶來一定程度的誤差。</p><p><b>  6 收獲與體會 </b></p><p>  在本次數(shù)控直流電流源的設(shè)計過程中,有許多感觸,首先對C語言,我覺得這是一門邏輯性很強的語言,但同時也是一門比較容易掌握的語言。這門語言和我們的實際聯(lián)系很機密,比如說里面很多傳送指令,都是根據(jù)實際存在的硬件而存在的,還

66、有你面的與或指令、乘法、除法指令,其實都是和我們從小就學的數(shù)學息息相關(guān)的。就C語言而言,對于同一種效果可以采用不同的指令完成,也可以采用相同的指令完成,但因為你所選用的方案不同使得所產(chǎn)生的效果也就有所不同,因此這也鍛煉了我們在思考同一個問題,如果能夠采用發(fā)散思維的話,往往會得到意想不到的結(jié)果。</p><p>  談完基本的工具之后,我要談的就是這次的主題,數(shù)控直流電流源可以說是我們非常熟悉的東西,但是沒有學單片

67、機這門功課時,誰也不會想它是怎么工作的,又是怎么做成的。在我自己動手完成了這次設(shè)計之后,我才發(fā)現(xiàn)其實在我們身邊有好多東西是要我們自己去研究的,如果只在原地踏步的話,就會落后,隨著社會的不斷進步,我們身邊的東西越來越高科技話,那么要我們學習的東西也就越來越多。</p><p>  我覺得在這次設(shè)計過程中,我學到了很多,不僅僅是對匯編語言有了自己的想法,更重要的是培養(yǎng)了一種用于面對問題,解決問題的精神,在我們以后走向

68、社會的道路上還不知道會遇到多少問題,如果有了這種精神的話,我相信無論多么困難的問題,都會迎刃而解的。</p><p><b>  參考文獻</b></p><p> ?。?]唐俊瞿,許雷,張群瞻.單片機原理與應(yīng)用[M].北京:冶金工業(yè)出版社,2003</p><p> ?。?]李廣弟,朱月秀,冷祖祁.單片機基礎(chǔ)[M].北京:北京航空航天大學出版

69、社,2007</p><p> ?。?]李光飛.單片機課程設(shè)計實例指導[M].北京:北京航空航天大學出版社,2004.9</p><p> ?。?]張洪潤,蘭清華.單片機應(yīng)用技術(shù)教程[M].北京:清華大學出版社,1997.11</p><p> ?。?]李華.MCS—51系列單片機實用接口技術(shù)[M]..北京:北京航空航天大學出版社,1993</p>&

70、lt;p> ?。?]李朝青.單片機原理及接口技術(shù)[M]..北京:北京航空航天大學出版社,1998</p><p> ?。?]趙秀珍,單永磊.單片微型計算機原理及其應(yīng)用[M]..北京:中國水利水電出版社,2001.8</p><p>  [8]康華光.電子技術(shù)基礎(chǔ)(數(shù)字部分) [M]..北京:高等教育出版社,2007</p><p><b>  附錄&

71、lt;/b></p><p><b>  附錄1 總電路圖</b></p><p><b>  附錄2程序清單</b></p><p>  ;************************************************************ </p><p>

72、  ;****;在本次課程設(shè)計的程序中,我用到的是液晶顯示器,其使能***</p><p>  ;****;端接單片機的P3.0,P3.1,P3.2引腳,用到了DA轉(zhuǎn)換等需要 ***</p><p>  ;****;的暫存單元分別為30H到35H,其中還有一些必要的標志位存***</p><p>  ;****;在在36H到4AH單元。按鍵接單片機的P2.0到P2.

73、7,液晶顯示***</p><p>  ;****;顯示器數(shù)據(jù)口接單片機的P0.0到P0.7,本數(shù)控直流電流源有加 ***</p><p>  ;****;減調(diào)整,采用閉環(huán)控制系統(tǒng)進行調(diào)整,精確度更高。***</p><p>  ;************************************************************

74、</p><p>  #include<reg52.h></p><p>  #define uchar unsigned char </p><p>  #define uint unsigned int</p><p>  sbit rs=P3^0; </p><p>  sbit rw=P3^

75、1; </p><p>  sbit lcden=P3^2; //液晶顯示屏相關(guān)位定義</p><p>  sbit AD_OUT=P1^0;</p><p>  sbit AD_IN=P1^1;</p><p>  sbit AD_CS=P1^2;</p><p>  sbit AD_CLOCK

76、=P1^3;</p><p>  sbit DA_IN=P3^3;</p><p>  sbit DA_CK=P3^4;</p><p>  sbit DA_CS=P3^5;</p><p>  sbit x=P1^4;</p><p>  uchar code table1[]="Are you sure

77、 ";</p><p>  uchar code table2[]=" to set I? ";</p><p>  uchar code table3[]=" ERROR!RESET! ";</p><p>  unsigned long int temp0,temp1;</p>&

78、lt;p>  uint ADCdat,i,AD_DAstart;</p><p>  float Voltage1,Voltage2,r;</p><p>  int vol,rtt;</p><p>  uchar set,volarry0[4],volarry1[4],rt[2];</p><p>  char iset[5]={0

79、,0,2,0,0,};</p><p>  void led_init(); //函數(shù)聲明</p><p>  void delayms(uint z);</p><p>  void delay(uint t);</p><p>  void write_com(uchar com);</p>&l

80、t;p>  void write_date(uchar date);</p><p>  void display_AD();</p><p>  uint read2543(uchar port);</p><p>  void Send1456(uint DACdat);</p><p>  void keyscan();</

81、p><p>  ;************************************************************</p><p>  ;****; 主程序 ****</p><p>  ;******************************************

82、******************</p><p><b>  main()</b></p><p><b>  {</b></p><p>  led_init();</p><p><b>  i=20;</b></p><p>  display

83、_AD();</p><p>  Send1456(20);</p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  keyscan();</p><p>  if(AD_DAstart==1)</p>

84、<p><b>  {</b></p><p>  display_AD();</p><p>  Send1456(iset[1]*1000+iset[2]*100+iset[3]*10+iset[4]);</p><p><b>  }</b></p><p><b>  }

85、</b></p><p><b>  }</b></p><p>  void delayms(uint z) //延時函數(shù),參數(shù)為z</p><p><b>  {</b></p><p><b>  uint x,y;</b></p><p

86、>  for(x=z;x>0;x--)</p><p>  for(y=110;y>0;y--); //z=1測試為大約1微秒</p><p><b>  }</b></p><p>  void delay(uint t) //極短延時</p><p><b>  {</b>

87、</p><p>  while(t--);</p><p><b>  }</b></p><p>  void write_com(uchar com) //寫命令函數(shù)</p><p><b>  {</b></p><p>  rs=0; //rs置

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

89、t;p>  lcden=0; //按時序圖置低</p><p><b>  }</b></p><p>  void write_date(uchar date) //寫數(shù)據(jù)函數(shù)</p><p><b>  {</b></p><p>  rs=1; //rs置1表示寫

90、數(shù)據(jù)</p><p>  lcden=0; </p><p>  P0=date; //將數(shù)據(jù)賦到P0口</p><p>  delayms(5); </p><p>  lcden=1; </p><p>  delayms(5); </p><p> 

91、 lcden=0; </p><p><b>  }</b></p><p>  void led_init() //初始化函數(shù)</p><p><b>  {</b></p><p><b>  lcden=0;</b></p><p&g

92、t;<b>  rw=0;</b></p><p>  write_com(0x38); //顯示模式設(shè)置:16X2顯示,5X7點陣,8位數(shù)據(jù)</p><p>  write_com(0x0c); // 開顯示,關(guān)光標,光標不閃爍</p><p>  write_com(0x06); // 寫一個數(shù)據(jù)后地址指針加一,光標加一&

93、lt;/p><p>  write_com(0x01); // 數(shù)據(jù)指針及數(shù)據(jù)清0</p><p>  write_com(0x80); // 設(shè)置數(shù)據(jù)地址指針,第一行</p><p>  write_com(0x80+5);</p><p>  write_date(0x6d);</p><p>  wri

94、te_date(0x41);</p><p>  write_com(0x80); </p><p>  write_date(0x53);</p><p>  write_date(0x30+iset[1]);</p><p>  write_date(0x30+iset[2]);</p><p>  write

95、_date(0x30+iset[3]);</p><p>  write_date(0x30+iset[4]);</p><p><b>  }</b></p><p>  ;************************************************************</p><p>  ;*

96、***; A/D轉(zhuǎn)換子程序 ****</p><p>  ;************************************************************</p><p>  void display_AD()</p><p><b>  {</b></p&

97、gt;<p>  uchar num;</p><p>  temp0+= read2543(0x00);//進行AD轉(zhuǎn)換</p><p>  temp1+= read2543(0x01);</p><p>  i--;//取20次AD轉(zhuǎn)換的結(jié)果,求平均值</p><p><b>  if(i==0)&l

98、t;/b></p><p><b>  {</b></p><p>  ADCdat=temp1/20;</p><p><b>  temp1=0;</b></p><p>  Voltage2=(ADCdat*5.0)/4096; //基準電壓為5.0V</p><p

99、>  vol=(int)((Voltage2*4)*1000);// 擴大1000倍</p><p>  volarry1[3]=vol/1000;</p><p>  volarry1[2]=vol%1000/100;</p><p>  volarry1[1]=vol%100/10;</p><p>  volarry1[0]=vo

100、l%10;</p><p>  ADCdat=temp0/20;</p><p><b>  temp0=0;</b></p><p><b>  i=20;</b></p><p>  Voltage1=(ADCdat*5.0)/4096; //基準電壓為5.0V</p><p

101、>  vol=(int)(Voltage1*1000+1);// 擴大1000倍</p><p>  volarry0[3]=vol/1000;</p><p>  volarry0[2]=vol%1000/100;</p><p>  volarry0[1]=vol%100/10;</p><p>  volarry0[0]=vol%

102、10;</p><p>  write_com(0x80+0x40);</p><p>  write_date(0x54);</p><p>  write_date(0x30+volarry0[3]);</p><p>  write_date(0x30+volarry0[2]);</p><p>  write_

103、date(0x30+volarry0[1]);</p><p>  write_date(0x30+volarry0[0]);</p><p>  write_date(0x6d);</p><p>  write_date(0x41);</p><p>  if(vol>2000||vol<200||volarry1[3]>

104、;10||volarry1[3]==10)</p><p><b>  {</b></p><p>  write_com(0x01); // 數(shù)據(jù)指針及數(shù)據(jù)清0</p><p>  write_com(0x80); // 設(shè)置數(shù)據(jù)地址指針,第一行</p><p>  for(num=0;num<16;

105、num++)</p><p><b>  {</b></p><p>  write_date(table3[num]);</p><p>  delayms(1); //循環(huán)方式寫第一行數(shù)據(jù)</p><p><b>  }</b></p><p><b>

106、  set=1;</b></p><p>  AD_DAstart=0;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  write_com(

107、0x80+0x40+13);</p><p>  write_date(0x4f);</p><p>  write_date(0x4b);</p><p>  write_date(0x21);</p><p>  write_com(0x80+9);</p><p>  write_date(0x30+volarr

108、y1[3]);</p><p>  write_date(0x2e);</p><p>  write_date(0x30+volarry1[2]);</p><p>  write_date(0x30+volarry1[1]);</p><p>  write_date(0x30+volarry1[0]);</p><p

109、>  write_date(0x56);</p><p>  r=Voltage2*4/Voltage1;</p><p>  rtt=(int)(r*10);</p><p>  rt[1]=rtt/10;</p><p>  rt[0]=rtt%10;</p><p>  write_com(0x80+0x4

110、9);</p><p>  write_date(0x30+rt[1]);</p><p>  write_date(0x52);</p><p>  write_date(0x30+rt[0]);</p><p><b>  }</b></p><p><b>  }</b&g

111、t;</p><p><b>  }</b></p><p>  ;************************************************************</p><p>  ;****; D/A轉(zhuǎn)換子程序 ****</p><p&g

112、t;  ;************************************************************</p><p>  uint read2543(uchar port) //DA轉(zhuǎn)換子程序</p><p><b>  {</b></p><p>  uint ad=0,j;</p><p

113、>  AD_CLOCK=0;</p><p><b>  AD_CS=0;</b></p><p><b>  port<<=4;</b></p><p>  delay(50); </p><p>  for(j=0;j<12;j++)</p><p&g

114、t;<b>  {</b></p><p>  if(AD_OUT) </p><p><b>  {</b></p><p><b>  ad=0x01;</b></p><p><b>  }</b></p><p>  AD_

115、IN=(bit)(port&0x80);</p><p>  AD_CLOCK=1;</p><p><b>  delay(6);</b></p><p>  AD_CLOCK=0;</p><p><b>  delay(3);</b></p><p><b

116、>  port<<=1;</b></p><p><b>  ad<<=1;</b></p><p><b>  }</b></p><p><b>  AD_CS=1;</b></p><p><b>  ad>>

117、;=1;</b></p><p>  return(ad);</p><p><b>  }</b></p><p>  void Send1456(uint DACdat)</p><p><b>  {</b></p><p>  uchar i=0;<

118、/p><p><b>  DA_CK=0;</b></p><p><b>  delay(2);</b></p><p><b>  DA_CS=0;</b></p><p><b>  delay(2);</b></p><p> 

119、 for(i=0;i<12;i++)</p><p><b>  {</b></p><p>  DA_IN=(bit)(DACdat&0x800);</p><p><b>  DA_CK=1;</b></p><p>  DACdat<<=1;</p>&

120、lt;p>  DA_CK=0;</p><p><b>  }</b></p><p><b>  DA_CS=1;</b></p><p><b>  DA_CS=0;</b></p><p><b>  }</b></p>&l

溫馨提示

  • 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

提交評論