51单片机普通IO口怎么实现多路PWM,实现循环右移流水灯,求程序. 10

 我来答
3147cqg
2013-08-15 · TA获得超过580个赞
知道小有建树答主
回答量:555
采纳率:37%
帮助的人:254万
展开全部

51单片机普通IO口怎么实现多路PWM?

 Atmel 51单片机不带PWM功能,只有自己用定时器做;

STC 51的有带PWM功能。

 

实现循环右移流水灯?

左移

for (i = 0; i < 8; i++)
{
    P1 = ~(1 << i);
    Delay(1000); 
}

右移

for (i = 8; i > 0; i--)
{
    P1 = ~(1 << i);
    Delay(1000);  
}
追问
对啊,就是用定时器
追答
volatile char i,j;

void Init_Timer0(void)
{
    .....; 
}


void main(void)
{
    Init_Timer0();
    while (1)
    {
      if (j < 100)
       {
         P1 &= ~(1 << 0 ); 
       }
      else
      {
         P1 = 0XFF; 
     }        
}      

void IRQ_Timer0(void) interrupt 1
{
    TH0 = ...;
    TL0 += ...;
    
    i++;
    if (i > 500)  
    {
      i = 0;
      j++; 
     }
    if (j > 500)
    {
      j = 0;
     }        
}

这是一个最简单的PWM,你试试。
如有错误,请指正。
序观今古今h
2013-08-15 · TA获得超过339个赞
知道小有建树答主
回答量:758
采纳率:50%
帮助的人:205万
展开全部
通过一个定时器就可以用IO口模拟PWM了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
做而论道
高能答主

2013-08-17 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式