求编程大神!给一个可以直接调用的PWM(呼吸灯,)模快! 越简单越好类似延时程序 谢谢 100

 我来答
liuzhou_huang
2014-10-29 · TA获得超过980个赞
知道小有建树答主
回答量:795
采纳率:93%
帮助的人:264万
展开全部
//抄自人家,不是原创
1。单片机的晶振是12MHz,输出周期为1s。
2。用两个开关控制占空比的增加和减少,分20等级。

针对这个题目,做而论道设计了一个简单的实验电路:
 在 P2 口的 8 条线输出 PWM 波形;
 在 /INT1、/INT0 外接了两个按键,用来调整占空比;
 在 P0 口外接了两个 BCD 数码显示器,用来显示当前的占空比的等级。
 实验的时候,可以使用示波器来观察 P2 口输出的波形。
 如果把 PWM 波形的频率提高,也可以用 LED 观察到渐亮渐暗的效果,目前看,只是闪烁的时间发生变化。
#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.
}
追问
谢谢,看不懂
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式