跪求一个 89C52单片机通过按键产生PWM信号来控制LED灯的不同亮度的程序,
跪求一个89C52单片机通过按键产生PWM信号来控制LED灯的不同亮度的程序,设置三个按键,一个控制开关(控制单片机是否有PWM信号输出)两个按键调节占空比(一个加,一个...
跪求一个 89C52单片机通过按键产生PWM信号来控制LED灯的不同亮度的程序,设置三个按键,一个控制开关(控制单片机是否有PWM信号输出)两个按键调节占空比(一个加,一个减,)
sbit K1 =P3^3 ; //增加键
sbit K2 =P3^2 ; //减少键
sbit K2 =P3^4 ; //开关键
sbit lamp =P2^0 ; //闪烁灯 展开
sbit K1 =P3^3 ; //增加键
sbit K2 =P3^2 ; //减少键
sbit K2 =P3^4 ; //开关键
sbit lamp =P2^0 ; //闪烁灯 展开
1个回答
展开全部
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit lamp=P2^0;//输出
sbit k1=P3^3;//加键
sbit k2=P3^2;//减键
sbit k3=P3^4;//停止
uchar a=10;
void delay(uint x)//延时函数
{
uchar i;
while(x--)
for(i=0;i<110;i++);
}
void init()
{
TMOD=0X01;//晶振11.0592,定时器定时方式1
TH0=0XFF;//100us定时
TL0=0XA4;
EA=1;//开总中断
ET0=1;//开定时器中断
TR0=1;//开定时器
}
void key()
{
if(!k1)
{
delay(10);
if(!k1)
{
a++;
if(a==99)
a=1;
}
}
// while(!k1);
if(!k2)
{
delay(10);
if(!k2)
{
a--;
if(a==1)
a=99;
}
}
// while(!k2);
if(!k3)
{
delay(10);
if(!k3)
{
TR0=~TR0;//开定时器
}
}
while(!k3);
}
void main()
{
init();
while(1)
{
key();
}
}
void timer0() interrupt 1 using 3
{
uchar count; /*中断次数计数器变量*/
TH0=0xFF; /*恢复定时器初始值*/
TL0=0xA4;
count++;
if (count>=100)
count=0;
if (count<=a) /*当小于占空比值时输出低电平,高于时是高电平,从而实现占空比的调整*/
lamp=0;
else
lamp=1;
}
#define uchar unsigned char
#define uint unsigned int
sbit lamp=P2^0;//输出
sbit k1=P3^3;//加键
sbit k2=P3^2;//减键
sbit k3=P3^4;//停止
uchar a=10;
void delay(uint x)//延时函数
{
uchar i;
while(x--)
for(i=0;i<110;i++);
}
void init()
{
TMOD=0X01;//晶振11.0592,定时器定时方式1
TH0=0XFF;//100us定时
TL0=0XA4;
EA=1;//开总中断
ET0=1;//开定时器中断
TR0=1;//开定时器
}
void key()
{
if(!k1)
{
delay(10);
if(!k1)
{
a++;
if(a==99)
a=1;
}
}
// while(!k1);
if(!k2)
{
delay(10);
if(!k2)
{
a--;
if(a==1)
a=99;
}
}
// while(!k2);
if(!k3)
{
delay(10);
if(!k3)
{
TR0=~TR0;//开定时器
}
}
while(!k3);
}
void main()
{
init();
while(1)
{
key();
}
}
void timer0() interrupt 1 using 3
{
uchar count; /*中断次数计数器变量*/
TH0=0xFF; /*恢复定时器初始值*/
TL0=0xA4;
count++;
if (count>=100)
count=0;
if (count<=a) /*当小于占空比值时输出低电平,高于时是高电平,从而实现占空比的调整*/
lamp=0;
else
lamp=1;
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
宿兴电子
2024-11-28 广告
2024-11-28 广告
联系我们一、有无震荡源 无源这里的“源”不是指电源,而是指震荡源。也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫。而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。 二、价格不同 有源蜂鸣器往比无源蜂鸣器贵,就是因为里面多个震荡...
点击进入详情页
本回答由宿兴电子提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询