版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 綜合電子設(shè)計(jì)實(shí)驗(yàn)</b></p><p> 數(shù)控直流電流源的設(shè)計(jì)</p><p> 學(xué) 院: 計(jì)算機(jī)與電子工程學(xué)院 </p><p> 學(xué)生姓名: </p><p> 學(xué) 號(hào) :
2、 </p><p> 指導(dǎo)教師: 職稱(chēng) 副教授 </p><p> 專(zhuān) 業(yè): 電子信息工程 </p><p> 班 級(jí): </p><p> 完成時(shí)間: 2012 - 10 </p><p>&l
3、t;b> 數(shù)控直流電流源</b></p><p><b> 1 設(shè)計(jì)任務(wù)及要求</b></p><p><b> 1.1 設(shè)計(jì)任務(wù)</b></p><p> 設(shè)計(jì)并制作數(shù)控直流電流源。輸入交流200~240V,50Hz;輸出直流電壓≤10V。其原理示意圖如下所示。</p><
4、p><b> 圖1.1 原理圖</b></p><p><b> 1.2 設(shè)計(jì)要求</b></p><p> 1.2.1 基本要求</p><p> (1)輸出電流范圍:200mA~2000mA;</p><p> (2)可設(shè)置并顯示輸出電流給定值,要求輸出電流與給定值偏差的絕
5、對(duì)值≤給定值的1%+10 mA;</p><p> (3)具有“+”、“-”步進(jìn)調(diào)整功能,步進(jìn)≤10mA;</p><p> (4)改變負(fù)載電阻,輸出電壓在10V以?xún)?nèi)變化時(shí),要求輸出電流變化的絕對(duì)值≤輸出電流值的1%+10 mA; </p><p> 1.2.2 發(fā)揮部分</p><p> (1)輸出電流范圍為20mA~2000mA,
6、步進(jìn)1mA;</p><p> ?。?)設(shè)計(jì)、制作測(cè)量并顯示輸出電流的裝置 (可同時(shí)或交替顯示電流的給定值和實(shí)測(cè)值),測(cè)量誤差的絕對(duì)值≤測(cè)量值的0.1%+3個(gè)字;</p><p> (3)改變負(fù)載電阻,輸出電壓在10V以?xún)?nèi)變化時(shí),要求輸出電流變化的絕對(duì)值≤輸出電流值的0.1%+1 mA;</p><p><b> ?。?)其他。</b><
7、;/p><p><b> 2 方案設(shè)計(jì)與論證</b></p><p><b> 2.1 設(shè)計(jì)思想</b></p><p> 采用改進(jìn)型的單輸出端單向電流源電路來(lái)產(chǎn)生恒定電流。該方法是用精密電阻取樣得到反饋電壓,將反饋電壓與高精度的參考電壓比較得到誤差電壓,此誤差電壓經(jīng)放大后輸出控制調(diào)整管的導(dǎo)通程度,使預(yù)設(shè)電流值和實(shí)測(cè)電
8、流值的逐步逼近,直至相等,從而達(dá)到數(shù)控的目的。從題目的要求來(lái)分析,該題目最大的難點(diǎn)在于大電流輸出和高精度控制,所以在具體的方案確定中,大電流、功耗,以及精度、誤差等都是我們所必須要考慮和克服的。</p><p><b> 2.2 方案論證</b></p><p> 對(duì)于數(shù)控直流電流源的設(shè)計(jì)有很多方案,下面做一下介紹:</p><p>
9、方案一:方框圖如圖2.1所示,數(shù)控直流電流源由鍵盤(pán)、控制器、顯示器、數(shù)模轉(zhuǎn)換、電壓電流轉(zhuǎn)換和模數(shù)轉(zhuǎn)換等部分組成,鍵盤(pán)的作用是設(shè)定電流值和確定電流步進(jìn)值;控制器的作用是將設(shè)定電流值的8位(或12位)二進(jìn)制輸出;顯示器的作用是顯示設(shè)定電流值;數(shù)模轉(zhuǎn)換的作用是設(shè)定電流值的數(shù)字量轉(zhuǎn)換為模擬量;電壓電流轉(zhuǎn)換的作用是將電壓轉(zhuǎn)換成恒定電流輸出;模數(shù)轉(zhuǎn)換的作用是將輸出的模擬量再轉(zhuǎn)換為數(shù)字量反饋到控制器,使實(shí)際輸出電流值與設(shè)定電流值一致。</p&g
10、t;<p> 圖2.1 方案一的方框圖</p><p> 方案一的數(shù)控直流電流源設(shè)計(jì)比較簡(jiǎn)單,對(duì)于電流的變化是采用相比而言使用可編程芯片,如CPLD或FPGA等和DAC控制,采用LED數(shù)碼管進(jìn)行實(shí)時(shí)顯示,操作也比較方便。</p><p> 方案二:方框圖如圖2.2所示,采用改進(jìn)型的單輸出端單向電流源電路來(lái)產(chǎn)生恒定電流。該方法是用精密電阻取樣得到反饋電壓,將反饋電壓與高
11、精度的參考電壓比較得到誤差電壓,此誤差電壓經(jīng)放大后輸出控制調(diào)整管的導(dǎo)通程度,使預(yù)設(shè)電流值和實(shí)測(cè)電流值的逐步逼近,直至相等,從而達(dá)到數(shù)控的目的。從題目的要求來(lái)分析,該題目最大的難點(diǎn)在于大電流輸出和高精度控制,所以在具體的方案確定中,大電流、功耗,以及精度、誤差等都是我們所必須要考慮和克服的。</p><p> 圖2.2 方案二方框圖</p><p> 方案二的數(shù)控直流電源設(shè)計(jì)采用單片機(jī)
12、作為核心控制,基本原理簡(jiǎn)單,實(shí)現(xiàn)比較方便,電源的電流值也可以調(diào)整到較精確的數(shù)值,同樣的也是采用LCD進(jìn)行顯示。此方案采用保持電阻恒定而改變輸入電壓的方法來(lái)改變電流的大小。利用高精度D/A轉(zhuǎn)換器在單片機(jī)程序控制下提供可變的高精度的基準(zhǔn)電壓,該基準(zhǔn)電壓經(jīng)過(guò)V/I轉(zhuǎn)換電路得到電流,再通過(guò)A/D轉(zhuǎn)換器將輸出電流反饋至單片機(jī)進(jìn)行比較,調(diào)整D/A的輸入電壓,從而達(dá)到數(shù)控的目的。該方案的難點(diǎn)在于穩(wěn)定恒流源的設(shè)計(jì)和高精度電流檢測(cè)電路的設(shè)計(jì)。特點(diǎn)是可精確
13、的控制電流的步進(jìn)量,負(fù)載變化對(duì)電流輸出的影響較小。</p><p> 根據(jù)題目要求以及設(shè)計(jì)思路,比較之后,基于以上優(yōu)點(diǎn)以及對(duì)于單片機(jī)的成熟應(yīng)用,因此我決定用單片機(jī)來(lái)作為控制器,我所采用的是第二種方案。</p><p> 3 硬件系統(tǒng)的設(shè)計(jì)</p><p> 3.1 單片機(jī)最小系統(tǒng)</p><p> 3.1.1 時(shí)鐘電路</
14、p><p> 單片機(jī)必須在時(shí)鐘的驅(qū)動(dòng)下才能工作.在單片機(jī)內(nèi)部有一個(gè)時(shí)鐘振蕩電路,只需要外接一個(gè)振蕩源就能產(chǎn)生一定的時(shí)鐘信號(hào)送到單片機(jī)內(nèi)部的各個(gè)單元,決定單片機(jī)的工作速度。</p><p> 一般選用石英晶體振蕩器。此電路在加電大約延遲10ms后振蕩器起振,在XTAL2引腳產(chǎn)生幅度為3V左右的正弦波時(shí)鐘信號(hào),其振蕩頻率主要由石英晶振的頻率確定。電路中石英晶體振蕩器的頻率為12MHz,兩個(gè)電容
15、 C1、C2的作用有兩個(gè):一是幫助振蕩器起振;二是對(duì)振蕩器的頻率進(jìn)行微調(diào)。C1、C2的典型值為33PF。單片機(jī)的時(shí)鐘電路如圖3.1所示。</p><p> 圖3.1 單片機(jī)的時(shí)鐘電路圖</p><p> 3.1.2 復(fù)位電路</p><p> 單片機(jī)的第9腳RST為硬件復(fù)位端,只要將該端持續(xù)4個(gè)機(jī)器周期的高電平即可實(shí)現(xiàn)復(fù)位,復(fù)位后單片機(jī)的各狀態(tài)都恢復(fù)到初始化
16、狀態(tài)。</p><p> 復(fù)位電路用于產(chǎn)生復(fù)位信號(hào),通過(guò)RST引腳送入單片機(jī),進(jìn)行復(fù)位。因?yàn)锳T89S52單片機(jī)的復(fù)位是靠外部電路實(shí)現(xiàn)的。復(fù)位電路的好壞直接影響單片機(jī)系統(tǒng)工作的可靠性,因此,要重視復(fù)位電路的設(shè)計(jì)和研究。只要RST端保持10ms以上的高電平,就能使單片機(jī)有效地復(fù)位。AT89C51單片機(jī)通常采用上電自動(dòng)復(fù)位、按鍵復(fù)位、以及上電加按鍵復(fù)位等,我們采用的是上電加按鍵復(fù)位方式,這樣做的優(yōu)點(diǎn)是上電后可以直接
17、進(jìn)入復(fù)位狀態(tài),當(dāng)程序出現(xiàn)錯(cuò)誤時(shí),可以隨時(shí)使電路復(fù)位。則復(fù)位電路圖如圖3.2所示。</p><p> 圖3.2 單片機(jī)復(fù)位電路圖</p><p> 3.1.3 AT89C51單片機(jī)</p><p> 此單片機(jī)共有4個(gè)8位的并行雙向I/O口,分別記作P0、P1、P2、P3,這4個(gè)口除可按字節(jié)尋址以外,還可按位尋址。P0口地址為80H,位地址為80H~87H。各
18、位口線(xiàn)具有完全相同但又相互獨(dú)立的邏輯電路。P1口地址為90H,位地址為90H~97H。P1口只能作為通用數(shù)據(jù)I/O口使用,所以在電路結(jié)構(gòu)上與P0口有些不同。P2口地址為A0H,位地址為A0H~A7H。P2口既可以作為系統(tǒng)高位地址線(xiàn)使用,也可以為通用I/O口使用,所以P2口電路邏輯與P0口類(lèi)似。P3口地址為B0H,位地址為B0H~B7H。雖然P3口可以作為通用I/O口使用,但在實(shí)際應(yīng)用中它的第二功能信號(hào)更為重要。P3口的第二功能如表3.1
19、所示。</p><p> AT89C51單片機(jī)還有一個(gè)地址鎖存控制信號(hào)ALE,外部程序存儲(chǔ)器讀選通信號(hào),訪(fǎng)問(wèn)程序存儲(chǔ)器控制信號(hào),復(fù)位信號(hào)RST,地線(xiàn)和+5V的電源。</p><p> 單片機(jī)最小系統(tǒng)圖如圖3.3所示。</p><p> 表3.1 P3口線(xiàn)第二功能</p><p> 圖3.3 單片機(jī)最小系統(tǒng)圖</p>
20、<p><b> 3.3 顯示模塊</b></p><p> 方案一:使用LED數(shù)碼管顯示。數(shù)碼管采用BCD編碼顯示數(shù)字,對(duì)外界環(huán)境要求低,易于維護(hù)。但根據(jù)題目要求,如果需要同時(shí)顯示給定值和測(cè)量值,以及其他輸出特性值,需顯示的內(nèi)容較多,要使用多個(gè)數(shù)碼管動(dòng)態(tài)顯示,使電路變得復(fù)雜,加大了編程工作量。</p><p> 方案二:使用LCD液晶顯示。LCD具
21、有輕薄短小,可視面積大,方便的顯示數(shù)字,分辨率高,抗干擾能力強(qiáng),功耗小,且設(shè)計(jì)簡(jiǎn)單等特點(diǎn)。</p><p> LM016L液晶模塊采用HD44780控制器,hd44780具有簡(jiǎn)單而功能較強(qiáng)的指令集,可以實(shí)現(xiàn)字符移動(dòng),閃爍等功能,LM016L與單片機(jī)MCU通訊可采用8位或4位并行傳輸兩種方式,hd44780控制器由兩個(gè)8位寄存器,指令寄存器(IR)和數(shù)據(jù)寄存器(DR)忙標(biāo)志(BF),顯示數(shù)RAM(DDRAM),字
22、符發(fā)生器ROMA(CGOROM)字符發(fā)生器RAM(CGRAM),地址計(jì)數(shù)器RAM(AC)。IR用于寄存指令碼,只能寫(xiě)入不能讀出,DR用于寄存數(shù)據(jù),數(shù)據(jù)由內(nèi)部操作自動(dòng)寫(xiě)入DDRAM和CGRAM,或者暫存從DDRAM和CGRAM讀出的數(shù)據(jù),BF為1時(shí),液晶模塊處于內(nèi)部模式,不響應(yīng)外部操作指令和接受數(shù)據(jù),DDTAM用來(lái)存儲(chǔ)顯示的字符,能存儲(chǔ)80個(gè)字符碼,CGROM由8位字符碼生成5*7點(diǎn)陣字符160中和5*10點(diǎn)陣字符32種.8位字符編碼和字
23、符的對(duì)應(yīng)關(guān)系,CGRAM是為用戶(hù)編寫(xiě)特殊字符留用的,它的容量?jī)H64字節(jié),可以自定義8個(gè)5*7點(diǎn)陣字符或者4個(gè)5*10點(diǎn)陣字符,AC可以存儲(chǔ)DDRAM和CGRAM的地址,如果地址碼隨指令寫(xiě)入IR,則IR自動(dòng)把地址碼裝入AC,同時(shí)選擇DDRAM或CGRAM,L</p><p> 表3.2 LM016L引腳功能</p><p> 綜上所述,選擇方案二。采用LM016L液晶顯示模塊同時(shí)顯示電
24、流給定值和實(shí)測(cè)值以及負(fù)載內(nèi)阻。連接電路圖如圖3.4所示。</p><p> 圖3.4 LM016L與單片機(jī)的接線(xiàn)圖</p><p><b> 3.4 鍵盤(pán)模塊</b></p><p> 方案一:采用獨(dú)立式按鍵電路,每個(gè)按鍵單獨(dú)占有一根I/O接口線(xiàn),每個(gè)I/O口的工作狀態(tài)互不影響,此類(lèi)鍵盤(pán)采用端口直接掃描方式。缺點(diǎn)為當(dāng)按鍵較多時(shí)占用單片
25、機(jī)的I/O口數(shù)目較多。</p><p> 方案二:采用標(biāo)準(zhǔn)4×4鍵盤(pán),此類(lèi)鍵盤(pán)采用矩陣式行列掃描方式,優(yōu)點(diǎn)是當(dāng)按鍵較多時(shí)可降低占用單片機(jī)的I/O口數(shù)目,而且可以做到直接輸入電流值而不必步進(jìn)。</p><p> 題目要求可進(jìn)行電流給定值的設(shè)置和步進(jìn)調(diào)整,需要的按鍵比較多。綜合考慮兩種方案及題目要求,采用方案二,使用標(biāo)準(zhǔn)的4x4鍵盤(pán),可以實(shí)現(xiàn)0~9數(shù)字輸入、“+”、“-”、“OK
26、”、“SET”、“DEL”、“RESET/ON”這些功能按鍵。其電路圖如圖3.5所示。</p><p> 圖3.5 鍵盤(pán)與單片機(jī)的接線(xiàn)圖</p><p> 3.5 電流源模塊</p><p> 方案一:采用集成穩(wěn)壓器運(yùn)放構(gòu)成的線(xiàn)性恒流源。如圖3.6所示。D/A輸出電壓作為恒流源的參考電壓,運(yùn)算放大器U1與晶體管Q1,Q2組成的達(dá)林頓電路構(gòu)成電壓跟隨器。利用
27、晶體管平坦的輸出特性即可得到恒流輸出。由于跟隨器是一種深度的電壓負(fù)擔(dān)虧電路,因此電流源具有較好的穩(wěn)定性。本電流源的穩(wěn)定度優(yōu)于0.5%。為了提高穩(wěn)定度,Rs采用大線(xiàn)徑康銅絲制作,康銅絲溫度系數(shù)很小,大線(xiàn)徑可以使其溫度影響減至最小。U1采用精密運(yùn)算放大器OP37A,該放大器有調(diào)節(jié)零點(diǎn)漂移的功能,Q1采用9014大倍數(shù)大約為400.Q2采用低頻功率管3DD15,他的放大倍數(shù)為10~20倍,漏電流很小。Q1的加入是為了增加復(fù)合管的放大倍數(shù)。&l
28、t;/p><p> 圖3.6 穩(wěn)壓器運(yùn)放線(xiàn)性恒流源模塊電路圖</p><p> 方案二:采用運(yùn)放和場(chǎng)效應(yīng)管的壓控恒流源。電路原理圖如圖3.7所示。該恒流源電路由運(yùn)算放大器、大功率場(chǎng)效應(yīng)管Q1、采樣電阻R2、負(fù)載電阻RL等組成硬件設(shè)計(jì)。采用場(chǎng)效應(yīng)管,更易于實(shí)現(xiàn)電壓線(xiàn)性控制電流,既能滿(mǎn)足輸出電流最大達(dá)到2A的要求,電路簡(jiǎn)潔也能較好地實(shí)現(xiàn)電壓近似線(xiàn)性地控制電流。此電路中,為了滿(mǎn)足題目的設(shè)計(jì)要求
29、,調(diào)整管采用大功率場(chǎng)效應(yīng)管IRF640。當(dāng)場(chǎng)效應(yīng)管工作于飽和區(qū)時(shí),漏極電流Id近似為電壓Ugs控制的電流。即當(dāng)Ud為常數(shù)時(shí),滿(mǎn)足:Id=f(Ugs),只要Ugs不變,Id就不變。在此電路中,R7為取樣電阻,采用康銅絲繞制(阻值隨溫度的變化較?。┳柚禐?Ω。運(yùn)放OP07作為電壓跟隨器,Uin=Up=Un,場(chǎng)效應(yīng)管Id=Is(柵極電流相對(duì)很小,可忽略不計(jì)) 所以Iout=Is= Un/R7= Uin/R7。正因?yàn)镮out=Uin/R7,電路
30、輸入電壓Uin控制電流Iout,即Iout不隨RL的變化而變化,從而實(shí)現(xiàn)壓控恒流。</p><p> 圖3.7 壓控恒流源模塊電路圖</p><p> 綜上所述,進(jìn)行綜合比較,方案二電路較簡(jiǎn)單,穩(wěn)定性較高,故采用方案二,使用高精度運(yùn)放和大功率場(chǎng)效應(yīng)管等構(gòu)成一個(gè)恒流源電路。</p><p><b> 3.6 負(fù)載模塊</b></p
31、><p> 根據(jù)題目要求,設(shè)計(jì)了如圖3.8所示的電路圖。電路綜合各方面的考慮因素在里面,由于TLC2543所測(cè)電壓值在5V內(nèi),而負(fù)載一端接17V電壓源,另一端接功率管,因此采用差分增益電路采樣負(fù)載電壓,Va/din1=(1+R1/R2)[(R4/R3)/(1+R4/R3)]Va-R1/R2Vb,當(dāng)R1/R2=R4/R3時(shí),OP07輸出電壓Va/din1=R4/R3(Va-Vb),硬件設(shè)置R4/R3=1/4,軟件還原
32、負(fù)載電壓,保證測(cè)量精度。而采樣精密電阻R1為1Ω,通過(guò)采樣R7兩端電壓值換算成電流值即可得到輸出電流。</p><p> 圖3.8 負(fù)載電流、電壓測(cè)量電路圖</p><p> 3.7 D/A、A/D轉(zhuǎn)換模塊</p><p> D/A、A/D模塊是單片機(jī)與外部數(shù)據(jù)連接的通道,因此這兩個(gè)模塊的選擇與使用應(yīng)當(dāng)合理。</p><p> 3
33、.7.1 D/A轉(zhuǎn)換器 </p><p> 本設(shè)計(jì)中應(yīng)采用DAC模塊提供高精度的基準(zhǔn)電壓,即通過(guò)CPU發(fā)出的二進(jìn)制轉(zhuǎn)換為的模擬電壓,送給誤差放大器,實(shí)現(xiàn)步進(jìn)要求。</p><p><b> ?。?)</b></p><p> 根據(jù)題目擴(kuò)展功能要求輸出,以1mA為步進(jìn),需要的級(jí)數(shù)由公式(1)可見(jiàn)。</p><
34、p> ,故應(yīng)采用12位D/A轉(zhuǎn)換器為D/A轉(zhuǎn)換芯片,供選擇的很多,在此選用proteus元件庫(kù)中的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元件庫(kù)中的TLC2543芯片實(shí)
35、現(xiàn)。TLC2543是一種低功耗、低電壓的12位串行開(kāi)關(guān)電容型AD轉(zhuǎn)換器。它使用逐次逼近技術(shù)完成A/D轉(zhuǎn)換過(guò)程。最大線(xiàn)性誤差小于1LSB,轉(zhuǎn)換時(shí)間10µs。它具有三個(gè)控制器輸入端,采用簡(jiǎn)單的3線(xiàn)SPI串行接口可方便與微機(jī)進(jìn)行連接,是12位數(shù)據(jù)采集系統(tǒng)的最佳選擇器件之一。TLC2543引腳功能如表3.3所示,其特點(diǎn)如下: ①11個(gè)模擬輸入通道;</p><p> ?、?路內(nèi)置自測(cè)試方式;</p
36、><p> ?、鄄蓸勇蕿?6kbps; ④線(xiàn)性誤差±1LSBmax; ⑤有轉(zhuǎn)換結(jié)束輸出EOC; ⑥具有單、雙極性輸出; ⑦可編程的MSB或LSB前導(dǎo); </p><p> ?、嗫删幊梯敵鰯?shù)據(jù)長(zhǎng)度。</p><p> 表3.3 LTC2543引腳功能</p><p> 轉(zhuǎn)換過(guò)程:上電后,片選CS必須從高到低,才能開(kāi)始一次工作
37、周期,此時(shí)EOC為高,輸入數(shù)據(jù)寄存器被置為0,輸出數(shù)據(jù)寄存器的內(nèi)容是隨機(jī)的。開(kāi)始時(shí),CS片選為高,I/O CLOCK、DATA INPUT被禁止,DATA OUT 呈高阻狀,EOC為高。使CS變低,I/OCLOCK、DATAINPUT使能,DATAOUT脫離高阻狀態(tài)。12個(gè)時(shí)鐘信號(hào)從I/OCLOCK端依次加入,隨著時(shí)鐘信號(hào)的加入,控制字從DATAINPUT一位一位地在時(shí)鐘信號(hào)的上升沿時(shí)被送入TLC2543(高位先送入),同時(shí)上一周期轉(zhuǎn)換
38、的A/D數(shù)據(jù),即輸出數(shù)據(jù)寄存器中的數(shù)據(jù)從DATAOUT一位一位地移出。TLC2543收到第4個(gè)時(shí)鐘信號(hào)后,通道號(hào)也已收到,此時(shí)TLC2543開(kāi)始對(duì)選定通道的模擬量進(jìn)行采樣,并保持到第12個(gè)時(shí)鐘的下降沿。在第12個(gè)時(shí)鐘下降沿,EOC變低,開(kāi)始對(duì)本次采樣的模擬量進(jìn)行A/D轉(zhuǎn)換,轉(zhuǎn)換時(shí)間約需10μs,轉(zhuǎn)換完成后EOC變高,轉(zhuǎn)換的數(shù)據(jù)在輸出數(shù)據(jù)寄存器中,待下一個(gè)工作周期輸出。此后,可以進(jìn)行新的工作周期。</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è)計(jì)</b></p><p> 4.1 單片機(jī)資源使用情況</p><p> 本設(shè)
40、計(jì)用到了單片機(jī)控制DA和AD轉(zhuǎn)換的功能,此外用到了單片機(jī)的中斷功能,在數(shù)據(jù)的顯示時(shí)所采用的是查表的方法,因此需要將表格、數(shù)據(jù)存到單片機(jī)的程序存儲(chǔ)器中去。數(shù)控直流電流源的數(shù)據(jù)要存儲(chǔ)到數(shù)據(jù)存儲(chǔ)器中去,用到了30H到50H之間的單元。</p><p> 由于數(shù)控直流電流源需要可以進(jìn)行調(diào)節(jié),因此,需要在單片機(jī)的P口上加上按鍵,本設(shè)計(jì)采用行列式鍵盤(pán),直接接在P2口上。用到的液晶顯示器接到了單片機(jī)的P0口線(xiàn)上,液晶顯示器的
41、使能端用到了P3口線(xiàn)。</p><p> 4.2 軟件系統(tǒng)的模塊</p><p> 4.2.1 定時(shí)模塊</p><p> 在本設(shè)計(jì)中用到了幾個(gè)定時(shí)模塊,第一個(gè)定時(shí)是用于定時(shí)按鍵的抖動(dòng)時(shí)間,因?yàn)楫?dāng)按鍵時(shí)都會(huì)出現(xiàn)電壓抖動(dòng),但對(duì)鍵盤(pán)工作有影響的是鍵閉合時(shí)的抖動(dòng),所以為了確保鍵掃描的正確性,每當(dāng)掃描到有閉合鍵時(shí),都要進(jìn)行去抖動(dòng)處理。本設(shè)計(jì)中采用的是軟件去抖動(dòng)的方
42、法,抖動(dòng)的定時(shí)采用的軟件的延時(shí)進(jìn)行定時(shí)的。</p><p> 第二個(gè)定時(shí)的功能是在數(shù)碼管顯示時(shí)的延時(shí)時(shí)間,即在數(shù)碼管顯示時(shí)是采用查表的方法進(jìn)行顯示的,因此需要用到一定的延時(shí),使得我們能夠看的清楚所顯示的內(nèi)容,在這里用到的延時(shí)也是采用軟件的延時(shí)。</p><p> 4.2.2 按鍵操作模塊</p><p> 在本次設(shè)計(jì)中,用到了三個(gè)獨(dú)立式鍵盤(pán)進(jìn)行按鍵的操作。因
43、為本數(shù)控直流電流源的操作比較簡(jiǎn)單,而只用到了三個(gè)鍵,因此在鍵盤(pán)的操作時(shí)采用的是層層遞進(jìn)的方法,一步一步往下操作的,設(shè)置了鍵的名稱(chēng)為ON/OFF鍵、ADD鍵、DEC鍵,在軟件設(shè)計(jì)中是在ON/OFF鍵按下了之后才會(huì)有ADD鍵、DEC鍵的操作,鍵與鍵之間的功能采用層層套用使得程序看起來(lái)更加清晰明了。</p><p> 在按鍵的程序掃描中是采用查詢(xún)的方法對(duì)按鍵進(jìn)行操作的,當(dāng)查詢(xún)到按鍵有動(dòng)作時(shí),則執(zhí)行相應(yīng)的操作。獨(dú)立式鍵
44、盤(pán)的程序設(shè)計(jì)一般把鍵盤(pán)掃描程序設(shè)計(jì)成子程序,以便其它各程序調(diào)用。本設(shè)計(jì)中的鍵盤(pán)掃描子程序的名稱(chēng)為KEY,則鍵盤(pán)掃描子程序KEY應(yīng)具有以下功能:判定有無(wú)按鍵動(dòng)作;去抖動(dòng);確認(rèn)是否真正有閉合鍵;計(jì)算并保存閉合鍵鍵碼;判定閉合鍵是否釋放;恢復(fù)閉合鍵鍵碼。</p><p> 4.2.3 D/A轉(zhuǎn)換模塊</p><p> 本設(shè)計(jì)主要是利用單片機(jī)做處理器,然后經(jīng)過(guò)數(shù)模轉(zhuǎn)換模塊進(jìn)行轉(zhuǎn)換,將單片輸出
45、的二進(jìn)制代碼轉(zhuǎn)換成相應(yīng)的模擬電壓輸出,這樣使得所設(shè)計(jì)的電流源更加精確。在此模塊中,因?yàn)檫M(jìn)行換擋的轉(zhuǎn)換,在這里我所采用的是做除法,然后再存儲(chǔ)除法得到的商和余數(shù),這里面我用到了兩個(gè)子程序,一個(gè)是將十進(jìn)制轉(zhuǎn)換為十六進(jìn)制數(shù),二個(gè)是采用移位相減的方法做除法。</p><p> 4.2.4 A/D轉(zhuǎn)換模塊</p><p> 當(dāng)所設(shè)定的二進(jìn)制代碼經(jīng)過(guò)數(shù)模轉(zhuǎn)換模塊輸出之后,經(jīng)過(guò)A/D轉(zhuǎn)換模塊進(jìn)行采樣
46、之后,由單片機(jī)進(jìn)行處理。然后輸出相應(yīng)的電流值大小。</p><p> 4.2.5 LCD顯示模塊</p><p> 寄存器選擇控制表如表4.1所示。</p><p> 表4.1 寄存器選擇控制表</p><p> 注:關(guān)于E=H脈沖——開(kāi)始時(shí)初始化E為0,然后置E為1,再清0。</p><p> busy
47、 flag(DB7):在此位為被清除為0時(shí),LCD將無(wú)法再處理其他的指令要求。</p><p> 1602液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器(CGROM)已經(jīng)存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符圖形,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫(xiě)、常用的符號(hào)、和日文假名等,每一個(gè)字符都有一個(gè)固定的代碼,比如大寫(xiě)的英文字母“A”的代碼是01000001B(41H),顯示時(shí)模塊把地址41H中的點(diǎn)陣字符圖形顯示出來(lái),我們就能看到字母“A
48、”。因?yàn)?602識(shí)別的是ASCII碼,試驗(yàn)可以用ASCII碼直接賦值,在單片機(jī)編程中還可以用字符型常量或變量賦值,如“A”。</p><p> 4.3 程序流程圖</p><p> 4.3.1 主控制流程圖</p><p> 在此次設(shè)計(jì)的過(guò)程中,我是采用模塊的設(shè)計(jì)方法,一個(gè)一個(gè)實(shí)現(xiàn)功能,可以說(shuō)如果完成了一個(gè)任務(wù)的程序框圖,就是完成了整個(gè)設(shè)計(jì)任務(wù)的百分之三十
49、左右,在本次課程設(shè)計(jì)的過(guò)程中,我都是采用這種思想進(jìn)行數(shù)控直流電流源的設(shè)計(jì)的。因此,在設(shè)計(jì)的過(guò)程,讓我能夠很輕易的就抓住了主要的設(shè)計(jì)核心。主控制流程圖如圖4.1所示。</p><p> 圖4.1 主控制流程圖</p><p> 4.3.2 按鍵操作流程圖</p><p> 在本次程序設(shè)計(jì)中對(duì)于鍵盤(pán)的設(shè)計(jì),我專(zhuān)門(mén)設(shè)計(jì)了一個(gè)鍵盤(pán)掃描子程序,它所完成的功能是,首先
50、對(duì)鍵盤(pán)進(jìn)行處理,給每一個(gè)鍵都設(shè)置了一個(gè)鍵碼,那么只要判斷鍵盤(pán)的鍵碼就可以知道是否有鍵按下,如若有鍵按下也可以判斷是哪一個(gè)鍵按下了。</p><p> 這次設(shè)計(jì)中,鍵盤(pán)掃描子程序的代號(hào)為KEY,其鍵盤(pán)掃描程序設(shè)計(jì)的流程框圖如圖4.2所示。</p><p> 圖4.2 按鍵掃描子程序流程圖</p><p> 4.3.3 D/A轉(zhuǎn)換、A/D轉(zhuǎn)換流程圖</p
51、><p> 本設(shè)計(jì)主要是用到LTC1456進(jìn)行數(shù)模轉(zhuǎn)換,用到TLC2543進(jìn)行模數(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> 由于使用的十進(jìn)制數(shù),而在做除法的時(shí)候,要進(jìn)行數(shù)制的轉(zhuǎn)換,其轉(zhuǎn)換的流程圖如圖4.4所示。<
52、/p><p> 圖4.4 數(shù)制轉(zhuǎn)換流程圖</p><p> 4.3.5 LCD顯示流程圖</p><p> 由于本設(shè)計(jì)的顯示比較簡(jiǎn)單,因此我所用到的是LCD顯示,其LCD顯示的流程圖如圖4.5所示。</p><p> 圖4.5 LCD顯示子程序流程圖</p><p> 5 仿真測(cè)試及結(jié)果</p>
53、;<p> 5.1 設(shè)計(jì)結(jié)論及使用方法</p><p> 本次通過(guò)對(duì)數(shù)控直流電流源的設(shè)計(jì),了解了利用單片機(jī)處理之后,進(jìn)行數(shù)控直流電流源的顯示。本次設(shè)計(jì)比較成功,在按鍵操作中能夠按照預(yù)先給定的功能進(jìn)行操縱。</p><p> 打開(kāi)Proteus軟件,打開(kāi)設(shè)計(jì)的電路文件,然后輸入通過(guò)KEIL軟件編好的程序,點(diǎn)擊開(kāi)始按鈕即可以進(jìn)行測(cè)試。具體操作說(shuō)明:按了復(fù)位鍵之后,液晶顯示
54、屏上也能顯示“S0200mA"。按下RESET/ON鍵顯示四項(xiàng)值,包括電源設(shè)定值、電流AD測(cè)量值、負(fù)載電壓值、負(fù)載阻值。電流設(shè)定初始值為200mA??梢园?,-鍵實(shí)現(xiàn)步進(jìn),數(shù)據(jù)實(shí)時(shí)顯示。要設(shè)置電流直接按數(shù)字鍵無(wú)效。此時(shí)需按SET鍵進(jìn)入電流設(shè)置,之后屏幕顯示 “Are you sure to set?”,按下OK鍵即可設(shè)定,如果不需要設(shè)定,按RESET/ON返回。在設(shè)定電流的過(guò)程中,需要有效按四次數(shù)字鍵,如果在設(shè)置的過(guò)程中想放棄
55、修改,按下RESET/ON鍵,如果需要修改已經(jīng)按下的數(shù)值,可以按DEL鍵,光標(biāo)返回到上一個(gè)數(shù),重新按某一個(gè)數(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è)計(jì)上限制了電流輸出范圍是200~2000mA,限定了電壓值小于10V,當(dāng)給定值在量程內(nèi)時(shí)顯示“OK!”;當(dāng)給定值超過(guò)量程時(shí)將顯示“ERROR! RESET!”,如下圖5.2所示。</p><p> 圖5.2 仿真報(bào)錯(cuò)顯示界面圖</p><p> 若
57、需要設(shè)定輸出電流值,當(dāng)按下SET鍵時(shí),出現(xiàn)如圖5.3所示界面,顯示器顯示“Are you sure to set?”,此時(shí)按下OK鍵,出現(xiàn)如圖5.4所示界面,這是可自由輸入一個(gè)4位數(shù),若滿(mǎn)足200~2000mA,則顯示各種數(shù)據(jù),若不滿(mǎn)足200~2000mA,則顯示器出現(xiàn)“ERROR!RESET!”報(bào)警畫(huà)面。若發(fā)現(xiàn)輸入數(shù)字超出電流允許范圍,可以按SET鍵再次輸入數(shù)值。</p><p> 圖5.3 輸出電流值確認(rèn)
58、SET顯示界面圖</p><p> 圖5.4 輸出電流值SET顯示界面圖</p><p> 5.2.2 步進(jìn)調(diào)整仿真</p><p> 在量程范圍內(nèi),通過(guò)“+”、“-”按鈕可實(shí)現(xiàn)1mA步進(jìn),通過(guò)顯示器可觀(guān)察到效果。通過(guò)鍵盤(pán)DEL鍵可以修改上一步輸錯(cuò)的數(shù)字。如圖5.5所示。</p><p> 圖5.5 修改設(shè)定的輸出電流值界面&l
59、t;/p><p> 5.2.3 輸出電流仿真</p><p> 下圖5.6所示是仿真最低電流200mA負(fù)載電阻為2.0時(shí)的狀態(tài),根據(jù)顯示器顯示內(nèi)容可知,設(shè)定輸出電流值為200mA,實(shí)測(cè)電流值為201mA,輸出電壓為0.400V,負(fù)載電阻為2.0,都滿(mǎn)足設(shè)計(jì)要求。然后,通過(guò)改變?cè)O(shè)定輸出電流值進(jìn)行仿真,記錄的仿真數(shù)據(jù)如表5.1所示。</p><p> 圖5.6 負(fù)
60、載電阻為2.0仿真狀態(tài)圖</p><p> 表5.1 負(fù)載RL=2.0Ω的數(shù)據(jù)表格</p><p> 運(yùn)用同樣的仿真步驟,依次仿真負(fù)載電阻為3.0、4.0時(shí)這兩種狀態(tài),記錄的仿真數(shù)據(jù)分別如表5.2、表5.3所示。</p><p> 表5.2 負(fù)載RL=3.0Ω的數(shù)據(jù)表格</p><p> 表5.3 負(fù)載RL=4.0Ω的數(shù)據(jù)表格&
61、lt;/p><p><b> 5.3 誤差分析</b></p><p><b> 測(cè)量結(jié)果分析:</b></p><p> 步進(jìn)1mA時(shí)設(shè)定值與實(shí)測(cè)值在200~2000mA之間,誤差在5mA以下。</p><p> 在改變負(fù)載時(shí),誤差在10mA以下。</p><p>
62、 在改變輸出電壓時(shí),誤差在10mA以下。</p><p> 綜上所述,系統(tǒng)仿真實(shí)測(cè)數(shù)據(jù)滿(mǎn)足題目的基本要求,能滿(mǎn)足輸出電流與給定值偏差的絕對(duì)值≤給定值的1%+10 mA。說(shuō)明本電路有較高的精度和穩(wěn)定性。</p><p><b> 誤差分析:</b></p><p> 紋波對(duì)電流輸出的影響,采用屏蔽的方法,遠(yuǎn)離容易產(chǎn)生脈沖工作方式的器件,減少
63、供電電源的紋波等,對(duì)于選擇低噪聲的運(yùn)放是解決問(wèn)題的一種方法。另外在輸出接近低頻直流時(shí),運(yùn)放的失調(diào)電壓和失調(diào)電流也是產(chǎn)生低頻噪聲的源泉,在這里的解決方法是在運(yùn)放前加一級(jí)晶體管或者場(chǎng)效應(yīng)管的差分級(jí)。</p><p> 該數(shù)控直流電流源的誤差出現(xiàn)還有可能有幾個(gè)地方,第一個(gè)就是換擋電路的電壓基準(zhǔn)值是否十分標(biāo)準(zhǔn),能夠按照所理想設(shè)定的電壓值輸出。采用高標(biāo)準(zhǔn)測(cè)量電路,先將換擋電路的輸出電壓標(biāo)準(zhǔn)化。第二個(gè)就是達(dá)林管的是否能夠按
64、照理想的工作狀態(tài)進(jìn)行相應(yīng)的工作,解決方法可以產(chǎn)生一個(gè)相應(yīng)的PWM信號(hào)控制。具體如下分析:</p><p> ?。?)、由于普通運(yùn)算放大器的運(yùn)放零點(diǎn)漂移,溫度漂移等帶來(lái)的誤差??梢酝ㄟ^(guò)溫度補(bǔ)償措施來(lái)解決此誤差。</p><p> ?。?)、由于采樣電阻在溫度上升時(shí)阻值會(huì)變化,因此會(huì)引起溫度漂移,給系統(tǒng)帶來(lái)測(cè)量的誤差。</p><p> ?。?)、受D/A轉(zhuǎn)換器精度,A
65、/D轉(zhuǎn)換器精度,基準(zhǔn)源穩(wěn)定程度等硬件本身的限制,不可避免地帶來(lái)一定程度的誤差。</p><p><b> 6 收獲與體會(huì) </b></p><p> 在本次數(shù)控直流電流源的設(shè)計(jì)過(guò)程中,有許多感觸,首先對(duì)C語(yǔ)言,我覺(jué)得這是一門(mén)邏輯性很強(qiáng)的語(yǔ)言,但同時(shí)也是一門(mén)比較容易掌握的語(yǔ)言。這門(mén)語(yǔ)言和我們的實(shí)際聯(lián)系很機(jī)密,比如說(shuō)里面很多傳送指令,都是根據(jù)實(shí)際存在的硬件而存在的,還
66、有你面的與或指令、乘法、除法指令,其實(shí)都是和我們從小就學(xué)的數(shù)學(xué)息息相關(guān)的。就C語(yǔ)言而言,對(duì)于同一種效果可以采用不同的指令完成,也可以采用相同的指令完成,但因?yàn)槟闼x用的方案不同使得所產(chǎn)生的效果也就有所不同,因此這也鍛煉了我們?cè)谒伎纪粋€(gè)問(wèn)題,如果能夠采用發(fā)散思維的話(huà),往往會(huì)得到意想不到的結(jié)果。</p><p> 談完基本的工具之后,我要談的就是這次的主題,數(shù)控直流電流源可以說(shuō)是我們非常熟悉的東西,但是沒(méi)有學(xué)單片
67、機(jī)這門(mén)功課時(shí),誰(shuí)也不會(huì)想它是怎么工作的,又是怎么做成的。在我自己動(dòng)手完成了這次設(shè)計(jì)之后,我才發(fā)現(xiàn)其實(shí)在我們身邊有好多東西是要我們自己去研究的,如果只在原地踏步的話(huà),就會(huì)落后,隨著社會(huì)的不斷進(jìn)步,我們身邊的東西越來(lái)越高科技話(huà),那么要我們學(xué)習(xí)的東西也就越來(lái)越多。</p><p> 我覺(jué)得在這次設(shè)計(jì)過(guò)程中,我學(xué)到了很多,不僅僅是對(duì)匯編語(yǔ)言有了自己的想法,更重要的是培養(yǎng)了一種用于面對(duì)問(wèn)題,解決問(wèn)題的精神,在我們以后走向
68、社會(huì)的道路上還不知道會(huì)遇到多少問(wèn)題,如果有了這種精神的話(huà),我相信無(wú)論多么困難的問(wèn)題,都會(huì)迎刃而解的。</p><p><b> 參考文獻(xiàn)</b></p><p> ?。?]唐俊瞿,許雷,張群瞻.單片機(jī)原理與應(yīng)用[M].北京:冶金工業(yè)出版社,2003</p><p> ?。?]李廣弟,朱月秀,冷祖祁.單片機(jī)基礎(chǔ)[M].北京:北京航空航天大學(xué)出版
69、社,2007</p><p> ?。?]李光飛.單片機(jī)課程設(shè)計(jì)實(shí)例指導(dǎo)[M].北京:北京航空航天大學(xué)出版社,2004.9</p><p> [4]張洪潤(rùn),蘭清華.單片機(jī)應(yīng)用技術(shù)教程[M].北京:清華大學(xué)出版社,1997.11</p><p> ?。?]李華.MCS—51系列單片機(jī)實(shí)用接口技術(shù)[M]..北京:北京航空航天大學(xué)出版社,1993</p>&
70、lt;p> ?。?]李朝青.單片機(jī)原理及接口技術(shù)[M]..北京:北京航空航天大學(xué)出版社,1998</p><p> ?。?]趙秀珍,單永磊.單片微型計(jì)算機(jī)原理及其應(yīng)用[M]..北京:中國(guó)水利水電出版社,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è)計(jì)的程序中,我用到的是液晶顯示器,其使能***</p><p> ;****;端接單片機(jī)的P3.0,P3.1,P3.2引腳,用到了DA轉(zhuǎn)換等需要 ***</p><p> ;****;的暫存單元分別為30H到35H,其中還有一些必要的標(biāo)志位存***</p><p> ;****;在在36H到4AH單元。按鍵接單片機(jī)的P2.0到P2.
73、7,液晶顯示***</p><p> ;****;顯示器數(shù)據(jù)口接單片機(jī)的P0.0到P0.7,本數(shù)控直流電流源有加 ***</p><p> ;****;減調(diào)整,采用閉環(huán)控制系統(tǒng)進(jìn)行調(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ù),參數(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測(cè)試為大約1微秒</p><p><b> }</b></p><p> void delay(uint t) //極短延時(shí)</p><p><b> {</b>
87、</p><p> while(t--);</p><p><b> }</b></p><p> void write_com(uchar com) //寫(xiě)命令函數(shù)</p><p><b> {</b></p><p> rs=0; //rs置
88、0表示寫(xiě)命令</p><p> lcden=0; //按時(shí)序圖置低</p><p> P0=com; //位聲明,按原理圖接P0口,輸入數(shù)據(jù)</p><p> lcden=1; //置高</p><p> delayms(5); //時(shí)序圖中須有thd2時(shí)間延時(shí)</p>&l
89、t;p> lcden=0; //按時(shí)序圖置低</p><p><b> }</b></p><p> void write_date(uchar date) //寫(xiě)數(shù)據(jù)函數(shù)</p><p><b> {</b></p><p> rs=1; //rs置1表示寫(xiě)
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點(diǎn)陣,8位數(shù)據(jù)</p><p> write_com(0x0c); // 開(kāi)顯示,關(guān)光標(biāo),光標(biāo)不閃爍</p><p> write_com(0x06); // 寫(xiě)一個(gè)數(shù)據(jù)后地址指針加一,光標(biāo)加一&
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);//進(jìn)行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; //基準(zhǔn)電壓為5.0V</p><p
99、> vol=(int)((Voltage2*4)*1000);// 擴(kuò)大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; //基準(zhǔn)電壓為5.0V</p><p
101、> vol=(int)(Voltage1*1000+1);// 擴(kuò)大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)方式寫(xiě)第一行數(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)控直流電流源
- 數(shù)控直流電流源硬件設(shè)計(jì)論文
- 畢業(yè)設(shè)計(jì)----數(shù)控直流電流源
- 數(shù)控直流電流源畢業(yè)設(shè)計(jì)
- 數(shù)控直流電流源 (2)
- 簡(jiǎn)易數(shù)控直流電流源畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于數(shù)控直流電流源系統(tǒng)的設(shè)計(jì)
- 基于數(shù)控直流電流源系統(tǒng)的設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 基于數(shù)控直流電流源系統(tǒng)的設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的數(shù)控直流電流源設(shè)計(jì)
- 數(shù)控直流電流源畢業(yè)論文
- 畢業(yè)設(shè)計(jì)172數(shù)控直流電流源(電子設(shè)計(jì)大賽論文)
- 畢業(yè)設(shè)計(jì)172數(shù)控直流電流源(電子設(shè)計(jì)大賽論文)
- 畢業(yè)設(shè)計(jì)---數(shù)控直流電壓源的設(shè)計(jì)
- 微機(jī)控制課程設(shè)計(jì)--數(shù)控直流電源器的設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)172數(shù)控直流電流源(電子設(shè)計(jì)大賽論文).doc
- 畢業(yè)設(shè)計(jì)172數(shù)控直流電流源(電子設(shè)計(jì)大賽論文).doc
- 畢業(yè)論文范文——數(shù)控直流電流源
- 直流電機(jī)課程設(shè)計(jì)--直流電機(jī)控制系統(tǒng)設(shè)計(jì)
- 直流電機(jī)調(diào)速課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論