51单片机输出pwm波形

原创 2016年08月31日 13:52:51
#define FOSC 11059200L
#define T1MS (65536-FOSC/12/1000)

unsigned char count_1;
unsigned char count_2;
unsigned char duty_cycle_1;
unsigned char duty_cycle_2;
sbit pwm_out_1 = P1^0;
sbit pwm_out_2 = P1^1;
void timer1_init()
{
TMOD = 0x01;
TL0 = T1MS;
TH0 = T1MS>>8;
TR0 = 1;
ET0 = 1;
EA = 1;
count_1 = count_2 = 0;
}


void timer1_isr() interrupt 1 using 1
{
TL0 = T1MS;
TH0 = T1MS;
count_1++;
count_2++;
if(count_1 == 100)
count_1 = 0;
if(count_2 == 100)
count_2 = 0;
count_1 > duty_cycle_1?(pwm_out_1 = 0):(pwm_out_1 = 1);
count_2 > duty_cycle_2?(pwm_out_2 = 0):(pwm_out_2 = 1);

}


void main(void)
{
duty_cycle_1 = 50;
duty_cycle_2 = 60;
timer1_init();
P2 = 0x0;
while(1)
{

}
return;
}


仿真结果


使用51单片机输出PWM控制舵机

舵机、使用51单片机的定时器中断实现PWM
  • GYZhe
  • GYZhe
  • 2014年11月08日 19:36
  • 11406

利用51单片机输出pwm

51单片机是可以输出PWM的,比较的麻烦。此时需要用到内部定时器来实现,可用两个定时器实现,也可以用一个定时器实现。   用两个定时器的方法是用定时器T0来控制频率,定时器T1来控制占空比。大致的的编...
  • dmfylb
  • dmfylb
  • 2017年05月18日 13:31
  • 1256

51单片机PWM程序详解

#include //程序是基于KEIL-C51编写,引入8051头文件 sbit P10=P1^0; sbit P11=P1^1; unsigned int scale; //占空比控制...
  • ouening
  • ouening
  • 2016年05月10日 14:17
  • 3790

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

FPGA学习之路---SDRAM讲解

如果对SDRAM原理以及时序不是很了解的朋友,推荐看一下如下这篇文章: SDRAM-高手进阶,终极内存技术指南——完整进阶版 ***********************************...
  • lusics
  • lusics
  • 2016年12月14日 20:58
  • 1252

ifdef、ifndef使用规则,FPGA开发工具分享

verilog中使用ifdef/else/endif和ifndef/else/endif的语句进行预编译处理,可以对指定的程序段进行编译,以便于在不同工程模式下灵活的切换代码,实现不同的功能需求。代码...

51单片机按键控制输出pwm的占空比

之前说到利用51单片机输出pwm,但是输出的pwm是固定占空比的,如果想要改变占空比,还得回过头来修改程序并重新烧写进单片机。这样做的话不但麻烦、效率低,还又把芯片的可烧写次数减少了一次,虽然51的芯...
  • dmfylb
  • dmfylb
  • 2017年05月21日 20:11
  • 1228

中断控制51单片机输出PWM

  • 2015年12月07日 21:00
  • 2KB
  • 下载

51单片机输出PWM

  • 2013年04月19日 15:35
  • 45KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:51单片机输出pwm波形
举报原因:
原因补充:

(最多只允许输入30个字)