找回密码
 立即注册

QQ登录

只需一步,快速开始

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

最简单的PWM调节程序

  [复制链接]
跳转到指定楼层
楼主
ID:151846 发表于 2016-12-21 15:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我不知道为什么这么多人写51定时器PWM程序这么复杂,本身51定时器不管工作模式在0或1或2都会自动装初值,你如果要来调光或要一个不太精确的PWM波,它都能胜任了。(设晶振12MHZ)模式0最大定时时间=8.192ms,模式1=65.536ms,模式2=256us。只要你打开定时器中断,不用你装定时器初值,它自己装,你就得到8.192ms或65.536ms或256us时间的中断。比如256us的中断时间,中断10次就是2.56ms,你让它5次中断输出高电压,5次中断输出低电压,它就是高1.28ms低就是1.28ms。你让它9次中断输出高,1次中断输出低,就改变了PWM的占空比。

不多说了,下面程序就是只用一个定时器,并带一个按键调节占空比。电路较应该好画了吧。一片89C51,一个BUTTON按键,一个示波器观察波形。



#include "reg51.h"
unsigned char a=5;
unsigned char i=0;
sbit K1=P2^0;
void main()
{   TMOD=0x02;
        EA=1;
        ET0=1;
        TR0=1;
  while(1)
  {  if(K1==0)
         {TR0=0;
            a--;
            if(a==0)
              {a=10;}
          while(~K1)
                {TR0=1;}
            }
        }
}

void time() interrupt 1
{
   i++;       
   if(i>11)
   {i=0;}
  if(i>a)
  {P0=0xff;}
  else P0=0x00;
}




评分

参与人数 5黑币 +82 收起 理由
15942379927 + 5 很给力!
3760609865 + 12 很给力!
send + 10 回帖助人的奖励!
5314039 + 5 很给力!
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:116826 发表于 2016-12-21 21:54 | 只看该作者
简洁精辟,受教了。
回复

使用道具 举报

板凳
ID:136189 发表于 2016-12-21 23:44 来自手机 | 只看该作者
牛,太牛了,
回复

使用道具 举报

地板
ID:99612 发表于 2017-3-14 20:55 | 只看该作者
非常的简洁明了!希望能看到多一些这样的教程,非常感谢楼主!
回复

使用道具 举报

5#
ID:96881 发表于 2017-3-15 10:25 | 只看该作者
这个借鉴啦,正好在学习这个,谢谢您分享
回复

使用道具 举报

6#
ID:170889 发表于 2017-3-15 13:52 | 只看该作者
来学习下,刚来的小白
回复

使用道具 举报

7#
ID:182904 发表于 2017-3-24 13:06 | 只看该作者
简单精辟  正好用到 谢谢谢谢
回复

使用道具 举报

8#
ID:170743 发表于 2017-3-24 20:45 | 只看该作者
不错,看看
回复

使用道具 举报

9#
ID:174969 发表于 2017-3-24 20:45 | 只看该作者
本帖最后由 goty2000 于 2017-3-24 21:12 编辑

看明白了,我最近买了那个8脚STC单片机,15F104w,研究中。。。
回复

使用道具 举报

10#
ID:171948 发表于 2017-3-26 12:03 | 只看该作者
好的程序,源自好的思路
回复

使用道具 举报

11#
ID:170148 发表于 2017-3-27 22:31 来自手机 | 只看该作者
谢谢分享
回复

使用道具 举报

12#
ID:184098 发表于 2017-3-28 13:19 | 只看该作者
正好需要这个程序!
回复

使用道具 举报

13#
ID:192837 发表于 2017-5-13 02:28 来自手机 | 只看该作者
学习了
回复

使用道具 举报

14#
ID:169944 发表于 2017-5-14 01:28 | 只看该作者
和我以前写的输出三路pwm控制rgb灯思路差不多
回复

使用道具 举报

15#
ID:159139 发表于 2017-6-5 21:44 | 只看该作者
非常的简洁,非常的优秀,谢谢分享。
回复

使用道具 举报

16#
ID:201278 发表于 2017-6-19 13:17 | 只看该作者
好好学习一下
回复

使用道具 举报

17#
ID:74784 发表于 2017-8-13 00:41 | 只看该作者
谁有汇编语言的代码?
回复

使用道具 举报

18#
ID:222394 发表于 2017-9-17 14:27 | 只看该作者
很厉害   但我想加多一个按键调占空比,一个加一个减,可不懂哪里出问题调不出来
回复

使用道具 举报

19#
ID:245429 发表于 2017-11-2 19:49 | 只看该作者
分析的简洁透彻,很棒
回复

使用道具 举报

20#
ID:80372 发表于 2018-5-18 15:44 | 只看该作者

这个借鉴啦,正好在学习这个,谢谢您分享
回复

使用道具 举报

21#
ID:290716 发表于 2018-5-18 19:26 | 只看该作者
很不错!
回复

使用道具 举报

22#
ID:331575 发表于 2018-5-19 08:31 来自手机 | 只看该作者
我竟然看明白了。感谢楼主分享
回复

使用道具 举报

23#
ID:333841 发表于 2018-5-19 19:18 | 只看该作者
好教程,受教了
回复

使用道具 举报

24#
ID:293762 发表于 2018-5-20 21:29 | 只看该作者
为楼主好的构思点赞!
回复

使用道具 举报

25#
ID:336844 发表于 2018-5-23 21:03 | 只看该作者
6666666666666666
回复

使用道具 举报

26#
ID:407374 发表于 2019-4-3 09:15 | 只看该作者
nice  很好
回复

使用道具 举报

27#
ID:468240 发表于 2019-4-3 15:07 来自手机 | 只看该作者
i和a分别代表什么?
回复

使用道具 举报

28#
ID:399179 发表于 2019-4-3 20:28 来自手机 | 只看该作者
呵呵!没看懂,能不能加上备注?谢谢!
回复

使用道具 举报

29#
ID:468997 发表于 2019-4-28 13:52 | 只看该作者
学习了,谢谢
回复

使用道具 举报

30#
ID:382454 发表于 2019-4-28 23:33 来自手机 | 只看该作者
非常好的思路,优秀。
回复

使用道具 举报

31#
ID:503916 发表于 2019-4-29 07:59 | 只看该作者
学习了,谢谢分享!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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