課程設計—數控直流電流源_第1頁
課程設計—數控直流電流源_第2頁
課程設計—數控直流電流源_第3頁
課程設計—數控直流電流源_第4頁
課程設計—數控直流電流源_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、湖南商學院綜合電子設計實驗 數控直流電流源的設計 學 院: 計算機與電子工程學院 學生姓名: 許朝霞、張望輝、胡嘯 學 號 :090910059、090910070、090910066 指導教師: 蘇岱安 職稱 副教授 專 業(yè): 電子信息工程 班 級: 電信 0902 完成時間: 2012 - 10 數控直流電流源1 設計任務及要求1.1 設計任務設計并制作數控直流電流源。輸入交流200240V,50Hz;輸出直流電壓10V。其原理示意圖如下所示。圖1.1 原理圖1.2 設計要求1.2.1 基本要求(1)輸出電流范圍:200mA2000mA;(2)可設置并顯示輸出電流給定值,要求輸出電流與給定

2、值偏差的絕對值給定值的1+10 mA;(3)具有“+”、“-”步進調整功能,步進10mA;(4)改變負載電阻,輸出電壓在10V以內變化時,要求輸出電流變化的絕對值輸出電流值的1+10 mA; 1.2.2 發(fā)揮部分(1)輸出電流范圍為20mA2000mA,步進1mA;(2)設計、制作測量并顯示輸出電流的裝置 (可同時或交替顯示電流的給定值和實測值),測量誤差的絕對值測量值的0.1+3個字;(3)改變負載電阻,輸出電壓在10V以內變化時,要求輸出電流變化的絕對值輸出電流值的0.1+1 mA;(5)其他。2 方案設計與論證2.1 設計思想采用改進型的單輸出端單向電流源電路來產生恒定電流。該方法是用精

3、密電阻取樣得到反饋電壓,將反饋電壓與高精度的參考電壓比較得到誤差電壓,此誤差電壓經放大后輸出控制調整管的導通程度,使預設電流值和實測電流值的逐步逼近,直至相等,從而達到數控的目的。從題目的要求來分析,該題目最大的難點在于大電流輸出和高精度控制,所以在具體的方案確定中,大電流、功耗,以及精度、誤差等都是我們所必須要考慮和克服的。2.2 方案論證對于數控直流電流源的設計有很多方案,下面做一下介紹:方案一:方框圖如圖2.1所示,數控直流電流源由鍵盤、控制器、顯示器、數模轉換、電壓電流轉換和模數轉換等部分組成,鍵盤的作用是設定電流值和確定電流步進值;控制器的作用是將設定電流值的8位(或12位)二進制輸

4、出;顯示器的作用是顯示設定電流值;數模轉換的作用是設定電流值的數字量轉換為模擬量;電壓電流轉換的作用是將電壓轉換成恒定電流輸出;模數轉換的作用是將輸出的模擬量再轉換為數字量反饋到控制器,使實際輸出電流值與設定電流值一致。圖2.1 方案一的方框圖方案一的數控直流電流源設計比較簡單,對于電流的變化是采用相比而言使用可編程芯片,如CPLD或FPGA等和DAC控制,采用LED數碼管進行實時顯示,操作也比較方便。方案二:方框圖如圖2.2所示,采用改進型的單輸出端單向電流源電路來產生恒定電流。該方法是用精密電阻取樣得到反饋電壓,將反饋電壓與高精度的參考電壓比較得到誤差電壓,此誤差電壓經放大后輸出控制調整管

5、的導通程度,使預設電流值和實測電流值的逐步逼近,直至相等,從而達到數控的目的。從題目的要求來分析,該題目最大的難點在于大電流輸出和高精度控制,所以在具體的方案確定中,大電流、功耗,以及精度、誤差等都是我們所必須要考慮和克服的。圖2.2 方案二方框圖方案二的數控直流電源設計采用單片機作為核心控制,基本原理簡單,實現(xiàn)比較方便,電源的電流值也可以調整到較精確的數值,同樣的也是采用LCD進行顯示。此方案采用保持電阻恒定而改變輸入電壓的方法來改變電流的大小。利用高精度D/A轉換器在單片機程序控制下提供可變的高精度的基準電壓,該基準電壓經過V/I轉換電路得到電流,再通過A/D轉換器將輸出電流反饋至單片機進

6、行比較,調整D/A的輸入電壓,從而達到數控的目的。該方案的難點在于穩(wěn)定恒流源的設計和高精度電流檢測電路的設計。特點是可精確的控制電流的步進量,負載變化對電流輸出的影響較小。根據題目要求以及設計思路,比較之后,基于以上優(yōu)點以及對于單片機的成熟應用,因此我決定用單片機來作為控制器,我所采用的是第二種方案。3 硬件系統(tǒng)的設計3.1 單片機最小系統(tǒng)3.1.1 時鐘電路單片機必須在時鐘的驅動下才能工作.在單片機內部有一個時鐘振蕩電路,只需要外接一個振蕩源就能產生一定的時鐘信號送到單片機內部的各個單元,決定單片機的工作速度。一般選用石英晶體振蕩器。此電路在加電大約延遲10ms后振蕩器起振,在XTAL2引腳

7、產生幅度為3V左右的正弦波時鐘信號,其振蕩頻率主要由石英晶振的頻率確定。電路中石英晶體振蕩器的頻率為12MHz,兩個電容 C1、C2的作用有兩個:一是幫助振蕩器起振;二是對振蕩器的頻率進行微調。C1、C2的典型值為33PF。單片機的時鐘電路如圖3.1所示。圖3.1 單片機的時鐘電路圖3.1.2 復位電路單片機的第9腳RST為硬件復位端,只要將該端持續(xù)4個機器周期的高電平即可實現(xiàn)復位,復位后單片機的各狀態(tài)都恢復到初始化狀態(tài)。復位電路用于產生復位信號,通過RST引腳送入單片機,進行復位。因為AT89S52單片機的復位是靠外部電路實現(xiàn)的。復位電路的好壞直接影響單片機系統(tǒng)工作的可靠性,因此,要重視復位

8、電路的設計和研究。只要RST端保持10ms以上的高電平,就能使單片機有效地復位。AT89C51單片機通常采用上電自動復位、按鍵復位、以及上電加按鍵復位等,我們采用的是上電加按鍵復位方式,這樣做的優(yōu)點是上電后可以直接進入復位狀態(tài),當程序出現(xiàn)錯誤時,可以隨時使電路復位。則復位電路圖如圖3.2所示。圖3.2 單片機復位電路圖3.1.3 AT89C51單片機此單片機共有4個8位的并行雙向I/O口,分別記作P0、P1、P2、P3,這4個口除可按字節(jié)尋址以外,還可按位尋址。P0口地址為80H,位地址為80H87H。各位口線具有完全相同但又相互獨立的邏輯電路。P1口地址為90H,位地址為90H97H。P1口

9、只能作為通用數據I/O口使用,所以在電路結構上與P0口有些不同。P2口地址為A0H,位地址為A0HA7H。P2口既可以作為系統(tǒng)高位地址線使用,也可以為通用I/O口使用,所以P2口電路邏輯與P0口類似。P3口地址為B0H,位地址為B0HB7H。雖然P3口可以作為通用I/O口使用,但在實際應用中它的第二功能信號更為重要。P3口的第二功能如表3.1所示。AT89C51單片機還有一個地址鎖存控制信號ALE,外部程序存儲器讀選通信號,訪問程序存儲器控制信號,復位信號RST,地線和+5V的電源。單片機最小系統(tǒng)圖如圖3.3所示。表3.1 P3口線第二功能 口 線 第二功能信號 第二功能信號名稱 P3.0 R

10、XD 串行數據接收 P3.1 TXD 串行數據發(fā)送 P3.2 INT0 外部中斷0申請 P3.3 INT1 外部中斷1申請 P3.4 T0 定時器/計數器0計數輸入 P3.5 T1 定時器/計數器1計數輸入 P3.6 外部RAM寫選通 P3.7 外部RAM讀選通圖3.3 單片機最小系統(tǒng)圖3.3 顯示模塊方案一:使用LED數碼管顯示。數碼管采用BCD編碼顯示數字,對外界環(huán)境要求低,易于維護。但根據題目要求,如果需要同時顯示給定值和測量值,以及其他輸出特性值,需顯示的內容較多,要使用多個數碼管動態(tài)顯示,使電路變得復雜,加大了編程工作量。方案二:使用LCD液晶顯示。LCD具有輕薄短小,可視面積大,方

11、便的顯示數字,分辨率高,抗干擾能力強,功耗小,且設計簡單等特點。LM016L液晶模塊采用HD44780控制器,hd44780具有簡單而功能較強的指令集,可以實現(xiàn)字符移動,閃爍等功能,LM016L與單片機MCU通訊可采用8位或4位并行傳輸兩種方式,hd44780控制器由兩個8位寄存器,指令寄存器(IR)和數據寄存器(DR)忙標志(BF),顯示數RAM(DDRAM),字符發(fā)生器ROMA(CGOROM)字符發(fā)生器RAM(CGRAM),地址計數器RAM(AC)。IR用于寄存指令碼,只能寫入不能讀出,DR用于寄存數據,數據由內部操作自動寫入DDRAM和CGRAM,或者暫存從DDRAM和CGRAM讀出的數

12、據,BF為1時,液晶模塊處于內部模式,不響應外部操作指令和接受數據,DDTAM用來存儲顯示的字符,能存儲80個字符碼,CGROM由8位字符碼生成5*7點陣字符160中和5*10點陣字符32種.8位字符編碼和字符的對應關系,CGRAM是為用戶編寫特殊字符留用的,它的容量僅64字節(jié),可以自定義8個5*7點陣字符或者4個5*10點陣字符,AC可以存儲DDRAM和CGRAM的地址,如果地址碼隨指令寫入IR,則IR自動把地址碼裝入AC,同時選擇DDRAM或CGRAM,LM016L液晶模塊的引腳功能如下表3.2所示。表3.2 LM016L引腳功能引腳符號功能說明1VSS一般接地2VDD接電源(+5V)3V

13、0液晶顯示器對比度調整端,接正電源時對比度最弱,接地電源時對比度最高(對比度過高時會產生“鬼影”,使用時可以通過一個10K的電位器調整對比度)。4RSRS為寄存器選擇,高電平1時選擇數據寄存器、低電平0時選擇指令寄存器。5R/WR/W為讀寫信號線,高電平(1)時進行讀操作,低電平(0)時進行寫操作。6EE(或EN)端為使能(enable)端,下降沿使能。7DB0底4位三態(tài)、 雙向數據總線 0位(最低位)8DB1底4位三態(tài)、 雙向數據總線 1位9DB2底4位三態(tài)、 雙向數據總線 2位10DB3底4位三態(tài)、 雙向數據總線 3位11DB4高4位三態(tài)、 雙向數據總線 4位12DB5高4位三態(tài)、 雙向數

14、據總線 5位13DB6高4位三態(tài)、 雙向數據總線 6位14DB7高4位三態(tài)、 雙向數據總線 7位(最高位)(也是busy flang)15BLA背光電源正極16BLK背光 電源負極綜上所述,選擇方案二。采用LM016L液晶顯示模塊同時顯示電流給定值和實測值以及負載內阻。連接電路圖如圖3.4所示。圖3.4 LM016L與單片機的接線圖3.4 鍵盤模塊方案一:采用獨立式按鍵電路,每個按鍵單獨占有一根I/O接口線,每個I/O口的工作狀態(tài)互不影響,此類鍵盤采用端口直接掃描方式。缺點為當按鍵較多時占用單片機的I/O口數目較多。方案二:采用標準4×4鍵盤,此類鍵盤采用矩陣式行列掃描方式,優(yōu)點是當

15、按鍵較多時可降低占用單片機的I/O口數目,而且可以做到直接輸入電流值而不必步進。題目要求可進行電流給定值的設置和步進調整,需要的按鍵比較多。綜合考慮兩種方案及題目要求,采用方案二,使用標準的4x4鍵盤,可以實現(xiàn)09數字輸入、“+”、“-”、“OK”、“SET”、“DEL”、“RESET/ON”這些功能按鍵。其電路圖如圖3.5所示。圖3.5 鍵盤與單片機的接線圖 3.5 電流源模塊方案一:采用集成穩(wěn)壓器運放構成的線性恒流源。如圖3.6所示。D/A輸出電壓作為恒流源的參考電壓,運算放大器U1與晶體管Q1,Q2組成的達林頓電路構成電壓跟隨器。利用晶體管平坦的輸出特性即可得到恒流輸出。由于跟隨器是一種

16、深度的電壓負擔虧電路,因此電流源具有較好的穩(wěn)定性。本電流源的穩(wěn)定度優(yōu)于0.5%。為了提高穩(wěn)定度,Rs采用大線徑康銅絲制作,康銅絲溫度系數很小,大線徑可以使其溫度影響減至最小。U1采用精密運算放大器OP37A,該放大器有調節(jié)零點漂移的功能,Q1采用9014大倍數大約為400.Q2采用低頻功率管3DD15,他的放大倍數為1020倍,漏電流很小。Q1的加入是為了增加復合管的放大倍數。圖3.6 穩(wěn)壓器運放線性恒流源模塊電路圖方案二:采用運放和場效應管的壓控恒流源。電路原理圖如圖3.7所示。該恒流源電路由運算放大器、大功率場效應管Q1、采樣電阻R2、負載電阻RL等組成硬件設計。采用場效應管,更易于實現(xiàn)電

17、壓線性控制電流,既能滿足輸出電流最大達到2A的要求,電路簡潔也能較好地實現(xiàn)電壓近似線性地控制電流。此電路中,為了滿足題目的設計要求,調整管采用大功率場效應管IRF640。當場效應管工作于飽和區(qū)時,漏極電流Id近似為電壓Ugs控制的電流。即當Ud為常數時,滿足:Id=f(Ugs),只要Ugs不變,Id就不變。在此電路中,R7為取樣電阻,采用康銅絲繞制(阻值隨溫度的變化較?。┳柚禐?。運放OP07作為電壓跟隨器,Uin=Up=Un,場效應管Id=Is(柵極電流相對很小,可忽略不計) 所以Iout=Is= Un/R7= Uin/R7。正因為Iout=Uin/R7,電路輸入電壓Uin控制電流Iout,

18、即Iout不隨RL的變化而變化,從而實現(xiàn)壓控恒流。圖3.7 壓控恒流源模塊電路圖綜上所述,進行綜合比較,方案二電路較簡單,穩(wěn)定性較高,故采用方案二,使用高精度運放和大功率場效應管等構成一個恒流源電路。3.6 負載模塊根據題目要求,設計了如圖3.8所示的電路圖。電路綜合各方面的考慮因素在里面,由于TLC2543所測電壓值在5V內,而負載一端接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),硬件設置R4/R3

19、=1/4,軟件還原負載電壓,保證測量精度。而采樣精密電阻R1為1,通過采樣R7兩端電壓值換算成電流值即可得到輸出電流。圖3.8 負載電流、電壓測量電路圖3.7 D/A、A/D轉換模塊D/A、A/D模塊是單片機與外部數據連接的通道,因此這兩個模塊的選擇與使用應當合理。3.7.1 D/A轉換器 本設計中應采用DAC模塊提供高精度的基準電壓,即通過CPU發(fā)出的二進制轉換為的模擬電壓,送給誤差放大器,實現(xiàn)步進要求。(1)根據題目擴展功能要求輸出,以1mA為步進,需要的級數由公式(1)可見。,故應采用12位D/A轉換器為D/A轉換芯片,供選擇的很多,在此選用proteus元件庫中的LTC1456芯片。其

20、內部結構電路圖如圖3.9所示。 圖3.9 TLC1456內部結構電路圖3.7.2 A/D轉換器A/D模塊的是反饋的核心,我們采用Proteus元件庫中的TLC2543芯片實現(xiàn)。TLC2543是一種低功耗、低電壓的12位串行開關電容型AD轉換器。它使用逐次逼近技術完成A/D轉換過程。最大線性誤差小于1LSB,轉換時間10µs。它具有三個控制器輸入端,采用簡單的3線SPI串行接口可方便與微機進行連接,是12位數據采集系統(tǒng)的最佳選擇器件之一。TLC2543引腳功能如表3.3所示,其特點如下: 11個模擬輸入通道;3路內置自測試方式;采樣率為66kbps; 線性誤差±1LSBmax

21、; 有轉換結束輸出EOC; 具有單、雙極性輸出; 可編程的MSB或LSB前導; 可編程輸出數據長度。表3.3 LTC2543引腳功能引腳號名稱I/O說明19,11,12AIN0AIN10I模擬量輸入端。11路輸入信號由內部多路器選通。對于4.1MHz的I/OCLOCK,驅動源阻抗必須小于或等于50,而且用60pF電容來限制模擬輸入電壓的斜率15I片選端。在端由高變低時,內部計數器復位。由低變高時,在設定時間內禁止DATAINPUT和I/O CLOCK17DATAINPUTI串行數據輸入端。由4位的串行地址輸入來選擇模擬量輸入通道16DATA OUTOA/D轉換結果的三態(tài)串行輸出端。為高時處于高

22、阻抗狀態(tài),為低時處于激活狀態(tài)19EOCO轉換結束端。在最后的I/OCLOCK下降沿之后,EOC從高電平變?yōu)榈碗娖讲⒈3值睫D換完成和數據準備傳輸為止10GNDGND是內部電路的地回路端。除另有說明外,所有電壓測量都相對GND而言18I/O CLOCKI輸入/輸出時鐘端。I/OCLOCK接收串行輸入信號并完成以下四個功能:(1)在I/O CLOCK的前8個上升沿,8位輸入數據存入輸入數據寄存器。(2)在I/OCLOCK的第4個下降沿,被選通的模擬輸入電壓開始向電容器充電,直到I/OCLOCK的最后一個下降沿為止。(3)將前一次轉換數據的其余11位輸出到DATA OUT端,在I/OCLOCK的下降沿

23、時數據開始變化。(4)I/OCLOCK的最后一個下降沿,將轉換的控制信號傳送到內部狀態(tài)控制位14REF+I正基準電壓端?;鶞孰妷旱恼耍ㄍǔ閂cc)被加到REF+,最大的輸入電壓范圍由加于本端與REF-端的電壓差決定13REF-II 負基準電壓端?;鶞孰妷旱牡投耍ㄍǔ榈兀┍患拥絉EF- 20Vcc電源轉換過程:上電后,片選CS必須從高到低,才能開始一次工作周期,此時EOC為高,輸入數據寄存器被置為0,輸出數據寄存器的內容是隨機的。開始時,CS片選為高,I/O CLOCK、DATA INPUT被禁止,DATA OUT 呈高阻狀,EOC為高。使CS變低,I/OCLOCK、DATAINPUT使能

24、,DATAOUT脫離高阻狀態(tài)。12個時鐘信號從I/OCLOCK端依次加入,隨著時鐘信號的加入,控制字從DATAINPUT一位一位地在時鐘信號的上升沿時被送入TLC2543(高位先送入),同時上一周期轉換的A/D數據,即輸出數據寄存器中的數據從DATAOUT一位一位地移出。TLC2543收到第4個時鐘信號后,通道號也已收到,此時TLC2543開始對選定通道的模擬量進行采樣,并保持到第12個時鐘的下降沿。在第12個時鐘下降沿,EOC變低,開始對本次采樣的模擬量進行A/D轉換,轉換時間約需10s,轉換完成后EOC變高,轉換的數據在輸出數據寄存器中,待下一個工作周期輸出。此后,可以進行新的工作周期。3

25、.7.3 D/A、A/D連接電路D/A 、A/D連接電路如圖3.10所示。圖3.10 D/A、A/D連接電路圖4 軟件系統(tǒng)的設計4.1 單片機資源使用情況本設計用到了單片機控制DA和AD轉換的功能,此外用到了單片機的中斷功能,在數據的顯示時所采用的是查表的方法,因此需要將表格、數據存到單片機的程序存儲器中去。數控直流電流源的數據要存儲到數據存儲器中去,用到了30H到50H之間的單元。由于數控直流電流源需要可以進行調節(jié),因此,需要在單片機的P口上加上按鍵,本設計采用行列式鍵盤,直接接在P2口上。用到的液晶顯示器接到了單片機的P0口線上,液晶顯示器的使能端用到了P3口線。4.2 軟件系統(tǒng)的模塊4.

26、2.1 定時模塊在本設計中用到了幾個定時模塊,第一個定時是用于定時按鍵的抖動時間,因為當按鍵時都會出現(xiàn)電壓抖動,但對鍵盤工作有影響的是鍵閉合時的抖動,所以為了確保鍵掃描的正確性,每當掃描到有閉合鍵時,都要進行去抖動處理。本設計中采用的是軟件去抖動的方法,抖動的定時采用的軟件的延時進行定時的。第二個定時的功能是在數碼管顯示時的延時時間,即在數碼管顯示時是采用查表的方法進行顯示的,因此需要用到一定的延時,使得我們能夠看的清楚所顯示的內容,在這里用到的延時也是采用軟件的延時。4.2.2 按鍵操作模塊在本次設計中,用到了三個獨立式鍵盤進行按鍵的操作。因為本數控直流電流源的操作比較簡單,而只用到了三個鍵

27、,因此在鍵盤的操作時采用的是層層遞進的方法,一步一步往下操作的,設置了鍵的名稱為ON/OFF鍵、ADD鍵、DEC鍵,在軟件設計中是在ON/OFF鍵按下了之后才會有ADD鍵、DEC鍵的操作,鍵與鍵之間的功能采用層層套用使得程序看起來更加清晰明了。在按鍵的程序掃描中是采用查詢的方法對按鍵進行操作的,當查詢到按鍵有動作時,則執(zhí)行相應的操作。獨立式鍵盤的程序設計一般把鍵盤掃描程序設計成子程序,以便其它各程序調用。本設計中的鍵盤掃描子程序的名稱為KEY,則鍵盤掃描子程序KEY應具有以下功能:判定有無按鍵動作;去抖動;確認是否真正有閉合鍵;計算并保存閉合鍵鍵碼;判定閉合鍵是否釋放;恢復閉合鍵鍵碼。4.2.

28、3 D/A轉換模塊本設計主要是利用單片機做處理器,然后經過數模轉換模塊進行轉換,將單片輸出的二進制代碼轉換成相應的模擬電壓輸出,這樣使得所設計的電流源更加精確。在此模塊中,因為進行換擋的轉換,在這里我所采用的是做除法,然后再存儲除法得到的商和余數,這里面我用到了兩個子程序,一個是將十進制轉換為十六進制數,二個是采用移位相減的方法做除法。4.2.4 A/D轉換模塊當所設定的二進制代碼經過數模轉換模塊輸出之后,經過A/D轉換模塊進行采樣之后,由單片機進行處理。然后輸出相應的電流值大小。4.2.5 LCD顯示模塊寄存器選擇控制表如表4.1所示。表4.1 寄存器選擇控制表RSR/W操作說明00寫入指令

29、寄存器(清除屏等)01都busy flag(DB7),以及讀取位址計數器(DB0DB6)值10寫入數據寄存器(顯示各字型等)11從數據寄存器讀取數據注:關于E=H脈沖開始時初始化E為0,然后置E為1,再清0。busy flag(DB7):在此位為被清除為0時,LCD將無法再處理其他的指令要求。1602液晶模塊內部的字符發(fā)生存儲器(CGROM)已經存儲了160個不同的點陣字符圖形,這些字符有:阿拉伯數字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時模塊把地址41H中的點陣字符圖形顯示出來,我們就能看

30、到字母“A”。因為1602識別的是ASCII碼,試驗可以用ASCII碼直接賦值,在單片機編程中還可以用字符型常量或變量賦值,如“A”。4.3 程序流程圖4.3.1 主控制流程圖在此次設計的過程中,我是采用模塊的設計方法,一個一個實現(xiàn)功能,可以說如果完成了一個任務的程序框圖,就是完成了整個設計任務的百分之三十左右,在本次課程設計的過程中,我都是采用這種思想進行數控直流電流源的設計的。因此,在設計的過程,讓我能夠很輕易的就抓住了主要的設計核心。主控制流程圖如圖4.1所示。圖4.1 主控制流程圖4.3.2 按鍵操作流程圖在本次程序設計中對于鍵盤的設計,我專門設計了一個鍵盤掃描子程序,它所完成的功能是

31、,首先對鍵盤進行處理,給每一個鍵都設置了一個鍵碼,那么只要判斷鍵盤的鍵碼就可以知道是否有鍵按下,如若有鍵按下也可以判斷是哪一個鍵按下了。這次設計中,鍵盤掃描子程序的代號為KEY,其鍵盤掃描程序設計的流程框圖如圖4.2所示。圖4.2 按鍵掃描子程序流程圖4.3.3 D/A轉換、A/D轉換流程圖本設計主要是用到LTC1456進行數模轉換,用到TLC2543進行模數轉換,其轉換的流程圖如圖4.3所示。 圖4.3 D/A轉換、A/D轉換流程圖4.3.4 數制轉換流程圖由于使用的十進制數,而在做除法的時候,要進行數制的轉換,其轉換的流程圖如圖4.4所示。圖4.4 數制轉換流程圖4.3.5 LCD顯示流程

32、圖由于本設計的顯示比較簡單,因此我所用到的是LCD顯示,其LCD顯示的流程圖如圖4.5所示。 圖4.5 LCD顯示子程序流程圖5 仿真測試及結果5.1 設計結論及使用方法本次通過對數控直流電流源的設計,了解了利用單片機處理之后,進行數控直流電流源的顯示。本次設計比較成功,在按鍵操作中能夠按照預先給定的功能進行操縱。打開Proteus軟件,打開設計的電路文件,然后輸入通過KEIL軟件編好的程序,點擊開始按鈕即可以進行測試。具體操作說明:按了復位鍵之后,液晶顯示屏上也能顯示“S0200mA"。按下RESET/ON鍵顯示四項值,包括電源設定值、電流AD測量值、負載電壓值、負載阻值。電流設定

33、初始值為200mA??梢园?,-鍵實現(xiàn)步進,數據實時顯示。要設置電流直接按數字鍵無效。此時需按SET鍵進入電流設置,之后屏幕顯示 “Are you sure to set?”,按下OK鍵即可設定,如果不需要設定,按RESET/ON返回。在設定電流的過程中,需要有效按四次數字鍵,如果在設置的過程中想放棄修改,按下RESET/ON鍵,如果需要修改已經按下的數值,可以按DEL鍵,光標返回到上一個數,重新按某一個數字鍵即完成修改。設置完成后屏幕顯示相應值。操作顯示界面如圖5.1所示。如果設定的電流值不在200mA2000mA內屏幕顯示 “ERROR! RESET”。圖5.1 仿真顯示器顯示界面圖5.2

34、 仿真結果5.2.1 輸出電流范圍仿真由于在程序設計上限制了電流輸出范圍是2002000mA,限定了電壓值小于10V,當給定值在量程內時顯示“OK!”;當給定值超過量程時將顯示“ERROR! RESET!”,如下圖5.2所示。圖5.2 仿真報錯顯示界面圖若需要設定輸出電流值,當按下SET鍵時,出現(xiàn)如圖5.3所示界面,顯示器顯示“Are you sure to set?”,此時按下OK鍵,出現(xiàn)如圖5.4所示界面,這是可自由輸入一個4位數,若滿足2002000mA,則顯示各種數據,若不滿足2002000mA,則顯示器出現(xiàn)“ERROR!RESET!”報警畫面。若發(fā)現(xiàn)輸入數字超出電流允許范圍,可以按S

35、ET鍵再次輸入數值。圖5.3 輸出電流值確認SET顯示界面圖圖5.4 輸出電流值SET顯示界面圖5.2.2 步進調整仿真在量程范圍內,通過“”、“”按鈕可實現(xiàn)1mA步進,通過顯示器可觀察到效果。通過鍵盤DEL鍵可以修改上一步輸錯的數字。如圖5.5所示。圖5.5 修改設定的輸出電流值界面5.2.3 輸出電流仿真下圖5.6所示是仿真最低電流200mA負載電阻為2.0時的狀態(tài),根據顯示器顯示內容可知,設定輸出電流值為200mA,實測電流值為201mA,輸出電壓為0.400V,負載電阻為2.0,都滿足設計要求。然后,通過改變設定輸出電流值進行仿真,記錄的仿真數據如表5.1所示。圖5.6 負載電阻為2.

36、0仿真狀態(tài)圖表5.1 負載RL=2.0的數據表格給定值(mA)200300400500800100015001980電流AD測值(mA)201301401501800100015001980誤差絕對值11110010負載電壓(V)0.4000.6290.8391.4091.6792.0993.1494.155負載阻值()2.02.02.02.02.02.02.12.0運用同樣的仿真步驟,依次仿真負載電阻為3.0、4.0時這兩種狀態(tài),記錄的仿真數據分別如表5.2、表5.3所示。表5.2 負載RL=3.0的數據表格給定值(mA)200300400500800100015001980電流AD測值(m

37、A)201300401501800100015001980誤差絕對值10110000負載電壓(V)0.6000.8981.2011.4992.3972.9984.4975.937負載阻值()3.03.03.03.03.02.93.03.0表5.3 負載RL=4.0的數據表格給定值(mA)20030040050080099915002000電流AD測值(mA)20130140150080199915002000誤差絕對值11101000負載電壓(V)0.8001.2011.6012.0013.1984.0676.0007.998負載阻值()3.9803.9903.9934.0023.9934.0

38、714.3.9995.3 誤差分析測量結果分析:步進1mA時設定值與實測值在2002000mA之間,誤差在5mA以下。在改變負載時,誤差在10mA以下。在改變輸出電壓時,誤差在10mA以下。綜上所述,系統(tǒng)仿真實測數據滿足題目的基本要求,能滿足輸出電流與給定值偏差的絕對值給定值的1+10 mA。說明本電路有較高的精度和穩(wěn)定性。誤差分析:紋波對電流輸出的影響,采用屏蔽的方法,遠離容易產生脈沖工作方式的器件,減少供電電源的紋波等,對于選擇低噪聲的運放是解決問題的一種方法。另外在輸出接近低頻直流時,運放的失調電壓和失調電流也是產生低頻噪聲的源泉,在這里的解決方法是在運放前加一級晶體管或者場效應管的差分

39、級。該數控直流電流源的誤差出現(xiàn)還有可能有幾個地方,第一個就是換擋電路的電壓基準值是否十分標準,能夠按照所理想設定的電壓值輸出。采用高標準測量電路,先將換擋電路的輸出電壓標準化。第二個就是達林管的是否能夠按照理想的工作狀態(tài)進行相應的工作,解決方法可以產生一個相應的PWM信號控制。具體如下分析:(1)、由于普通運算放大器的運放零點漂移,溫度漂移等帶來的誤差??梢酝ㄟ^溫度補償措施來解決此誤差。(2)、由于采樣電阻在溫度上升時阻值會變化,因此會引起溫度漂移,給系統(tǒng)帶來測量的誤差。(3)、受D/A轉換器精度,A/D轉換器精度,基準源穩(wěn)定程度等硬件本身的限制,不可避免地帶來一定程度的誤差。6 收獲與體會

40、在本次數控直流電流源的設計過程中,有許多感觸,首先對C語言,我覺得這是一門邏輯性很強的語言,但同時也是一門比較容易掌握的語言。這門語言和我們的實際聯(lián)系很機密,比如說里面很多傳送指令,都是根據實際存在的硬件而存在的,還有你面的與或指令、乘法、除法指令,其實都是和我們從小就學的數學息息相關的。就C語言而言,對于同一種效果可以采用不同的指令完成,也可以采用相同的指令完成,但因為你所選用的方案不同使得所產生的效果也就有所不同,因此這也鍛煉了我們在思考同一個問題,如果能夠采用發(fā)散思維的話,往往會得到意想不到的結果。談完基本的工具之后,我要談的就是這次的主題,數控直流電流源可以說是我們非常熟悉的東西,但是

41、沒有學單片機這門功課時,誰也不會想它是怎么工作的,又是怎么做成的。在我自己動手完成了這次設計之后,我才發(fā)現(xiàn)其實在我們身邊有好多東西是要我們自己去研究的,如果只在原地踏步的話,就會落后,隨著社會的不斷進步,我們身邊的東西越來越高科技話,那么要我們學習的東西也就越來越多。我覺得在這次設計過程中,我學到了很多,不僅僅是對匯編語言有了自己的想法,更重要的是培養(yǎng)了一種用于面對問題,解決問題的精神,在我們以后走向社會的道路上還不知道會遇到多少問題,如果有了這種精神的話,我相信無論多么困難的問題,都會迎刃而解的。參考文獻1唐俊瞿,許雷,張群瞻.單片機原理與應用.北京:冶金工業(yè)出版社,20032李廣弟,朱月秀

42、,冷祖祁.單片機基礎.北京:北京航空航天大學出版社,20073李光飛.單片機課程設計實例指導.北京:北京航空航天大學出版社,2004.94張洪潤,蘭清華.單片機應用技術教程.北京:清華大學出版社,1997.115李華.MCS51系列單片機實用接口技術.北京:北京航空航天大學出版社,19936李朝青.單片機原理及接口技術.北京:北京航空航天大學出版社,19987趙秀珍,單永磊.單片微型計算機原理及其應用.北京:中國水利水電出版社,2001.88康華光.電子技術基礎(數字部分) .北京:高等教育出版社,2007附錄附錄1 總電路圖附錄2程序清單;* ;*;在本次課程設計的程序中,我用到的是液晶顯示

43、器,其使能*;*;端接單片機的P3.0,P3.1,P3.2引腳,用到了DA轉換等需要 *;*;的暫存單元分別為30H到35H,其中還有一些必要的標志位存*;*;在在36H到4AH單元。按鍵接單片機的P2.0到P2.7,液晶顯示*;*;顯示器數據口接單片機的P0.0到P0.7,本數控直流電流源有加 *;*;減調整,采用閉環(huán)控制系統(tǒng)進行調整,精確度更高。*;*#include<reg52.h>#define uchar unsigned char #define uint unsigned intsbit rs=P30; sbit rw=P31; sbit lcden=P32; /液晶

44、顯示屏相關位定義sbit AD_OUT=P10;sbit AD_IN=P11;sbit AD_CS=P12;sbit AD_CLOCK=P13;sbit DA_IN=P33;sbit DA_CK=P34;sbit DA_CS=P35;sbit x=P14;uchar code table1="Are you sure "uchar code table2=" to set I? "uchar code table3=" ERROR!RESET! "unsigned long int temp0,temp1;uint ADCdat,i,

45、AD_DAstart;float Voltage1,Voltage2,r;int vol,rtt;uchar set,volarry04,volarry14,rt2;char iset5=0,0,2,0,0,;void led_init(); /函數聲明void delayms(uint z);void delay(uint t);void write_com(uchar com);void write_date(uchar date);void display_AD();uint read2543(uchar port);void Send1456(uint DACdat);void key

46、scan();*;*; 主程序 *;*main()led_init();i=20;display_AD();Send1456(20);while(1)keyscan();if(AD_DAstart=1)display_AD();Send1456(iset1*1000+iset2*100+iset3*10+iset4);void delayms(uint z) /延時函數,參數為zuint x,y; for(x=z;x>0;x-) for(y=110;y>0;y-); /z=1測試為大約1微秒void delay(uint t) /極短延時 while(t-);void write_

47、com(uchar com) /寫命令函數rs=0; /rs置0表示寫命令lcden=0; /按時序圖置低P0=com; /位聲明,按原理圖接P0口,輸入數據lcden=1; /置高delayms(5); /時序圖中須有thd2時間延時lcden=0; /按時序圖置低void write_date(uchar date) /寫數據函數rs=1; /rs置1表示寫數據lcden=0; P0=date; /將數據賦到P0口delayms(5); lcden=1; delayms(5); lcden=0; void led_init() /初始化函數lcden=0;rw=0;write_com(0x

48、38); /顯示模式設置:16X2顯示,5X7點陣,8位數據write_com(0x0c); / 開顯示,關光標,光標不閃爍write_com(0x06); / 寫一個數據后地址指針加一,光標加一write_com(0x01); / 數據指針及數據清0write_com(0x80); / 設置數據地址指針,第一行write_com(0x80+5);write_date(0x6d);write_date(0x41);write_com(0x80); write_date(0x53);write_date(0x30+iset1);write_date(0x30+iset2);write_date(

49、0x30+iset3);write_date(0x30+iset4);*;*; A/D轉換子程序 *;*void display_AD()uchar num;temp0+= read2543(0x00);/進行AD轉換temp1+= read2543(0x01);i-;/取20次AD轉換的結果,求平均值if(i=0)ADCdat=temp1/20;temp1=0;Voltage2=(ADCdat*5.0)/4096; /基準電壓為5.0V vol=(int)(Voltage2*4)*1000);/ 擴大1000倍volarry13=vol/1000;volarry12=vol%1000/100; volarry11=vol%100/10;volarry10=vol%10;ADCd

溫馨提示

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

最新文檔

評論

0/150

提交評論