锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

基于51单片机驱动S8330E C语言程序

时间:2024-05-16 08:37:11

//S8330E是日本精工的一个电源IC,需要软件调节电压输出值
#include
#include
sbit DIN = P1^0;
sbit CLK = P1^1;
sbit B = P1^2;
sbit Key = P3^4;
sbit LED = P1^7;

void Delay(unsigned int MS)
{
unsigned char us,usn;
while(MS!=0)
{
usn = 2; //for 12M
while(usn!=0)
{
us=0xf6;
while (us!=0){us--;};
usn--;
}
MS--;
}
}

void DelayKey(unsigned int nd , unsigned int MS100)
{ //输入精确到0.1S,是用,
unsigned int i;
for(i=0;i {
if(Key==0)
{
Delay(20);
while(Key==0) {Delay(20);}
break;
}
else Delay(10);
}
}

void LEDOnOfF(unsigned char n)
{
unsigned char i;
LED = 1;
for(i=0;i<2*n;i++)
{
LED = ~LED;
Delay(30);
}
}

void SetVout(unsigned char lv)
{
unsigned char i;
STB = 0; //芯片资料有点问题,只需要在STB=0时送数据,然后STB=1即有效
for(i=0;i<8;i++) //而不需要前后各一个脉冲,芯片说在SEB=0时候Vout输出Min也不对
{ //只有前面时序图似乎有点正确,后面的详细操作过程说明有些问题
DIN = (lv>>(7-i))&0x01;
CLK = 0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
CLK = 1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();

}
CLK = 0; //送完一组数据后,CLK须为0,见时序图,否则输入数据无效
STB = 1;
LEDOnOfF(3);
}

void main (void)
{
unsigned char i;
Delay(10);
DelayKey(1,0);
LEDOnOfF(1);
DelayKey(1,0);
for(i=0;i<=255;i=i+5)
{
SetVout(i);
DelayKey(0,2);
}
}


-电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。 自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。
锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章