您当前的位置:五五电子网电子知识单片机-工控设备PIC单片机4X4键盘矩阵键盘程序 正文
4X4键盘矩阵键盘程序

4X4键盘矩阵键盘程序

点击数:7879 次   录入时间:03-04 12:03:42   整理:http://www.55dianzi.com   PIC单片机

//按键跟按键的扫描结果满足如下关系:
//   按键     扫描结果(result)        按键       扫描结果  
//   K10            0XE7                K18          0XB7
//   K11            0XEB                K19          0XBB
//   K12            0XED                K20          0XBD
//   K13            0XEE                K21          0XBE
//   K14            0XD7                K22          0X77
//   K15            0XDB                K23          0X7B
//   K16            0XDD                K24          0X7D
//   K17            0XDE                K25          0X7E

#include<pIC.h>              //包含单片机内部资源预定义
 __CONFIG(0x1832);        
//芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡

 int  result;
 void  delay();              //delay函数申明
 void  init();               //I/O口初始化函数申明
 void  sCAN();               //按键扫描程序申明
 void  display(int x);       //显示函数申明
//---------------------------------------------------
                             //主程序  
void main()
{
  while(1)                   //循环工作
    {
      init();                //调用初始化子程序
      scan();                //调用按键扫描子程序
      display(result);       //调用结果显示子程序
    }
 }
 
//---------------------------------------------------
//初始化函数
void init() 
 {
  ADCON1=0X07;               //设置A口为普通I/O口
  TRISA=0X0f;                //设置A口高2位为输出,低4位为输入
  TRISC=0XF0;                //设置C口高4位为输入,低4位为输出
  TRISD=0X00;                //设置D口为输出
  PORTA=0XFF;              
  PORTD=0XFF;                //先清除所有显示
 }

//---------------------------------------------------
//按键扫描程序
void scan()
{
 PORTC=0XF7;                 //C3输出低电平,其他三位输出高电平
 asm("nop");                 //插入一定延时,确保电平稳定
 result=PORTC;               //读回C口高4位结果
 result=result&0xf0;         //清除低4位
 if(result!=0xf0)            //判断高4位是否为全1(全1代表没按键按下)?
   {
     result=result|0x07;     //否,加上低4位0x07,做为按键扫描的结果
   }
 else                        //是,改变低4位输出,重新判断是否有按键按下
   {
   PORTC=0XFb;               //C2输出低电平,其他三位输出高电平
   asm("nop");               //插入一定延时,确保电平稳定
   result=PORTC;             //读回C口高4位结果
   result=result&0xf0;       //清除低4位
   if(result!=0xf0)          //判断高4位是否为全1(全1代表没按键按下)
     {
     result=result|0x0b;     //否,加上低4位0xb,做为按键扫描的结果
     }
   else                      //是,改变低4位输出,重新扫描
       {
       PORTC=0XFd;           //C1输出低电平,其他三位输出高电平
       asm("nop");           //插入一定延时,确保电平稳定
       result=PORTC;         //读回C口高4位结果

[1] [2]  下一页


本文关键字:程序  键盘  PIC单片机单片机-工控设备 - PIC单片机

《4X4键盘矩阵键盘程序》相关文章>>>