AT89C52单片机可调输出PWM波

各位大侠:
你们好!
有AT89C52单片机可调输出PWM波的相关程序吗?要求可调,单片机的晶振是12MHZ,输出周期为1s,分20等级。有两个开关控制占空比的增加和减少。有完整的吗?我的邮箱是[email protected].万分感谢。

//很容易的,程序如下:

#include<reg52.h>

unsigned int a, b;

//------------------------------------------

void main()

{

  TMOD = 0x01;                 //T0定时方式1

  TH0 = (65536-50000) / 256;   //50ms@12MHz

  TL0 = (65536-50000) % 256;

  TR0 = 1;

  ET0 = 1;

  EX0 = 1;  EX1 = 1;

  IT0 = 1;  IT1 = 1;

  EA = 1;

  a = 0;

  b = 10;

  while(1);

}

//------------------------------------------

void time0() interrupt 1

{

  TL0 = (65536-50000) % 256;

  TH0 = (65536-50000) / 256;   //50ms@12MHz

  a++;

  if(a == 20) a = 0;           //在这里调整周期.

  if(a < b)  P2 = 0xff;        //在这里调整占空比.

  else   P2 = 0x00;

  P0 = ((b / 10) << 4) + b % 10;  //显示占空比

}

//------------------------------------------ 

void X0_INT() interrupt 0

{

  b++;

  if(b > 19) b = 19;           //占空比最大为19

}

//------------------------------------------

void X1_INT() interrupt 2

{

  b--;

  if(b < 1) b = 1;             //占空比最小为1.

}

//------------------------------------------

可见:

http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/f2005aed1643a12a63d09f24.html

//电路以及仿真效果如下图:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-03
占空比是产生一个方波 我需要一个类式于正玄波来控制白织灯由亮到暗
第2个回答  2010-07-30
这个很容易搞的,参考一些程序后自己编写练习练习就更好啦,对以后的工作之类的很有帮助,实在不懂得怎么搞来找我帮忙也是可以的
第3个回答  2010-07-30
给你发过去了,C的标准源程序,你下载到板子上,这个我试过的能用,占空比增加和减小由两个键控制,我的邮箱是:[email protected]本回答被提问者采纳
相似回答