微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 一键多能(按键控制RGB渐变)

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

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

void timer(uint t)

{

uint n;

for(n=0;n

{

while(RC5==0)

num=5;

}

}

程序代码如下:

#include

__CONFIG(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

{

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()

{

TRISA=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;

}

}

}


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top