资讯详情

一键多能(按键控制RGB渐变)

首先,RGB渐变,实际属于,动态,循环过程,还是通过模拟方法,实现,在延时中检测按键函数,再次发挥作用,让我们为这个函数鼓掌10秒钟

void timer(uint t) { uint n; for(n=0;n<t;n++) { while(RC5==0) num=5; } } 程序代码如下: #include __C FIG(0X1B4); #define uchar unsigned char #define uint unsigned int unsigned char a; unsigned char g,r,b,p,num; void delay(uint x) { uint c,d; for(c=x;c>0;c--) for(d=110;d>0;d--); } void timer(uint t) { uint n; for(n=0;n<t;n++) { while(RC5==0) num=5; } } void LED0_ON() { RC0=0; RC1=0; RC2=0; RC3=0; } void LED1_ON() { RC0=0; RC1=1; RC2=0; RC3=0; } void LED2_ON() { RC0=0; RC1=0; RC2=1; RC3=0; } void LED3_ON() { RC0=0; RC1=0; RC2=0; RC3=1; } void LED4_ON()//此渐变函数是无意中在网上发现的 { RC3=0; if(g!=0&&b==0) { g--; r++; } if(r!=0&&g==0) { r--; b++; } if(b!=0&&r==0) { b--; g++; } if(g+r+b!=240) { g=200; r=0; b=0; } for(a=0;a<10;a++) { if(g!=0) { RC0=0; timer(g); RC0=1; } if(r!=0) { RC1=0; timer(r); RC1=1; } if(b!=0) { RC2=0; timer(b); RC2=1; } } } void LED5_ON() { RC0=1; RC1=1; RC2=1; RC3=1; } void init() { SA=0b11111111; TRISC=0b11100000; ANSEL=0X00;//把RC1,RC2,RC3设置为普通I/O 或者中断输入,模拟输入时候ANSEL=0XFF CMCON=0X07;//比较器禁止 RC4=0; RC3=0; RC0=0; RC1=0; RC2=0; g=240;r=0;b=0; } void scan() { while(!RC5) { delay(5); p++; } if(p>10) { p=0; num++; if(num>5)num=0; } void main() { init(); while(1) { scan(); switch(num) { case 0:LED0_ON();break; case 1:LED1_ON();break; case 2:LED2_ON();break; case 3:LED3_ON();break; case 4:LED4_ON();break; case 5:LED5_ON();break; } } } -电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。 自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。
锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台