⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 按键扫描程序.c

📁 单片机数据通讯典型应用(光盘内容)
💻 C
字号:
//********键盘扫描**********8
sbit System=p1.0;
sbit TimeUp=p1.1;
sbit TimeDown=p1.2;
sbit Exit=p1.3;
//*******按键扫描程序****
void keyscan()
{
if(System ==0)
{
   delay5ms();
   if(System==0)
   {
    while(!System);
    delay5ms();
    while(!System); 
    keynum++;
    if(keynum==1)                        //按下控制键一次
    {
     TR0=0;
     L1602_WriteCmd(0x80+0x40+10);   //秒针闪动
     L1602_WriteCmd(0x0f);
    }
   if(keynum==2)                        //按下控制键两次
    {
     L1602_WriteCmd(0x80+0x40+7);    //分针闪动
     L1602_WriteCmd(0x0f);
      }
    if(keynum==3)                        //按下控制键三次
    {
     L1602_WriteCmd(0x80+0x40+4);     //时针闪动
     L1602_WriteCmd(0x0f);
    }
   if(keynum==4)                         //按下控制键四次 
   { 
     L1602_WriteCmd(0x80+12);          //星期闪动
     L1602_WriteCmd(0x0f);
    }
  if(keynum==5)                     //按下控制键五次
    {
     L1602_WriteCmd(0x80+9);      //日闪动
     L1602_WriteCmd(0x0f);
    }
  if(keynum==6)                     //按下控制键六次 
   { 
     L1602_WriteCmd(0x80+6);      //月闪动
     L1602_WriteCmd(0x0f);
    }
  if(keynum==7)                     //按下控制键七次 
   { 
     L1602_WriteCmd(0x80+3);     //年闪动
     L1602_WriteCmd(0x0f);
    }
  }
if(Exit==0)                           //按下退出键
 {
   TR0=1;
   keynum=0;
   L1602_WriteCmd(0x0c);           //停止闪动闪动,时间走
 } 
}
if(keynum!=0)                         //处于调整状态时,进行加减判断和处理
{
if(TimeUp==0)                     //加键控制
 {
   Delay5ms();
   if(TimeUp==0)
     {
        while(!TimeUp);
      delay5ms();
      while(!TimeUp);
      if(keynum==1)                         //秒加
      {
      ptm.second ++;
       if(ptm.second ==60)
{ptm.second =0; }
PCF8563_write_time(*ptm);
}
      if(keynum==2)                           //分加
         {
      ptm.minute++;
     if(ptm.minute ==60)
      {ptm.minute=0;}
      PCF8563_write_time(*ptm);
     }
     if(keynum==3)                        //时加
 {
   ptm.hour++;
   if(ptm.hour==24)
   {ptm.hour=0;}
   PCF8563_write_time(*ptm);
 }
if(keynum==4)                             //星期加
{
 ptm.weekday++;
 if(ptm.weekday==8)
{ptm.weekday=1;}
  PCF8563_write_time(*ptm);
}
if(keynum==5)                             //日加
 {
  ptm.day ++;
  if(ptm.day ==31)
  ptm.day =1;
  PCF8563_write_time(*ptm);
 }
if(keynum==6)                            //月加
 {
 ptm.mon ++;
 if(ptm.mon ==13)
 ptm.mon =1;
 PCF8563_write_time(*ptm);
 }
if(keynum==7)                           //年加
 {
  ptm.year++;
  if(ptm.year==100)
  ptm.year=0;
  PCF8563_write_time(*ptm);
  }
}
   if(TimeDown==0)                                // 减控制键 
{
   Delay5ms();
   if(TimeDown ==0)
    {
  while(!TimeDown);
  delay5ms();
  while(!TimeDown);
  if(keynum==1)                       //秒减
   {
     ptm.second--;
     if(ptm.second==-1)
     ptm.second=59;
    PCF8563_write_time(*ptm); 
   }
  if(keynum==2)                      //分减
  {
   ptm.minute--;
   if(ptm.minute==-1)
   ptm.minute=59;
   PCF8563_write_time(*ptm);
   }
 if(keynum==3)                       //时减
  {
   ptm.hour--;
   if(ptm.hour==-1)
   ptm.hour=23;
   PCF8563_write_time(*ptm);
  }
if(keynum==4)                         //星期减
 {
  ptm.weekday--;
  if(ptm.weekday==0)
  ptm.weekday=7;
  PCF8563_write_time(*ptm);
 }
if(keynum==5)                         //日减
 {
   ptm.day--;
   if(ptm.day==0)
   ptm.day=30;
   PCF8563_write_time(*ptm);
 }
if(keynum==6) 					//月减
 {
   ptm.mon--;
   if(ptm.mon==0)
   ptm.mon=12;
   PCF8563_write_time(*ptm); 
  }
if(keynum==7)    					//年减
 {
  ptm.year--;
  if(ptm.year==-1)
  ptm.year=99;
  PCF8563_write_time(*ptm);
 }
}
}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -