单片机控制led灯亮度改变代码(单片机控制led灯点亮代码)
如何用单片机控制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
相关文章
发表评论
评论列表
- 这篇文章还没有收到评论,赶紧来抢沙发吧~