專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

一鍵多能(按鍵控制RGB漸變)

作者:佚名   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2013年10月20日   【字體:

 首先,RGB漸變,實(shí)際屬于,動(dòng)態(tài),循環(huán)過程,還是通過模擬方法,實(shí)現(xiàn),在延時(shí)中檢測按鍵函數(shù),再次發(fā)揮作用,讓我們?yōu)檫@個(gè)函數(shù)鼓掌10秒鐘


 

void timer(uint t)
{
uint n;
for(n=0;n<t;n++) 
{
while(RC5==0)

 
num=5;   

 
}

程序代碼如下:
#include<pic.h>
 __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<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()//此漸變函數(shù)是無意中在網(wǎng)上發(fā)現(xiàn)的
{  
    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設(shè)置為普通I/O 或者中斷輸入,模擬輸入時(shí)候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;
    
}

 
    } 
 
關(guān)閉窗口

相關(guān)文章