基于PIC單片機的可編程電源的設(shè)計與應(yīng)用
?、?數(shù)碼管及LED顯示電路。數(shù)碼管顯示電壓、電流、時間等信息。LED指示當(dāng)前顯示的參數(shù)種類。PIC單片機的I/O能夠直接驅(qū)動數(shù)碼管和LED。按鍵輸入和顯示接口電路如圖6所示。
圖6 按鍵輸入和顯示接口電路
?、?A/D采樣和PWM輸出電路。A/D負責(zé)采樣輸出電壓電流并送到數(shù)碼管顯示。當(dāng)前電流電壓設(shè)定值通過由單片機內(nèi)部的CCP模塊產(chǎn)生的兩路PWM信號來給電源模塊提供一個參考值。單片機內(nèi)部的CCP模塊可以設(shè)置成PWM輸出模式,通過寫周期寄存器和脈寬寄存器的值就可由硬件產(chǎn)生不同頻率和占空比的PWM波形。
?、艽谕ㄐ沤涌陔娐?。串口通信接口電路采用MAX232芯片作為RS232收發(fā)器。
4 軟件設(shè)計
4.1 軟件流程
軟件用C語言編寫,使用HighTech公司為PIC系列單片機提供的PICC編譯器。系統(tǒng)上電時,單片機讀出非易失性存儲器(EEPROM)中上次設(shè)置參數(shù),進行電流電壓輸出。在軟件設(shè)計中,采用多個任務(wù)的概念,可以模擬一個簡單的操作系統(tǒng)進行任務(wù)的調(diào)度。由定時器產(chǎn)生一個5ms的中斷,在中斷程序中激活各個任務(wù)的標(biāo)志。如顯示任務(wù)主要負責(zé)A/D采樣、數(shù)碼管與LED的刷新,可每5ms執(zhí)行一次。鍵盤處理任務(wù)負責(zé)按鍵的掃描、軟件去抖、鍵盤命令的解釋和掃行,可每10ms執(zhí)行一次。PWM輸出任務(wù)負責(zé)按照設(shè)定的值進行PWM的輸出,可以每50ms執(zhí)行一次。如果有PC機或其他電源通過串口編程,單片機將在UART中斷中接收編程數(shù)據(jù),接收完改寫EEPROM中設(shè)置并強行復(fù)位。如果接收到通過按鍵的編程,則在按鍵處理中修改EEPROM的設(shè)置并復(fù)位。程序主流程則掃描各個任務(wù)是否到時間執(zhí)行。是,則執(zhí)行該任務(wù);否則,跳過該任務(wù)。主程序流程如圖7所示。
圖7 主程序流程
4.2 串口編程軟件
在PC機上設(shè)計了軟件來實現(xiàn)PC機與單片機的通信。通過該軟件可以方便地實現(xiàn)對電源電流電壓輸出、定時等參數(shù)的設(shè)定。只要將電源上的RS232口與PC機串口相連,就可實現(xiàn)通信。
利用Visual Basic中的Mscomm控件進行串口通信軟件的設(shè)計(這里僅作簡要的介紹)。PC端數(shù)據(jù)接收通過Oncomm事件來實現(xiàn),當(dāng)接收緩沖區(qū)的數(shù)據(jù)達到rthreshold屬性設(shè)定值時,就會觸發(fā)Oncomm事件,在中斷程序中讀出接收緩沖區(qū)中的數(shù)據(jù),將收到的字符型數(shù)據(jù)轉(zhuǎn)換成字符串后便送到各個文本框顯示。數(shù)據(jù)發(fā)送時,首先讀出文本框內(nèi)字符串,再將其轉(zhuǎn)換成字符型數(shù)據(jù),最后通過單擊“發(fā)送”按鈕,將數(shù)據(jù)送到發(fā)送緩沖區(qū)中,從而將數(shù)據(jù)從串口發(fā)送出去。
結(jié)語
采用單片機控制,克服了開關(guān)電源單一輸出的缺點,能夠提供靈活的電壓輸出。通過功率聯(lián)合擴展的功能,可以滿足不同功率場合的要求。電源也可以被當(dāng)成鉛酸電池充電器來使用,能自動調(diào)整充電電流和電壓,應(yīng)用場合非常廣泛。
評論