美文网首页
51单片机按键控制输出pwm的占空比 物联网开发找上海捌跃网络科

51单片机按键控制输出pwm的占空比 物联网开发找上海捌跃网络科

作者: a0f39b0b2030 | 来源:发表于2018-10-21 17:31 被阅读31次

人分类: 物联网

之前说到利用51单片机输出pwm,但是输出的pwm是固定占空比的,如果想要改变占空比,还得回过头来修改程序并重新烧写进单片机。这样做的话不但麻烦、效率低,还又把芯片的可烧写次数减少了一次,虽然51的芯片现在很便宜,但能省点就省点,能不浪费就不浪费,哈哈,开玩笑啦!最主要的还是为了灵活性,为此特地通过加入按键的功能来实现动态修改输出的pwm的占空比。这样在用pwm控制电机的时候就能使用按键来控制电机转速了。废话不多说,见下:

1

#include<reg51.h>

#define uint unsigned int

#define uchar unsigned char

uchar time;

double count=26;//定义占空比,并初始占空比为26%

sbit PWM=P2^0; //P2^0口输出PWM

sbit key_add=P3^4; //电机加速的按键 的I/O口

sbit key_dec=P3^5; //电机减速的按键 的I/O口

/函数声明**/

void delayxms(uint z); //延时

void Motor_add();//电机加速,即增加占空比

void Motor_dec();//电机减速,即减少占空比

void timer0_init();//定时器0初始化

/主函数***********/

void main()

{

timer0_init();

delayxms(5);

while(1)

{

Motor_add();

Motor_dec();

}

}

/延时处理******/

void delayxms(uint z) //延时xms程序

{

uint x,y;

for(y=z;x>0;x–)

for(y=110;y>0;y–);

}

void Motor_add() //电机加速

{

if(key_add0)

{

delayxms(2); //此处时间不能太长,否者会的中断产生冲突

if(key_add

0)

{

count+=0.5;//每按一次加速按键占空比加0.5

if(count>=32)//限定占空比上限

{

count=32;

}

}

while(!key_add);

}

}

void Motor_dec()//电机减速

{

if(key_dec0)

{

delayxms(2);//此处时间不能太长,否者会的中断产生冲突

if(key_dec

0)

{

count-=0.5;//每按一次减速按键占空比减0.5

if(count<=25) //限定占空比下限

{

count=25;

}

}

while(!key_dec);

}

}

/定时器0初始化/

void timer0_init()

{

TMOD=0x01; //定时器0工作于方式1

TH0=(65536-10)/256;

TL0=(65536-10)%256;

TR0=1;

ET0=1;

EA=1;

}

/定时0中断处理****/

void timer0_int() interrupt 1

{

TR0=0; //设置定时器初值期间,关闭定时器

TH0=(65536-10)/256;

TL0=(65536-10)%256;

TR0=1;

time++;

if(time

{

PWM=1;//输出高电平

}

else

PWM=0;

if(time>=100)

{

time=0;

}

}

我特地标注了重要部分程序的注释。另外,可以在程序中修改按键每次增加或者减少的占空比,但有的时候发现在按键调节占空比时,不想占空比一直增加或者减少下去,还可以在程序里面修改限定占空比的上下限,当达到上限或下限时,相应的增加或减少占空比的按钮这时就不再增加或者减少占空比了。这样在电机控制时就可以防止不小心让电机速度增加到规定速度以上或以下了。这些在程序注释里面课看见在哪里改。除此之外,还可以加进来很多功能。这里就不举相应的子了。

相关文章

  • 51单片机按键控制输出pwm的占空比 物联网开发找上海捌跃网络科

    人分类:物联网 之前说到利用51单片机输出pwm,但是输出的pwm是固定占空比的,如果想要改变占空比,还得回过头来...

  • [Python玩转物联网]实现一个呼吸灯效果

    Nodemcu开发板上自带一个LED,我们可以通过PWM来驱动这个LED,通过控制PWM的占空比从而实现呼吸灯的效...

  • 12.11

    AD,DA转换,PWM输出,Timer定时器分配通道channel,转换成PWM模式输出,通过调节占空比实现,观察...

  • 嵌入式学习笔记19.12.20

    PWM输出 定时器复用功能: 1. 有效电平 2. PWM1 PWM2 区别在于有效电平在前在后 占空比 Prel...

  • PWM输出控制LED亮灭(通用定时器TIMx)

    PWM即脉冲宽度调试,通过对周期内高低点平的所占时间长短(占空比)来调节GPIO的输出。 PWM的输出需要用到定时...

  • 10.13知识点总结

    今天学了PWM脉宽调制 占空比=有效宽度/总长度 有效电压=占空比*幅值 PWM1模式中是小于CCR有效 PWM2...

  • 关于ajaxSubmit上传文件

    pom.xml springMVC.xml html ajax 后台 冷链车开发找上海捌跃网络科技有限公司 poj...

  • spring boot集成elasticsearch

    一、配置环境直播抓娃娃APP开发找上海捌跃网络科技有限公司 spring boot1.5.2.RELEASE El...

  • 11/1

    servo函数,可以控制伺服电机和直流电机,可以直接通过控制电压来控制电机,也可以通过控制pwm的占空比来控制电机...

  • PWM

    PWM,Pulse-width modulation,是用占空比不同的方波,来模拟“模拟输出”的一种方式。简而言之...

网友评论

      本文标题:51单片机按键控制输出pwm的占空比 物联网开发找上海捌跃网络科

      本文链接:https://www.haomeiwen.com/subject/oagbzftx.html