標(biāo)題: 51單片機(jī)矩陣鍵盤程序 [打印本頁]

作者: 51黑bing    時(shí)間: 2016-3-23 00:23
標(biāo)題: 51單片機(jī)矩陣鍵盤程序
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint  unsigned int
  4. #define KEY   P1                //用P1口控制4*4個(gè)矩陣鍵盤
  5. //------------------------------------------------
  6. uchar code duanma[17]={   //碼表的定義
  7. 0x3f,0x06,0x5b,0x4f,
  8. 0x66,0x6d,0x7d,0x07,
  9. 0x7f,0x6f,0x77,0x7c,
  10. 0x39,0x5e,0x79,0x71
  11. };
  12. //------------------------------------------------
  13. void delay(uchar x)       //延時(shí)函數(shù)的定義
  14. {
  15. uchar y,z;
  16. for(y=x;y>0;y--)
  17.   for(z=110;z>0;z--);
  18. }
  19. //------------------------------------------------
  20. uchar kayscan()        //按鍵檢測函數(shù)的定義
  21. {
  22. uchar keyvalue=0;           //鍵值的定義,并且用于返回
  23. uchar temp;     
  24. uchar and;
  25. temp=0x0f;      
  26. KEY=0x0f;
  27. if(KEY != 0x0f)    //檢測按鍵是否被按下
  28. {
  29.   delay(10);    //延時(shí)10毫秒,以便消抖
  30.   if(KEY != 0x0f)   //再次檢測按鍵是否被按下
  31.   {
  32.    and = KEY & temp;   //行檢測
  33.    switch(and)   
  34.    {
  35.     case(0x0e) : keyvalue=0 ; break;  //第一行的按鍵被按下了
  36.     case(0x0d) : keyvalue=4 ; break;  //第二行的按鍵被按下了
  37.     case(0x0b) : keyvalue=8 ; break;  //第三行的按鍵被按下了
  38.     case(0x07) : keyvalue=12; break;  //第四行的按鍵被按下了
  39.    }
  40.    
  41.    temp=0xf0;      //列檢測
  42.    KEY=0xf0;
  43.    and = KEY & temp;
  44.    switch(and)
  45.    {
  46.     case(0xe0) : keyvalue=keyvalue+0; break;  //第一列的按鍵被按下了
  47.     case(0xd0) : keyvalue=keyvalue+1; break;  //第二列的按鍵被按下了
  48.     case(0xb0) : keyvalue=keyvalue+2; break;  //第三列的按鍵被按下了
  49.     case(0x70) : keyvalue=keyvalue+3; break;  //第四列的按鍵被按下了
  50.    }
  51.   }
  52. }
  53. return(keyvalue);
  54. }
  55. //------------------------------------------------
  56. void main()               //主函數(shù)
  57. {      
  58. P0=0;                             //初始化,讓所有l(wèi)ed都滅
  59. while(1)
  60. {
  61.   P0=duanma[kayscan()];         //矩陣鍵盤的掃描,并且返回鍵值,賦值給P0
  62. }
  63. }
復(fù)制代碼







歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1