这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 合作大赛 » 我可以产生PWM波了,但不能调节占空比!?

共2条 1/1 1 跳转至

我可以产生PWM波了,但不能调节占空比!?

菜鸟
2009-09-03 21:54:58     打赏

为什么不可以只改占空比那个寄存器,
一修改就要产生混乱波形
要不要复位下,重新写全部寄存器
参考程序:请指教~
#include <at89x51.h>

sbit SCK=P1^2;
sbit SO=P1^0;
sbit SI=P1^1;
sbit RESET=P1^3;
void delay(void)
{
unsigned char i;
for(i=0;i<50;i++);
}
void delayms(unsigned int t)
{ unsigned int i,j;
for(i=0;i<t;i++)
for(j=0;j<125;j++);
}
void SPISendByte(unsigned char date)
{
unsigned char n,temp;
temp=date;
for(n=0;n<8;)
{
SCK=0;
if(temp&0x80)
  SO=1;
else
  SO=0;
delay();
SCK=1;
delay();
n++;
temp=(temp<<1);
}
SCK=0;
}
void main( void )
{
/*添加必要的初始化程序*/
RESET=0;   /*先复位*/
SCK=0;    /*SCK信号,上电后要输出低*/
SO=0;
delayms(5);
RESET=1;
delayms(5);
SPISendByte(0x5c);   /*寄存器控制字*/
SPISendByte(0x00);   /*对应寄存器的值*/
delayms(1);      /*两帧数据之间要加>1ms的延时,同一帧的两组数据之间不用*/
SPISendByte(0x50);  /*通道1*/
SPISendByte(0xc0);
delayms(1);
SPISendByte(0x53);
SPISendByte(0x80);
delayms(1);

SPISendByte(0x54);  /*通道2*/
SPISendByte(0xc0);
delayms(1);
SPISendByte(0x57);
SPISendByte(0x80);
delayms(1);

SPISendByte(0x58);  /*通道3*/
SPISendByte(0xe0);
delayms(1);
SPISendByte(0x5b);
SPISendByte(0x80);
delayms(1);

delayms(1000);
SPISendByte(0x53);
SPISendByte(0x0F);
while(1)
  {
 
  }
}




关键词: 可以     产生     波了     但不能     调节     占空     delaym    

菜鸟
2009-09-04 11:29:34     打赏
2楼

参考置顶的那些成功的程序
一些代码次序也很重要的,留意下。


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]