这位朋友你好,51单片机,如果他的呼吸灯代码,你可以参考他的使用说明书,也就是说他技术指导说明书上会有表达。

先说呼吸灯,这个本质上是LED的亮度控制。一般是用PWM方式控制LED亮度,PWM的输出按照一定的规律变化,就可以做出呼吸灯的效果。再说30个LED的控制,如果要简单点做,30个LED可以串起来串一个电阻,接高点的电源电压,30个

void RGB(unsigned char R ,unsigned char G ,unsigned char B); //主函数void main (void){ RED = 1 ; GREEN = 1 ; BLUE = 1 ; //开始时先关闭LED,当然由于单片机上电就输出 1 ,所以可不写 wh

}void main(){ unsigned char i,j,k;unsigned char newKey,oldKey; while(1){ newKey=KEY^0xFF;if(newKey){ if(newKey^oldKey)oldKey=newKey;}if(!i){switch(oldKey){ case K1:LED=~(0x80>>j);break;

include#define uchar unsigned charuchar pwm,cnt;sbit led=P1^0;bit flag;void t0isr() interrupt 1{ TH0=(65536-10000)/256; TL0=(65536-10000)%256; cnt++; if(cnt

delay(5000); //延时保持熄灭状态5000个时间单位,使现象更明显 for(i=0;i<200;i++) //for循环,实现LED由暗逐渐变亮 { P0=0x00; //点亮8位发光二极管 delay(i); //延时保持熄灭状态i个时间单位

void main(void){unsigned char ocr = 0; //比较值signed char ddr_flag = 1; //比较值的增长方向IO_SET_OUT(B,1); //T1的比较输出端口设置为输出Timer1_Init();while(1){delay_ms(5);//延时一定时间改

求单片机大神帮忙设计一个电路,51单片机制作led呼吸灯的

#0FEH MOV LED,A MOV R2,#0 CLR 00HLOOP: CLR TR0LOOPL: JB KEYL,LOOPR SETB TR0 RL A MOV LED,A JNB 00H,$ CLR 00H SJMP LOOPLLOOPR: JB KEYR,LOOP SETB TR

AJMP MAIN;ORG 000BH;定时器0入口地址 AJMP LABEL;进入中断服务程序 MAIN:MOV TMOD,#01H;SETB TR0;SETB EA;SETB ET0;MOV TH0,#00H;MOV TL0,#00H;以上是定时器中断初始化 MOV R1,#0FEH;我这里认为流水灯是低

用汇编语言让51单片机八个灯从左到右依次点亮且都不灭,每个灯亮的时间间隔0.5秒,然后全灭,再循环之前的步骤。参考如下:电路 代码 LED_COUNTDATA30H T0_COUNTDATA31H ORG0000HLJMPMAINORG000BHLJMPT0_INTORG0030HMAIN:

1、51单片机C语言实现循环8个流水灯左移三次,后右移三次。例程:include //51单片机头文件#include //包含有左右循环移位子函数的库#define uint unsigned int //宏定义#define uchar unsi

用汇编编程如下:ORG 0000H LJMP MAIN MAIN:ORG 0100H MOV A ,#80H ; 高电平亮灯。如低电平亮灯,改成#7FH ;;正向循环 ZXH :MOV P0 , A RR A LCALL S50MS ; 延时50MS

while(ms--){ for(i=0;i<120;t++){ ; } }}void main(){ unsigned char i=0,j=0; PData=0x00;//全灭状态 for (i=8;i>0;i--){//控制常亮的位置,先从最高位开始,依次循环到最低

1、用精确定时的方法,设置流水灯运行时的时间间隔,延时时间为500MS。2、#include "reg51.h"首先写出单片机的头函数。3、#include "intrins.h"输入位移函数。4、unsigned int count=0,led;定义函数。5、输入主函数,定

51单片机用汇编语言如何设计8个轮流呼吸的呼吸灯?

第二,PWM_ON在程序中的作用很大,它会由0--->CYCLE--->0并且一直循环下去。可以把它看成一个有规律的变化的量。第三,每进入中断一次count++,满足条件count==PWM_ON或count==CYCLE时改变LED的当前状态。作用是给小

呼吸灯的程序,如果有硬件的PWM模块,是很简单的,按一定的规律让PWM的输出变化就可以。像这样输出10%亮度,持续200ms,输出20%亮度,持续200ms,输出30%亮度,持续200ms。。。如果没有硬件PWM模块,可以用软件来模拟,比如

演示定时器1的快速PWM输出@利用快速PWM输出控制LED的亮度变化,达到呼吸灯的效果*/ include#include"port_set.h"#include"delay.h"/***@函数功能:定时器1初始化@说明:定时器初始化为快速PWM,TOP为8位(0x00

flag) { pwm++; if(pwm>=100)flag=1; } else { pwm--; if(pwm==0)flag=0; } }}main(){ TMOD=0x01; TH0=(65536-10000)/256; TL0=(65536-10000)%256; TR0

led=1;//关灯 if(t>80)t=0;//t置零,要改呼吸频率就改掉“80”这个数还有下面的一个“80”也一起改 } } void Timer0Interrupt(void) interrupt 1 //T0中断,用来控制PWM电平,每50微秒,t自加一次 { TH0 =

include "reg51.h" //包含头文件 define uchar unsigned char define uint unsigned int // //延时函数 // delay(uint time) //int型数据为16位,所以最大值为65535 { uint i,j; //定义变量i,j,用

Delay(150000); //特意加延时,可以看到熄灭的过程 for(PWM_LOW=1;PWM_LOW0;PWM_LOW--){ LED0

求助,51单片机用PWM的RGB呼吸灯程序怎么写?

呼吸灯的程序,如果有硬件的PWM模块,是很简单的,按一定的规律让PWM的输出变化就可以。像这样输出10%亮度,持续200ms,输出20%亮度,持续200ms,输出30%亮度,持续200ms。。。如果没有硬件PWM模块,可以用软件来模拟,比如

这位朋友你好,51单片机,如果他的呼吸灯代码,你可以参考他的使用说明书,也就是说他技术指导说明书上会有表达。

void RGB(unsigned char R ,unsigned char G ,unsigned char B); //主函数void main (void){ RED = 1 ; GREEN = 1 ; BLUE = 1 ; //开始时先关闭LED,当然由于单片机上电就输出 1 ,所以可不写 wh

START:MOV P0,#01H;()只有第一个灯亮 ACALL DELAY;延迟,不加延迟的话 你根本看不起清到底那个灯亮的 MOV P0,#02H;()只有第二个灯亮 ACALL DELAY MOV P0,#04H;()只有第三个灯亮 ACALL DELAY MOV P0,#08H

主程序中可不断改变b的值,先由大到 小 再由小到大,就是呼吸灯了 如延时200ms改变一次b的值 则呼吸周期大约是8秒

void main (void){ unsigned int t = 1;unsigned int i, TEMP;unsigned int TYPE = 0;bit LOOP = 0;while (1){ if (KEY == 0){ l1:Delay(10000);TYPE = (1 - TYPE);if (TYPE == 0){ t = 1;LOO

连续调整《发光的时间》、《不发光的时间》,LED 的亮度,就逐渐的变了。

51单片机中呼吸灯的程序我有点不懂

这位朋友你好,51单片机,如果他的呼吸灯代码,你可以参考他的使用说明书,也就是说他技术指导说明书上会有表达。

void RGB(unsigned char R ,unsigned char G ,unsigned char B); //主函数void main (void){ RED = 1 ; GREEN = 1 ; BLUE = 1 ; //开始时先关闭LED,当然由于单片机上电就输出 1 ,所以可不写 wh

;} void main(){ while(1){ if(flag==0){ P1=0xff;z+=1;delayms(z);P1=0x00;if(z==100){ flag=1;} } if(flag==1){ P1=0xff;z-=1;delayms(z);P1=0x00;if(z==0){ flag=0;} } } }

程序太乱,只用一个定时器就可以 如定时100us 中断一次 20次是2 ms 即周期是2 ms 中断一次计数变量a加一,并且与另一变量b(1到20)比较,如果a>b,则输出高电平,反之则输出低电平 a=20时清0 主程序中可不断

演示定时器1的快速PWM输出@利用快速PWM输出控制LED的亮度变化,达到呼吸灯的效果*/ include#include"port_set.h"#include"delay.h"/***@函数功能:定时器1初始化@说明:定时器初始化为快速PWM,TOP为8位(0x00

delay(i); //延时保持熄灭状态i个时间单位 P0=0x00; //点亮8位发光二极管 delay(200-i); //延时保持点亮状态200-i个时间单位 } P0=0xff; //熄灭8位发光二极管 delay(5000); //延时保持熄灭状态5

flag) { pwm++; if(pwm>=100)flag=1; } else { pwm--; if(pwm==0)flag=0; } }}main(){ TMOD=0x01; TH0=(65536-10000)/256; TL0=(65536-10000)%256; TR0

求教,用定时器编写一个呼吸灯,c51单片机

先说呼吸灯,这个本质上是LED的亮度控制。一般是用PWM方式控制LED亮度,PWM的输出按照一定的规律变化,就可以做出呼吸灯的效果。再说30个LED的控制,如果要简单点做,30个LED可以串起来串一个电阻,接高点的电源电压,30个LE

include#define uchar unsigned charuchar pwm,cnt;sbit led=P1^0;bit flag;void t0isr() interrupt 1{ TH0=(65536-10000)/256; TL0=(65536-10000)%256; cnt++; if(cnt

这位朋友你好,51单片机,如果他的呼吸灯代码,你可以参考他的使用说明书,也就是说他技术指导说明书上会有表达。

include "reg51.h" //包含头文件 define uchar unsigned char define uint unsigned int // //延时函数 // delay(uint time) //int型数据为16位,所以最大值为65535 { uint i,j; //定义变量i,j,用

51单片机设计呼吸灯

大致看了下,定时器中断直接调用zhankong()这个函数,写在外面的话,由於有其它代码,不可能每次都执行
这个需要看你的芯片那也识别需求了哦,毕竟代码不同的呢,那个需要编码处理的哦。 所以解码方法也不同
程序太乱,只用一个定时器就可以 如定时100us 中断一次 20次是2 ms 即周期是2 ms 中断一次计数变量a加一,并且与另一变量b(1到20)比较,如果a>b,则输出高电平,反之则输出低电平 a=20时清0 主程序中可不断改变b的值,先由大到 小 再由小到大,就是呼吸灯了 如延时200ms改变一次b的值 则呼吸周期大约是8秒
中断子函数有问题 这样改 void timer0() interrupt 1 { TH0=(65536-100)/256; //原定时太短了吧 TL0=(65536-100)%256; //原定时太短了吧 t0++; if(t0<=dc) { P1=0; } else { P1=0xff; } if(t0==200) { t0=0; if(flag==0) { dc++; if(dc==200)flag=1; //这是赋值语言,一个等号 } else if(flag==1) //这应该是else if { dc--; if(dc==0) flag=0;//这是赋值语言,一个等号 } } }
#include //端口定义sbit RED = P2^0;//红光控制端,0点亮 sbit GREEN = P2^1;//绿光控制端,0点亮 sbit BLUE = P2^2;//蓝光控制端,0点亮//函数声明void Delay(unsigned int t); void RGB(unsigned char R ,unsigned char G ,unsigned char B); //主函数void main (void){ RED = 1 ; GREEN = 1 ; BLUE = 1 ; //开始时先关闭LED,当然由于单片机上电就输出 1 ,所以可不写 while (1) //主循环 { //7色光依次逐渐变亮 //改变调用顺序可以改变颜色先后次序 RGB(1,1,0); RGB(1,0,1); RGB(1,0,0); RGB(0,1,1); RGB(0,1,0); RGB(0,0,1); RGB(0,0,0); }} void Delay(unsigned int t){ while(--t);}//7色光依次逐渐变亮RGB(unsigned char R ,unsigned char G ,unsigned char B){ unsigned int pwm , set = 500 ; for(pwm=1;pwm<set;pwm++) { RED = 1; //熄灭LED GREEN = 1; BLUE = 1; Delay(set-pwm);//延时长度,500次循环中从599减至1 RED = R; GREEN = G; BLUE = B; Delay(pwm);//延时长度,500次循环中从1加至599 }}//改变set可以改变变化快慢//同理你可以写出7色逐渐变暗的程序这里的程序只是提供一个思路,你如果直接复制粘贴的话会出现格式错误 把每两行中间的空行删掉一般就可消除格式错误 如果再有什么小问题根据编译信息提示稍作修改就行 串电阻的话一般这样算: R = [ U - U(LED) ] / I U是LED和电阻总的电压,U(LED)是LED工作电压,I 是LED工作电流,一般10--20mA 电流大小取的适中就行了,再计算要串联的电阻值
程序太乱,只用一个定时器就可以 如定时100us 中断一次 20次是2 ms 即周期是2 ms 中断一次计数变量a加一,并且与另一变量b(1到20)比较,如果a>b,则输出高电平,反之则输出低电平 a=20时清0 主程序中可不断改变b的值,先由大到 小 再由小到大,就是呼吸灯了 如延时200ms改变一次b的值 则呼吸周期大约是8秒
第一,要理解中断在这里的作用是固定的“一小段”时间进入一次。 第二,PWM_ON在程序中的作用很大,它会由0------>CYCLE------>0并且一直循环下去。可以把它看成一个有规律的变化的量。 第三,每进入中断一次count++,满足条件count==PWM_ON或count==CYCLE时改变LED的当前状态。作用是给小灯亮或灭的时间不同。 第四,LED的亮度与其通电时间有关,也可以说成是占空比。上面的条件要理解成是呈线性增加或减小的频率。可以理解成三角波,对应的面积就是通电时间。 不知能不能给你讲明白!
先让单片机产生固定脉宽(1:1)PWM 在设置2个按键:+、- 来调整其脉宽
#include "reg51.h" //包含头文件 #define uchar unsigned char #define uint unsigned int //************************************************************************************************** //延时函数 //************************************************************************************************** delay(uint time) //int型数据为16位,所以最大值为65535 { uint i,j; //定义变量i,j,用于循环语句 for(i=0;i<time;i++) //for循环,循环50*time次 for(j=0;j<50;j++); //for循环,循环50次 } //************************************************************************************************** //主函数 //************************************************************************************************** void main() //主函数 { uint i; //定义变亮i while(1) //进入while死循环 { for(i=0;i<200;i++) //for循环,实现LED由亮逐渐变暗 { P0=0xff; //熄灭8位发光二极管 delay(i); //延时保持熄灭状态i个时间单位 P0=0x00; //点亮8位发光二极管 delay(200-i); //延时保持点亮状态200-i个时间单位 } P0=0xff; //熄灭8位发光二极管 delay(5000); //延时保持熄灭状态5000个时间单位,使现象更明显 for(i=0;i<200;i++) //for循环,实现LED由暗逐渐变亮 { P0=0x00; //点亮8位发光二极管 delay(i); //延时保持熄灭状态i个时间单位 P0=0xff; //熄灭8位发光二极管 delay(200-i); //延时保持点亮状态200-i个时间单位 } } }
用汇编语言让51单片机八个灯从左到右依次点亮且都不灭,每个灯亮的时间间隔0.5秒,然后全灭,再循环之前的步骤。参考如下: 电路 代码 LED_COUNT DATA 30H T0_COUNT DATA 31H ORG 0000H LJMP MAIN ORG 000BH LJMP T0_INT ORG 0030HMAIN: ANL TMOD,#0F0H ORL TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H ORL IE,#82H SETB TR0 CLR F0 MOV LED_COUNT,#00H MOV T0_COUNT,#00H MOV DPTR,#TABM1: JNB F0,M2 CLR F0 MOV A,LED_COUNT MOVC A,@A+DPTR MOV P2,A INC LED_COUNT MOV A,#9 CJNE A,LED_COUNT,M2 MOV LED_COUNT,#00HM2: SJMP M1T0_INT: MOV TH0,#3CH MOV TL0,#0B0H INC T0_COUNT MOV A,#10 CJNE A,T0_COUNT,T MOV T0_COUNT,#00H SETB F0T: RETITAB: DB 0FEH,0FCH,0F8H,0F0H,0E0H,0C0H,80H,00H,0FFH END希望能达到你的要求!!!!!
#include "reg51.h" //包含头文件 #define uchar unsigned char #define uint unsigned int //************************************************************************************************** //延时函数 //************************************************************************************************** delay(uint time) //int型数据为16位,所以最大值为65535 { uint i,j; //定义变量i,j,用于循环语句 for(i=0;i<time;i++) //for循环,循环50*time次 for(j=0;j<50;j++); //for循环,循环50次 } //************************************************************************************************** //主函数 //************************************************************************************************** void main() //主函数 { uint i; //定义变亮i while(1) //进入while死循环 { for(i=0;i<200;i++) //for循环,实现LED由亮逐渐变暗 { P0=0xff; //熄灭8位发光二极管 delay(i); //延时保持熄灭状态i个时间单位 P0=0x00; //点亮8位发光二极管 delay(200-i); //延时保持点亮状态200-i个时间单位 } P0=0xff; //熄灭8位发光二极管 delay(5000); //延时保持熄灭状态5000个时间单位,使现象更明显 for(i=0;i<200;i++) //for循环,实现LED由暗逐渐变亮 { P0=0x00; //点亮8位发光二极管 delay(i); //延时保持熄灭状态i个时间单位 P0=0xff; //熄灭8位发光二极管 delay(200-i); //延时保持点亮状态200-i个时间单位 } } }
这个需要看你的芯片那也识别需求了哦,毕竟代码不同的呢,那个需要编码处理的哦。 所以解码方法也不同