谁有lm3s811控制4*4键盘的程序,发上来分享一下吧,谢谢了

2019-03-24 15:40发布

谢谢了 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
Study_Stellaris
1楼-- · 2019-03-24 23:15
< 矩阵键盘的可以试试参考下一个 PIC 单片机的,改成 LM3S811 的吧。
CHAR keycodes[16] = {'7','8','9','/','4','5','6','*','1','2','3','-','.','0','=','+'};

CHAR keypadread()
// Find a key, wait for
// it to be released and return.
{ CHAR key = scankeypad();
   if (key)
      while (scankeypad() != 0)//松手检测
         /* Nothing */  ;  
   return key;
}

CHAR scankeypad()
// Scan the keypad for a keypress.
// Return 0 for no press or the char pressed.
{ INT8 row,col,tmp;
   CHAR key=0;

   // Disable ADC functionality on Port A
   ADCON1 = 6;

   // Initialise Port for input, and PORTC for output
   TRISA = PORTC = 0xFF;
   TRISC = 0;

   for (row=0; row < KEYP_NUM_ROWS; row++)
    { // Drive appropriate row low and read columns:
      PORTC = ~(1 << row);
      asm ( "NOP");     
      tmp = PORTA;
   
      // See if any column is active (low):
      for (col=0; col<KEYP_NUM_COLS; ++col)
         if ((tmp & (1<<col)) == 0)
          { INT8 idx = (row*KEYP_NUM_COLS) + col;
            key = keycodes[idx];
            goto DONE;
          }
    }
   DONE:

   // Disable Port Drive and return.
   TRISC = 0xFF;
   return key;
}
David_Lee
2楼-- · 2019-03-25 03:11
< :TI_MSP430_内容页_SA7 -->

原帖由 Study_Stellaris 于 2011-9-20 21:59 发表 矩阵键盘的可以试试参考下一个 PIC 单片机的,改成 LM3S811 的吧。 CHAR keycodes[16] = {'7','8','9','/','4','5','6','*','1','2','3','-','.','0','=','+'}; CHAR keypadread() // Find a key, wait for // ...

 

O(∩_∩)O~,这里还有个基于Atmega16的,判断流程挺容易理解的。

MATRIXKEYS.rar (1.24 KB, 下载次数: 22) 2011-9-20 23:09 上传 点击文件名下载附件

一周热门 更多>

相关问题

    相关文章