

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、. - - . 可修編-選 修 課 設 計 (論 文) 題題 目目 開關電源模塊并聯供電系統設計 專專 業業電子信息工程班班 級級 111 112 班 姓姓 名名 鄧逸博 浙飛 汪超 指導教師指導教師王章權所在學院所在學院 信息學院 完成時間:2021 年 5 月. - - . 可修編-開關電源模塊并聯供電系統設計電子信息工程專業 鄧逸博 浙飛 汪超摘摘 要:要:本設計設計制作的是開關電源模塊并聯供電系統,能夠廣泛應用在小功率及各種電子設備領域,能夠輸出 8V 定壓,功率可到達 16W,并根據要求對兩路電流進展按比例分配。本系統由 DC/DC 模塊,均流、分流模塊,保護電路組成。DC/DC模塊
2、以 IRF9530 芯片為開關,配以 BUCK 的外圍電路實現 24V-8V 的降壓與穩壓。采用 LM328 比較電路實現電流和電壓的檢測,控制由 DC/DC 模塊構成的并聯供電系統均流與分流工作模式,通過比較器電路實現過流保護。同時進展 LCD1602 液晶同步顯示、獨立鍵盤輸入控制。輸入的值經過單片機處理程序來控制輸出電壓,且輸出電壓和電流可實時顯示。關鍵詞關鍵詞:DC/DC 模塊,BUCK,電流分流-. z目 錄一、緒論 1二、設計的目標與根本要求 1一 、設計目標 1二 、根本要求 2三、系統設計 2一 、系統框圖 2二 、硬件設計與方案選擇 31、單片機選擇 32、主電路選擇 33、
3、驅動電路圖 44、輔助電源 55、電流、電壓采樣 66、顯示、按鍵 7(三)、軟件設計 71、主程序 72、按鍵程序 83、液晶程序 94、采樣程序 105、中斷、PID 流程圖 11四、調試過程 12一 、遇到的問題及解決方法 12二 、數據分析 13五、體會與展望 14參考文獻 15附錄 15附錄 1整體電路圖 15附錄 2程序代碼 16-. z一、緒論分布式直流開關電源系統取代傳統的集中式直流開關電源系統已成為大功率電源系統的開展方向:1單臺大功率電源容易受技術、本錢的限制;2單臺直流開關電源故障會導致整個系統的故障,而分布式電源系統由假設干電源模塊并聯組成,*個電源模塊故障不會導致整個
4、電源故障;3可根據實際負荷的變化,自動確定需要投入運行的模塊數量或者解列退出的模塊數量,對變負荷運行很有意義;4由于多個電源模塊并聯運行,使每個電源模塊承受的電應力較小,具有較高的運行效率,且具有較好的動態和靜態特性。分布式電源系統需要解決的主要問題是實現多個并聯運行的模塊輸出一樣的功率。隨著通信電源技術的高速開展,電力電子設備與人們的工作、生活的關系日益密切,而通信電子設備都離不開可靠的電源。進入 20 世紀 80 年代,計算機電源全面實現了開關電源化,率先完成計算機的電源換代;進入 20 世紀 90 年代,開關電源相繼進入各種電子、電氣設備領域,程控交換機、通信、電力檢測設備電源、控制設備
5、電源等都已廣泛使用了開關電源,更促進了開關電源技術的迅速開展。二、設計的目標與根本要求一 、設計目標設計并制作一個由兩個額定輸出功率均為 16W 的 8V DC/DC 模塊構成的并聯供電系統見圖 2.1圖 2.1 兩路 buck 電路并聯供電二 、根本要求1調整負載電阻至額定輸出功率工作狀態,供電系統的直流輸出電壓UO=8.00.4V。在額定輸出功率工作狀態下,供電系統的效率不低于 60% 。2調整負載電阻,保持輸出電壓 UO=8.00.4V,使兩個模塊輸出電流之和 IO =1.0A 且按 I1:I2=1:1 模式自動分配電流,調整負載電阻,保持輸出電壓 UO=8.00.4V,使兩個模塊輸出電
6、流之和 IO =1.5A 且按 I1:I2= 1:2 模式自動分配電流,每個模塊輸出電流的相對誤差絕對值不大于 5%。調整負載電阻,保持輸出電壓 UO=8.00.4V,使兩個模塊輸出電流之和 IO =4.0A 且按 I1:I2=1:1 模式自動分配電-. z流,每個模塊的輸出電流的相對誤差的絕對值不大于 2%。3調整負載電阻,保持輸出電壓 UO=8.00.4V,使負載電流 IO 在 1.53.5A 之間變化時,兩個模塊的輸出電流可在0.52.0圍按指定的比例自動分配,每個模塊的輸出電流相對誤差的絕對值不大于 2%。 4具有負載短路保護及自動恢復功能,保護閾值電流為 4.5A調試時允許有0.2A
7、 的偏差 。在額定輸出功率工作狀態下,進一步提高供電系統效率。三、系統設計一 、系統框圖圖 3.1 系統框圖系統說明:以單片機為核心處理元件,DC-DC 變換器為主電路。按鍵、顯示便于人機交互。驅動電路將單片機和 DC-DC 變換器隔離,輔助電源給單片機和采樣電路供電。單片機將電壓電流通過采樣電路,運放采樣回來在部進展 A/D 處理,然后將數據輸出液晶顯示。在部進展算法調整。使整個系統穩定,并到達根本要求。整個系統設計如上圖 3.1 所示。二 、硬件設計與方案選擇1、單片機選擇方案一:使用 89C51 單片機指令簡單,易學易懂,外圍電路簡單,硬件設計方便,IO 口操作簡單,無方向存放器,資源豐
8、富, ,價格廉價、容易購置,資料豐富容易查到,程序燒寫簡單,但要外接 A/D、D/A 芯片,來實現對整個供電系統的控制,需要占用較多的 I/O 接口,會使普通單片機承載過大的數據處理任務,功耗較大。方案二:使用 ATmega16,ATmega16外設特點:兩個具有獨立的預分頻器和比較器功能的8位定時器/計數器,兩個具有預分頻器、比較功能和撲捉功能的16位定時器/計數器,具有獨立預分頻器的實時時鐘計數器,兩路8位 PWM,4路分辨率可編程(216位)的 PWM,輸出比較調制器,8路10位 ADC,面向字節的兩線接口 I2C 總線,兩個可編程的串行 USART,可工作于主機/從機模式的 SPI 串
9、行接口,具有獨立片振蕩器的的可編程看門狗定時器,片模擬比較器。特殊的處理器特點:上電復位以及可編程的掉電檢測,片經過標定的 RC 振蕩器,片/片外中斷源,6種睡眠模式,可以通過軟件進展選擇的時鐘頻率,通過熔絲位可以選擇兼容模式,全局上拉制止功能。-. z結合前兩個方案優點,經過方案比較與論證,最終確定使用方案二,因為ATmega16 速度快 自帶 PWM ,自帶 AD,而用 89C51 會使電路更加復雜與不穩定所以,用 ATmega16 單片機和其它控制器電路同實現整個系統的控制。2、主電路選擇方案一:有一種型號為 LM2956 的降壓開關電壓調節器,能夠輸出 3A 的驅動電流,同時具有很好的
10、線性和負載調節特性,該器件部集成頻率補償和固定頻率發生器,極簡化了開關電源電路的設計。方案二:采用 SG3525 自帶脈寬調制電源芯片來設計 DC-DC 降壓轉換電路,SG3525 簡單可靠及使用方便靈活,輸出驅動為推拉輸出形式,增加了驅動能力;部含有欠壓鎖定電路,死區時間可調、軟啟動控制電路、PWM 鎖存器,有過流保護功能,頻率可調,同時能限制最大占空比。由此設計而成的電路易于實現脈寬調制,然而在真正使用時會發現,為得到要求的電壓輸出值,開關管 S 的參數選取相當不易。方案三:將經過隔離變壓器,整流濾波后得到的 24VDC 通過 BUCK 降壓電路進展DC-DC 轉換,由 ATmega16
11、單片機產生 PWM 控制其占空比,從而得到要求的直流電壓。此方案僅用一塊控制芯片不但可以實現對 BUCK 電路的控制,而且可以結合 A/D 和D/A 對輸出電壓進展調整與顯示。由于 ATmega16 單片機自帶能夠產生脈寬調制所需的 PWM 信號的端口,在實際制作中用起來比較方便。ATmega16 單片機自帶 8 路 10位 A/D 轉換。結合前兩個方案優點,經過方案比較與論證,最終確定使用方案三如圖 3.2,因為 ATmega16 單片機,自帶 PWM 模塊,可以輸出 PWM 方波控制電路,節約芯片本錢,也可實現 AD 轉換。用單片機和其它控制器電路同實現整個系統的控制。-. z3.2 主電
12、路圖3、驅動電路圖方案一:單片機輸出 PWM,采用 IR2101 驅動 DC-DC 電路中的 IRF9530,控制輸出電壓。方案二:先采用光耦 TLP250 和單片機進展隔離,有效保護單片機,之后用IRF3205 去驅動 MOS 管 IRF9530,控制輸出電壓。結合兩種方案的比照選擇方案二如圖 3.3,因為方案二中采用光耦,將單片機與主電路隔離,能夠有效保護單片機,而且也能使正常使電路工作。圖 3.3 驅動電路圖4、輔助電源方案一:采用集成的三端穩壓集成芯片,7815 和 7805 分別給光耦和運放,還有單片機供電,7815 含過流,過熱,過載保護電路。方案二:采用 LM2575 開關穩壓集
13、成芯片,它部集成了一個固定的振蕩器,是一種高效的穩壓芯片,大多數情況下無需加散熱片。部有完善的保護電路,包括電流限制及熱關斷電路等。它可以根據用戶要求選擇輸出電壓,可輸出3.3V,5V,12V,15V。然后再經過 7805 產生 5V 電壓。結合兩種方案的比照選擇方案二如圖 3.4,因為方案二中的 LM2575 的是可調節輸出電壓的芯片,方便調控,而且它部有電壓基準比較,使輸出的電壓能夠準確并穩定,比 7815 要準確,且性能好。-. z圖 3.4 輔助電源電路圖5、電流、電壓采樣采樣模塊是輸出電壓經過采樣回來,形成一個負反響.經過單片機部 A/D 進展處理,然后使輸出更加穩定和準確。電壓采樣
14、模塊直接采用 LM358 運放如圖 3.5,將輸出的電壓縮小一定倍數后,然后送給單片機處理判斷。電流采樣是經過 0.1 歐/4 瓦的采樣電阻后,縮小一定倍數,然后經過一個差分電路,將電壓值送入單片機進展處理如圖 3.6。圖 3.5 電壓采樣電路圖圖 3.6 電流采樣電路圖6、顯示、按鍵顯示局部采用字符型液晶 1602,能夠同時顯示 16*02 即 32 個字符。16 個引腳,3 個控制引腳,8 位雙向數據端引腳。具有微功耗、體積小、顯示容豐富、超薄輕巧的特點。用戶可以對 EN、RW、RS 的數據進展編程,然后通過 D0D7 輸出顯示數據。其引腳功能圖見下表 6.1表 6.1 1602 引腳功能
15、圖按鍵局部采用四個獨立的按鍵,分別控制占空比的加和減,對輸出的電壓和電流進展控制,使輸出能夠到達期望的要求,其按鍵功能表如表 6.2。表 6.2 按鍵功能表鍵名S1S2S3S4功能PWM1 加 0.2%PWM1 減 0.2%PWM2 加 0.2%PWM2 減 0.2%CPU 端口號PD0PD1PD2PD3(三)、軟件設計1、主程序如圖 3.7 為主程序流程圖,一開場給系統各局部初始化,包括按鍵初始化,液晶初始化,PWM 初始化,AD 采樣初始化,中斷初始化,然后在進入大循環,在循環進展數據的顯示,包括當前輸入的占空比為多少,當前采樣回來的數字量和實際的電壓值為多少。還有按鍵程序,和 AD 采樣
16、。同時每 10 毫秒進入定時器 0 中斷進展調整。-. z圖 3.7 主程序流程圖2、按鍵程序按鍵程序流程圖如圖 3.8 所示。按鍵采用四個獨立的按鍵,分別控制 PWM1,PWM2 的加和減,當有鍵按下時,掃描按鍵,然后進入判斷。判斷當前存放器對應的值是否大于了設定的上限值,如果沒有則數值加 1,如果到達了則鉗位在最大的上限值。然后返回數據。通過按鍵程序,可以控制占空比的調節。按鍵開始PD0是否按下?OCR1A+1OCR1B+1OCR1A265&OCR1B265?OCR1A=265OCR1B=265OCR1A-1OCR1B-1OCR1A240&OCR1B261|OCR1B251
17、?OCR1A=261OCR1B=251PD3是否按下?OCR1A-1OCR1B+1OCR1A260?OCR1A=250OCR1B=260結束YNYNYNNYYYYYNNNN-. z圖 3.8 按鍵程序流程圖3、液晶程序圖 3.8 為 1602 液晶屏的程序框圖,1602 由 3 個控制引腳,8 位雙向數據端引腳控制顯示的容和位置。因此,這局部程序主要有初始化函數,寫命令函數和寫數據函數組成。初始化函數主要對液晶屏的顯示模式進展設定,寫命令函數主要是對顯示的位置和顯示的方式進展設置,寫數據函數是決定顯示的容。開始寫命令設置為寫命令方式寫入命令把命令送入PB口延時5毫秒EN置高,把命令寫入寄存器延
18、時5毫秒EN置低結束寫數據開始設置為寫數據方式寫入數據把數據送入PB口延時5毫秒EN置高,把數據寫入寄存器延時5毫秒EN置低結束開始初始化設置為雙行,5*7點陣延時5毫秒開顯示,不顯示光標延時5毫秒輸入地址自加,屏幕不移動延時5毫秒清屏延時5毫秒結束 圖 3.8 1602 程序流程圖4、采樣程序-. z如圖 3.9 是采樣程序流程圖。一開場配置 AD 存放器,然后啟動 AD 存放器,然后將采樣回來的數據組合成 10 位的數據,然后采樣 8 次,去頭去尾后,對其求平均值。將數據處理后,給液晶顯示。然后進展電壓判斷,是否小于要求的最小值,如果是的話進展鉗位,然后是否小于設定的最大值,是的話,就是在
19、要求圍,那就進展 PID算法的調整,進展電流的分流。如果大于最大值的話,就進展鉗位。圖 3.9 AD 采樣程序流程圖5、中斷、PID 流程圖如圖 3.10 和 3.11 分別是中斷流程圖和 PID 算法程序流程圖。定時器 0 中斷定時 10毫秒溢出中斷,在中斷中進展 PID 調整,和電壓反響調整。PID 算法是根據公式,對采樣電阻采樣回來的電壓進展反響計算。根據對 P,I,D 三個參數的設置,然后結合算法公式,對輸出的數據進展不斷的調整,到達要求的值。圖 3.10 定時器 0 中斷 圖 3.11 PID 算法流程圖四、調試過程一 、遇到的問題及解決方法1 、在對電路板進展設計,做板子的時候,經
20、過封塑機出來后的板子,然后用腐蝕劑進展腐蝕,得到了一塊單面板,當我們把器件焊上去的時候發現,跟我們預期的反了一下,所有的器件都反了一下,這樣子,整個電路就不能用了。經過我們的討論和思考,我們認為是我們在打印出油印紙的時候沒有將它鏡像,使整塊板子就是按照反面的印了出來,經過我們鏡像后,發現和我們所需要的板子是一樣的了,所有的元器件都能按照原來的位置進展裝配。而且板子也能正常工作。2 、在整個電路都做出來以后,進展模塊調試的時候發現方波的波形并不是很好,有一點的曲線,經過教師上課的講解指導了是,柵極旁邊的電阻阻值太大,因為有分布電容,所有會充放電,使波形不是很理想。經過計算后選取了一個適宜的阻值,
21、使波形能夠到達電路的要求。還有在整體調試的時候,發現上面一路的測試點,一直是 0,下面一路一直是 1A 左右,經過主電路排查后,發現沒有問題,然后對測試點進展排查,發現測試點的夾子松掉了,使電流都往下去了。將夾子焊好后,電路正常工作。3 、在進展程序調試的時候,一直在使用部的 1M 晶振,所以一直精度上不去,調-. z節都是很粗的調節,電流一直達不到指標。還有液晶刷新很慢,按鍵要按很久才能用。后來查閱了資料,發現在燒寫程序的時候要勾上熔絲位,如果使用的是 8M 以上的外部晶振的話,那就要把熔絲位全部勾上。這樣才是在使用外部的 16M 晶振。將熔絲位勾上后,調節程序后,發現精度大大的提升了。能夠
22、到達根本的要求。還有在對 PID 參數設置的時候,一開場沒有頭緒,隨便調,后來看論壇和同學談論,發現要一個一個參數的調,在經過屢次實驗后,將 PID 參數調整好了,是指標到達了要求。二 、數據分析表 4.1 和表 4.2 是在電流 1:1 情況下,比例調節和 PI 調節的數據比照。表 4.1 負載為 8.9, 兩模塊電流按 1:1 分配比例反響I1AI2 AI總 AUoV給定值0.5051.08.0測量值0.5050.5151.0028.24絕對誤差1%3%0.2%3%表 4.2 負載為 8.5, 兩模塊電流按 1:1 分配PI 反響I1AI2 AI總 AUoV給定值0.5051.08.0測量
23、值0.4940.5081.0078.08絕對誤差1.2%1.7%0.7%1%表 4.3 和表 4.4 是在電流 1:2 情況下,比例調節和 PI 調節的數據比照。表 4.3 負載為 7.0,兩模塊電流按 1:2 分配情況比例反響I1AI2 AI總 AUoV給定值0.51.01.58.0測量值0.4620.9301.4977.71絕對誤差7.6%7%0.2%3.6%表 4.4 負載為 5.9,兩模塊電流按 1:2 分配情況PI 反響I1AI2 AI總 AUoV給定值0.51.01.58.0-. z測量值0.5080.9811.5027.60絕對誤差1.6%1.9%0.2%5%比照表 4.1 和表
24、 4.2 可以看出,同樣是 1:1 的電流分配情況下,比例調節的誤差在5%以,到達了根本的要求,但是在 PI 調節下,可以看出誤差精度已經到達了 2%的要求。比照表 4.3 和表 4.4 可以看出,同樣是 1:2 的電流分配情況下,比例調節的誤差已經超出了 5%的要求,而在 PI 調節下精度到達了 2%以。比照著兩組數據,可以看出了在 PI 的調節下精度大大的提升,說明了 PID 算法在控制方面的優勢,使整個系統更加完善。五、體會與展望通過這次選修課的學習,學到了專業知識方面的一些知識。整個學習的過程是很重要的。由于這個學期在學習?電力電子?這門課,而課題又正好和電力電子相關知識有關,所以對于
25、這次的課程,通過對整個系統的設計,測試,調整。更好的了解了電力電子和開關電源相關的知識,也更深入的學習到了一些課堂上無法學習到的東西。將課堂的理論知識和實踐想結合,將學習到的東西更加印象深刻,不用去死記硬背,能夠靈活運用。對于編寫程序,整體的邏輯性還要加強。流程圖要寫好再寫程序。對于展望,希望能夠在以后的學習中把硬件方面學的更好,能夠把缺乏給彌補。在程序方面多學習一下別人的算法。學的更好,希望一次比一次有進步。參考文獻1 程漢湘,武小梅電力電子技術第二版. 科學2 譚浩強C 程序設計第三版,:清華大學,2021.113 童詩白,華成英.模擬電子技術,第四版:高等教育,2006.54 閻石數字電
26、子技術根底,第五版.:高等教育,2006.55 燕君.自動控制原理.大學,2021.1附 錄附錄 1整體電路圖附錄 2程序代碼-. z/*main.c*/*include*include*include1602.h*includekey.h*includead.h*includepid.h*define uchar unsigned char*define uint unsigned int*pragma interrupt_handler timer0_ovf_isr:10/*定時器 0 中斷*/void timer0_init(void) TCCR0 = 0*00; /停頓定時器 TT0
27、= 0*64;/初始值,每 10 毫秒進一次中斷 TIMSK = 0*01; /允許中斷 SREG |= BIT(7); /允許全局中斷/*外中斷 0 函數*/void timer0_ovf_isr(void) TT0 = 0*64; pid1_calculating(); /PID 調整 OCR1A pid2_calculating(); /PID 調整 OCR1B _vol(); /電壓反響/*PWM 設置輸出*/void KPWM(void) PORTD|=BIT(4)|BIT(5); DDRD|=BIT(4)|BIT(5); TCCR1A = 0*A2; /兩路 PWM,匹配清零 TC
28、CR1B = 0*11; /相位修正 PWM 模式,位數可調,預分頻 1 ICR1 = 800; /此數為 16 位 PWM,16M 晶振,clk/(2*N*TOP),頻率為 10K OCR1A = 255; /占空比 31.8% OCR1B = 255; /占空比 31.8%void main() KPWM(); /PWM 函數 LCD_init(); /1602 初始化函數 key_init(); /按鍵初始化函數 timer0_init(); /定時器 0 初始化 adcport_init(); /AD 端口初始化-. z while(1) Display_PWM(); /顯示 PWM
29、函數press(); /按鍵函數display_AD0(); /顯示 AD0 的模擬量和數字量 /*1602.h*/*ifndef _1602_H_*define _1602_H_*define uchar unsigned char*define uint unsigned intvoid delay(uint MS);void write_(uint );void write_dat(uint dat);void LCD_init();void Display_PWM();void calculate_AD0();*endif/*1602.c*/*include*include*inclu
30、de1602.h*define uchar unsigned char*define uint unsigned int/*顯示固定數組 PWM:*/const uchar tab=PWM:;/*延時函數*/void delay(uint MS) /約為 1MS 的延時函數 uint i,j; for(i=0;iMS;i+) for(j=0;j2282;j+); /2282 是在 16MHz 晶振下為 MS 毫秒/*1602 寫地址*/void write_(uint ) PORTA&=BIT(5); /RS=0 PORTA&=BIT(6); /RW=0 PORTB=; /送地
31、址 delay(5); PORTA|=BIT(7); /EN=1 delay(5); PORTA&=BIT(7); /EN=0-. z/*1602 寫數據*/void write_dat(uint dat) PORTA|=BIT(5); /RS=1 PORTA&=BIT(6); /RW=0 PORTB=dat; /送數據 delay(5); PORTA|=BIT(7); /EN=1 delay(5); PORTA&=BIT(7); /EN=0 /*1602 初始化*/void LCD_init() DDRA=0*FF; DDRB=0*FF; delay(5); writ
32、e_(0*38); /設 8 位數據線,雙行,5*7 點陣 delay(5); write_(0*0c); /開顯示,不顯示光標 delay(5); write_(0*06); /輸入地址自加,屏幕不移動 delay(5); write_(0*01); /清屏 delay(5);/*顯示 PWM 占空比*/void Display_PWM() uchar i; uint shi,ge,*iaoshu,beichu; uint shi1,ge1,*iaoshu1; shi=OCR1A/100; /將 OCR1A 百位拆分 ge=OCR1A/10%10; /將 OCR1A 十位拆分 *iaoshu
33、=OCR1A%10; /將 OCR1A 個位拆分 beichu=ICR1/10; /將 ICR1 變為兩位數 shi1=OCR1B/100; /將 OCR1B 百位拆分 ge1=OCR1B/10%10; /將 OCR1B 十位拆分 *iaoshu1=OCR1B%10; /將 OCR1B 個位拆分 write_(0*80); for(i=0;tabi!=0;i+) write_dat(tabi);-. z write_(0*84); write_dat(shi*100+ge*10+*iaoshu)*100/beichu/100+0*30); /顯示十位 write_dat(shi*100+ge*
34、10+*iaoshu)*100/beichu/10%10+0*30); /顯示個位 write_dat(.); write_dat(shi*100+ge*10+*iaoshu)*100/beichu%10+0*30); /顯示小數點 write_dat(%); write_(0*8a); write_dat(shi1*100+ge1*10+*iaoshu1)*100/beichu/100+0*30); /顯示十位 write_dat(shi1*100+ge1*10+*iaoshu1)*100/beichu/10%10+0*30); /顯示個位 write_dat(.); write_dat(s
35、hi1*100+ge1*10+*iaoshu1)*100/beichu%10+0*30); /顯示小數點 write_dat(%);/*AD.H*/*ifndef _AD_H_*define _AD_H_void adcport_init();void ADC0INIT(void);void ADC1INIT(void);void ADC2INIT(void);int get_ADCdata(void);float get_ave(int a8);float get_ADC0data(void);float get_ADC1data(void);float get_ADC2data(void)
36、;void display_AD0();*endif/*AD.C*/*include*include*include1602.h*define uchar unsigned char*define uint unsigned int/參考電壓*define REF 5.12 /*ADC 端口初始化*/void adcport_init() DDRA&=BIT(0); PORTA&=BIT(0); DDRA&=BIT(1); PORTA&=BIT(1); DDRA&=BIT(2);-. z PORTA&=BIT(2);/*ADC0 初始化*/voi
37、d ADC0INIT(void) ADMU*=0*40; /AREF 基準壓,結果右對齊,通道為 ADC0 ADCSRA=0*87; /使能 ADC,單次轉換,預分頻為 128 ADCSRA|=(1ADSC); /啟動首次轉換 while(!(ADCSRA&(1ADIF); /等待轉換完畢 ADCSRA|=(1ADIF); /去除 ADIF 位/*ADC1 初始化*/void ADC1INIT(void) ADMU*=0*41; /AREF 基準壓,結果右對齊,通道為 ADC1 ADCSRA=0*87; /使能 ADC,單次轉換,預分頻為 128 ADCSRA|=(1ADSC); /啟
38、動首次轉換 while(!(ADCSRA&(1ADIF); /等待轉完畢循環 ADCSRA|=(1ADIF); /去除 ADIF 位/*ADC2 初始化*/void ADC2INIT(void) ADMU*=0*42; /AREF 基準壓,結果右對齊,通道為 ADC2 ADCSRA=0*87; /使能 ADC,單次轉換,預分頻為 128 ADCSRA|=(1ADSC); /啟動首次轉換 while(!(ADCSRA&(1ADIF); /等待轉完畢循環 ADCSRA|=(1ADIF); /去除 ADIF 位/*獲取 ADC 的采樣值*/int get_ADCdata(void)
39、int a,b; a=b=0; b=ADCL; /讀高位后數據更新 a=ADCH; /再讀取 ADCH 數據 a=(a8); /右對齊,左移八位 a=(a|b); /組成 10 位二進制數據 return a;/*去頭去尾,獲取平均值*/float get_ave(int a8)float v;-. zunsigned char i;float sum=0;for(i=1;i7;i+) /從第 2 次到第 6 次數據sum=sum+ai;v=sum/6;return v;/*獲取 ADC0 采樣 8 次的平均值*/float get_ADC0data(void)unsigned char i=
40、0;float v;int buf8=0;for(i=0;i8;i+)ADC0INIT(); /AD 初始化一次bufi=get_ADCdata(); /將數據放入數組v=get_ave(buf);return v;/*獲取 ADC1 采樣 8 次的平均值*/float get_ADC1data(void)unsigned char i=0;float v;int buf8=0;for(i=0;i8;i+)ADC1INIT(); /AD 初始化一次bufi=get_ADCdata(); /將數據放入數組v=get_ave(buf);return v;/*獲取 ADC2 采樣 8 次的平均值*/
41、float get_ADC2data(void)unsigned char i=0;float v;int buf8=0;for(i=0;i8;i+)-. zADC2INIT(); /AD 初始化一次 bufi=get_ADCdata(); /將數據放入數組v=get_ave(buf);return v;/*將數據拆分送顯示*/void display_AD0() int a,b; uchar s6,k6; uchar i,j,m; a=get_ADC0data()*REF/1024*1000; /將數據轉化為十進制 b=get_ADC0data(); /數字量 s0=a/1000+0; s1
42、=.; s2=a%1000/100+0; s3=a%100/10+0; s4=a%10+0; s5=V; k0=D; k1=:; k2=b/1000+0; k3=b%1000/100+0; k4=b%100/10+0; k5=b%10+0; write_(0*C0); for(i=0;i6;i+) write_dat(si); write_(0*C7); for(j=0;j=360) /實際電壓值大于 8.4V OCR1A=265; /鉗位到 8.4V-. zOCR1B=265; if(get_ADC2data()=310) /實際電壓值小于 7.6V OCR1A=240; /鉗位到 7.6V
43、OCR1B=240; /*KEY.H*/*ifndef _KEY_H_*define _KEY_H_void key_init();void press();uchar key();*endif/*KEY.C*/*include*include*include1602.h*define uchar unsigned char*define uint unsigned intuint count_pwm=255;uint count_pwm1=255;/*按鍵初始化函數*/void key_init() DDRD&=BIT(0); /獨立鍵盤接口置高電平 PORTD|=BIT(0); D
44、DRD&=BIT(1); /獨立鍵盤接口置高電平 PORTD|=BIT(1); DDRD&=BIT(2); /獨立鍵盤接口置高電平 PORTD|=BIT(2); DDRD&=BIT(3); /獨立鍵盤接口置高電平 PORTD|=BIT(3); DDRD&=BIT(7); /獨立鍵盤接口置高電平 PORTD|=BIT(7); /*按鍵函數*/void press() uchar m; m=PIND; m&=0*0f; if(m=0*0e) -. z count_pwm=OCR1A; /讀取當前 PWM 值 count_pwm+=1; count_pwm=O
45、CR1B; /讀取當前 PWM 值 count_pwm+=1; delay(1); /按鍵消抖 while(PIND=0*0e); OCR1A=count_pwm; /OCR1A 賦新值 OCR1B=count_pwm; /OCR1B 賦新值 if(OCR1A=265&OCR1B=265) OCR1A=265;OCR1B=265; if(m=0*0d) count_pwm=OCR1A; /讀取當前 PWM 值 count_pwm-=1; count_pwm=OCR1B; /讀取當前 PWM 值 count_pwm-=1; delay(1); /按鍵消抖 while(PIND=0*0d); OCR1A=count_pwm; /OCR1A 賦新值 OCR1B=count_pwm; /OCR1B 賦新值 if(OCR1A=240&OCR1B=261|OCR1B=251) OCR1A=261;-. zOCR1B=251; if(m=0*07) count_pwm=OCR1A; /讀取當前 PWM 值 count_pwm-=1; count_pwm1=OCR1B; /讀取當前 PWM 值 count_pwm1+=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025探索服務合同的試用期
- 2024年超臨界CO2萃取裝置膜生物反應器及其他項目資金申請報告代可行性研究報告
- 2025潤滑油銷售合同協議
- 2025全日制勞動合同
- 2025年國稅局合同制人員醫療險問題
- 2025勞動合同(教師)
- 2025宜昌市存量房買賣合同
- 2025《廣州市合同范本》
- 2025深圳市租賃合同協議
- 2025國內認證委托合同
- (三診)綿陽市高中2022級高三第三次診斷性考試 歷史試卷A卷(含答案)
- 麻醉專業考試試題及答案
- 2024華能四川能源開發有限公司下屬單位招聘筆試參考題庫附帶答案詳解
- 湖南省長沙市長郡教育集團2024-2025學年七年級下學期期中生物試題
- 鋼結構高處作業安全管理
- JJF 2221-2025導熱系數瞬態測定儀校準規范
- 山東省高中名校2025屆高三4月校際聯合檢測大聯考生物試題及答案
- 2025年武漢數學四調試題及答案
- 【MOOC】數學建模精講-西南交通大學 中國大學慕課MOOC答案
- 職業病防護設施與個體防護用品的使用和維護
- 2024年全國高中數學聯賽北京賽區預賽一試試題(解析版)
評論
0/150
提交評論