做了一个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--);
} 羡慕。。。。。。。 不错,单片机AD、pwm功能都巧妙的用上了。学习了。 很强大,羡慕会编程的 真不错啊 学习了! 楼主,这个 用在哪里阿,另外,原理图没有看清楚,那个SOP8的是什么电路? 本帖最后由 jl48q-5 于 2013-10-11 00:49 编辑
别时方觉依依 发表于 2013-10-11 00:36 static/image/common/back.gif
楼主,这个 用在哪里阿,另外,原理图没有看清楚,那个SOP8的是什么电路?
用在X射线检测电路, sop8是低开启电压VMOS管 帮我做个2个AA电池升到5V 500mA的升压电路!! 懂单片机就是好
zzqasim 发表于 2013-10-11 08:44 static/image/common/back.gif
懂单片机就是好
懂单片机的好处是,以前想做而没法做的或难做的电路,现在做起来要轻松很多,因为可以用人的思想去控制模拟电路了。
页:
[1]