版權(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> 目錄</b></p><p><b> 一、前言4</b></p><p><b> 二、系統(tǒng)功能5</b></p><p><b> 三、方案論證6</b></p><p> 3.1 穩(wěn)壓電源的分類(lèi)6<
2、;/p><p> 3.2 穩(wěn)壓電源部分方案6</p><p> 3.3 三端集成穩(wěn)壓芯片8</p><p> 3.4 數(shù)字顯示部分9</p><p> 四、系統(tǒng)硬件設(shè)計(jì)9</p><p><b> 1、電路原理9</b></p><p> 2、硬件模
3、塊分析10</p><p> 2.1 ATmage16單片機(jī)模塊9</p><p> 2.2 L6203驅(qū)動(dòng)模塊12</p><p> 2.3 5V系統(tǒng)電源模塊14</p><p> 2.4 1602液晶顯示模塊14</p><p> 2.5輸出電壓采集反饋電路模塊15</p>&l
4、t;p> 五、系統(tǒng)的軟件設(shè)計(jì)15</p><p><b> 1 程序設(shè)計(jì)15</b></p><p> 2.程序流程圖16</p><p><b> 六.結(jié)束語(yǔ)16</b></p><p><b> 七.參考文獻(xiàn)17</b></p>&l
5、t;p> 附錄1(電路原理圖)18</p><p> 附錄2(電子萬(wàn)年歷程序)19</p><p><b> 摘要</b></p><p> 將單片機(jī)數(shù)字控制技術(shù),有機(jī)地融入直流穩(wěn)壓電源的設(shè)計(jì)中,設(shè)計(jì)出一款數(shù)字化通用直流穩(wěn)壓電源。該電源具有液晶顯示、數(shù)字輸入調(diào)壓、電壓調(diào)節(jié)精度高的特點(diǎn)。通過(guò)軟件編程,易于實(shí)現(xiàn)功能的擴(kuò)展。<
6、/p><p> AVR 系列的單片機(jī)不僅具有良好的集成性能, 而且都具備在線(xiàn)編程接口, 其中的Mega 系列還具備JTAG 仿真和下載功能; 含有片內(nèi)看門(mén)狗電路、片內(nèi)程序Flash、同步串行接口SPI; 多數(shù)AVR 單片機(jī)還內(nèi)嵌了A/D 轉(zhuǎn)換器、EEPROM</p><p> 、模擬比較器、PWM 定時(shí)計(jì)數(shù)器等多種功能; AVR 單片機(jī)的I/O 接口具有很強(qiáng)的驅(qū)動(dòng)能力, 灌入電流可直接驅(qū)動(dòng)
7、繼電器、LCD 等元件, 從而省去驅(qū)動(dòng)電路, 節(jié)約系統(tǒng)成本。</p><p> 關(guān)鍵詞:直流穩(wěn)壓電源,AVR單片機(jī),液晶顯示</p><p><b> 一、前言</b></p><p> 電源技術(shù)尤其是數(shù)控電源技術(shù)是一門(mén)實(shí)踐性很強(qiáng)的工程技術(shù),服務(wù)于各行各業(yè)。電力電子技術(shù)是電能的最佳應(yīng)用技術(shù)之一。當(dāng)今電源技術(shù)融合了電氣、電子、系統(tǒng)集成、控制
8、理論、材料等諸多學(xué)科領(lǐng)域。隨著計(jì)算機(jī)和通訊技術(shù)發(fā)展而來(lái)的現(xiàn)代信息技術(shù)革命,給電力電子技術(shù)提供了廣闊的發(fā)展前景,同時(shí)也給電源提出了更高的要求。隨著數(shù)控電源在電子裝置中的普遍使用,普通電源在工作時(shí)產(chǎn)生的誤差,會(huì)影響整個(gè)系統(tǒng)的精確度。電源在使用時(shí)會(huì)造成很多不良后果,世界各國(guó)紛紛對(duì)電源產(chǎn)品提出了不同要求并制定了一系列的產(chǎn)品精度標(biāo)準(zhǔn)。只有滿(mǎn)足產(chǎn)品標(biāo)準(zhǔn),才能夠進(jìn)入市場(chǎng)。隨著經(jīng)濟(jì)全球化的發(fā)展,滿(mǎn)足國(guó)際標(biāo)準(zhǔn)的產(chǎn)品才能獲得進(jìn)出的通行證。數(shù)控電源是從80年
9、代才真正的發(fā)展起來(lái)的,期間系統(tǒng)的電力電子理論開(kāi)始建立。這些理論為其后來(lái)的發(fā)展提供了一個(gè)良好的基礎(chǔ)。在以后的一段時(shí)間里,數(shù)控電源技術(shù)有了長(zhǎng)足的發(fā)展。但其產(chǎn)品存在數(shù)控程度達(dá)不到要求、分辨率不高、功率密度比較低、可靠性較差的缺點(diǎn)。因此數(shù)控電源主要的發(fā)展方向,是針對(duì)上述缺點(diǎn)不斷加以改善。單片機(jī)技術(shù)及電壓轉(zhuǎn)換模塊的出現(xiàn)為精確數(shù)控電源的發(fā)展提供了有利的條件。新的變換技術(shù)和控制理論的不斷發(fā)展,各種類(lèi)型專(zhuān)用集成電路、數(shù)字</p><
10、p> 在家用電器和其他各類(lèi)電子設(shè)備中,通常都需要電壓穩(wěn)定的直流電源供電。但在實(shí)際生活中,都是由220V 的交流電網(wǎng)供電。這就需要通過(guò)變壓、整流、濾波、穩(wěn)壓電路將交流電轉(zhuǎn)換成穩(wěn)定的直流電。濾波器用于濾去整流輸出電壓中的紋波,一般傳統(tǒng)電路由濾波扼流圈和電容器組成,若由晶體管濾波器來(lái)替代,則可縮小直流電源的體積,減輕其重量,且晶體管濾波直流電源不需直流穩(wěn)壓器就能用作家用電器的電源,這既降低了家用電器的成本,又縮小了其體積,使家用電器小
11、型化。傳統(tǒng)的直流穩(wěn)壓電源通常采用電位器和波段開(kāi)關(guān)來(lái)實(shí)現(xiàn)電壓的調(diào)節(jié),并由電壓表指示電壓值的大小. 因此,電壓的調(diào)整精度不高,讀數(shù)欠直觀(guān),電位器也易磨損.而基于單片機(jī)控制的直流穩(wěn)壓電源能較好地解決以上傳統(tǒng)穩(wěn)壓電源的不足。</p><p> 從上世紀(jì)九十年代末起,隨著對(duì)系統(tǒng)更高效率和更低功耗的需求,電信與數(shù)據(jù)通訊設(shè)備的技術(shù)更新推動(dòng)電源行業(yè)中直流/直流電源轉(zhuǎn)換器向更高靈活性和智能化方向發(fā)展。整流系統(tǒng)由以前的分立元件和集
12、成電路控制發(fā)展為微機(jī)控制, 從而使直流電源智能化, 基本實(shí)現(xiàn)了直流電源的無(wú)人值守 。直流穩(wěn)壓電源是最常用的儀器設(shè)備, 在科研及實(shí)驗(yàn)中都是必不可少的。數(shù)控電源采用按鍵盤(pán),可對(duì)輸出電壓進(jìn)行設(shè)置, 輸出由單片機(jī)通過(guò)D/A,控制驅(qū)動(dòng)模塊輸出一個(gè)穩(wěn)定電壓。同時(shí)穩(wěn)壓方法采用單片機(jī)控制, 單片機(jī)通過(guò)A/D 采樣輸出電壓, 與設(shè)定值進(jìn)行比較, 若有偏差則調(diào)整輸出, 越限則輸出報(bào)警信號(hào)并截流。工作過(guò)程中, 穩(wěn)壓電源的工作狀態(tài)(輸出電壓、電流等各
13、種工作狀態(tài)) 均由單片機(jī)輸出驅(qū)動(dòng)LCD顯示, 由鍵盤(pán)控制進(jìn)行動(dòng)態(tài)邏輯切換。以單片機(jī)為核心的智能化高精度簡(jiǎn)易直流電源的設(shè)計(jì),電源采用數(shù)字調(diào)節(jié)、輸出精度高, 特別適用于各種有較高精度要求的場(chǎng)合。</p><p> 電源采用數(shù)字控制,具有以下明顯優(yōu)點(diǎn):</p><p> 1)易于采用先進(jìn)的控制方法和智能控制策略,使電源模塊的智能化程度更高,性能更完美。</p><p>
14、; 2)控制靈活,系統(tǒng)升級(jí)方便,甚至可以在線(xiàn)修改控制算法,而不必改動(dòng)硬件線(xiàn)路。</p><p> 3)控制系統(tǒng)的可靠性提高,易于標(biāo)準(zhǔn)化,可以針對(duì)不同的系統(tǒng)(或不同型號(hào)的產(chǎn)品),采用統(tǒng)一的控制板,而只是對(duì)控制軟件做一些調(diào)整即可。</p><p><b> 二、系統(tǒng)功能</b></p><p> 系統(tǒng)電壓調(diào)節(jié)范圍為0~12V,最大輸出電流1
15、A,具有過(guò)載和短路保護(hù)功能。輸出電壓可用1602LCD液晶顯示。鍵盤(pán)設(shè)有6個(gè)鍵,復(fù)位鍵,步進(jìn)增減1V兩個(gè)鍵,步進(jìn)增減0.1V兩個(gè)鍵以及確認(rèn)鍵。復(fù)位鍵用于啟動(dòng)參數(shù)設(shè)定狀態(tài)(5V),步進(jìn)增減鍵用于設(shè)定參數(shù)數(shù)值,確認(rèn)鍵用于確認(rèn)輸出設(shè)定值.</p><p> 電源開(kāi)機(jī)設(shè)定電壓輸出默認(rèn)值為5V。通過(guò)步進(jìn)增減按鍵功能選擇可在不同的設(shè)定參數(shù)之間切換,再按確認(rèn)鍵進(jìn)入設(shè)定電壓輸出狀態(tài)。若按復(fù)位鍵,則電壓輸出恢復(fù)5V。系統(tǒng)設(shè)有自動(dòng)
16、識(shí)別功能,將不接受超出使用范圍(0~12V)的設(shè)定值。</p><p><b> 三、方案論證</b></p><p> 3.1 穩(wěn)壓電源的分類(lèi)</p><p> 穩(wěn)壓電源的分類(lèi)方法繁多,按輸出電源的類(lèi)型分有直流穩(wěn)壓電源和交流穩(wěn)壓電源;按穩(wěn)壓電路與負(fù)載的連接方式分有串聯(lián)穩(wěn)壓電源和并聯(lián)穩(wěn)壓電源;按調(diào)整管的工作狀態(tài)分有線(xiàn)性穩(wěn)壓電源和開(kāi)關(guān)穩(wěn)壓
17、電源;按電路類(lèi)型分有簡(jiǎn)單穩(wěn)壓電源和反饋型穩(wěn)壓電源,等等。如此繁多的分類(lèi)方式會(huì)讓我們摸不著頭腦,不知道從哪里入手。我們必須弄清楚各個(gè)類(lèi)別的特點(diǎn),才能從中選出最佳方案。</p><p> 3.2 穩(wěn)壓電源設(shè)計(jì)方案</p><p> 方案:輸出可調(diào)的開(kāi)關(guān)電源</p><p> 開(kāi)關(guān)電源的功能元件工作在開(kāi)關(guān)狀態(tài),因而效率高,輸出功率大;且容易實(shí)現(xiàn)短路保護(hù)與過(guò)流保護(hù),
18、只是電路在低輸出電壓時(shí)開(kāi)關(guān)頻率低,紋波大,穩(wěn)定度差。</p><p> 綜合考慮效率,輸出功率,輸入輸出電壓,負(fù)載調(diào)整率, 本設(shè)計(jì)選用方案三,要求較低,較易實(shí)現(xiàn).對(duì)于效率和紋波的要求可以通過(guò)仔細(xì)調(diào)整磁性元件的參數(shù)(L,Q,M等)使其工作在最佳狀態(tài)。我們?cè)谶x擇方案的時(shí)候考慮到電路要簡(jiǎn)單,元件要容易找,所以我們選擇了上述的方案中的第三個(gè)方案。</p><p> 穩(wěn)壓電路部分可以采用三極管等
19、分立元件來(lái)實(shí)現(xiàn),也可以采用集成三端集成穩(wěn)壓芯片。從性?xún)r(jià)比來(lái)說(shuō),采用三端集成穩(wěn)壓芯片來(lái)實(shí)現(xiàn)要好很多,現(xiàn)在的穩(wěn)壓芯片功能強(qiáng)大,且價(jià)格低廉,很適合我們此次的設(shè)計(jì)。</p><p> 3.3 三端集成穩(wěn)壓芯片</p><p> 方案:采用LM317可調(diào)式三端穩(wěn)壓器電源</p><p> LM317可調(diào)式三端穩(wěn)壓器電源能夠連續(xù)輸出可調(diào)的直流電壓. </p>
20、<p> 不過(guò)它只能連續(xù)調(diào)正電壓,穩(wěn)壓器內(nèi)部含有過(guò)流,過(guò)熱保護(hù)電路;由一個(gè)電阻(R)和一個(gè)可變電位器(RP)組成電壓輸出調(diào)節(jié)電路,輸出電壓為:Vo=1.25(1+RP/R).</p><p> 3.4 數(shù)字顯示部分</p><p> 方案:用Atmage16實(shí)現(xiàn)模數(shù)轉(zhuǎn)換</p><p> 利用單片機(jī)的軟硬件資源實(shí)現(xiàn)高精度高速A/D轉(zhuǎn)換,轉(zhuǎn)換精
21、度和轉(zhuǎn)換速度還可以通過(guò)軟件來(lái)改變,價(jià)格也低廉。不過(guò)對(duì)軟件部分要求較高。</p><p><b> 四、系統(tǒng)硬件設(shè)計(jì)</b></p><p><b> 1、電路原理</b></p><p> 電路系統(tǒng)結(jié)構(gòu)如圖1所示,系統(tǒng)選用Atmage16單片機(jī)為控制核心,外部擴(kuò)展1602驅(qū)動(dòng)芯片用以實(shí)現(xiàn)電壓輸出功能,同時(shí)1602液晶
22、顯示相應(yīng)的輸出電壓值。單片機(jī)計(jì)算設(shè)定值與A/D轉(zhuǎn)換采樣反饋值的偏差以及偏差的變化率,得出相應(yīng)的輸出值,由D/A轉(zhuǎn)換變換為模擬量去驅(qū)動(dòng)電壓輸出控制電路,從而使電壓穩(wěn)定在設(shè)定值。</p><p> 圖1 電路系統(tǒng)結(jié)構(gòu)圖</p><p><b> 2、硬件模塊分析</b></p><p> 2.1 ATmage16單片機(jī)模塊</p>
23、<p> 1)ATmage16的簡(jiǎn)介</p><p> ATmega16是AVR系列單片機(jī)中比較典型的芯片,其主要特點(diǎn)有:</p><p> ?。?)采用先進(jìn)RISC結(jié)構(gòu)的AVR內(nèi)核(2)片內(nèi)含有較大容量的非易失性的程序和數(shù)據(jù)存儲(chǔ)器(3)片內(nèi)含JTAG接口(4)寬電壓、高速度、低功耗(5)片內(nèi)含上電復(fù)位電路以及可編程的掉電檢測(cè)復(fù)位電路BOD;片內(nèi)含有1M/2M/4M/8M
24、,經(jīng)過(guò)標(biāo)定的、可校正的RC振蕩器,可作為系統(tǒng)時(shí)鐘使用;多達(dá)21個(gè)各種類(lèi)型的內(nèi)外部中斷源;有6種休眠模式支持省電方式工作等等。</p><p> 2)ATmage16的引腳分析</p><p> 其外部引腳封裝如圖2所示</p><p> 圖2 ATmage16 外部引腳與封裝示意圖</p><p> 其中,各個(gè)引腳的功能如下:<
25、;/p><p> 電源、系統(tǒng)晶振、芯片復(fù)位引腳</p><p> Vcc: 芯片供電(片內(nèi)數(shù)字電路電源)輸入引腳,使用時(shí)連接到電源正極。</p><p> AVcc:為端口A和片內(nèi)ADC模擬電路電源輸入引腳。不使用ADC時(shí),直接連接到電源正極;使用ADC時(shí),應(yīng)通過(guò)一個(gè)低通電源濾波器與Vcc連接。</p><p> AREF:使用ADC時(shí),
26、可作為外部ADC參考源的輸入引腳。</p><p> GND: 芯片接地引腳,使用時(shí)接地。</p><p> XTAL2:片內(nèi)反相振蕩放大器的輸出端。</p><p> XTAL1:片內(nèi)反相振蕩放大器和內(nèi)部時(shí)鐘操作電路的輸入端。</p><p> RESET:RESET為芯片復(fù)位輸入引腳。在該引腳上施加(拉低)一個(gè)最小脈沖寬度為1.5
27、us的低電平,將引起芯片的硬件復(fù)位(外部復(fù)位)。</p><p> 32根I/O引腳,分成PA、PB、PC和PD四個(gè)8位端口,他們?nèi)渴强删幊炭刂频碾p(多)功能復(fù)用的I/O引腳(口)。</p><p> 四個(gè)端口的第一功能是通用的雙向數(shù)字輸入/輸出(I/O)口,其中每一位都可以由指令設(shè)置為獨(dú)立的輸入口,或輸出口。當(dāng)I/O設(shè)置為輸入時(shí),引腳內(nèi)部還配置有上拉電阻,這個(gè)內(nèi)部的上拉電阻可通過(guò)編
28、程設(shè)置為上拉有效或上拉無(wú)效。</p><p> 如果AVR的I/O口設(shè)置為輸出方式工作,當(dāng)其輸出高電平時(shí),能夠輸出20mA的電流,而當(dāng)其輸出低電平時(shí),可以吸收40mA的電流。因此AVR的I/O口驅(qū)動(dòng)能力非常強(qiáng),能夠直接驅(qū)動(dòng)LED發(fā)光二極管、數(shù)碼管等。而早期單片機(jī)I/O口的驅(qū)動(dòng)能力只有5mA,驅(qū)動(dòng)LED時(shí),還需要增加外部的驅(qū)動(dòng)電路和器件。</p><p> 芯片Reset復(fù)位后,所有I/
29、O口的缺省狀態(tài)為輸入方式,上拉電阻無(wú)效,即I/O為輸入高阻的三態(tài)狀態(tài)。</p><p> 3)ATmage16在電路中的主控作用</p><p> 應(yīng)用ATmage16 主要完成PWM 波的輸出及控制功能。它可以先產(chǎn)生一定脈寬的PWM 波,作為L(zhǎng)1603 驅(qū)動(dòng)電路輸入信號(hào),然后根據(jù)所需要的基準(zhǔn)電壓與檢測(cè)到的輸出電壓的比較,調(diào)整脈寬,即改變占空比,最終實(shí)現(xiàn)高性能可調(diào)直流穩(wěn)壓。</p
30、><p> 圖3內(nèi)部晶體振蕩器外接電路</p><p><b> L6203驅(qū)動(dòng)模塊</b></p><p> L6203驅(qū)動(dòng)模塊就是將5V的輸入電壓變成Vin的電壓24V,一方面提高電壓,一方面提高電流。電源驅(qū)動(dòng)芯片的選擇,由于器材的限制以及使用CMOS管需要的驅(qū)動(dòng)需要注意比較多的前級(jí)推動(dòng),如果直接使用電機(jī)驅(qū)動(dòng)芯片L6203,其價(jià)格實(shí)惠,電
31、路簡(jiǎn)單而且效果非常好。</p><p> 圖4 L6203驅(qū)動(dòng)模塊</p><p> 圖5 L6203的外觀(guān)圖</p><p><b> 5V系統(tǒng)電源模塊</b></p><p> 單片機(jī)要工作需要有5V電源輸入,本設(shè)計(jì)采用7805穩(wěn)壓電源電路</p><p> 圖6 5V系統(tǒng)電源模塊&
32、lt;/p><p> 1602液晶顯示模塊</p><p> 如果采用數(shù)碼管顯示,其價(jià)格便宜,但是占用端口較多,功耗大、顯示不功能不全。而用1602液晶顯示,則占用端口少,顯示功能較全面,驅(qū)動(dòng)電流小。所以選擇選擇1602液晶顯示。</p><p> 圖7 給出1602 字符液晶作為信號(hào)顯示部分</p><p> 圖7 1602液晶顯示模塊
33、</p><p> 輸出電壓采集反饋電路模塊</p><p> 圖8 輸出電壓采集反饋電路</p><p><b> 五、系統(tǒng)的軟件設(shè)計(jì)</b></p><p><b> 1 程序設(shè)計(jì)</b></p><p> 數(shù)控直流穩(wěn)壓電源的程序主要包括3個(gè)方面的內(nèi)容:一是單片
34、機(jī)從按鍵中讀取數(shù)據(jù),而后和原有的輸出電壓進(jìn)行比較;二是利用按鍵進(jìn)行輸出的調(diào)整;三是從單片機(jī)中讀取數(shù)據(jù)傳輸?shù)?602液晶顯示器,進(jìn)而顯示輸出電壓值。</p><p> 2.程序流程圖如圖9所示</p><p><b> 圖9程序流程圖</b></p><p><b> 六.結(jié)束語(yǔ)</b></p><
35、p> 利用單片機(jī)對(duì)直流穩(wěn)壓電源進(jìn)行控制,改善了電源的性能,使用方便靈活,且成本較低。另一方面,根據(jù)對(duì)電源的新要求,控制系統(tǒng)在軟件上還可進(jìn)一步改進(jìn),以擴(kuò)展其功能,而并不需要增加硬件開(kāi)銷(xiāo),從而提高了電源的性能價(jià)格比。</p><p><b> 七.參考文獻(xiàn)</b></p><p> [1]王兆安,黃俊.電力電子技術(shù)[M].北京:機(jī)械工業(yè)出版社,2005<
36、/p><p> [2]李文元.高精度工業(yè)用可調(diào)直流電源的設(shè)計(jì)和制造[R].蘭州理工大學(xué),2000.</p><p> [3]張毅剛.單片機(jī)原理及應(yīng)用I-M].北京:高等教育出版社,2004</p><p> [4]E33范立南.單片微型計(jì)算機(jī)控制系統(tǒng)設(shè)計(jì)[M].北京;人民郵電出版社,2004</p><p> [5]王水平,史俊杰,田慶安
37、.開(kāi)關(guān)穩(wěn)壓電源—原理、設(shè)計(jì)及實(shí)用電路(修訂版)[M].西安:西安電子科技大學(xué)出版社,2005</p><p> [6]潘永雄.新編單片機(jī)原理與應(yīng)用[M].西安:西安電子科技大學(xué)出版社,2003</p><p> 附錄1(電路原理圖)</p><p> 附錄2(數(shù)控直流穩(wěn)壓電源程序)</p><p> /****************
38、*************************************</p><p> This program was produced by the</p><p> CodeWizardAVR V1.25.7a Evaluation</p><p> Automatic Program Generator</p><p>
39、 ?Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l.</p><p> http://www.hpinfotech.com</p><p> Project : </p><p> Version : </p><p> Date : 2010-5-20</p>
40、<p> Author : Freeware, for evaluation and non-commercial use only</p><p> Company : </p><p> Comments: </p><p> Chip type : ATmega16</p><p> Pro
41、gram type : Application</p><p> Clock frequency : 8.000000 MHz</p><p> Memory model : Small</p><p> External SRAM size : 0</p><p> Data Stack siz
42、e : 256</p><p> *****************************************************/</p><p> #include <mega16.h></p><p> #include "1602.c"</p><p> #include &q
43、uot;adc.c" </p><p> /*------------------------------------------------------</p><p><b> 全局定義</b></p><p> -----------------------------------------------------*/&
44、lt;/p><p> #define choice 0x7e</p><p> #define up PIND.6</p><p> #define down PIND.0</p><p> #define right PIND.2</p
45、><p> #define left PIND.1</p><p> #define ok PIND.3 </p><p> #define Enable PORTD.7 </p><p> /**********************定義界面內(nèi)
46、容*******/</p><p> flash uchar set1[]="Plese set Volt: ";</p><p> //flash uchar shu[]="0123456789.";</p><p> flash uchar putvolt[]=" Volt: &quo
47、t;;</p><p> flash uchar putamp[]=" Amp: ";</p><p> flash uchar start[]="Starting";</p><p> //flash uchar error[]="error";</p><
48、p> uint volt=50;</p><p> /*------------------------------------------------------</p><p> 功能:進(jìn)入系統(tǒng)的初始化函數(shù)</p><p> -----------------------------------------------------*/</p
49、><p> void intosys()</p><p><b> {</b></p><p><b> uchar i;</b></p><p> lcd_init();</p><p> write_com(lcd_clr);</p><p>
50、; write_com(0x80);</p><p> delay_ms(5);</p><p> for(i=0;i<8;i++)</p><p><b> {</b></p><p> write_data(start[i]); //啟動(dòng)開(kāi)機(jī)界面</p><p>
51、 delay_ms(2); //延時(shí)寫(xiě)入,可以防止液晶處于忙狀態(tài)</p><p><b> }</b></p><p> write_com(0x80+0x40);</p><p> delay_ms(5);</p><p> for(i=0;i<16;i++)</p
52、><p><b> {</b></p><p> write_data('-');</p><p> delay_ms(100);</p><p><b> } </b></p><p><b> }</b></p>
53、<p> /*------------------------------------------------------</p><p> 用戶(hù)界面一,設(shè)置界面</p><p> -----------------------------------------------------*/</p><p> void user_1()</
54、p><p><b> {</b></p><p><b> uchar i;</b></p><p> write_com(lcd_clr);</p><p> write_com(0x80);</p><p> delay_ms(5);</p><
55、p> for(i=0;i<16;i++)</p><p><b> {</b></p><p> write_data(putvolt[i]);</p><p> delay_ms(5);</p><p><b> }</b></p><p> wri
56、te_com(0x80+0x40);</p><p> delay_ms(5);</p><p> for(i=0;i<16;i++)</p><p><b> {</b></p><p> write_data(putamp[i]);</p><p> delay_ms(5);&
57、lt;/p><p><b> } </b></p><p><b> };</b></p><p> /*------------------------------------------------------</p><p> 用戶(hù)界面2,輸出狀態(tài)下</p><p&
58、gt; -----------------------------------------------------*/</p><p> void user_2()</p><p><b> {</b></p><p><b> uchar i;</b></p><p> write_co
59、m(lcd_clr);</p><p> write_com(0x80+1);</p><p> delay_ms(5);</p><p> for(i=0;i<16;i++)</p><p><b> {</b></p><p> write_data(putvolt[i]);&
60、lt;/p><p> delay_ms(3);</p><p><b> }</b></p><p> write_com(0x80+0x40);</p><p> delay_ms(5);</p><p> for(i=0;i<16;i++)</p><p>
61、<b> {</b></p><p> write_data(set1[i]);</p><p> delay_ms(3);</p><p><b> } </b></p><p><b> }</b></p><p> /*--
62、----------------------------------------------------</p><p> 顯示數(shù)據(jù)函數(shù),將數(shù)據(jù)分開(kāi)</p><p> -----------------------------------------------------*/</p><p> void show_data(uint data)</p&
63、gt;<p><b> {</b></p><p> char ch1,ch2,ch3;</p><p> ch1=data/100;</p><p> ch2=data/10%10;</p><p> ch3=data%10;</p><p> if(ch1==0)&l
64、t;/p><p><b> {</b></p><p> write_data(0x30+ch2);</p><p> delay_ms(4);</p><p> write_data('.');</p><p> delay_ms(4);</p><p&
65、gt; write_data(0x30+ch3);</p><p> delay_ms(4);</p><p> write_data(0x20);</p><p><b> }</b></p><p><b> else</b></p><p><b>
66、 {</b></p><p> write_data(0x30+ch1);</p><p> delay_ms(4);</p><p> write_data(0x30+ch2);</p><p> delay_ms(4);</p><p> write_data('.');&l
67、t;/p><p> delay_ms(4);</p><p> write_data(0x30+ch3);</p><p> delay_ms(4);</p><p><b> }</b></p><p><b> }</b></p><p>
68、 /*------------------------------------------------------</p><p><b> 顯示電壓值</b></p><p> -----------------------------------------------------*/</p><p> void show_volt(
69、uint data)</p><p><b> {</b></p><p> write_com(0x80+6);</p><p> show_data( data);</p><p><b> }</b></p><p> /*------------------
70、------------------------------------</p><p><b> 顯示電流值</b></p><p> -----------------------------------------------------*/</p><p> void show_amp(uint data)</p>
71、<p><b> {</b></p><p> char ch1,ch2,ch3,ch4;</p><p> write_com(0x80+0x45);</p><p> ch1=data/1000;</p><p> ch2=data/100%10;</p><p> ch
72、3=data/10%10;</p><p> ch4=data%10;</p><p> write_data(0x30+ch1);</p><p> delay_ms(4); </p><p> write_data('.');</p><p> delay_ms(4);</p&
73、gt;<p> write_data(0x30+ch2);</p><p> delay_ms(4);</p><p> write_data(0x30+ch3);</p><p> delay_ms(4);</p><p> write_data(0x30+ch4);</p><p> de
74、lay_ms(4); </p><p><b> }</b></p><p> /*------------------------------------------------------</p><p><b> 讀取電流值</b></p><p> --------
75、---------------------------------------------*/</p><p> uint Read_Amp()</p><p><b> {</b></p><p> unsigned int freeback_amp,ampdata[],temp;</p><p> uchar
76、 chi,i,j;</p><p> for(chi=0;chi<50;chi++)</p><p><b> {</b></p><p> ampdata[chi]=mega16_ad(0)*2.6/10;</p><p> //delay_ms(2);</p><p><b
77、> }</b></p><p> for(i=0;i<50;i++)</p><p><b> {</b></p><p> for(j=0;j<50;j++)</p><p><b> {</b></p><p> if(ampda
78、ta[i]<ampdata[j])</p><p><b> {</b></p><p> temp=ampdata[i];</p><p> ampdata[i]=ampdata[j];</p><p> ampdata[j]=temp;</p><p><b> }
79、 </b></p><p><b> }</b></p><p><b> }</b></p><p> freeback_amp=(ampdata[24]+ampdata[25]+ampdata[26])/3;</p><p> return freeback_amp;<
80、/p><p><b> }</b></p><p> /*------------------------------------------------------</p><p><b> 讀取輸出電壓</b></p><p> -------------------------------
81、----------------------*/</p><p> uint Read_Output_Volt()</p><p><b> {</b></p><p> unsigned int freeback_volt,data[],temp;</p><p> uchar chi,i,j;</p&g
82、t;<p> for(chi=0;chi<30;chi++)</p><p><b> {</b></p><p> data[chi]=mega16_ad(1)*0.15;</p><p> //delay_ms(2);</p><p><b> }</b></
83、p><p> for(i=0;i<30;i++)</p><p><b> {</b></p><p> for(j=0;j<30;j++)</p><p><b> {</b></p><p> if(data[i]<data[j])</p&g
84、t;<p><b> {</b></p><p> temp=data[i];</p><p> data[i]=data[j];</p><p> data[j]=temp;</p><p><b> } </b></p><p><b>
85、; }</b></p><p><b> }</b></p><p> freeback_volt=(data[14]+data[15]+data[16])/3;</p><p> return freeback_volt;</p><p><b> }</b></p&g
86、t;<p> /*------------------------------------------------------</p><p><b> 輸出與設(shè)置比較程序</b></p><p> -----------------------------------------------------*/</p><p>
87、; void cheak()</p><p><b> { </b></p><p> show_volt(Read_Output_Volt());</p><p> while(Read_Output_Volt()>volt)</p><p><b> { </b><
88、;/p><p><b> OCR1B--;</b></p><p> delay_ms(3);</p><p><b> }</b></p><p> while(Read_Output_Volt()<volt)</p><p><b> { </
89、b></p><p><b> OCR1B++; </b></p><p> delay_ms(3);</p><p><b> }</b></p><p> show_amp(Read_Amp());</p><p><b> } </b&g
90、t;</p><p> /*------------------------------------------------------</p><p><b> 電壓設(shè)置1</b></p><p> -----------------------------------------------------*/</p>&l
91、t;p> void user_set1()</p><p><b> {</b></p><p><b> user_2();</b></p><p> Enable=0; </p><p><b> while(ok)</b></p><p
92、><b> {</b></p><p><b> SREG.0=0;</b></p><p><b> if(up==0)</b></p><p><b> {</b></p><p><b> volt++;</b>
93、</p><p> delay_ms(50);</p><p><b> }</b></p><p> else if(down==0)</p><p><b> {</b></p><p><b> volt--;</b></p>
94、<p> delay_ms(50);</p><p><b> }</b></p><p> else if(right==0)</p><p> volt=volt-10;</p><p> else if(left==0)</p><p> volt=volt+10;
95、</p><p> if(SREG.0==1)</p><p><b> {</b></p><p><b> volt=0;</b></p><p><b> }</b></p><p> if(volt>120)</p>
96、<p><b> {</b></p><p><b> volt=120;</b></p><p><b> }</b></p><p> delay_ms(100);</p><p> show_volt(volt); </p>
97、<p><b> }</b></p><p> OCR1B=1.7*volt; </p><p> Enable=1; </p><p><b> }</b></p><p> /*-----------------------------------------------
98、-------</p><p> 電壓設(shè)置2,輸出不關(guān)閉的情況調(diào)節(jié)電壓</p><p> -----------------------------------------------------*/</p><p> void user_set2()</p><p><b> {</b></p>
99、<p><b> while(1)</b></p><p><b> {</b></p><p> while(ok) /*當(dāng)確定鍵沒(méi)有被按下時(shí)使用up/down按鍵實(shí)時(shí)調(diào)節(jié)輸出電壓</p><p> 并且可以查看電流*/</p><p> { SREG.0=0;<
100、;/p><p><b> if(up==0)</b></p><p> { volt++; }</p><p> else if(down==0)</p><p> { volt--; }</p><p> else if(right==0)</p><p>
101、{volt=volt-10;}</p><p> else if(left==0)</p><p> { volt=volt+10; }</p><p> if(SREG.0==1)</p><p><b> {</b></p><p><b> volt=0;</b&g
102、t;</p><p> //OCR1B=1.7*volt;</p><p><b> }</b></p><p> if(volt>120)</p><p><b> {</b></p><p><b> volt=120;</b><
103、;/p><p> //OCR1B=1.7*volt; </p><p><b> }</b></p><p> delay_ms(100);</p><p> //show_volt(volt); </p><p><b> Enable=1;</b></p>
104、;<p><b> cheak(); </b></p><p><b> };</b></p><p> //delay_ms(20);</p><p> while(~ok);</p><p> user_set1();</p><p><b&
105、gt; user_1();</b></p><p><b> }</b></p><p><b> }</b></p><p> /*------------------------------------------------------</p><p><b>
106、 主函數(shù)</b></p><p> -----------------------------------------------------*/</p><p> void main()</p><p><b> {</b></p><p> DDRD=0xB0;</p><p&
107、gt; PORTD=0X4F;</p><p> TCCR1A=0Xa1; //8位快速PWM,OC1A為普通用途,OC1B為PWM</p><p> TCCR1B=0X09; //無(wú)預(yù)分頻位,fpwm=8000000/256=31.5k </p><p> delay_ms(100);</p><p>
108、; intosys(); </p><p> //Enable=1;</p><p> user_set1();</p><p><b> user_1();</b></p><p> user_set2();</p><p><b> }</b></p&g
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)論文——數(shù)控直流穩(wěn)壓電源
- 數(shù)控直流穩(wěn)壓電源畢業(yè)論文
- 畢業(yè)論文數(shù)控直流穩(wěn)壓電源完整論文
- 直流穩(wěn)壓電源畢業(yè)論文
- 直流穩(wěn)壓電源畢業(yè)論文
- 直流穩(wěn)壓電源畢業(yè)論文
- 直流穩(wěn)壓電源畢業(yè)論文--5v直流穩(wěn)壓電源設(shè)計(jì)報(bào)告
- 晶閘管直流穩(wěn)壓電源畢業(yè)論文
- 集成直流穩(wěn)壓電源畢業(yè)論文
- 直流穩(wěn)壓電源設(shè)計(jì)畢業(yè)論文
- 直流穩(wěn)壓電源設(shè)計(jì)畢業(yè)論文
- 數(shù)控直流穩(wěn)壓電源畢業(yè)設(shè)計(jì)論文
- 數(shù)控直流穩(wěn)壓電源
- 直流穩(wěn)壓電源論文-可調(diào)穩(wěn)壓電源
- 數(shù)控直流穩(wěn)壓電源完整論文
- 集成直流穩(wěn)壓電源設(shè)計(jì)畢業(yè)論文
- 畢業(yè)設(shè)計(jì)--數(shù)控直流穩(wěn)壓電源
- 數(shù)控直流穩(wěn)壓電源完整畢業(yè)設(shè)計(jì)論文
- 數(shù)控直流穩(wěn)壓電源完整論文資料
- 數(shù)控直流穩(wěn)壓電源完整論文.doc
評(píng)論
0/150
提交評(píng)論