李莉


摘要:本文介紹了各個部分的軟件選用及功能。脈沖電源在當今社會是一種很主流的開關電源,脈沖電源系統的軟件部分主要包括兩大部分功能模塊,其中單片機AT89C51主要負責控制功能的實現,而AT89C52則主要作為檢測芯片完成系統輸出電壓與電流的模數轉換及脈寬和頻率的測定功能。
脈沖電源在當今社會是一種很主流的開關電源,是一種技術含量高、知識面寬、更新換代快的產品,被譽為高效節能型電源。脈沖電源技術作為電源電壓變換的一種基礎技術,由于變換方式簡單,成本低,體積重量小、容易控制 輸出電壓、變換方式等,因此,產生了這種電源變換技術即開關電源技術。在經濟與科技高速發展的時代過程中,電源起到至關重要的作用。
脈沖電源系統的軟件部分主要包括兩大部分功能模塊,其中單片機AT89C51主要負責控制功能的實現,例如鍵盤輸入模塊和控制脈沖產生程序。而AT89C52則主要作為檢測芯片完成系統輸出電壓與電流的模數轉換及脈寬和頻率的測定功能。與此同時,不管在控制芯片或者檢測芯片工作過程中,者都涉及到液晶顯示功能的實現。本系統主要采用模塊化的思想對系統的軟件模塊進行劃分。主程序主要完成對各功能塊的依次調用即可。下面將予以詳細介紹
脈沖產生程序
本系統的整體程序主要完成脈寬頻率值的設定,控制脈沖的產生,輸出參數的檢測和顯示等功能。此程序是系統軟件部分的主干,其他各個模塊的子程序都在主程序的基礎上發展起來,受主程序調用。系統整體程序流程見圖1。系統上電后,首先進行各個參數變量的初始化工作,然后在液晶上顯示系統歡迎界面“歡迎使用本系統",持續數秒延時后進入初始設定界面,在此界面用戶需設定要求的輸出脈寬和頻率值。在等待鍵盤操作的同時,液晶上一直顯示初始設定界面內容直到有按鍵被檢測到為止。當“ENTER”鍵被按下時,說明默認參數無須修改,直接開始輸出控制脈沖;當“SURE”鍵被按下時,說明需要對默認參數進行修改,則進入參數設定子程序,其中包括keyboard()和key_scan()兩個函數調用,前者完成修改項選擇功能,后者實現鍵盤掃描以及數值修改的操作。當設定完畢之后,同樣按下“ENTER”鍵開始輸出控制脈沖。由于設計要求在運行過程中需要對輸出參數進行調整,所以設置了修改功能。當“MODIFY”鍵被按下后,單片機持續輸出高電平信號,同時進入設定界面配合鍵盤操作修改輸出參數使之滿足要求;而“MODIFY”鍵不動作時,AT89C51始終保持輸出控制脈沖并進行鍵盤掃描循環動作,AT89C52開始檢測輸出參數并且顯示在液晶屏幕上
本模塊有output()函數和output timer()函數構成。output0函數調用output timer()函數主要完成輸出高低電平工作,同時其也被主函數調用。當參數設定完畢之后,單片機AT89C51的P1.O引腳不斷輸出控制脈沖,保證系統的正常運行。
脈沖產生程序模塊用來給出控制SG3525工作時間的脈沖波形,單片機與脈寬調制芯片SG3525的關斷控制引腳10相連。在控制脈沖為高電平時間段,SG3525停止工作,系統輸出端為低電平。反之則為高電平。在用戶輸入了系統輸出端要求的脈寬和頻率值后,便可得到控制脈沖的高低電平時間。圖2為脈沖產生程序流程圖。由于程序語言在單片機中的執行時間是以微秒為計量單位的,所以為了使脈沖的高低電平時間更加精確,程序中以微秒作為時間單位。由于本系統單片機采用12M晶振,那么其定時器最長定時只有65.535ms,但是要求的頻率變化范圍是1Hz"--50Hz,脈寬變化范圍是10%"---90%,也就是說單片機輸出脈沖的高低電平時間在2ms"-'900ms之間變化,其范圍超出了65.535ms的極限值。因此,此脈沖產生算法的思路為對傳遞進來的時間參數以50ms為時分為兩個流程,分別對其定時輸出高低電平。
算法具體工作流程為:若時間參數大于50ms,則變量m為50ms的整數個數,。n為時間參數去掉ra個50ms剩余的時間,此時長在50ms以內。第一步定時50ms,在中斷服務程序中設置標志位t記錄申請中斷次數使其累計計時m個50ms,第二步再對剩余時間n定時,同樣當標志位flago置位時,定時結束,立即將P1.0口電平取反,重復上述步驟;而時間參數小于50ms的情況等同于上述情況第二步,在此不再贅述
檢測芯片程序模塊
這部分包含三個主要程序模塊:A/D轉換程序,脈寬檢測與頻率檢測程序。下面具體介紹。檢測芯片為AT89C52單片機,其3個16位定時器全部得到應用,其中定時器TD和T1用于檢測頻率,定時器T2用于檢測脈寬。
脈沖高壓電源的軟件設計。主要通過兩個單片機對整個系統進行控制和檢測。AT89C51主要負責人機接口的實現,鍵盤輸入和控制脈沖的產生。AT89C52則用來檢測輸出參數并將其及時地顯示在液晶屏幕上。我們還自行開發了脈沖發生算法,輸出脈沖的頻率和脈寬檢測算法,算法的可行性和可靠性在實驗中得到了證實。endprint