jl48q-5 发表于 2013-10-10 12:36

做了一个3.6伏锂电升压电路

本帖最后由 jl48q-5 于 2013-10-10 12:39 编辑

做了一个3.6伏锂电DC-DC升压电路,3.6V~400V,试验用。




程序如下:
include<STC12C5A60S2.H>
#define uchar unsigned char
#define uint unsigned int

#define AD_dy 0

void init_PWM();             //pwm初始化
void dy();
void delay(uchar z);

void main()
{
        init_PWM();
        while(1)
        {
               dy();
        }
}

void init_PWM()             //pwm初始化
{
    AUXR=0x80;
        AUXR1=0x00;          //默认
        TMOD=0x12;          //设定时器1为16位模式定时器0为8位自动重装模式
       
        CMOD=0x04;                          //设定时器0工作在1T模式
        TH0=0xff;                          //定时器0=256-(12*1000000/(256*1000HZ))就溢出
        TR0=1;                                   //启动定时器0
       
       
        CCAP1H=255-51;                  //设PWM1端口输出0%脉宽的方波
        //CCAP0L=0x80;
        CH=0;
        CL=0;
        CR=1;                                     //PCA定时器启动运行
    CCAPM1=0x42;                  //设CCAPM0寄存器为8位PWM模式
        //CCAPM0=0x00;//关?????

        //P1_3=0;//关IO       

        P1M0=0x18;
        P1M1=0x01;                          //设P1.4为PWM输出口
}

/*void init_ad()
{
        P1ASF=0x01;//将p1.0置为A/D口
        ADC_CONTR=
}*/


#define MID 11
uchar AD(uchar n)
{
        uchar i,j;
        uint temp16;
        uint arry;
        for(i=0;i<MID;i++)
        {
                ADC_CONTR=0xe8+n;//设p1为电池电压采集口
                while((ADC_CONTR&0x10)!=0x10);//等待A/D转换结束
                arry= ADC_RES;
                delay(2);
        }

        for(j=0;j<MID-1;j++)
       for(i=0;i<MID-j-1;i++)
       {
               if(arry<arry)
                {
                        temp16 = arry;
                        arry = arry;
                        arry = temp16;
                }
       }

        temp16= (arry+arry+arry)/3;

        return temp16;        //把A/D转换结果寄存器附给
}



void dy()
{
       

        if(AD(AD_dy)<194)
        {
                if(CCAP1H>128)
                        CCAP1H--;
        }
        else if(AD(AD_dy)>194)
        {
                if(CCAP1H<254)
                CCAP1H++;       
        }
        delay(10);

}

void delay(uchar z)
{
        uchar x,y;
        for(x=z;x>0;x--)
                for(y=120;y>0;y--);
}

304442305 发表于 2013-10-10 14:24

羡慕。。。。。。。

ahao 发表于 2013-10-10 15:02

不错,单片机AD、pwm功能都巧妙的用上了。学习了。

sygw 发表于 2013-10-10 16:43

很强大,羡慕会编程的

彭星 发表于 2013-10-10 23:03

真不错啊 学习了!

别时方觉依依 发表于 2013-10-11 00:36

楼主,这个 用在哪里阿,另外,原理图没有看清楚,那个SOP8的是什么电路?

jl48q-5 发表于 2013-10-11 00:46

本帖最后由 jl48q-5 于 2013-10-11 00:49 编辑

别时方觉依依 发表于 2013-10-11 00:36 static/image/common/back.gif
楼主,这个 用在哪里阿,另外,原理图没有看清楚,那个SOP8的是什么电路?

用在X射线检测电路, sop8是低开启电压VMOS管

udlhaps 发表于 2013-10-11 03:48

帮我做个2个AA电池升到5V 500mA的升压电路!!

zzqasim 发表于 2013-10-11 08:44

懂单片机就是好

jl48q-5 发表于 2013-10-11 09:40

zzqasim 发表于 2013-10-11 08:44 static/image/common/back.gif
懂单片机就是好


懂单片机的好处是,以前想做而没法做的或难做的电路,现在做起来要轻松很多,因为可以用人的思想去控制模拟电路了。
页: [1]
查看完整版本: 做了一个3.6伏锂电升压电路