专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

七彩LED渐变程序源码-51单片机

作者:佚名   来源:本站原创   点击数:  更新时间:2014年08月12日   【字体:
/******************************* 
程序名称:七彩LED渐变程序 
编写者:ZH YU 
MCU:51/2051 
晶振:12MHz 
/*********************************/ 
#include <AT892051.H>
 
 
sbit g1=P1^6;   //绿色 
sbit r1=P1^7;   //红 
sbit b1=P1^5;   //兰 
sbit key1=P3^3;   
 
/*********************************/ 
 unsigned char i;
 unsigned char mode;
/*********************************/ 
void delay(unsigned int k)
{
unsigned int i,j;
for(i=0;i<k;i++){
for(j=0;j<121;j++)
{;}}
}
/*********************************/ 
void interint1() interrupt 2 //using **
      //外部中断1处理      
{     
 EA=0;
 
 if(key1==0)
 {
 delay(20);
  key1=1;
 if(key1==0)
 {
 mode++;
 if(mode==4)mode=0;
 }
 while(key1==0);
 }
 
 key1=1;     
 EA=1;     
}
/*********************************/ 
timer(unsigned char t) 
{unsigned char b; 
   for(b=0;b<t;b++) 
   {; } 
 
/*********************************/ 
ledout(unsigned char g,r,b) 
{unsigned char a; 
  for(a=0;a<10;a++) 
{if(g!=0) 
    {g1=1;timer(g);g1=0;} 
  if(r!=0) 
    {r1=1;timer(r);r1=0;} 
  if(b!=0) 
    {b1=1;timer(b);b1=0;} 
  } 
/*********************************/ 
 
/*********************************/ 
main() 
{
 
unsigned char g,r,b; 
r1=0;
g1=0;
b1=0; 
EA=1;
EX1=1;
delay(1);
while(1)
{
 
if(mode==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!=100) 
    {g=100;r=0;b=0;} 
   ledout(g,r,b); 
   } 
   }
 
if(mode==1)
{
i++;
if(i==7)i=0;
switch(i)
{
case 0 : r1=1;g1=0;b1=0;delay(100); r1=0;g1=0;b1=0; delay(100); break;
case 1 : r1=0;g1=1;b1=0;delay(100);     r1=0;g1=0;b1=0; delay(100); break;
case 2 : r1=0;g1=0;b1=1;delay(100); r1=0;g1=0;b1=0;  delay(100); break;
case 3 : r1=1;g1=1;b1=0;delay(100); r1=0;g1=0;b1=0;  delay(100); break;
case 4 : r1=1;g1=0;b1=1;delay(100); r1=0;g1=0;b1=0;  delay(100); break;
case 5 : r1=0;g1=1;b1=1;delay(100); r1=0;g1=0;b1=0;  delay(100); break;
case 6 : r1=1;g1=1;b1=1;delay(100); r1=0;g1=0;b1=0;  delay(100); break;
default : break;
}
}
 
 
if(mode==2)
{
i++;
if(i==7)i=0;
switch(i)
{
case 0 : r1=1;g1=0;b1=0;delay(300); r1=0;g1=0;b1=0; delay(300); break;
case 1 : r1=0;g1=1;b1=0;delay(300);     r1=0;g1=0;b1=0; delay(300); break;
case 2 : r1=0;g1=0;b1=1;delay(300); r1=0;g1=0;b1=0;  delay(300); break;
case 3 : r1=1;g1=1;b1=0;delay(300); r1=0;g1=0;b1=0;  delay(300); break;
case 4 : r1=1;g1=0;b1=1;delay(300); r1=0;g1=0;b1=0;  delay(300); break;
case 5 : r1=0;g1=1;b1=1;delay(300); r1=0;g1=0;b1=0;  delay(300); break;
case 6 : r1=1;g1=1;b1=1;delay(300); r1=0;g1=0;b1=0;  delay(300); break;
default : break;
}
}
 
if(mode==3)
{
i++;
if(i==7)i=0;
switch(i)
{
case 0 : r1=1;g1=0;b1=0;delay(300); break;
case 1 : r1=0;g1=1;b1=0;delay(300); break;
case 2 : r1=0;g1=0;b1=1;delay(300); break;
case 3 : r1=1;g1=1;b1=0;delay(300); break;
case 4 : r1=1;g1=0;b1=1;delay(300); break;
case 5 : r1=0;g1=1;b1=1;delay(300); break;
case 6 : r1=1;g1=1;b1=1;delay(300); break;
default : break;
}
}
 
}
}
 
关闭窗口

相关文章