如何用单片机控制LED灯的亮度,不要PWM波的程序 程序名称:一只按键控制两只LED灯十种亮度显示 编程人:xx 备注:此程序简单 #include
else led=1;//关灯 f(t>80)t=0;//t置零,要改呼吸频率就改掉“80”这个数还有下面的一个“80”也一起改 } } void Timer0Interrupt(void) interrupt 1 //T0中断,用来控制PWM电平,每50微秒,t自加一次 {
3.编写程序:使用单片机的编程软件(如Arduino IDE、Keil等),编写控制LED灯的程序。以下是一个简单的示例程序(以Arduino为例):// 定义LED灯连接的引脚 const int ledPin = 13;void setup() { // 将LED引脚设置为
LCALL PCA00 ; 初始化 PWM MIN10: NOP ; 主程序 入口 LCALL ADC00 ; 测光敏电阻电压 MOV CCAP0H, A ; 写入PWM 控制 发光亮度 LJMP MIN10 RET ; / *** *** *** *** / A/D
求一单片机程序(用光敏电阻,PWM输出控制LED亮度)
0点亮 sbit GREEN = P2^1;//绿光控制端,0点亮 sbit BLUE = P2^2;//蓝光控制端,0点亮//函数声明void Delay(unsigned int t);
if(counter >= Set_PWM1) P1_1 = 0; else P1_1 = 1;if(counter >= Set_PWM2) P1_2 = 0; else P1_2 = 1;} 这样,定时器0用于决定PWM的反占空比,你只要设置 Set_PWM0等三个参数就可以了.怎么会实现不
首先理解成你有三个颜色的LED各一个,红绿蓝,然后用三个IO口控制。第一:占空比,白话就是不停的开关开关(频率至少要达到60赫兹肉眼才不会觉得闪动),当开的时间长,关闭的是间短,则很亮,当开的时间短,关的时间
1、程序实现上应该不难,假设用3个8位变量来调节这三个灯,理想上可以得到256单色灰度效果。但通常能做到16等级灰度,也能看到一定效果。2、这三个PWM周期相同,占空比不同,亮度就各有不同。3、确保单片机管脚输出1时(1
求51单片机PWM汇编语言程序(用来控制3个红、绿、蓝LED灯,让这3个LED灯产生均色变化)
include
两种方法,一种是给驱动16和灯的口每次变化赋和显示值,这种最好理解,32次变化写32行输出然后每个输出后面再加一个延时就可以了。另一种是用位移指令for循环 也要写两个for 一个渐亮的一个渐灭的
4.上传程序:将编写好的程序上传到单片机中。将单片机通过USB线连接到计算机,选择正确的开发板和端口,然后点击上传按钮将程序烧录到单片机中。5.测试控制:完成上传后,单片机将开始执行程序。LED灯应该会按照程序中定义的亮灭
include
// c为偶数时pwmcount逐渐增加,自减段增加,此时LED如果为0,常0段为1,则变亮,反之变暗 // c为奇数时pwmcount逐渐减小,自减段减小,此时LED如果为1,常0段为0,则变亮,反之变暗 define fLED(a,b,c) {LED1 = a
这个要用到软件的pwm,因为51的没有硬件的pwm所以只好自己写软件的了。首先,要做一个软件三角波发生器子程序,频率自己定,就是变亮变暗的周期。此函数的返回值作为pwm的输入值。再做一个pwm的模拟程序,占空比(0-100
T0_1:CALLSET_LED T0_OUT:POPACC POPPSW RETI SET_LED:MOVA,PWM SETBC SUBBA,PWM_JS JCSET_LED1 CLRLED RET SET_LED1:SETBLED RET END
51单片机用汇编语言如何编写LED灯逐渐变亮在逐渐变暗啊
用几个变量表示按键的按下/松开状态,然后用定时器中断设置PWM的频率,例如要50hz的频率,那么定时器中断周期(PWM周期的一半)可以设置为10ms,在中断服务程序内根据按键的状态确定是否需要对PWM输出管脚进行翻转。改方法可以
PWM1_set(vx*24);//数字24是配合vx调试取得的,此时vx的赋值范围约为1-10对应最暗-最亮 //---减调整---// if (KEY_L == 0 ){ DelayM(20); //延时20毫秒消抖动 if(KEY_L == 0){ //如果20SM后KEY
TF0 = 0; //清除TF0标志 TR0 = 1; //定时器0开始计时 }
第一,要理解中断在这里的作用是固定的“一小段”时间进入一次。第二,PWM_ON在程序中的作用很大,它会由0--->CYCLE--->0并且一直循环下去。可以把它看成一个有规律的变化的量。第三,每进入中断一次count++,满足条
void main(void) // 主程序 { uint n;RCAP2H =0xF3; //赋T2的预置值,溢出1次是1/1200秒钟 RCAP2L =0x98;TR2=1; //启动定时器 ET2=1; //打开定时器2中断 EA=1; //打开总中断 while(1) //程序循环 {
uchar LED_Direction=0; //LED方向控制 0:变亮 1:变暗 uchar LED_PWM_Counter=0; //LED占空比 uchar count=0; //中断计数 bit flag=0;//按键扫描标志位 void main(){ P3=0xff; //做输入
按下按键1灯变亮,按下按键2灯变暗,用PWM调光,C程序怎么写
LED1 = 0;delay(50000);} } 上述代码实现了四个 LED 灯逐个亮起来然后再逐个灭掉的效果。其中,sbit 定义了四个位于 P2 口的 LED 灯,而 delay 函数则是一个延时函数,可以用来控制 LED 灯亮起和灭掉的时间。注意
include
p1.0=0;for(i=0,i++,i<=pwm){ p1.0=1 };p1.0=0 以上为软件pwm,i为局部变量,pwm为全局变量,通过控制pwm来控制led明暗,pwm最大100,最小0。从亮到暗和从暗到亮,写三角波程序,使pwm变化即可。
Count = LEDx * 36; //最小0,最大 7 * 36 = 252,char型最大不能超过255; Count = Count + 1; // 加1的目的是针对LED0不亮 if(x <= Count) // <= 是针对LED0不亮 PORTA |= (1 <<
// c为偶数时pwmcount逐渐增加,自减段增加,此时LED如果为0,常0段为1,则变亮,反之变暗 // c为奇数时pwmcount逐渐减小,自减段减小,此时LED如果为1,常0段为0,则变亮,反之变暗 define fLED(a,b,c) {LED1 = a
这个要用到软件的pwm,因为51的没有硬件的pwm所以只好自己写软件的了。首先,要做一个软件三角波发生器子程序,频率自己定,就是变亮变暗的周期。此函数的返回值作为pwm的输入值。再做一个pwm的模拟程序,占空比(0-100
T0_1:CALLSET_LED T0_OUT:POPACC POPPSW RETI SET_LED:MOVA,PWM SETBC SUBBA,PWM_JS JCSET_LED1 CLRLED RET SET_LED1:SETBLED RET END
急求!!!51单片机用汇编语言如何编写LED灯逐渐变亮在逐渐变暗?谢谢大神们
; 按K1,PWM值增加,则占空比减小,LED 灯渐暗。; 按K2,PWM值减小,则占空比增加,LED 灯渐亮。;当PWM值增加到最大值或减小到最小值时,蜂鸣器将报警 ;资源:p0口,8路指示灯。p1.4,p1.5亮度控制按键(端口按键)
// PWM 控制 LED 灯渐亮渐灭程序 // 晶振为12M // 利用定时器控制产生占空比可变的 PWM 波 // 按K1,PWM值增加,则占空比减小,LED 灯渐暗。// 按K2,PWM值减小,则占空比增加,LED 灯渐亮。// 当PWM值增加到最
PWM EQU 7FH WM赋初始值- K; H, S9 t! G;OUT EQU P0 ;8个LED灯的接口, {; ~, G! M* f; @% m2 q7 x ! O2 y; \$ {. P4 p6 {( d9 z INCKEY EQU P3.4 ;K1,PWM值
可以分10个段,也就是10秒,PWM值从100到0每次减10,这样就可以实现这个效果了。
用PWM控制LED的由灭渐亮的程序?
要看你的驱动电压够不够。具体要看参数。最好有个驱动电路,不要直接控制。关于LED的一些事可以关注“射影无忌”公众号,里面有比较全的LED知识。你的程序功能就是一直闪呀。 计时器0中断20次后输出反相,后每中断128次输出反相。就一直亮熄了。 计时器1中断作用不大。
这个要用到软件的pwm,因为51的没有硬件的pwm所以只好自己写软件的了。首先,要做一个软件三角波发生器子程序,频率自己定,就是变亮变暗的周期。此函数的返回值作为pwm的输入值。再做一个pwm的模拟程序,占空比(0-100)是三角波发生器的输出,pwm模拟程序控制某个端口输出1和0的占空比来控制灯 的明暗。pwm的思路是:检查设置值是否不等于0,是则端口置1,程序开始加1计数,计数后检查计数值是否等于设置值,如果等于则跳转,不等则继续加一,如果到100或者计数值等于设置值则使端口置0,一个pwm周期结束,如此重复就可以了。pwm周期自己看实际情况定义。如果要控制电灯泡的话,频率不用太高,50hz可以了。关键是要做隔离,用光电隔离加双向可控硅来控制。 呵呵,声明两点:1 源程序网上应该有的,或者自己买本书就什么也有了。2 不鼓励直接给别人源程序,给你思路再动手就应该很好弄了,总看别人的,不自己思考永远都是别人的。 http://www.programsalon.com/downloads88/sourcecode/embed/detail337156.html
ORG 0000G AJMP MAIN MAIN: MOV 2EH,#00H MOV 2FH,#01H ACALL JIANBIAN MOV 2EH,#01H MOV 2FH,#00H ACALL JIANBIAN AJMP MAIN JIANBIAN: MOV 20H,#120 MOV 22H,#1 LOOP: MOV 24H,#100 LED: MOV P1,2EH MOV 21H,20H DJNZ 21H,$ MOV P1,2FH MOV 23H,22H DJNZ 23H,$ DJNZ 24H,LED INC 22H DJNZ 20H,LOOP RET GND
自己设计才进步比较快。1、使用PWM脉宽调制技术使得灯亮度变化,可以很容易在网上找到相关代码下载 2、把温度变化范围分层,与灯的最暗到最亮范围对应,在1的基础上,根据温度值调用函数,不是很难的事。 好好加油!
这个要用到软件的pwm,因为51的没有硬件的pwm所以只好自己写软件的了。首先,要做一个软件三角波发生器子程序,频率自己定,就是变亮变暗的周期。此函数的返回值作为pwm的输入值。再做一个pwm的模拟程序,占空比(0-100)是三角波发生器的输出,pwm模拟程序控制某个端口输出1和0的占空比来控制灯 的明暗。pwm的思路是:检查设置值是否不等于0,是则端口置1,程序开始加1计数,计数后检查计数值是否等于设置值,如果等于则跳转,不等则继续加一,如果到100或者计数值等于设置值则使端口置0,一个pwm周期结束,如此重复就可以了。pwm周期自己看实际情况定义。如果要控制电灯泡的话,频率不用太高,50hz可以了。关键是要做隔离,用光电隔离加双向可控硅来控制。 呵呵,声明两点:1 源程序网上应该有的,或者自己买本书就什么也有了。2 不鼓励直接给别人源程序,给你思路再动手就应该很好弄了,总看别人的,不自己思考永远都是别人的。 http://www.programsalon.com/downloads88/sourcecode/embed/detail337156.html
PWM_JS EQU 0X30 PWM EQU 0X31 LED EQU P1.7 ORG 0 JMP MAIN ORG 0BH JMP T0_INT MAIN: MOV SP,#0X60 MOV TMOD,#01H SETB EA SETB ET0 SETB TR0 MOV PWM,#0 LOOP: CALL DELAY INC PWM MOV A,PWM CJNE A,#10,LOOP L1: CALL DELAY DEC PWM MOV A,PWM CJNE A,#0,L1 JMP LOOP DELAY: //... RET T0_INT: PUSH PSW PUSH ACC MOV TL0,#LOW(65536-1000) MOV TH0,#HIGH(65536-1000) INC PWM_JS MOV A,PWM_JS CLR C SUBB A,#10 JC T0_1 MOV PWM_JS,#0 T0_1: CALL SET_LED T0_OUT: POP ACC POP PSW RETI SET_LED: MOV A,PWM SETB C SUBB A,PWM_JS JC SET_LED1 CLR LED RET SET_LED1: SETB LED RET END
ORG 0000H LJMP MAIN ORG 000BH LJMP T0ISR ORG 0030H MAIN: MOV TMOD,#01H MOV TH0,#HIGH(65536-50000) MOV TL0,#LOW(65536-50000) SETB TR0 SETB ET0 SETB EA CLR P1.0 MOV R2,#10 SJMP $ T0ISR: CLR TR0 MOV TH0,#HIGH(65536-50000) MOV TL0,#LOW(65536-50000) SETB TR0 DJNZ R2,T0E CPL P1.0 MOV R2,#10 T0E: RETI END
设置三基色不同的灰度值,0~255,改变灰度大小,配成的颜色也不同,具体数值可参考电脑中画图,ppt中图片颜色设置等相关软件。
1、软件问题,用示波器看看频率是否足够高。 2、硬件问题,用示波器看看是否LED功率太大引起的电源电压波动导致的MCU工作不稳定。
单片机1个io口有AD功能的 io接电阻和光敏电阻的一只脚,地接光敏电阻另一只脚,vcc接电阻另一只脚 就这么简单
用几个变量表示按键的按下/松开状态,然后用定时器中断设置PWM的频率,例如要50hz的频率,那么定时器中断周期(PWM周期的一半)可以设置为10ms,在中断服务程序内根据按键的状态确定是否需要对PWM输出管脚进行翻转。改方法可以输出占空比为50%的PWM信号。 LED是英文 light emitting diode (发光二极管)的缩写,它的基本结构是一块电致发光的半导体材料芯片,用银胶或白胶固化到支架上,然后用银线或金线连接芯片和电路板,然后四周用环氧树脂密封,起到保护内部芯线的作用,最后安装外壳,所以 LED 灯的抗震性能好。运用领域涉及到手机、台灯、家电等日常家电和机械生产方面。