单片机按键控制灯得亮度(PWM)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include
#define uchar unsigned char
#define uint unsigned int
void delay(uint z);
sbit s2=P3^4;
sbit s1=P3^5;
sbit bee=P2^3;
void beep();
void keyscan();
uchar PWM;
uchar num;

void main()
{
TMOD=0x01;
TH0=(65536-500)/256;
TL0=(65536-500)%256;
EA=1;
ET0=1;
TR0=1;
PWM=16;
P1=0x00;
while(1)
{
keyscan();
}

}

void beep()
{
bee=0;
delay(50);
bee=1;
delay(50);

}

void keyscan()
{
if(s1==0)
{
delay(10);
if(s1==0)
{
if(PWM!=0x20) //32
{
PWM++;
delay(250); //调速明显
}
else
beep();

}
}




if(s2==0)
{
delay(10);
if(s2==0)
{
if(PWM!=0x01) //1
{
PWM--;
delay(250);
}
else
beep();

}
}
}



void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}


void t0() interrupt 1
{
TH0=(65536-500)/256; //500us中断一次
TL0=(65536-500)%256;
num++;
if(num==32)
{
num=0;
}

if(num<=PWM)
{
P1=0xff;
}
else
P1=0x00;

}

相关文档
最新文档