51单片机是可以实现PWM波输出的,原理其实都是一样的。说白了,PWM波就是让某一个引脚输出周期性连续高低电平变化的信号。

那么如何用51单片机实现周期性的高低电平呢?

答案就是用定时器。首先我们需要配置一下定时器,这里不做过多阐述,资料到处都有。然后设置一个计数周期,比如说让定时器计一百个数产生溢出,那么这一百个数的时间就是一个周期。接下来我们就以这一百个数的时间为基准。比如设置前五十个数的时间某引脚为高电平,后五十个数为低电平。那么这个引脚就会输出一个占空比为50%的高低电平变化。这就是所谓的PWM波。

基本代码实现如下:

sbitPWM=P2^0;//P2.0输出pwm

int   time;//定义占空比的变量

void main()

{

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

TH0=0xff;//(65536-10)/256;//赋初值定时

TL0=0xf7;//(65536-10)%256;//0.01ms

EA=1;//开总中断

ET0=1;//开定时器0中断

TR0=1;//启动定时器0

while(1)

{

}

}

void tim0() interrupt1

{

TR0=0;//赋初值时,关闭定时器

TH0=0xff;//(65536-10)/256;//赋初值定时

TL0=0xf7;//(65536-10)%256;//0.01ms

TR0=1;//打开定时器

time++;

if(time>=100)

time=0;

if(time<=50)   //占空比%50,可改

PWM=1;

else

PWM=0;

}

PWM波可以用来调节速度,角度,灰度等。

51单片机定时器实现PWM波相关推荐

  1. 【51单片机学习】PWM电机调速

    简单的PWM电机调速--基于51单片机 (一)51单片机需要用到的寄存器 (二)PWM波的产生及调速原理 (三)电机调速的实现 (一)51单片机需要用到的寄存器 中断允许寄存器,详情可以看STC51单 ...

  2. 【51MCU】51单片机定时器中断写MIDI音乐(按键可切换音乐)

    Author: Manba Cople 专业:IOT 说明:记录和输出学习内容 文章目录 前言 定时器 音乐播放 音乐库 总结和展望 前言 程序思路:该程序是利用51单片机的定时器中断,另外根据音符的 ...

  3. 基于51单片机可调PWM发生器

    源码:基于51单片机可调PWM发生器 一.设计任务 PWM信号频率范围为20Hz ~ 100kHz 占空比为5%~95% 键盘设置PWM频率和占空比 液晶模块显示输出频率和占空比 二.硬件设计 1.硬 ...

  4. 51单片机定时器频率计算

    频率是周期的倒数 51单片机定时器中TH与TL可以改变周期来改变频率. 举例如下 3000us=3ms=0.003s   T=0.003s频率=333HZ    2000us=2ms=0.002s   ...

  5. c语言单片机定时器的应用程序,51单片机定时器中断程序(C语言)

    51c程序 51单片机定时器中断程序(C语言) 用C语言实现的,先要定义好定时器的初值 不管你使用多大的晶振,使用51单片机,一般都是12分频出来,也就可以得出一个机器周期 机器周期=12/n(n指晶 ...

  6. 基于51单片机定时器计数+2片74HC595联级+8位数码管时钟+按键修改时间

    基于51单片机定时器计数+2片74HC595联级+8位数码管时钟+按键修改时间 Proteus仿真 实例代码 #include "at89x52.h" /**74hc595引脚定义 ...

  7. 51单片机定时器(T0/T1)的使用与配置流程

    第一步:配置工作方式寄存器-TMOD TMOD寄存器的字节地址为89H,不能位寻址.一般采用整体赋值的方式进行配置:如:TMOD=0x01 // 0000 0001 GATE=0,定时器仅受TCON寄 ...

  8. 51单片机的直流电机PWM调速控制系统(附Proteus仿真+C程序等全套资料)

    设计思路 直流电机PWM控制系统的主要功能包括:很实现对直流电机的加速.减速以及电机的正转.反转和急停,并且可以调整电机的转速,能够方便的实现电机的智能控制. 主体电路:即直流电机PWM控制模块.这部 ...

  9. 51单片机定时器的查询和进入中断处理

    51单片机定时器可用两种方式处理:查询和进入中断处理. 1.查询方式 void Init_T0 (void) 定时器初始化 { TMOD = 0x01;//计时器模式 TH0 = (65535-650 ...

  10. 51单片机定时器秒计数时钟+Proteus仿真

    51单片机定时器秒计数时钟+Proteus仿真 Proteus仿真 实例代码 本实例采用的是普中开发板Proteus模板 功能:电子钟,从左到右,1.2位为秒,3.4位为分,5.6位为时,7.8位为天 ...

最新文章

  1. 经济独立,是你最大的底气
  2. 深度|从Go高性能日志库zap看如何实现高性能Go组件
  3. c语言int 转bool_C++代码实现逆波兰式_C 语言
  4. hadoop1常见配置含义
  5. html5 原生拖拽,原生JS实现拖拽效果
  6. Android深度探索(卷1)HAL与驱动开发 心得体会 第十章 嵌入式Linux的调用技术
  7. 网站“设为首页”代码,“加入收藏”代码
  8. POJ2586(贪心)
  9. 搭建自己的企业QQ [2007年6月15日]
  10. Swagger2+Apizza接口文档
  11. Vim编辑器快速上手
  12. Fisher精确检验的通俗理解
  13. 迷你西游最新服务器是哪个,迷你西游公测新开服务器“万佛朝宗”公告
  14. C++ 解析器--cint
  15. 由国内媒体的“非典”报道看信息生态问题-引文
  16. 618年中大促如何选择蓝牙耳机?值得买的蓝牙耳机品牌
  17. React组件Component
  18. 马克思主义03709
  19. codeblocks||=== Build file: no target in no project (compiler: unknown) ===
  20. vue range 双向滚动 取中间值

热门文章

  1. 长微博生成器 php,【九零天下】长微博生成器的PHP代码部分
  2. Allegro封装制作
  3. VARCHART XGantt教程之功能介绍
  4. SYNOPSYS™使用不同透镜设计程序 来改善透镜设计
  5. Chrome应用商店镜像方法 | Crx根据ID直接下载 | 浏览器插件推荐网站
  6. android逆向 arm,[原创]Android下ARM静态反编译逆向.(小试多玩YY协议)
  7. Excel学习 -- 数据透视表功能
  8. Ambari安装和汉化(转)
  9. List<Map>转Map<String,List>
  10. win10用账户登录计算机,图文详解让你的win10系统实现微软账户自动登录-系统操作与应用 -亦是美网络...