• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

【设计大赛】开关电源设计

参赛类型:开关电源类

带上位机仿真

   

 

 

 

 

 

 

原理图

 

 

 

 

 

 

 

 

 

 

 

 

 

全部回复(8)
正序查看
倒序查看
2012-05-26 14:26

源代码

//*****************************************************************************
//
//
//*****************************************************************************

#include "inc/hw_ints.h"
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "inc/hw_adc.h"
#include "driverlib/debug.h"
#include "driverlib/gpio.h"
#include "driverlib/interrupt.h"
#include "driverlib/sysctl.h"
#include "driverlib/uart.h"
#include "driverlib/timer.h"
#include "driverlib/pwm.h"

#include "driverlib/adc.h"
//#include "driverlib/watchdog.h"
/*******************************************************************************
LCD:OKI M5265
GND DATA:PD7
GND CLK :PD6
VCC LAH :PD5
*******************************************************************************/
#define SET_LCD_DATA    GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_7,GPIO_PIN_7);
#define CLR_LCD_DATA GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_7,0);

#define SET_LCD_CLK     GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_6,GPIO_PIN_6);
#define CLR_LCD_CLK GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_6,0);

#define SET_LCD_LAH     GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_5,GPIO_PIN_5);
#define CLR_LCD_LAH GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_5,0);
//*****************************************************************************
//*****************************************************************************
unsigned long g_ulFlags=0;

unsigned long ulADC0_Value[2];
unsigned long ulData;                                                   /*  采样数据缓冲器              */
static unsigned char  flag_Charge;                                              /*  采样次数                    */ 
unsigned char        flag_ADC_finish = 0;                                      /*  采样完成标志                */
unsigned int        Charge_Val[3]   = {0, 0, 0};                              /*  存放采样数据                */
unsigned long ulPeriod; //PWM周期


//LCD相关
unsigned char Display_Buff[20];
//const unsigned char seg_code[10]={};
typedef union
{
    unsigned char dt;
    struct
    {
        unsigned char   bit0:1,
                        bit1:1,
                        bit2:1,
                        bit3:1,
                        bit4:1,
                        bit5:1,
                        bit6:1,
                        bit7:1;
    };
}T_;

T_  T,c1,c2,c3,c4;

 
//米形数码
#define c c1.bit0
#define d c1.bit2
#define e c1.bit4

#define a c2.bit5
#define f c2.bit4
#define g c2.bit3
#define b c2.bit0
//田形数码
#define aa   c3.bit2
#define bb   c3.bit3
#define ff   c3.bit1
#define dd   c3.bit0

#define cc   c4.bit4
#define ee   c4.bit1
#define gg   c4.bit3

 

typedef union
{
    unsigned char ucdata[2];
    unsigned int uidata   ;
}uc2ul;

unsigned int PWMA,PWMB;
unsigned char D[6];
//*****************************************************************************
//函数名称:void recode(unsigned char *data,unsigned char yd)
//输入参数:unsigned char *data,unsigned char yd
//输出参数:void
//功能:数字0~9对应显示段码列表
//*****************************************************************************
void recode(unsigned char *data,unsigned char yd)
{
    switch(yd)  
    {
        case 0: a=1;b=1;c=1;d=1;e=1;f=1;g=0;break;
        case 1: a=0;b=1;c=1;d=0;e=0;f=0;g=0;break;
        case 2: a=1;b=1;c=0;d=1;e=1;f=0;g=1;break;
        case 3: a=1;b=1;c=1;d=1;e=0;f=0;g=1;break;
        case 4: a=0;b=1;c=1;d=0;e=0;f=1;g=1;break;
        case 5: a=1;b=0;c=1;d=1;e=0;f=1;g=1;break;
        case 6: a=1;b=0;c=1;d=1;e=1;f=1;g=1;break;
        case 7: a=1;b=1;c=1;d=0;e=0;f=0;g=0;break;
        case 8: a=1;b=1;c=1;d=1;e=1;f=1;g=1;break;
        case 9: a=1;b=1;c=1;d=1;e=0;f=1;g=1;break;
    }
    *data=c1.dt;
    *(data+10)=c2.dt;
}
//*****************************************************************************
//函数名称:void recode1(unsigned char *data,unsigned char yd)
//输入参数:unsigned char *data,unsigned char yd
//输出参数:void
//功能:数字0~9对应显示段码列表
//*****************************************************************************
void recode1(unsigned char *data,unsigned char yd)
{
    switch(yd)  
    {
        case 0: aa=1;bb=1;cc=1;dd=1;ee=1;ff=1;gg=0;break;
        case 1: aa=0;bb=1;cc=1;dd=0;ee=0;ff=0;gg=0;break;
        case 2: aa=1;bb=1;cc=0;dd=1;ee=1;ff=0;gg=1;break;
        case 3: aa=1;bb=1;cc=1;dd=1;ee=0;ff=0;gg=1;break;
        case 4: aa=0;bb=1;cc=1;dd=0;ee=0;ff=1;gg=1;break;
        case 5: aa=1;bb=0;cc=1;dd=1;ee=0;ff=1;gg=1;break;
        case 6: aa=1;bb=0;cc=1;dd=1;ee=1;ff=1;gg=1;break;
        case 7: aa=1;bb=1;cc=1;dd=0;ee=0;ff=0;gg=0;break;
        case 8: aa=1;bb=1;cc=1;dd=1;ee=1;ff=1;gg=1;break;
        case 9: aa=1;bb=1;cc=1;dd=1;ee=0;ff=1;gg=1;break;
    }
    *data=c3.dt;
    *(data+10)=c4.dt;
}
//*****************************************************************************
//函数名称:void numbertochar(unsigned int value,unsigned char sel)
//输入参数:unsigned int value,unsigned char sel
//输出参数:void
//*****************************************************************************
void numbertochar(unsigned int value,unsigned char sel)
{  
    unsigned char i;
    unsigned int q[4];
    q[3]=value/1000;value=value%1000;
    q[2]=value/100;value=value%100;
    q[1]=value/10;value=value%10;
    q[0]=value;
    
   
    for(i=0;i<4;i++)
    {
        if(sel==0)
        {recode(&Display_Buff[i],q[i]);}
        if(sel==1)
        {recode1(&Display_Buff[i+5],q[i]);}
    }
    Display_Buff[7]=Display_Buff[7]|1<<4;
}

//*****************************************************************************
//函数名称:
//输入参数:
//输出参数:
// The error routine that is called if the driver library encounters an error.
//*****************************************************************************
#ifdef DEBUG
void __error__(char *pcFilename, unsigned long ulLine)
{
}
#endif

 
//*****************************************************************************
//函数名称: 定时器0中断
//输入参数: 无
//输出参数: 无
//功能:定时器0中断
//*****************************************************************************
void Timer0IntHandler(void)
{
    static unsigned char i;
   
    TimerIntClear(TIMER0_BASE, TIMER_TIMA_TIMEOUT); // Clear the timer interrupt.

    if(++i>1)
    {
        i=0;
        GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_5,GPIO_PIN_5);
    }
    else
    {
        GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_5,0);
    }
}

 
//*****************************************************************************
//函数名称:void UARTIntHandler(void)
//输入参数:void
//输出参数:void
//功能:UART中断函数.
//*****************************************************************************
void UARTIntHandler(void)
{
    static unsigned char i;
    unsigned long ulStatus;
   
    ulStatus = UARTIntStatus(UART0_BASE, true);//获取中断状态

    UARTIntClear(UART0_BASE, ulStatus);//清楚中断标志

    while(UARTCharsAvail(UART0_BASE))
    {
        D[i]=UARTCharGetNonBlocking(UART0_BASE);
        //UARTCharPutNonBlocking(UART0_BASE, D[i]);
       
        if(++i>5)
        {
            i=0;
        }
    }
    if((D[0]==0x01)&&(D[1]==0x03))//设置占空比  0-100
    {
        PWMA=((unsigned int)D[2]<<8)|D[3];
        PWMB=((unsigned int)D[4]<<8)|D[5];
        if(PWMA==100)//限制
        {PWMA=99;}
        if(PWMB==100)//限制
        {PWMB=99;}
    }
    PWMPulseWidthSet(PWM_BASE, PWM_OUT_0, ulPeriod * PWMA / 100);//PMWA=0~100
    PWMPulseWidthSet(PWM_BASE, PWM_OUT_1, ulPeriod * PWMB / 100);
}

//*****************************************************************************
//函数名称:void UARTSend(const unsigned char *pucBuffer, unsigned long ulCount)
//输入参数:const unsigned char *pucBuffer, unsigned long ulCount
//输出参数:void
//功能:UART发送字符串.
//*****************************************************************************
void UARTSend(const unsigned char *pucBuffer, unsigned long ulCount)
{
    while(ulCount--)    //循环发送字符
    {
        UARTCharPutNonBlocking(UART0_BASE, *pucBuffer++);//写下个字符到UART
    }
}
/******************************************************************************
//函数名称:void Init_ADC(void)
//输入参数:void
//输出参数:void
//功能:初始化ADC
*******************************************************************************/
void Init_ADC(void)
{
    SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0);     //使能ADC时钟 
    //IntMasterEnable();                              // 使能处理器中断
    ADCSequenceConfigure(ADC0_BASE, 0, ADC_TRIGGER_PROCESSOR, 0);//
   
    ADCSequenceStepConfigure(ADC0_BASE, 0, 0, ADC_CTL_CH0| ADC_CTL_IE);//  ADC_CTL_CH0
    ADCSequenceStepConfigure(ADC0_BASE, 0, 1, ADC_CTL_CH1| ADC_CTL_IE);//  ADC_CTL_CH0
    ADCSequenceStepConfigure(ADC0_BASE, 0, 2, ADC_CTL_TS| ADC_CTL_IE |ADC_CTL_END);//  ADC_CTL_CH0
   
    ADCSequenceEnable(ADC0_BASE, 0);    //  使能采样序列3 
  
    ADCIntClear(ADC0_BASE, 0);
    IntEnable(INT_ADC0);                                                //  使能AD中断   
    ADCIntEnable(ADC_BASE, 0);                                          //  使能AD中断模块 
   
}

//*****************************************************************************
//函数名称:void ADC_Sequence_0_ISR(void)
//输入参数:void
//输出参数:void
//*****************************************************************************
void ADC_Sequence_0_ISR(void)
{
    ADCIntClear(ADC0_BASE,0);                                            /*  清除中断标志位              */
    while(!(HWREG(ADC0_BASE + 0X04C) & 0X100)) {
        ADCSequenceDataGet(ADC0_BASE, 0, &ulData);                       /*  读出10位转换结果            */
        //ulData = ((ulData & 0x3ff) * 1000 * 3) / 1023;
        Charge_Val[flag_Charge] = ulData;
        flag_Charge++;
        if( flag_Charge >= 3) {
            flag_Charge = 0;
            flag_ADC_finish = 1;                                        /*  A/D转换完成标志位           */
        }
    }
}
 
//*****************************************************************************
//函数名称:void jtagWait(void)
//输入参数:void
//输出参数:void
//*****************************************************************************
void jtagWait(void)
{
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);          //  使能KEY所在的GPIO端口
    GPIOPinTypeGPIOInput(GPIO_PORTC_BASE,GPIO_PIN_4);     //  设置KEY所在管脚为输入
    if (GPIOPinRead(GPIO_PORTC_BASE,GPIO_PIN_4) == 0x00)  //  若复位时按下KEY,则进入
    {
       while(1);                             //  死循环,以等待JTAG连接
    }
  SysCtlPeripheralDisable(SYSCTL_PERIPH_GPIOC);   //  禁止KEY所在的GPIO端口
}
//*****************************************************************************
//函数名称:void Write_M5265(unsigned char data)
//输入参数:unsigned char data
//输出参数:void
//*****************************************************************************
void Write_M5265(unsigned char data)
{
    unsigned char i;

    for(i=0;i<8;i++)
    {
        CLR_LCD_CLK;
        if((data&0x80)==0x80)
        {SET_LCD_DATA;}
        else
        {CLR_LCD_DATA;}
        SET_LCD_CLK;
        data=data<<1;
    } 
}
//*****************************************************************************
//函数名称:void Display_LCD(void)
//输入参数:void
//输出参数:void
//*****************************************************************************
void Display_LCD(void)
{
    unsigned char i=0;
   
    CLR_LCD_LAH;
    for(i=0;i<20;i++)
    {
        Write_M5265(Display_Buff[i]);
    }
    SET_LCD_LAH;
    CLR_LCD_LAH;
}
 

#define T0
#define PWM
//*****************************************************************************
//函数名称:int main(void)
//输入参数:void
//输出参数:int
//*****************************************************************************
int main(void)
{
    uc2ul data;
    
   
    //************************初始化时钟及端口**********************************
    SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |SYSCTL_XTAL_6MHZ);//初始化主系统时钟,配置6MHz外部晶振作为主时钟

    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB | SYSCTL_PERIPH_GPIOC | SYSCTL_PERIPH_GPIOD | SYSCTL_PERIPH_GPIOE);//启用 GPIO B、C、D 和 E
   
    GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_0 | GPIO_PIN_1);//配置PB0、PB1为输出
    GPIOPinTypeGPIOOutput(GPIO_PORTC_BASE, GPIO_PIN_5 );//配置PC5为输出
    GPIOPinTypeGPIOInput(GPIO_PORTC_BASE, GPIO_PIN_4 );//配置PC4为输入
    GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE, GPIO_PIN_7|GPIO_PIN_6|GPIO_PIN_5|GPIO_PIN_3|GPIO_PIN_2|GPIO_PIN_0 | GPIO_PIN_1);//配置PD0、PD1为输出
    GPIOPinTypeGPIOOutput(GPIO_PORTE_BASE, GPIO_PIN_0 | GPIO_PIN_1);//配置PE0、PE1为输出
        
    //使能处理器总中断
    IntMasterEnable(); 
   
   
#ifdef PWM
    //************************初始化PWM****************************************
    /*
    PWM0->PD0       PWM1->PD1
    PWM2->PB0       PWM3->PB1
    PWM4->PE0       PWM5->PE1
    */
    // PWM时钟配置:不分频
    SysCtlPWMClockSet(SYSCTL_PWMDIV_1);                                        
    // 使能PWM模块
    SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM);                                 
    // PD0和PD1配置为PWM功能
    GPIOPinTypePWM(GPIO_PORTD_BASE, GPIO_PIN_0 | GPIO_PIN_1);                  
    //计算周期 
    ulPeriod = SysCtlClockGet() / 600;    //6000000/300
    // 配置PWM发生器1:加减计数
    PWMGenConfigure(PWM_BASE, PWM_GEN_0,PWM_GEN_MODE_UP_DOWN | PWM_GEN_MODE_NO_SYNC);
    //设置PWM发生器1的周期
    PWMGenPeriodSet(PWM_BASE, PWM_GEN_0, ulPeriod);                            
    //设置占空比
    PWMPulseWidthSet(PWM_BASE, PWM_OUT_0, 0);
    PWMPulseWidthSet(PWM_BASE, PWM_OUT_1, 0);
    // 使能PWM0和PWM1的输出
    PWMOutputState(PWM_BASE, PWM_OUT_0_BIT | PWM_OUT_1_BIT, true);      
    // 使能PWM发生器0
    PWMGenEnable(PWM_BASE, PWM_GEN_0);  
#endif
    //************************初始化UART0***************************************
    SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
    //配置 GPIO-A0->RX,GPIO-A1->TX 为UART功能脚
    GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);
    //配置 UART为 38,400, 8-N-1
    UARTConfigSetExpClk(UART0_BASE, SysCtlClockGet(), 38400,
                        (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
                         UART_CONFIG_PAR_NONE));
    //使能UART0中断
    IntEnable(INT_UART0);
    UARTIntEnable(UART0_BASE, UART_INT_RX | UART_INT_RT);

#ifdef T0
    //************************初始化T0******************************************
    SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0);
    // Configure the two 32-bit periodic timers.
    TimerConfigure(TIMER0_BASE, TIMER_CFG_32_BIT_PER);
    TimerLoadSet(TIMER0_BASE, TIMER_A, SysCtlClockGet());

    //使能定时器中断
    IntEnable(INT_TIMER0A);
    //定时器超时中断
    TimerIntEnable(TIMER0_BASE, TIMER_TIMA_TIMEOUT);
    //使能定时器
    TimerEnable(TIMER0_BASE, TIMER_A);
#endif 
    //************************初始化ADC*****************************************
    Init_ADC();
    UARTSend((unsigned char *)"1234567890", 12);
    while(1)
    { 
       
      
        ADCProcessorTrigger(ADC0_BASE,0);
        if(flag_ADC_finish ==1)
        {
            flag_ADC_finish = 0;
            UARTCharPutNonBlocking(UART0_BASE, 0x01);
            UARTCharPutNonBlocking(UART0_BASE, 0x02);
           
            data.uidata=Charge_Val[0];
            UARTSend(&data.ucdata[0], 2);
            data.uidata=Charge_Val[1];
            UARTSend(&data.ucdata[0], 2);
            data.uidata=Charge_Val[2];
            UARTSend(&data.ucdata[0], 2);
        } 
        //段码LCD显示功能
        
        Charge_Val[1]=(Charge_Val[1]*2.4544921875);//电压系数根据实际修改
        numbertochar(Charge_Val[1],1);
        Charge_Val[0]=(Charge_Val[0]*0.01);//电压系数根据实际修改
        numbertochar(Charge_Val[0],0);
        
        Display_LCD();
        SysCtlDelay(SysCtlClockGet()/2);
    }
}

0
回复
2012-05-26 14:28
@jyz0025341
源代码//*****************************************************************************//////*****************************************************************************#include"inc/hw_ints.h"#include"inc/hw_memmap.h"#include"inc/hw_types.h"#include"inc/hw_adc.h"#include"driverlib/debug.h"#include"driverlib/gpio.h"#include"driverlib/interrupt.h"#include"driverlib/sysctl.h"#include"driverlib/uart.h"#include"driverlib/timer.h"#include"driverlib/pwm.h"#include"driverlib/adc.h"//#include"driverlib/watchdog.h"/*******************************************************************************LCD:OKIM5265GNDDATA:PD7GNDCLK:PD6VCCLAH:PD5*******************************************************************************/#defineSET_LCD_DATA   GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_7,GPIO_PIN_7);#defineCLR_LCD_DATA GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_7,0);#defineSET_LCD_CLK    GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_6,GPIO_PIN_6);#defineCLR_LCD_CLK GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_6,0);#defineSET_LCD_LAH    GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_5,GPIO_PIN_5);#defineCLR_LCD_LAH GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_5,0);//*****************************************************************************//*****************************************************************************unsignedlongg_ulFlags=0;unsignedlongulADC0_Value[2];unsignedlongulData;                                                  /* 采样数据缓冲器             */staticunsignedchar flag_Charge;                                             /* 采样次数                   */ unsignedchar       flag_ADC_finish=0;                                     /* 采样完成标志               */unsignedint       Charge_Val[3]  ={0,0,0};                             /* 存放采样数据               */unsignedlongulPeriod;//PWM周期//LCD相关unsignedcharDisplay_Buff[20];//constunsignedcharseg_code[10]={};typedefunion{   unsignedchardt;   struct   {       unsignedchar  bit0:1,                       bit1:1,                       bit2:1,                       bit3:1,                       bit4:1,                       bit5:1,                       bit6:1,                       bit7:1;   };}T_;T_ T,c1,c2,c3,c4; //米形数码#definecc1.bit0#definedc1.bit2#defineec1.bit4#defineac2.bit5#definefc2.bit4#definegc2.bit3#definebc2.bit0//田形数码#defineaa  c3.bit2#definebb  c3.bit3#defineff  c3.bit1#definedd  c3.bit0#definecc  c4.bit4#defineee  c4.bit1#definegg  c4.bit3 typedefunion{   unsignedcharucdata[2];   unsignedintuidata  ;}uc2ul;unsignedintPWMA,PWMB;unsignedcharD[6];//*****************************************************************************//函数名称:voidrecode(unsignedchar*data,unsignedcharyd)//输入参数:unsignedchar*data,unsignedcharyd//输出参数:void//功能:数字0~9对应显示段码列表//*****************************************************************************voidrecode(unsignedchar*data,unsignedcharyd){   switch(yd)     {       case0:a=1;b=1;c=1;d=1;e=1;f=1;g=0;break;       case1:a=0;b=1;c=1;d=0;e=0;f=0;g=0;break;       case2:a=1;b=1;c=0;d=1;e=1;f=0;g=1;break;       case3:a=1;b=1;c=1;d=1;e=0;f=0;g=1;break;       case4:a=0;b=1;c=1;d=0;e=0;f=1;g=1;break;       case5:a=1;b=0;c=1;d=1;e=0;f=1;g=1;break;       case6:a=1;b=0;c=1;d=1;e=1;f=1;g=1;break;       case7:a=1;b=1;c=1;d=0;e=0;f=0;g=0;break;       case8:a=1;b=1;c=1;d=1;e=1;f=1;g=1;break;       case9:a=1;b=1;c=1;d=1;e=0;f=1;g=1;break;   }   *data=c1.dt;   *(data+10)=c2.dt;}//*****************************************************************************//函数名称:voidrecode1(unsignedchar*data,unsignedcharyd)//输入参数:unsignedchar*data,unsignedcharyd//输出参数:void//功能:数字0~9对应显示段码列表//*****************************************************************************voidrecode1(unsignedchar*data,unsignedcharyd){   switch(yd)     {       case0:aa=1;bb=1;cc=1;dd=1;ee=1;ff=1;gg=0;break;       case1:aa=0;bb=1;cc=1;dd=0;ee=0;ff=0;gg=0;break;       case2:aa=1;bb=1;cc=0;dd=1;ee=1;ff=0;gg=1;break;       case3:aa=1;bb=1;cc=1;dd=1;ee=0;ff=0;gg=1;break;       case4:aa=0;bb=1;cc=1;dd=0;ee=0;ff=1;gg=1;break;       case5:aa=1;bb=0;cc=1;dd=1;ee=0;ff=1;gg=1;break;       case6:aa=1;bb=0;cc=1;dd=1;ee=1;ff=1;gg=1;break;       case7:aa=1;bb=1;cc=1;dd=0;ee=0;ff=0;gg=0;break;       case8:aa=1;bb=1;cc=1;dd=1;ee=1;ff=1;gg=1;break;       case9:aa=1;bb=1;cc=1;dd=1;ee=0;ff=1;gg=1;break;   }   *data=c3.dt;   *(data+10)=c4.dt;}//*****************************************************************************//函数名称:voidnumbertochar(unsignedintvalue,unsignedcharsel)//输入参数:unsignedintvalue,unsignedcharsel//输出参数:void//*****************************************************************************voidnumbertochar(unsignedintvalue,unsignedcharsel){     unsignedchari;   unsignedintq[4];   q[3]=value/1000;value=value%1000;   q[2]=value/100;value=value%100;   q[1]=value/10;value=value%10;   q[0]=value;          for(i=0;iTX为UART功能脚   GPIOPinTypeUART(GPIO_PORTA_BASE,GPIO_PIN_0|GPIO_PIN_1);   //配置UART为38,400,8-N-1   UARTConfigSetExpClk(UART0_BASE,SysCtlClockGet(),38400,                       (UART_CONFIG_WLEN_8|UART_CONFIG_STOP_ONE|                        UART_CONFIG_PAR_NONE));   //使能UART0中断   IntEnable(INT_UART0);   UARTIntEnable(UART0_BASE,UART_INT_RX|UART_INT_RT);#ifdefT0   //************************初始化T0******************************************   SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0);   //Configurethetwo32-bitperiodictimers.   TimerConfigure(TIMER0_BASE,TIMER_CFG_32_BIT_PER);   TimerLoadSet(TIMER0_BASE,TIMER_A,SysCtlClockGet());   //使能定时器中断   IntEnable(INT_TIMER0A);   //定时器超时中断   TimerIntEnable(TIMER0_BASE,TIMER_TIMA_TIMEOUT);   //使能定时器   TimerEnable(TIMER0_BASE,TIMER_A);#endif    //************************初始化ADC*****************************************   Init_ADC();   UARTSend((unsignedchar*)"1234567890",12);   while(1)   {                     ADCProcessorTrigger(ADC0_BASE,0);       if(flag_ADC_finish==1)       {           flag_ADC_finish=0;           UARTCharPutNonBlocking(UART0_BASE,0x01);           UARTCharPutNonBlocking(UART0_BASE,0x02);                      data.uidata=Charge_Val[0];           UARTSend(&data.ucdata[0],2);           data.uidata=Charge_Val[1];           UARTSend(&data.ucdata[0],2);           data.uidata=Charge_Val[2];           UARTSend(&data.ucdata[0],2);       }        //段码LCD显示功能               Charge_Val[1]=(Charge_Val[1]*2.4544921875);//电压系数根据实际修改       numbertochar(Charge_Val[1],1);       Charge_Val[0]=(Charge_Val[0]*0.01);//电压系数根据实际修改       numbertochar(Charge_Val[0],0);               Display_LCD();       SysCtlDelay(SysCtlClockGet()/2);   }}
0
回复
2012-05-26 14:31
@jyz0025341
软件[图片]数控电源diy 

我的原理图

我的原理图 

0
回复
2012-05-26 22:16
@jyz0025341
我的原理图[图片]我的原理图 
很好,顶一个,原理图附件 好像不全,能发一份给我学习学习吗,QQ 554118121  输入输出都是都达到什么要求了,还有那个界面不错
0
回复
2012-05-28 12:14
@qq20032006
很好,顶一个,原理图附件好像不全,能发一份给我学习学习吗,QQ554118121 输入输出都是都达到什么要求了,还有那个界面不错
所有资料全在啊
0
回复
2012-05-28 12:16
@jyz0025341
源代码//*****************************************************************************//////*****************************************************************************#include"inc/hw_ints.h"#include"inc/hw_memmap.h"#include"inc/hw_types.h"#include"inc/hw_adc.h"#include"driverlib/debug.h"#include"driverlib/gpio.h"#include"driverlib/interrupt.h"#include"driverlib/sysctl.h"#include"driverlib/uart.h"#include"driverlib/timer.h"#include"driverlib/pwm.h"#include"driverlib/adc.h"//#include"driverlib/watchdog.h"/*******************************************************************************LCD:OKIM5265GNDDATA:PD7GNDCLK:PD6VCCLAH:PD5*******************************************************************************/#defineSET_LCD_DATA   GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_7,GPIO_PIN_7);#defineCLR_LCD_DATA GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_7,0);#defineSET_LCD_CLK    GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_6,GPIO_PIN_6);#defineCLR_LCD_CLK GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_6,0);#defineSET_LCD_LAH    GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_5,GPIO_PIN_5);#defineCLR_LCD_LAH GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_5,0);//*****************************************************************************//*****************************************************************************unsignedlongg_ulFlags=0;unsignedlongulADC0_Value[2];unsignedlongulData;                                                  /* 采样数据缓冲器             */staticunsignedchar flag_Charge;                                             /* 采样次数                   */ unsignedchar       flag_ADC_finish=0;                                     /* 采样完成标志               */unsignedint       Charge_Val[3]  ={0,0,0};                             /* 存放采样数据               */unsignedlongulPeriod;//PWM周期//LCD相关unsignedcharDisplay_Buff[20];//constunsignedcharseg_code[10]={};typedefunion{   unsignedchardt;   struct   {       unsignedchar  bit0:1,                       bit1:1,                       bit2:1,                       bit3:1,                       bit4:1,                       bit5:1,                       bit6:1,                       bit7:1;   };}T_;T_ T,c1,c2,c3,c4; //米形数码#definecc1.bit0#definedc1.bit2#defineec1.bit4#defineac2.bit5#definefc2.bit4#definegc2.bit3#definebc2.bit0//田形数码#defineaa  c3.bit2#definebb  c3.bit3#defineff  c3.bit1#definedd  c3.bit0#definecc  c4.bit4#defineee  c4.bit1#definegg  c4.bit3 typedefunion{   unsignedcharucdata[2];   unsignedintuidata  ;}uc2ul;unsignedintPWMA,PWMB;unsignedcharD[6];//*****************************************************************************//函数名称:voidrecode(unsignedchar*data,unsignedcharyd)//输入参数:unsignedchar*data,unsignedcharyd//输出参数:void//功能:数字0~9对应显示段码列表//*****************************************************************************voidrecode(unsignedchar*data,unsignedcharyd){   switch(yd)     {       case0:a=1;b=1;c=1;d=1;e=1;f=1;g=0;break;       case1:a=0;b=1;c=1;d=0;e=0;f=0;g=0;break;       case2:a=1;b=1;c=0;d=1;e=1;f=0;g=1;break;       case3:a=1;b=1;c=1;d=1;e=0;f=0;g=1;break;       case4:a=0;b=1;c=1;d=0;e=0;f=1;g=1;break;       case5:a=1;b=0;c=1;d=1;e=0;f=1;g=1;break;       case6:a=1;b=0;c=1;d=1;e=1;f=1;g=1;break;       case7:a=1;b=1;c=1;d=0;e=0;f=0;g=0;break;       case8:a=1;b=1;c=1;d=1;e=1;f=1;g=1;break;       case9:a=1;b=1;c=1;d=1;e=0;f=1;g=1;break;   }   *data=c1.dt;   *(data+10)=c2.dt;}//*****************************************************************************//函数名称:voidrecode1(unsignedchar*data,unsignedcharyd)//输入参数:unsignedchar*data,unsignedcharyd//输出参数:void//功能:数字0~9对应显示段码列表//*****************************************************************************voidrecode1(unsignedchar*data,unsignedcharyd){   switch(yd)     {       case0:aa=1;bb=1;cc=1;dd=1;ee=1;ff=1;gg=0;break;       case1:aa=0;bb=1;cc=1;dd=0;ee=0;ff=0;gg=0;break;       case2:aa=1;bb=1;cc=0;dd=1;ee=1;ff=0;gg=1;break;       case3:aa=1;bb=1;cc=1;dd=1;ee=0;ff=0;gg=1;break;       case4:aa=0;bb=1;cc=1;dd=0;ee=0;ff=1;gg=1;break;       case5:aa=1;bb=0;cc=1;dd=1;ee=0;ff=1;gg=1;break;       case6:aa=1;bb=0;cc=1;dd=1;ee=1;ff=1;gg=1;break;       case7:aa=1;bb=1;cc=1;dd=0;ee=0;ff=0;gg=0;break;       case8:aa=1;bb=1;cc=1;dd=1;ee=1;ff=1;gg=1;break;       case9:aa=1;bb=1;cc=1;dd=1;ee=0;ff=1;gg=1;break;   }   *data=c3.dt;   *(data+10)=c4.dt;}//*****************************************************************************//函数名称:voidnumbertochar(unsignedintvalue,unsignedcharsel)//输入参数:unsignedintvalue,unsignedcharsel//输出参数:void//*****************************************************************************voidnumbertochar(unsignedintvalue,unsignedcharsel){     unsignedchari;   unsignedintq[4];   q[3]=value/1000;value=value%1000;   q[2]=value/100;value=value%100;   q[1]=value/10;value=value%10;   q[0]=value;          for(i=0;iTX为UART功能脚   GPIOPinTypeUART(GPIO_PORTA_BASE,GPIO_PIN_0|GPIO_PIN_1);   //配置UART为38,400,8-N-1   UARTConfigSetExpClk(UART0_BASE,SysCtlClockGet(),38400,                       (UART_CONFIG_WLEN_8|UART_CONFIG_STOP_ONE|                        UART_CONFIG_PAR_NONE));   //使能UART0中断   IntEnable(INT_UART0);   UARTIntEnable(UART0_BASE,UART_INT_RX|UART_INT_RT);#ifdefT0   //************************初始化T0******************************************   SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0);   //Configurethetwo32-bitperiodictimers.   TimerConfigure(TIMER0_BASE,TIMER_CFG_32_BIT_PER);   TimerLoadSet(TIMER0_BASE,TIMER_A,SysCtlClockGet());   //使能定时器中断   IntEnable(INT_TIMER0A);   //定时器超时中断   TimerIntEnable(TIMER0_BASE,TIMER_TIMA_TIMEOUT);   //使能定时器   TimerEnable(TIMER0_BASE,TIMER_A);#endif    //************************初始化ADC*****************************************   Init_ADC();   UARTSend((unsignedchar*)"1234567890",12);   while(1)   {                     ADCProcessorTrigger(ADC0_BASE,0);       if(flag_ADC_finish==1)       {           flag_ADC_finish=0;           UARTCharPutNonBlocking(UART0_BASE,0x01);           UARTCharPutNonBlocking(UART0_BASE,0x02);                      data.uidata=Charge_Val[0];           UARTSend(&data.ucdata[0],2);           data.uidata=Charge_Val[1];           UARTSend(&data.ucdata[0],2);           data.uidata=Charge_Val[2];           UARTSend(&data.ucdata[0],2);       }        //段码LCD显示功能               Charge_Val[1]=(Charge_Val[1]*2.4544921875);//电压系数根据实际修改       numbertochar(Charge_Val[1],1);       Charge_Val[0]=(Charge_Val[0]*0.01);//电压系数根据实际修改       numbertochar(Charge_Val[0],0);               Display_LCD();       SysCtlDelay(SysCtlClockGet()/2);   }}
0
回复
2012-06-19 13:56
@jyz0025341
[图片]数控电源 

ding 是必须滴哦,,

 

0
回复
guodebin
LV.1
9
2012-08-11 08:40
@fengxunshi
ding是必须滴哦,, 

采用什么串口形式通信?

是PL2303吗?

0
回复