可以更换限流电阻。单片机LED灯的亮度较暗,可能是因为限流电阻较大,可以换一个小一些的电阻试试。控制灯的颜色也可以,只要能给信号的都能控制灯的颜色,只要灯支持颜色变化,传对应的信号灯就变化不同的颜色,一般51单片机
--单片机驱动单个LED是完全没有问题的,问题是你驱动led的那个端口是什么电平,如果led阳极接vcc,阴极接I/O口,那么此I/O口必须是低电平,如果led阴极接vss阳极接I/O口,则此I/O口必须为高电平。所以要确定端口的电平
这个是需要看外围电路的,不一定是输入低电平led就会亮,首先led的正极接到vcc,负极接到单片机的p1.0上,当单片机的p1.0为高电平时,led两端电压一样,电流不会流动,led不会亮,只有当p1.0为低电平是,电流才会从vc
缺少大循环。程序跑飞了。
单片机数组问题,这个程序,LED灯为什么很暗
呼吸灯的程序,如果有硬件的PWM模块,是很简单的,按一定的规律让PWM的输出变化就可以。像这样输出10%亮度,持续200ms,输出20%亮度,持续200ms,输出30%亮度,持续200ms。。。如果没有硬件PWM模块,可以用软件来模拟,比如
应该是程序的问题,你的程序进入另一个子程序的时候灯灭的时间相对太长,而亮的时间又太短(当然这是相对的,人眼分辨不出来)。就像可以通过控制矩形波的占空比来控制LED的亮度那样,假定低电平led亮,波形宽度为100。当低
可以更换限流电阻。单片机LED灯的亮度较暗,可能是因为限流电阻较大,可以换一个小一些的电阻试试。控制灯的颜色也可以,只要能给信号的都能控制灯的颜色,只要灯支持颜色变化,传对应的信号灯就变化不同的颜色,一般51单片机
--单片机驱动单个LED是完全没有问题的,问题是你驱动led的那个端口是什么电平,如果led阳极接vcc,阴极接I/O口,那么此I/O口必须是低电平,如果led阴极接vss阳极接I/O口,则此I/O口必须为高电平。所以要确定端口的电平
这个是需要看外围电路的,不一定是输入低电平led就会亮,首先led的正极接到vcc,负极接到单片机的p1.0上,当单片机的p1.0为高电平时,led两端电压一样,电流不会流动,led不会亮,只有当p1.0为低电平是,电流才会从vc
缺少大循环。程序跑飞了。
单片机数组问题,这个程序,LED灯为什么很暗
其它的情况下都需要修改电路了。提升LED数码管亮度的方法主要有一下四种,前两种针对动态扫描方式,后两种是静态显示方式。1、采用共阴的LED数码管,并将公共端直接连接到P0口上。因为一般数字IO口输出0时是吸收电流的,其
1 关于你的led怎么都不亮:原因可能是连接的方法不太对,你可以参考下述连接方式,检查一下你的电路。方法1:用8050的三极管做开关电路,三极管的基极接p2.0,然后用集电极通过led接5v电源,发射极通过220欧姆电阻接地。执行
如何用单片机点亮LED灯 接好单片机的硬件电路,然后编写程序,再然后烧写程序,然后就可以程序了,没问题的话就可以按你的要求点亮了 如何利用AT89S51单片机控制一个LED灯的亮度 # include
首先检查硬件,驱动方式有没有问题,电流够不够大,延时合不合理?如果硬件不确定的的话,试一试用软件仿真,你是直接驱动IO口,功能还是很简单的,keil的软件仿真能够隔开你的硬件,程序单步执行,看端口输出能不能达到设计要
首先从你给出的条件来说:你用sbit 声明led1来代表P1^0口,但是在主函数中却使用led来点亮,很明显这个是不行的,而且编译时会报错。再一个你要确定LED是连在P1口。最后,你要清楚是共阴还是共阳接法,这样决定是写1
单片机实验板上led灯不够亮,应该是程序的问题,可是该怎么改呢??
1、首先打开桌面上的keil软件,在进行对51单片机进行编程时最常用的就是keil软件。2、编写相应的代码:#include
pwm,用定时器T1溢出做pwm周期,在每次T1开始计数时触发输出,软件边增1计数边检查溢出标志。如果软件计数满则清输出,否则直到溢出清输出、清软件计数满值。改变软件计数满值就能改变亮度。51单片机输出pwm波控制led灯亮度 频率
例如每间隔1毫秒电平取反一次就可以改变亮度。那你在用个变量值来给这个时间赋值。就能调亮度了啊,比如你接个电位器电位器值改变你程序你就让定时器时间也相应跟着变动 如何用单片机控制LED灯的亮度,不要PWM波的程序 程序
LED_D1 =1;//=1亮灯 ,=0灭灯当也要看电路,完善的电路还会有驱动电路如三极管点了,也要看LED固定的那端是接地还是接VCC。最终无非就是通过单片机的IO口输出一个0或1来是LED二极管电路正向导通形成发光。
方法1:用8050的三极管做开关电路,三极管的基极接P2.0,然后用集电极通过LED接5v电源,发射极通过220欧姆电阻接地。执行SETB P2.0 指令可以点亮led。方法2:用P1.0直接驱动led,应该让led另一端通过220欧姆电阻接5v电
1、创建项目,如图所示。2、创建延迟函数。3、创建C语言主函数。设计unsigned char k=0;变量。4、添加循环效果。5、点亮灯,通过k++,改变效果。6、添加延迟效果,单片机就可以控制8个灯依次亮,全亮了,然后再依次灭。
求教如何用单片机控制LED灯的亮度
应该是程序的问题,你的程序进入另一个子程序的时候灯灭的时间相对太长,而亮的时间又太短(当然这是相对的,人眼分辨不出来)。就像可以通过控制矩形波的占空比来控制LED的亮度那样,假定低电平led亮,波形宽度为100。当低
你的程序不够好,动态的亮度是足够正常的。你可以这样试下:用定时中断,每2毫秒显示一个,显示更新前先关闭所有数码管(可加一适当延时,避免花屏,段码更新后再打开该亮那个数码管。你修改定时中断时间和全关延时时间可比较
2、使用三极管驱动LED的端口。这是实际应用中最普遍的方法。目的只有一个,增大电流,增大亮度。原控制端只要控制三极管的通断即可。也可以使用ULN2003达林顿阵列等芯片来实现。3、采用静态扫描的方法,也就是通过诸如74LS164的芯
不够亮可能是限流电阻太大,一般560欧~1K比较合适。再大就可能不太亮了。还有一种可能是,如果是动态扫描显示的话,可能刷新时间太短,一般大于3毫秒比较合适。
1,推荐改进方法:5V--1K电阻--LED---P1.1,输出0点亮LED,这样可以达到很高亮度。2,还是这个电路,把10K电阻改小,改成0都可以,在P1.1上加个1K的上拉电阻接到5V上,输出0熄灭LED的时候浪费点电;输出1的
单片机控制的LED亮度问题!亮度不够!!
外部中断响应后,启动定时器,预置初始值,定时器中断后某个I/O口发脉冲串,此脉冲串去触发双向可控硅即可。软件改变定时器的初始值,使脉冲串在过零点之后0-10ms内变化,即可实现普通白炽灯的软启动及亮度调节。
以下是一个简单的51单片机程序,通过按下按键可以实现4种不同状态的灯亮灭,包括正闪、反闪、多种间隔闪。程序中使用了定时器来实现闪烁功能。程序中使用了P1.0到P1.3作为控制灯的引脚,P3.2作为按键的引脚。每当按下
第三,每进入中断一次count++,满足条件count==PWM_ON或count==CYCLE时改变LED的当前状态。作用是给小灯亮或灭的时间不同。第四,LED的亮度与其通电时间有关,也可以说成是占空比。上面的条件要理解成是呈线性增加或减小的
u8 PWM_keyChange=10; //初值,按键调整在1~20之间变化 //占空比 PWM_keyChange/grading void T0_work() //本函数由T0定时器中断函数调用 { if(timeMultiple1Flag){ led=off(7); //关闭7号灯 timeMu
1、在设置好TCON(IT0/1=0/1)寄存器,IE寄存器后当设定的外部中断电平被拉低时会执行中断程序,中断程序执行完毕后回到原程序执行处继续执行。2、外部中断TCON设置:IT0/1=0(低电平触发:持续低电平则一直持续触发中断)/
51单片机定时中断控制灯亮度怎么调
你的程序不够好,动态的亮度是足够正常的。你可以这样试下:用定时中断,每2毫秒显示一个,显示更新前先关闭所有数码管(可加一适当延时,避免花屏,段码更新后再打开该亮那个数码管。你修改定时中断时间和全关延时时间可比较效果。//程序名称:一只按键控制两只LED灯十种亮度显示 //编程人:xx //备注:此程序简单 #include 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;c<2;c++){ //亮度模式循环显示 d1=0; d2=1; delay(a); d1=1; d2=0; delay(b); } } } 、//2010.10.05 20;06修改 //此程序是我写的简单程序,已做过实验,并且通过!
编程通过只是说明你的程序没有语法错误,至于你的功能是什么,能不能实现,编译器是管不了的。编译器所保证的就是正确的解释你的代码,把你的代码解释成单片机使用的机器码,然后生成烧写文件,至于你想要的功能却达不到,那肯定是你的问题。 首先检查硬件,驱动方式有没有问题,电流够不够大,延时合不合理?如果硬件不确定的的话,试一试用软件仿真,你是直接驱动IO口,功能还是很简单的,keil的软件仿真能够隔开你的硬件,程序单步执行,看端口输出能不能达到设计要求,如果能,还是硬件的问题;不能,那就找程序的错误。
我也正在学习单片机。你的单片机实验板是,买的??上面的接口是怎么定义的啊。这是基础性的程序,你是刚学的话,建议看看相关方面的入门教材,像一些前人大师的,郭天祥、周立功等的视频教程非常好。我看的是教科书,我几个同学看的是这些视频教程,成效很大的。 既然回答就给点程序吧,如果使用P0口接的八个LED,7、8要不要亮?实现单独这一个功能还延时干什么呢。 #include void main() { while(1) { P0=0x55;//即八位分别是01010101,1357亮,2468灭,低电平驱动 } }
程序解释的挺清楚的了。 先要想明白呼吸灯原理是什么,怎么实现,再看程序。 呼吸灯开的时候,以非常快的速度开-关-开-关,并逐渐加大开的时间比率,减小关的时间比率。 呼吸灯关的时候,以非常快的速度开-关-开-关,并逐渐加大关的时间比率,减小开的时间比率。
你的程序,灯一直是在开关状态(0与1),只是眼睛看不出来,记得先初始化再进入循环,不然程序会跑飞,然后再看看电路图,确认电路和你的程序是否一至。 #include sbit D1=P1^0; sbit D2=P1^5; void main() { P1=0X00; while(1) { D1=1; D2=1; } }