单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 145|回复: 0
打印 上一主题 下一主题
收起左侧

单片机呼吸灯程序与波形演示

[复制链接]
跳转到指定楼层
楼主
网上找的呼吸灯程序,自己仿照写的
利用定时器产生pwm,实现呼吸灯
参考呼吸灯程序,同样可以实现控制直流电机的速度,可以到这个网页去看看https://www.zhihu.com/tardis/sogou/art/83373994

pwm波形:

单片机源程序如下:
  1. #include <reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char

  4. bit flag;                        //根据flag判断变亮或者变暗
  5. uchar count;        //进入中断次数
  6. uchar pwm;                //根据这个数值来进行点亮或熄灭
  7. uint updata;        //根据这个值来更新占空比,周期120ms
  8. sbit LED=P2^0;        //LED引脚
  9. void timer0();
  10. /*********定时器初始化函数***********/
  11. void timer0_init()               
  12. {
  13.         TMOD=0x02;        //定时器0,方式2
  14.         TH0=0xa3;                //假设晶振为11.0592M,定时100us
  15.         TL0=0xa3;               
  16.         ET0=1;                        //开定时器0中断
  17.         EA=1;                                //开总中断
  18.         TR0=1;                        //开定时器
  19. }

  20. void main()
  21. {
  22.         flag=0;                        //初始为占空比上升
  23.         count=0;
  24.         pwm=10;                        //脉冲周期为2ms,初始占空比50%
  25.         updata=0;
  26.         LED=1;
  27.         timer0_init();
  28.         while(1);
  29. }

  30. void timer0() interrupt 1
  31. {
  32.         count++;
  33.         updata++;
  34.         if(count==pwm)
  35.                 LED=0;
  36.         if(count==20)
  37.         {
  38.                 LED=1;
  39.                 count=0;
  40.         }
  41.         if((updata==1200)&&(flag==0))                //120ms到,根据flag更新占空比
  42.         {
  43.                 updata=0;
  44.                 pwm++;                                                                                                //每次加1,占空比增加5%
  45.                 if(pwm==19)
  46.                         flag=1;
  47.         }
  48.         if((updata==1200)&&(flag==1))
  49.         {
  50.                 updata=0;
  51.                 pwm--;
  52.                 if(pwm==1)
  53.                         flag=0;
  54.         }
  55. }
复制代码

3-PWM的基本参数
在上图中,频率F的值为1/(T1+T2),占空比D的值为T1/(T1+T2)。通过改变单位时间内脉冲的个数可以实现调频;通过改变占空比可以实现调压。占空比越大,所得到的平均电压也就越大,幅值也就越大;占空比越小,所得到的平均电压也就越小,幅值也就越小。动图演示如图4所示。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 转播转播 分享分享 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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