最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

PWM控制LED灯亮度程序

来源:动视网 责编:小OO 时间:2025-10-04 05:29:07
文档

PWM控制LED灯亮度程序

#include#include#include#includevoidledxianshi();voidPWM()sbitup=P1^5;//定义UP键sbitdown=P1^6;//定义DOWN键staticunsignedcharpwm;unsignedchart;unsignedcharxdataseg_add_at_0xEFFF;unsignedcharxdatalight_add_at_0xF7FF;#definebase_Adr0xDFFF#defineucharunsigned
推荐度:
导读#include#include#include#includevoidledxianshi();voidPWM()sbitup=P1^5;//定义UP键sbitdown=P1^6;//定义DOWN键staticunsignedcharpwm;unsignedchart;unsignedcharxdataseg_add_at_0xEFFF;unsignedcharxdatalight_add_at_0xF7FF;#definebase_Adr0xDFFF#defineucharunsigned
#i nclude

#i nclude

#i nclude

#include

void ledxianshi();

void PWM()

sbit up=P1^5; //定义UP键

sbit down=P1^6; //定义DOWN键

static unsigned char pwm;

unsigned char t;

unsigned char xdata seg_add _at_ 0xEFFF;

unsigned char xdata light_add _at_ 0xF7FF;

#define base_Adr 0xDFFF

#define uchar unsigned char

#define uchar unsigned char

#define uint unsigned int

#define ulong unsigned long

#define uchar unsigned char

#define uint unsigned int

#define ADC0809 XBYTE[0x0B000] //P2.6选通

float sum=0,fjg;

uint i,j,*q,*p,sd=5;

sbit p1_0=P1^0;

void wait(uint n);

void main(void)

{ j=0;

TMOD=0X01;//设置定时器0

TH0=0XFC;//定时时间设为1ms

TL0=0X18;

EA=0;//先关中断

EA=1;//开总中断

ET0=1;

//TR0=1;

for(; ;)

{

if(j=20){

do{}while(!TF0);

q=0x30;

for(i=0;i<20;i++)

{sum=sum+(*q)*(*q);

q++;

}

sum=sum/20;

fjg=sqrt(sum);

if(fjg>sd)

p1_0=1;

j=0;

}}

}

void power(void)

{ uchar x;

for(;;)

{ADC0809=0x01;

wait(1000);

x=ADC0809;

P2=x;

}

}

void wait(uint n)

{ uint i,j;

for(i=0;ifor(j=0;j<100;j++);

}

timer0()interrupt 1 using 1

{*p=ADC0809;

p++;

TH0=0XFC;

TL0=0X18;

TR0=1;

j++;

}

//sbit EOC=P3^2;//为A/D转换结束标志

//sbit START= //启动A/D

uint data tvdata; //

unsigned char xdata CH_base_Adr _at_ base_Adr;

unsigned char CH_data;

//unsigned char float;

void delay(unsigned int N) //延时

{

int i;

for(i=0;i}

void main()using 0

{

long b=19;

//light_add=0X3f;

/* 采样AD0809通道的值 */

while(1){

//CH_base_Adr=3;

CH_data =CH_base_Adr;

P0=CH_data;

tvdata=P0; //显示口

tvdata=(tvdata*b);

CH_base_Adr=0;

ledxianshi(); //显示

delay(50);

}

}

void ledxianshi(void) //显示模块

{

uchar k=0,seg=0,i=0;

//int i=0;

led[3]=tvdata%10;

led[2]=tvdata/10%10;

led[1]=tvdata/100%10;

led[0]=tvdata/1000;

for(k=0;k<4;k++)

{

seg=tv[k]; //选择哪个LED口

seg_add=seg;

i=led[k]; //显示口

light_add=a; //显示

delay(10);

}

}

PWM ()

{

void delay (unsigned char ms);

TMOD=0X21;

ET0=1;

ET1=1;

EA=1;

TH0=0XFC; //定时器0,定时1ms

TL0=0X18;

TH1=0X9C; //定时器1,定时0.1ms

TL1=0X00;

TR0=1;

PT1=1; //定义定时器1优先中断

pwm=0x9c;

while (1)

{

do

{

pwm++;

delay (10);

if (pwm==0xff) beep();

}

while (pwm!=0xff);

do

{

pwm--;

delay (10);

if (pwm==0x01) beep ();

}

while (pwm!=0x01);

}

}

void timer0 (void) interrupt 1 //定义定时器0

{

TH0=0XFC;

TL0=0X18;

TR1=1;

TH1=pwm;

P0=0X00;

}

void timer1(void) interrupt 3 //定义定时器1

{

P0=0XFF;

TR1=0;

}

void delay (unsigned char ms) //延时

{

unsigned char i=120;

while (ms--)

{

while (i--)

{}

}

}

文档

PWM控制LED灯亮度程序

#include#include#include#includevoidledxianshi();voidPWM()sbitup=P1^5;//定义UP键sbitdown=P1^6;//定义DOWN键staticunsignedcharpwm;unsignedchart;unsignedcharxdataseg_add_at_0xEFFF;unsignedcharxdatalight_add_at_0xF7FF;#definebase_Adr0xDFFF#defineucharunsigned
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top