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

📄 key.c

📁 12232液晶驱动和时间显示。矩阵键盘源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
          flag_key_active=0;
          break;
        }
      if(key!=0xff)
        {
          reader_1.dat=(reader_1.dat<<4)|(key&0x0000000f);
          i++;
        }
      if(i==6)
        {
          if(flag_code_active==c_status_code_card)
              status_reader=r_status_card_code;
          else
              status_reader=r_status_code;

          //flag_code_active=c_status_code_ing;
          break;
        }
    }
    status_machine=m_status_normal;
   }
  }
 }
 else
 {
     key=key_scan();

     if(key==0xff)
     {return;}
     else if(key==10)
     {
       flag_key_active=0;
       return;
     }
     else if(key==11)
     {
      if( (tick_count-tick_count_temp)>=100 )
         {
             led_driver_mode();
             return;
         }
     }
     else if(status_machine==m_status_mode)
     {
            PIN_BUZZER=0;
            delay_ms(30);
            PIN_BUZZER=1;
            flag_key_buzzer=  1;
            code_buffer[i++]=key;
            while(flag_key_active)
            {
                key=key_scan();
                if(i==6)
                {
                        flag_code_active=c_status_code_sys;
                        return;
                }

                if(key==10)
                {
                        flag_key_active=0;
                        return;
                }
                if(key!=0xff)
                {
                        code_buffer[i++]=key;
                }

            }
     }
     else if(status_machine==m_status_moded)
     {
         led_driver_config();
         while(flag_key_active)
         {

                switch(key)
                {
                        case 0://card+code
                               while(flag_key_active)
                               {
                                        if(status_reader==r_status_wg_26)
                                        {
                                                code_buffer[i++]=reader_1.buffer[1];
                                                code_buffer[i++]=reader_1.buffer[2];
                                                code_buffer[i++]=reader_1.buffer[3];

                                                PIN_LED_PWR= 0;
                                                PIN_LED_MODE=0;
                                                PIN_LED_OPEN=1;

                                                count_key_timeout=0;
                                                break;
                                        }
                               }
                               if(status_reader==r_status_wg_26)
                               {
                                   status_reader=r_status_null;
                                   while(flag_key_active)
                                   {
                                        key=key_scan();
                                        if(key==10)
                                        {
                                                flag_key_active=0;
                                                break;
                                        }
                                        if(key!=0xff)
                                        {
                                           if((j+2)%2)
                                           {
                                             code_buffer[i] |= key;
                                             i++;
                                           }
                                           else
                                             code_buffer[i] = (key<<4);
                                           j++;
                                        }
                                        if(j==6)
                                        {
                                                status_reader=r_status_add_card_code;
                                                flag_key_active=0;
                                                break;
                                        }
                                   }
                               }
                               break;
                        case 1://modify system code
                               while(flag_key_active)
                               {
                                        key=key_scan();
                                        if(key!=0xff)
                                        {
                                                code_sys[i++]=key;
                                        }
                                        if(i==6)
                                        {
                                                Write_Byte_AT24LC(0x55,code_point_type);
                                                delay_ms(10);
                                                Write_Buffer_AT24LC(code_sys,6,code_point_addr);
                                                led_driver_success();
                                                delay_ms(1);
                                                break;
                                         }
                               }
                               break;
                        case 2://card or code
                               while(flag_key_active)
                               {
                                        key=key_scan();
                                        if(key==10)
                                        {
                                                flag_key_active=0;
                                                break;
                                        }
                                        if(i==6)
                                        {
                                                status_reader=r_status_add_code;
                                                flag_key_active=0;
                                                break;
                                        }
                                        if(status_reader==r_status_wg_26 )
                                        {
                                                status_reader=r_status_add_card;
                                                break;
                                        }
                                        if(key!=0xff)
                                        {
                                                reader_1.dat=(reader_1.dat<<4) | (key&0x0000000f);
                                                i++;
                                        }
                               }
                               break;
                        case 3://delete simple user
                               while(flag_key_active)
                               {
                                        if(status_reader==r_status_wg_26)
                                        {
                                                status_reader=r_status_del_card;
                                                break;
                                        }
                               }
                               break;
                        case 4://delete all user
                               while(flag_key_active)
                               {
                                        key=key_scan();
                                        if(key!=0xff)
                                        {
                                                if(key==0x04)
                                                {
                                                    status_reader=r_status_del_all;
                                                }
                                                else
                                                {
                                                    led_driver_error();
                                                }

                                                break;
                                        }
                               }
                               break;
                        case 5://modify time to delay of door
                               while(flag_key_active)
                               {
                                        key=key_scan();

                                        if(key==10)
                                        {
                                            flag_key_active=0;
                                            break;
                                        }
                                        if(key!=0xff)
                                        {
                                                temp_door_delay[i++]=key ;
                                        }
                                        if(i==3)
                                        {
                                                count_door_delay=(temp_door_delay[0]*1000)+(temp_door_delay[1]*100)+(temp_door_delay[2]*10);
                                                Write_Buffer_AT24LC(temp_door_delay,3,count_dor_delay_addr);
                                                led_driver_success();
                                                break;
                                        }
                               }
                               break;
                        case 6://modify user code
                               i=0;j=0;flags=0;
                               while(flag_key_active)
                               {
                                        key=key_scan();
                                        if((status_reader==r_status_wg_26)&(flags==0))
                                        {
                                                count_key_timeout=0;
                                                if(right_judge_card(reader_1.buffer+1)>right_point_byte_start)
                                                {
                                                   led_driver_sucess();
                                                   flags=1;
                                                }
                                                else
                                                {
                                                   led_driver_error();
                                                   break;
                                                }
                                        }
                                        if(key==10)
                                        {
                                           status_reader=r_status_null;
                                           flag_key_active=0;
                                        }
                                        if(key!=0xff)
                                        {
                                         if((j+2)%2)
                                         {
                                             code_buffer[i] |= key;
                                             i++;
                                         }
                                         else
                                             code_buffer[i] = (key<<4);
                                         j++;
                                        }
                                        if(j==6)
                                        {
                                           count_key_timeout=0;
                                           if(flags==1)
                                           {
                                                status_reader=r_status_code_update;
                                                flag_key_active=0;
                                                break;
                                           }
                                           temp_addr = right_judge_code(code_buffer);
                                           if(temp_addr>=right_point_byte_start)
                                           {
                                                i=0;j=0;flags=1;
                                                code_buffer[4]=(temp_addr>>8)&0xff;
                                                code_buffer[5]=temp_addr&0xff;

                                                PIN_LED_PWR= 0;
                                                PIN_LED_MODE=0;
                                                PIN_LED_OPEN=1;

                                                status_machine=m_status_null;
                                           }
                                           else
                                           {
                                                led_driver_error();
                                                flag_key_active=0;
                                                break;
                                           }
                                        }
                               }
                               break;
                        case 10://exit configure mode
                               led_driver_success();
                               flag_key_active=0;
                               break;
                        default:
                                break;
                }
                key=key_scan();
         }
     }
 }
}

⌨️ 快捷键说明

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