版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
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)壓電源的分類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)硬件設計9</p><p><b> 1、電路原理9</b></p><p> 2、硬件模
3、塊分析10</p><p> 2.1 ATmage16單片機模塊9</p><p> 2.2 L6203驅動模塊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)的軟件設計15</p><p><b> 1 程序設計15</b></p><p> 2.程序流程圖16</p><p><b> 六.結束語16</b></p><p><b> 七.參考文獻17</b></p>&l
5、t;p> 附錄1(電路原理圖)18</p><p> 附錄2(電子萬年歷程序)19</p><p><b> 摘要</b></p><p> 將單片機數(shù)字控制技術,有機地融入直流穩(wěn)壓電源的設計中,設計出一款數(shù)字化通用直流穩(wěn)壓電源。該電源具有液晶顯示、數(shù)字輸入調壓、電壓調節(jié)精度高的特點。通過軟件編程,易于實現(xiàn)功能的擴展。<
6、/p><p> AVR 系列的單片機不僅具有良好的集成性能, 而且都具備在線編程接口, 其中的Mega 系列還具備JTAG 仿真和下載功能; 含有片內(nèi)看門狗電路、片內(nèi)程序Flash、同步串行接口SPI; 多數(shù)AVR 單片機還內(nèi)嵌了A/D 轉換器、EEPROM</p><p> 、模擬比較器、PWM 定時計數(shù)器等多種功能; AVR 單片機的I/O 接口具有很強的驅動能力, 灌入電流可直接驅動
7、繼電器、LCD 等元件, 從而省去驅動電路, 節(jié)約系統(tǒng)成本。</p><p> 關鍵詞:直流穩(wěn)壓電源,AVR單片機,液晶顯示</p><p><b> 一、前言</b></p><p> 電源技術尤其是數(shù)控電源技術是一門實踐性很強的工程技術,服務于各行各業(yè)。電力電子技術是電能的最佳應用技術之一。當今電源技術融合了電氣、電子、系統(tǒng)集成、控制
8、理論、材料等諸多學科領域。隨著計算機和通訊技術發(fā)展而來的現(xiàn)代信息技術革命,給電力電子技術提供了廣闊的發(fā)展前景,同時也給電源提出了更高的要求。隨著數(shù)控電源在電子裝置中的普遍使用,普通電源在工作時產(chǎn)生的誤差,會影響整個系統(tǒng)的精確度。電源在使用時會造成很多不良后果,世界各國紛紛對電源產(chǎn)品提出了不同要求并制定了一系列的產(chǎn)品精度標準。只有滿足產(chǎn)品標準,才能夠進入市場。隨著經(jīng)濟全球化的發(fā)展,滿足國際標準的產(chǎn)品才能獲得進出的通行證。數(shù)控電源是從80年
9、代才真正的發(fā)展起來的,期間系統(tǒng)的電力電子理論開始建立。這些理論為其后來的發(fā)展提供了一個良好的基礎。在以后的一段時間里,數(shù)控電源技術有了長足的發(fā)展。但其產(chǎn)品存在數(shù)控程度達不到要求、分辨率不高、功率密度比較低、可靠性較差的缺點。因此數(shù)控電源主要的發(fā)展方向,是針對上述缺點不斷加以改善。單片機技術及電壓轉換模塊的出現(xiàn)為精確數(shù)控電源的發(fā)展提供了有利的條件。新的變換技術和控制理論的不斷發(fā)展,各種類型專用集成電路、數(shù)字</p><
10、p> 在家用電器和其他各類電子設備中,通常都需要電壓穩(wěn)定的直流電源供電。但在實際生活中,都是由220V 的交流電網(wǎng)供電。這就需要通過變壓、整流、濾波、穩(wěn)壓電路將交流電轉換成穩(wěn)定的直流電。濾波器用于濾去整流輸出電壓中的紋波,一般傳統(tǒng)電路由濾波扼流圈和電容器組成,若由晶體管濾波器來替代,則可縮小直流電源的體積,減輕其重量,且晶體管濾波直流電源不需直流穩(wěn)壓器就能用作家用電器的電源,這既降低了家用電器的成本,又縮小了其體積,使家用電器小
11、型化。傳統(tǒng)的直流穩(wěn)壓電源通常采用電位器和波段開關來實現(xiàn)電壓的調節(jié),并由電壓表指示電壓值的大小. 因此,電壓的調整精度不高,讀數(shù)欠直觀,電位器也易磨損.而基于單片機控制的直流穩(wěn)壓電源能較好地解決以上傳統(tǒng)穩(wěn)壓電源的不足。</p><p> 從上世紀九十年代末起,隨著對系統(tǒng)更高效率和更低功耗的需求,電信與數(shù)據(jù)通訊設備的技術更新推動電源行業(yè)中直流/直流電源轉換器向更高靈活性和智能化方向發(fā)展。整流系統(tǒng)由以前的分立元件和集
12、成電路控制發(fā)展為微機控制, 從而使直流電源智能化, 基本實現(xiàn)了直流電源的無人值守 。直流穩(wěn)壓電源是最常用的儀器設備, 在科研及實驗中都是必不可少的。數(shù)控電源采用按鍵盤,可對輸出電壓進行設置, 輸出由單片機通過D/A,控制驅動模塊輸出一個穩(wěn)定電壓。同時穩(wěn)壓方法采用單片機控制, 單片機通過A/D 采樣輸出電壓, 與設定值進行比較, 若有偏差則調整輸出, 越限則輸出報警信號并截流。工作過程中, 穩(wěn)壓電源的工作狀態(tài)(輸出電壓、電流等各
13、種工作狀態(tài)) 均由單片機輸出驅動LCD顯示, 由鍵盤控制進行動態(tài)邏輯切換。以單片機為核心的智能化高精度簡易直流電源的設計,電源采用數(shù)字調節(jié)、輸出精度高, 特別適用于各種有較高精度要求的場合。</p><p> 電源采用數(shù)字控制,具有以下明顯優(yōu)點:</p><p> 1)易于采用先進的控制方法和智能控制策略,使電源模塊的智能化程度更高,性能更完美。</p><p>
14、; 2)控制靈活,系統(tǒng)升級方便,甚至可以在線修改控制算法,而不必改動硬件線路。</p><p> 3)控制系統(tǒng)的可靠性提高,易于標準化,可以針對不同的系統(tǒng)(或不同型號的產(chǎn)品),采用統(tǒng)一的控制板,而只是對控制軟件做一些調整即可。</p><p><b> 二、系統(tǒng)功能</b></p><p> 系統(tǒng)電壓調節(jié)范圍為0~12V,最大輸出電流1
15、A,具有過載和短路保護功能。輸出電壓可用1602LCD液晶顯示。鍵盤設有6個鍵,復位鍵,步進增減1V兩個鍵,步進增減0.1V兩個鍵以及確認鍵。復位鍵用于啟動參數(shù)設定狀態(tài)(5V),步進增減鍵用于設定參數(shù)數(shù)值,確認鍵用于確認輸出設定值.</p><p> 電源開機設定電壓輸出默認值為5V。通過步進增減按鍵功能選擇可在不同的設定參數(shù)之間切換,再按確認鍵進入設定電壓輸出狀態(tài)。若按復位鍵,則電壓輸出恢復5V。系統(tǒng)設有自動
16、識別功能,將不接受超出使用范圍(0~12V)的設定值。</p><p><b> 三、方案論證</b></p><p> 3.1 穩(wěn)壓電源的分類</p><p> 穩(wěn)壓電源的分類方法繁多,按輸出電源的類型分有直流穩(wěn)壓電源和交流穩(wěn)壓電源;按穩(wěn)壓電路與負載的連接方式分有串聯(lián)穩(wěn)壓電源和并聯(lián)穩(wěn)壓電源;按調整管的工作狀態(tài)分有線性穩(wěn)壓電源和開關穩(wěn)壓
17、電源;按電路類型分有簡單穩(wěn)壓電源和反饋型穩(wěn)壓電源,等等。如此繁多的分類方式會讓我們摸不著頭腦,不知道從哪里入手。我們必須弄清楚各個類別的特點,才能從中選出最佳方案。</p><p> 3.2 穩(wěn)壓電源設計方案</p><p> 方案:輸出可調的開關電源</p><p> 開關電源的功能元件工作在開關狀態(tài),因而效率高,輸出功率大;且容易實現(xiàn)短路保護與過流保護,
18、只是電路在低輸出電壓時開關頻率低,紋波大,穩(wěn)定度差。</p><p> 綜合考慮效率,輸出功率,輸入輸出電壓,負載調整率, 本設計選用方案三,要求較低,較易實現(xiàn).對于效率和紋波的要求可以通過仔細調整磁性元件的參數(shù)(L,Q,M等)使其工作在最佳狀態(tài)。我們在選擇方案的時候考慮到電路要簡單,元件要容易找,所以我們選擇了上述的方案中的第三個方案。</p><p> 穩(wěn)壓電路部分可以采用三極管等
19、分立元件來實現(xiàn),也可以采用集成三端集成穩(wěn)壓芯片。從性價比來說,采用三端集成穩(wěn)壓芯片來實現(xiàn)要好很多,現(xiàn)在的穩(wěn)壓芯片功能強大,且價格低廉,很適合我們此次的設計。</p><p> 3.3 三端集成穩(wěn)壓芯片</p><p> 方案:采用LM317可調式三端穩(wěn)壓器電源</p><p> LM317可調式三端穩(wěn)壓器電源能夠連續(xù)輸出可調的直流電壓. </p>
20、<p> 不過它只能連續(xù)調正電壓,穩(wěn)壓器內(nèi)部含有過流,過熱保護電路;由一個電阻(R)和一個可變電位器(RP)組成電壓輸出調節(jié)電路,輸出電壓為:Vo=1.25(1+RP/R).</p><p> 3.4 數(shù)字顯示部分</p><p> 方案:用Atmage16實現(xiàn)模數(shù)轉換</p><p> 利用單片機的軟硬件資源實現(xiàn)高精度高速A/D轉換,轉換精
21、度和轉換速度還可以通過軟件來改變,價格也低廉。不過對軟件部分要求較高。</p><p><b> 四、系統(tǒng)硬件設計</b></p><p><b> 1、電路原理</b></p><p> 電路系統(tǒng)結構如圖1所示,系統(tǒng)選用Atmage16單片機為控制核心,外部擴展1602驅動芯片用以實現(xiàn)電壓輸出功能,同時1602液晶
22、顯示相應的輸出電壓值。單片機計算設定值與A/D轉換采樣反饋值的偏差以及偏差的變化率,得出相應的輸出值,由D/A轉換變換為模擬量去驅動電壓輸出控制電路,從而使電壓穩(wěn)定在設定值。</p><p> 圖1 電路系統(tǒng)結構圖</p><p><b> 2、硬件模塊分析</b></p><p> 2.1 ATmage16單片機模塊</p>
23、<p> 1)ATmage16的簡介</p><p> ATmega16是AVR系列單片機中比較典型的芯片,其主要特點有:</p><p> ?。?)采用先進RISC結構的AVR內(nèi)核(2)片內(nèi)含有較大容量的非易失性的程序和數(shù)據(jù)存儲器(3)片內(nèi)含JTAG接口(4)寬電壓、高速度、低功耗(5)片內(nèi)含上電復位電路以及可編程的掉電檢測復位電路BOD;片內(nèi)含有1M/2M/4M/8M
24、,經(jīng)過標定的、可校正的RC振蕩器,可作為系統(tǒng)時鐘使用;多達21個各種類型的內(nèi)外部中斷源;有6種休眠模式支持省電方式工作等等。</p><p> 2)ATmage16的引腳分析</p><p> 其外部引腳封裝如圖2所示</p><p> 圖2 ATmage16 外部引腳與封裝示意圖</p><p> 其中,各個引腳的功能如下:<
25、;/p><p> 電源、系統(tǒng)晶振、芯片復位引腳</p><p> Vcc: 芯片供電(片內(nèi)數(shù)字電路電源)輸入引腳,使用時連接到電源正極。</p><p> AVcc:為端口A和片內(nèi)ADC模擬電路電源輸入引腳。不使用ADC時,直接連接到電源正極;使用ADC時,應通過一個低通電源濾波器與Vcc連接。</p><p> AREF:使用ADC時,
26、可作為外部ADC參考源的輸入引腳。</p><p> GND: 芯片接地引腳,使用時接地。</p><p> XTAL2:片內(nèi)反相振蕩放大器的輸出端。</p><p> XTAL1:片內(nèi)反相振蕩放大器和內(nèi)部時鐘操作電路的輸入端。</p><p> RESET:RESET為芯片復位輸入引腳。在該引腳上施加(拉低)一個最小脈沖寬度為1.5
27、us的低電平,將引起芯片的硬件復位(外部復位)。</p><p> 32根I/O引腳,分成PA、PB、PC和PD四個8位端口,他們?nèi)渴强删幊炭刂频碾p(多)功能復用的I/O引腳(口)。</p><p> 四個端口的第一功能是通用的雙向數(shù)字輸入/輸出(I/O)口,其中每一位都可以由指令設置為獨立的輸入口,或輸出口。當I/O設置為輸入時,引腳內(nèi)部還配置有上拉電阻,這個內(nèi)部的上拉電阻可通過編
28、程設置為上拉有效或上拉無效。</p><p> 如果AVR的I/O口設置為輸出方式工作,當其輸出高電平時,能夠輸出20mA的電流,而當其輸出低電平時,可以吸收40mA的電流。因此AVR的I/O口驅動能力非常強,能夠直接驅動LED發(fā)光二極管、數(shù)碼管等。而早期單片機I/O口的驅動能力只有5mA,驅動LED時,還需要增加外部的驅動電路和器件。</p><p> 芯片Reset復位后,所有I/
29、O口的缺省狀態(tài)為輸入方式,上拉電阻無效,即I/O為輸入高阻的三態(tài)狀態(tài)。</p><p> 3)ATmage16在電路中的主控作用</p><p> 應用ATmage16 主要完成PWM 波的輸出及控制功能。它可以先產(chǎn)生一定脈寬的PWM 波,作為L1603 驅動電路輸入信號,然后根據(jù)所需要的基準電壓與檢測到的輸出電壓的比較,調整脈寬,即改變占空比,最終實現(xiàn)高性能可調直流穩(wěn)壓。</p
30、><p> 圖3內(nèi)部晶體振蕩器外接電路</p><p><b> L6203驅動模塊</b></p><p> L6203驅動模塊就是將5V的輸入電壓變成Vin的電壓24V,一方面提高電壓,一方面提高電流。電源驅動芯片的選擇,由于器材的限制以及使用CMOS管需要的驅動需要注意比較多的前級推動,如果直接使用電機驅動芯片L6203,其價格實惠,電
31、路簡單而且效果非常好。</p><p> 圖4 L6203驅動模塊</p><p> 圖5 L6203的外觀圖</p><p><b> 5V系統(tǒng)電源模塊</b></p><p> 單片機要工作需要有5V電源輸入,本設計采用7805穩(wěn)壓電源電路</p><p> 圖6 5V系統(tǒng)電源模塊&
32、lt;/p><p> 1602液晶顯示模塊</p><p> 如果采用數(shù)碼管顯示,其價格便宜,但是占用端口較多,功耗大、顯示不功能不全。而用1602液晶顯示,則占用端口少,顯示功能較全面,驅動電流小。所以選擇選擇1602液晶顯示。</p><p> 圖7 給出1602 字符液晶作為信號顯示部分</p><p> 圖7 1602液晶顯示模塊
33、</p><p> 輸出電壓采集反饋電路模塊</p><p> 圖8 輸出電壓采集反饋電路</p><p><b> 五、系統(tǒng)的軟件設計</b></p><p><b> 1 程序設計</b></p><p> 數(shù)控直流穩(wěn)壓電源的程序主要包括3個方面的內(nèi)容:一是單片
34、機從按鍵中讀取數(shù)據(jù),而后和原有的輸出電壓進行比較;二是利用按鍵進行輸出的調整;三是從單片機中讀取數(shù)據(jù)傳輸?shù)?602液晶顯示器,進而顯示輸出電壓值。</p><p> 2.程序流程圖如圖9所示</p><p><b> 圖9程序流程圖</b></p><p><b> 六.結束語</b></p><
35、p> 利用單片機對直流穩(wěn)壓電源進行控制,改善了電源的性能,使用方便靈活,且成本較低。另一方面,根據(jù)對電源的新要求,控制系統(tǒng)在軟件上還可進一步改進,以擴展其功能,而并不需要增加硬件開銷,從而提高了電源的性能價格比。</p><p><b> 七.參考文獻</b></p><p> [1]王兆安,黃俊.電力電子技術[M].北京:機械工業(yè)出版社,2005<
36、/p><p> [2]李文元.高精度工業(yè)用可調直流電源的設計和制造[R].蘭州理工大學,2000.</p><p> [3]張毅剛.單片機原理及應用I-M].北京:高等教育出版社,2004</p><p> [4]E33范立南.單片微型計算機控制系統(tǒng)設計[M].北京;人民郵電出版社,2004</p><p> [5]王水平,史俊杰,田慶安
37、.開關穩(wěn)壓電源—原理、設計及實用電路(修訂版)[M].西安:西安電子科技大學出版社,2005</p><p> [6]潘永雄.新編單片機原理與應用[M].西安:西安電子科技大學出版社,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> 功能:進入系統(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]); //啟動開機界面</p><p>
51、 delay_ms(2); //延時寫入,可以防止液晶處于忙狀態(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> 用戶界面一,設置界面</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> 用戶界面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ù)分開</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> 輸出與設置比較程序</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> 電壓設置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> 電壓設置2,輸出不關閉的情況調節(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) /*當確定鍵沒有被按下時使用up/down按鍵實時調節(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; //無預分頻位,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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(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)壓電源設計報告
- 晶閘管直流穩(wěn)壓電源畢業(yè)論文
- 集成直流穩(wěn)壓電源畢業(yè)論文
- 直流穩(wěn)壓電源設計畢業(yè)論文
- 直流穩(wěn)壓電源設計畢業(yè)論文
- 數(shù)控直流穩(wěn)壓電源畢業(yè)設計論文
- 數(shù)控直流穩(wěn)壓電源
- 直流穩(wěn)壓電源論文-可調穩(wěn)壓電源
- 數(shù)控直流穩(wěn)壓電源完整論文
- 集成直流穩(wěn)壓電源設計畢業(yè)論文
- 畢業(yè)設計--數(shù)控直流穩(wěn)壓電源
- 數(shù)控直流穩(wěn)壓電源完整畢業(yè)設計論文
- 數(shù)控直流穩(wěn)壓電源完整論文資料
- 數(shù)控直流穩(wěn)壓電源完整論文.doc
評論
0/150
提交評論