焊接资讯

您现在的位置是:首页 > led灯 > 正文

led灯

单片机控制led灯亮度改变代码(单片机控制led灯点亮代码)

工品易达2022-11-14led灯13

如何用单片机控制LED灯的亮度,不要PWM波的程序

//程序名称:一只按键控制两只LED灯十种亮度显示

//编程人:xx

//备注:此程序简单

#includestc12c2052ad.h

sbit d1=P1^7;、、 //定义LED灯1

sbit d2=P1^6; //定义LED灯2

sbit key1=P3^0; //定义按键灯

void delay(unsigned int a){ //延时程序

unsigned int i;

while( a-- != 0){

for(i = 0; i 100; i++);

}

}

void main(){

while(1){

unsigned int a,b,c,d;

if(key1==0)d++; //按键判断

switch(d) //按键信息比较

{

case 1: b=9;;a=1;break;

case 2: b=8;;a=2;break;

case 3: b=7;;a=3;break;

case 4: b=6;;a=4;break;

case 5: b=5;;a=5;break;

case 6: b=4;;a=6;break;

case 7: b=3;;a=7;break;

case 8: b=2;;a=8;break;

case 9: b=1;;a=9;break;

}

while(key1==0); 判//判断按键是否松开

if(d==10)d=0; //按键9种亮度判断,是否是第9种,如果是,则d=0

for(c=0;c2;c++){ //亮度模式循环显示

d1=0;

d2=1;

delay(a);

d1=1;

d2=0;

delay(b);

}

}

}

、//2010.10.05 20;06修改

//此程序是我写的简单程序,已做过实验,并且通过!

用51单片机c语言让八个led亮度自左向右逐渐变亮(pwm)

#include iom16.h

#include avr_macros.h

void Init_IO(void)

 {

   DDRA = 0xFF;

   PORTA = 0x00;

 }

 /*以上代码51忽略*/

void LED1 (unsigned char x,unsigned char LEDx)

{

  unsigned char Count = 0;

  Count = LEDx * 36;    //最小0,最大 7 * 36 = 252,char型最大不能超过255;

  Count = Count + 1;    // 加1的目的是针对LED0不亮

   if(x = Count)  // = 是针对LED0不亮

     PORTA |= (1  LEDx);  //51怎么改?。 P0 |= (1  LEDx); PWM正占空

    else

     if(x  Count)

       PORTA = ~(1  LEDx); //51怎么改?。 P0 = ~(1  LEDx); PWM负占空 

}

void main( void )

{

  unsigned char delay = 0;

  unsigned char LEDx = 0;

  Init_IO();

  while (1)

   {

      delay ++;

      if(delay == 250)

       {

         delay = 0;

         LEDx ++;

         if(LEDx  7)

           LEDx = 0;

       }

      LED1(delay,LEDx);

   }

}

用单片机程序使1个LED亮度改变

#includereg51.h

sbit led1=P0^0;

sbit led2=P0^1;

sbit led3=P0^2;

sbit led4=P0^3;

sbit led5=P0^4;

sbit led6=P0^5;

sbit led7=P0^6;

sbit led8=P0^7;

sbit led_k=P1^0;

sbit du=P1^1;

sbit we=P1^2;

void delay10us(unsigned int i);/*延时函数*/

main()

{

unsigned int i=0;

led_k=1;/*打开8个led的总开关*/

du=0;

we=0;

delay10us(10);

while(1)

{

for(i=0;i500;i++)//渐亮

{

P0=255;

delay10us(i);

P0=0;

delay10us(500-i);

}

for(i=0;i500;i++)//渐灭

{

P0=0;

delay10us(i);

P0=255;

delay10us(500-i);

}

}

}

void delay10us(unsigned int i)

{

unsigned int j;

for(;i0;i--);

// for(j=1;j0;j--);

}

给你参考程序噢。 有哪里不懂的单步调试看,不行就接着问

51单片机怎么用指令改变LED的亮度

MOV R7,#0FFH

......

MOV R6, #0FFH

这两个控制延时时间的,改变0FFH就可以改变延时时间也就改变LED亮度。

请问:单片机使用C语言编程,怎样控制led灯的完成亮度强弱变换?

/*********************************************************************

模拟PWM输出控制灯的10个亮度级别

将定时器2溢出定为1/1200秒。每10次脉冲输出一个120HZ频率。

这每10次脉冲再用来控制高低电平的10个比值。

这样,在每个1/120秒的方波周期中,我们都可以改变方波的输出占空比,从而控制LED灯的10个级别的亮度。

*******************************************************************/

#define uchar unsigned char

#define uint unsigned int

#define ulong unsigned long

#include reg52.h //包括一个52标准内核的头文件

sbit P10 = P1^0; //要控制的LED灯

sbit K1= P3^2; //按键K1

uchar scale;//用于保存占空比的输出0的时间份额,总共10份

char code dx516[3] _at_ 0x003b;//这是为了仿真设置的

//模拟PWM输出控制灯的10个亮度级别

void main(void) // 主程序

{

uint n;

RCAP2H =0xF3; //赋T2的预置值,溢出1次是1/1200秒钟

RCAP2L =0x98;

TR2=1; //启动定时器

ET2=1; //打开定时器2中断

EA=1; //打开总中断

while(1) //程序循环

{ ;//主程序在这里就不断自循环,实际应用中,这里是做主要工作

for(n=0;n50000;n++); //每过一会儿就自动加一个档次的亮度

scale++;

if(scale==10)scale=0;

}

}

//1/1200秒定时器2中断

timer2() interrupt 5

{

static uchar tt; //tt用来保存当前时间在一秒中的比例位置

TF2=0;

tt++;

if(tt==10) //每1/120秒整开始输出低电平

{

tt=0;

if(scale!=0) //这里加这一句是为了消除灭灯状态产生的鬼影

P10=0;

}

if(scale==tt) //按照当前占空比切换输出高电平

P10=1;

}

――――――――――――――――――

在主程序中,每延时一段时间,就自动换一个占空比,以使亮度自动变化,方便观察。

编译,运行,看结果。

可以看到,LED的亮度以每种亮度1秒左右不断变化,共有10个级别。

单片机控制led灯亮度改变代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于单片机控制led灯点亮代码、单片机控制led灯亮度改变代码的信息别忘了在本站进行查找喔。微信号:ymsc_2016

发表评论

评论列表

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~