• 大小: 19KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-10
  • 语言: 其他
  • 标签: C51  led  pwm  

资源简介

LED PWM控制调光程序 c51

资源截图

代码片段和文件信息

#include 

static char pwmdirpwmdirold;

sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_3=P1^3;

//sbit P0_4=P0^4;
//sbit P0_6=P0^6;

sbit P2_0=P2^0;
sbit P2_1=P2^1;
sbit P2_2=P2^2;
sbit P2_3=P2^3;
sbit P2_4=P2^4;
sbit P2_5=P2^5;
sbit P2_6=P2^6;
sbit P2_7=P2^7;

static unsigned char pwm_f;
static unsigned char H_MAX;
static unsigned char keyvalkeyoldpwm_pulse;

void Delay(unsigned char ms);
unsigned char GetKey();
void LedShow(unsigned char value); 
void Timer0_init();
void main()
{  
keyval=keyold=0;
pwmdir=pwmdirold=2;
H_MAX=150;
pwm_pulse=0;
pwm_f=0;
P1=0x80;

Timer0_init();

while(1)
{
keyval=GetKey();
LedShow(keyval);
if(0==keyval)
{
continue;
}
else
{
if(5==keyval)
{
pwmdir=pwmdirold=2;
P1=0x80;
break;
}
else if(1==keyval)
{
pwmdir=1;
}
else if(2==keyval)
{
pwmdir=0;
}
else if(3==keyval)
{
H_MAX=150;
}
else if(4==keyval)
{
H_MAX=80;
}
 }
}
}

void Timer0_init()
{
TMOD=0x02;
TH0=0x48;
TL0=TH0;

ET0=1;
TR0=1;
EA=1;
}
void Timer0_inter() interrupt 1 
{
pwm_f++;
pwm_f%=200;
if(2!=pwmdir)
{
if(pwmdirold!=pwmdir)
{
pwmdirold=pwmdir;
P1_2=0;
P1_3=0;
Delay(100);//
if(1==pwmdir)
{
P1_2=0;

if(0==pwm_f)
{
P1_3=1;
}
else if(H_MAX==pwm_f)
{
P1_3=0;
}
}
else 
{
P1_3=0;

if(0==pwm_f)
{
P1_2=1;
}
else if(H_MAX==pwm_f)
{
P1_2=0;
}
}

else 
{
if(1==pwmdir)
{
P1_2=0;

if(0==pwm_f)
{
P1_3=1;
}
else if(H_MAX==pwm_f)
{
P1_3=0;
}
}
else 
{
P1_3=0;

if(0==pwm_f)
{
P1_2=1;
}
else if(H_MAX==pwm_f)
{
P1_2=0;
}
}
}
}
}

unsigned char GetKey()
{  
P2_0=0;
if(0==P2_4)
{
P2_0=1;
return 7;
}
else if(0==P2_5)
{
P2_0=1;
return 8;
}

P2_0=1;
P2_1=0;
if(0==P2_4)
{
P2_1=1;
return 5;
}
else if(0==P2_5)
{
P2_1=1;
return 6;
}

P2_1=1;
P2_2=0;
if(0==P2_4)
{
P2_2=1;
return 3;
}
else if(0==P2_5)
{
P2_2=1;
return 4;
}

P2_2=1;
P2_3=0;
if(0==P2_4)
{
P2_3=1;
return 1;
}
else if(0==P2_5)
{
P2_3=1;
return 2;
}
else 
{
P2_3=1;
return 0;
}
}

void LedShow(unsigned char value)
{
switch(value)
{
case 1:
P0=0xF9;
P1_0=0;
break;
case 2:
P0=0xA4;
P1_0=0;
break;
case 3:
P0=0xB0;
P1_0=0;
break;
case 4:
P0=0x99;
P1_0=0;
break;
case 5:
P0=0x92;
P1_0=0;
break;
case 6:
P0=0x82;
P1_0=0;
break;
case 7:
P0=0xF8;
P1_0=0;
break;
case 8:
P0=0x80;
P1=0xFE;
break;
default:
break;
}
}

void Delay(unsigned char ms)
{
un

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       7279  2009-06-26 19:22  PWM\pwm

     文件       3038  2009-06-26 19:22  PWM\pwm.c

     文件       1490  2009-06-26 19:22  PWM\pwm.hex

     文件         39  2009-06-26 19:22  PWM\pwm.lnp

     文件      11568  2009-06-26 19:22  PWM\pwm.LST

     文件      13948  2009-06-26 19:22  PWM\pwm.M51

     文件       7698  2009-06-26 19:22  PWM\pwm.OBJ

     文件       1204  2009-06-26 20:57  PWM\pwm.Opt

     文件        214  2009-06-28 10:26  PWM\pwm.plg

     文件       2152  2009-06-26 12:45  PWM\pwm.Uv2

     文件       1204  2009-06-26 18:32  PWM\pwm_Opt.Bak

     文件       2148  2009-06-26 12:01  PWM\pwm_Uv2.Bak

     文件       6376  2009-06-26 19:22  PWM\STARTUP.A51

     文件      10762  2009-06-26 19:22  PWM\STARTUP.LST

     文件        750  2009-06-26 19:22  PWM\STARTUP.OBJ

     目录          0  2009-07-29 14:25  PWM

----------- ---------  ---------- -----  ----

                69870                    16


评论

共有 条评论