找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1568|回复: 5
收起左侧

51单片如何实现输出一个脉宽和脉间都可调的方波?请大侠指点指点

[复制链接]
ID:837631 发表于 2021-7-28 09:26 | 显示全部楼层 |阅读模式
如题
回复

使用道具 举报

ID:313048 发表于 2021-7-28 10:29 | 显示全部楼层
定时器作为信号的周期,就假设1ms的定时器吧,如果你将你的信号设置为0-100可调脉宽的话,那么通过定时器计数,计数到了你要的脉宽值就进行变换。
time()//定时器函数
{
   Time_num++;
   if(time_num == 100) time_num = 0;
}
main()  //主函数
{
while(1)
{
  if(time_num ==0)
  {
   OUT = 1;//输出高电平
  }
  if(duty == time_num ) OUT = 0;  // 输出低电平
}
}
差不多就这样个原理吧,里面的变量就全局都行。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:419909 发表于 2021-7-28 12:11 | 显示全部楼层
51好多型号都内置PWM吧.仔细看看说明书.容易操作的.
回复

使用道具 举报

ID:476415 发表于 2021-7-28 12:29 来自手机 | 显示全部楼层
用PWM最好
回复

使用道具 举报

ID:161164 发表于 2021-7-28 14:31 | 显示全部楼层
void timer0_int (void) interrupt 1
{
        TR0 = 0;
        if(PWM_Swap)
        {
                TL0 = PWM_H_TL;
                TH0 = PWM_H_TH;        }else
        {
                TL0 = PWM_L_TL;
                TH0 = PWM_L_TH;        }
        PWM_Swap = !PWM_Swap;
        P27 = PWM_Swap;
        TR0 = 1;
}

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:837631 发表于 2021-7-30 17:32 | 显示全部楼层
先谢谢各位的指点,我试试,后续继续请教
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表