这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 高校专区 » 坤创E-Geek/天科大新电社 » 按键控制流水灯

共11条 1/2 1 2 跳转至

按键控制流水灯

菜鸟
2015-05-31 18:16:20     打赏


#include<reg52.h>
#define  uchar unsigned char
#define  uint unsigned int

uchar code disp1[]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0x00}; //查表显示数组
sbit k1=P1^0;  //定义按键
sbit k2=P1^1;
sbit k3=P1^2;
sbit k4=P1^3;
uint i=0;
int k=0;
/*------------------------------------------------
                    定时器初始化子程序
------------------------------------------------*/
void Init_Timer0(void)
{
 TMOD= 0x11;   //定时器1和0使用模式1,16位定时器,      
 TH0=(65536-50000)/256;   //定时器赋初值 50ms中断一次
 TL0=(65536-50000)%256;
 EA=1;            //总中断打开
 ET0=1;     //定时器0中断打开
 ET1=1;           //定时器1中断打开
}
void delay(unsigned int n) //延时函数,用于去抖
  {
   while(n--);
  }
void  shaomiao()  //扫描函数,用于判断哪个键按下
{   if(!k1)
    { delay(1000);
       if(!k1)
          {
             while(!k1);
             TR0=0;    //关闭定时器0
             TR1=0;    //关闭定时器1
              k=9;         //全亮
          }
     }
   if(!k2)
   { delay(1000);
     if(!k2)
        {
           while(!k2);
           TR0=0;   //关闭定时器0
           TR1=0;   //关闭定时器1
           k=0;        //全灭
         }
   }  
   if(!k3)
   {delay(1000);
    if(!k3)
       {
          while(!k3); 
          TR0=1;  //打开定时器0
          TR1=0;  //关闭定时器1
   
         }
   }
   if(!k4)
   {delay(1000);
     if(!k4)
        {
          while(!k4) ;
          TR0=0;  //关闭定时器0
          TR1=1;  //打开定时器1
   
         } 
   }       
}
/*------------------------------------------------
                    主程序
------------------------------------------------*/

main()
{
 Init_Timer0();
 while(1)
   { shaomiao();
  P0=disp1[k];  //显示,用于查表显示
   }
}

/*------------------------------------------------
                 定时器中断子程序
------------------------------------------------*/
void Timer0_isr(void) interrupt 1   //定时器0  从上向下流
{
 TH0=(65536-50000)/256;
  TL0=(65536-50000)%256;
  i++;
  if(i==20)
    { i=0;
   k++;
     if(k>=9)
       k=1;
    }     

}
void Timer1_isr(void) interrupt 3 // 定时器1  从下向上流
{
 TH0=(65536-50000)/256;
  TL0=(65536-50000)%256;
  i++;
  if(i==20)
    { i=0;
   k--;
     if(k<1)
       k=8;
    }     

}




关键词: 按键    

菜鸟
2015-05-31 18:20:35     打赏
2楼

高工
2015-06-01 10:22:53     打赏
3楼

效果实现的如何了?


工程师
2015-06-01 10:24:48     打赏
4楼
加油 ,年轻人

工程师
2015-06-01 10:24:43     打赏
5楼
不明觉厉,帮顶

专家
2015-06-01 10:25:56     打赏
6楼
很强哇,奖励两根棒棒糖!

院士
2015-06-01 10:26:16     打赏
7楼
不是有 C 的代码功能吗

工程师
2015-06-01 10:26:28     打赏
8楼
我喜欢你们朱老师,嘘。。。。不要告诉他。

专家
2015-06-01 10:27:43     打赏
9楼
可以加上速度调整,把灯玩好也不容易

专家
2015-06-01 11:42:15     打赏
10楼
加油?定时器功能吗?

共11条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]