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

📄 keyboard.c

📁 扫描键盘加LCD显示
💻 C
字号:
//Line P1.0-P1.2
//Row P0.1-P0.4


#include <reg51.h>
#include <intrins.h>
#include <stdio.h>


sbit v0 = P1^0;
sbit v1 = P1^1;
sbit v2 = P1^2;


//---------------------------------
// Functions
unsigned char scan(void);
unsigned char log2(unsigned char power);
void delay(void);


//----------------------------------------
void delay(void)
{
 unsigned int count;
 for (count = 0;count <5000;count++)
   {
    _nop_();
   }
}


//----------------------------------------
unsigned char log2(unsigned char Power)
{
 unsigned char Index = 0;
 while (Power)
   {
    Power >>= 1;
    Index ++;
   }
 return (Index-1);
}


//---------------------------------------
unsigned char scan(void)
{
 unsigned char row,list,num,temp;
 P1 &= 0xF8;                  // 1111 1000
 temp = P0;
 if ((temp &= 0x1F) != 0x1F)    // Key press
   {
    delay();                  // 
    v0 = 0;                   // List 0    1111 1110
    v1 = 1;
    v2 = 1;
    temp = P0;
    if ((temp |= 0xE0) != 0xFF) // At the list 0
      {
      }
    else
      {
       v0 = 1;               // List 1    1111 1101
       v1 = 0;
       v2 = 1;
       temp = P0;
       if ((temp |= 0xE0) != 0xFF) // At the list 1
         {
         }
       else
         {
          v0 = 1;               // List 2    1111 1011
          v1 = 1;
          v2 = 0;
          temp = P0;
          if ((temp |= 0xE0) != 0xFF) // At the list 2
            {
            }
          else
            return (0xFF);          // No key was pressed
         }
      }
    temp = P0;
    row = (temp |= 0xE0);    // 1110 0000
    temp = P1;
    list = (temp |= 0xF8);   // 1111 1000
    row = log2(~row);
    list = log2(~list);
    num = list * 5 + row;
    return (num);                   // Return serial number of key
   }
 return (0xFF);                     // No key was pressed
}


/*
main()
{
while(1)
  {
   unsigned char keynum;
   keynum = scan();
  }
}*/

⌨️ 快捷键说明

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