/********开关电源的数字化控制******//********所用拓扑为Buck,单片机msp430**********//*****PID算法实现开关电源的恒流、恒压、恒功率功能******//*********糖******@uestc************//********************************************************************************************/#include<>#include""#include""#include""#include""#include""#include""voidmain(void){WDTCTL=WDTPW+WDTHOLD;init_clk();init_lcd();GUI_CU();init_ADC12();init_TA();init_TB();initKey();_EINT();while(1){KeyScan();if(Mode==0)//恒压模式{DisplaySetU();Delay(100);ADC();Delay(100);}elseif(Mode==1) //恒流模式{DisplaySetI();Delay(100);ADC();Delay(100);}else//恒功率模式{DisplaySetP();Delay(100);ADC();Delay(100);}}}/**********************************************Part2Headfile**********************************************//********************************************************************************************/#ifndef__LCD12864#define__LCD12864#defineLCD_CSBIT0#defineLCD_SIDBIT2#defineLCD_CLKBIT4#defineLCD_ENP3DIR#defineLCD_CTRLP3OUT#defineLCD_CS_Set_highLCD_CTRL|=LCD_CS#defineLCD_CS_Set_lowLCD_CTRL&=~LCD_CS#defineLCD_SID_Set_highLCD_CTRL|=LCD_SID#defineLCD_SID_Set_lowLCD_CTRL&=~LCD_SID#defineLCD_CLK_Set_highLCD_CTRL|=LCD_CLK#defineLCD_CLK_Set_lowLCD_CTRL&=~LCD_CLK#defineLCD_delay1voidWrite_Data(unsignedcharbyte,unsignedcharreffer);voidSend_Byte(unsignedcharbyte);voidClearLCD(void);voidPut_Array(unsignedchar*data,unsignedcharlength,unsignedcharaddress);/*************延时**********************/voidDelay(unsignedchartime)//主时钟1微秒延时{unsignedinti;i=0x08*time;for(;i;i--);}/************************************************//函数名称:Initial_LCD(void)//函数功能:启动初始化************************************************/voidInitial_LCD(void){LCD_EN|=LCD_CS+LCD_SID+LCD_CLK;Write_Data(0x30,0);//基本指令集Delay(LCD_delay);Write_Data(0x30,0);Write_Data(0x0C,0);Delay(LCD_delay);Write_Data(0x01,0);//清屏Delay(LCD_delay);Write_Data(0x06,0);Delay(LCD_delay);}/*************************************************
数字式开关电源的PID控制 来自淘豆网www.taodocs.com转载请标明出处.