久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2361|回復: 0
打印 上一主題 下一主題
收起左側

單片機4x4矩陣鍵數值讀取和顯示程序Proteus仿真

[復制鏈接]
跳轉到指定樓層
樓主
4x4矩陣鍵數值的讀取和顯示;
按鍵被按下后只有被松開才會有效果;
多個按鍵被按下只有按鍵都被松開最先被按下的按鍵起效果;
采用共陽極數碼管顯示;
附件包含完整仿真設計和C程序。

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. /**************物理連線
  5. P1對應數碼管;
  6. P2前四位對應矩陣行
  7. P2后四位對應矩陣列
  8. *****************/
  9. #define saomiao P2
  10. #define DB P1
  11. void display(uchar dat);                                                                                                                                                        //顯示鍵盤值函數
  12. uchar key_scan( );                                                                                                                                                                   //鍵盤掃描函數
  13. uchar table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e };  //0~15數碼管代碼,共陽極
  14. uchar key;                                                                                                                                                                                   //鍵盤值



  15. /********************************************************************
  16.                             延時函數
  17. *********************************************************************/
  18. void delay10ms(void) //延時程序
  19. {
  20.         unsigned char i,j;
  21.         for(i=20;i>0;i--)
  22.         for(j=248;j>0;j--);
  23. }



  24. //*****************鍵盤掃描函數*****************
  25. uchar key_scan()
  26. {
  27. uchar temp;
  28. saomiao=0xfe;                      //掃描第1行鍵
  29. temp=saomiao;
  30. temp=temp&0xf0;
  31. if(temp!=0xf0)
  32. delay10ms();                         //延時10ms
  33. temp=saomiao;
  34. temp=temp&0xf0;                                 //確認按鍵被按下
  35. if(temp!=0xf0)
  36. {
  37. temp=saomiao;
  38. switch(temp)
  39. {
  40. case 0xee:                                           //第1行第1列被按下
  41.             key=0;
  42.                         break;                           
  43. case 0xde:                                      // 第1行第2列被按下
  44.             key=1;
  45.                         break;
  46. case 0xbe:                                                  // 第1行第3列被按下
  47.             key=2;
  48.                         break;
  49. case 0x7e:                                                   // 第1行第4列被按下
  50.             key=3;
  51.                         break;
  52. default:     
  53.            break;

  54. }
  55. K1:
  56. temp=saomiao;
  57. temp=temp&0xf0;
  58. while(temp!=0xf0)                           //等待按鍵被松開才可以有效果
  59. goto K1;
  60. }


  61. saomiao=0xfd;                      //掃描第2行鍵
  62. temp=saomiao;
  63. temp=temp&0xf0;
  64. if(temp!=0xf0)
  65. delay10ms();
  66. temp=saomiao;
  67. temp=temp&0xf0;
  68. if(temp!=0xf0)
  69. {
  70. temp=saomiao;
  71. switch(temp)
  72. {
  73. case 0xed:
  74.             key=4;
  75.                         break;
  76. case 0xdd:  
  77.             key=5;
  78.                         break;
  79. case 0xbd:
  80.             key=6;
  81.                         break;
  82. case 0x7d:
  83.             key=7;
  84.                         break;
  85. default:     
  86.            break;

  87. }
  88. K2: temp=saomiao;
  89. temp=temp&0xf0;
  90. while(temp!=0xf0)                           //等待按鍵被松開
  91. goto K2;
  92. }



  93.   saomiao=0xfb;                      //掃描第3行鍵
  94. temp=saomiao;
  95. temp=temp&0xf0;
  96. if(temp!=0xf0)
  97. delay10ms();
  98. temp=saomiao;
  99. temp=temp&0xf0;
  100. if(temp!=0xf0)
  101. {
  102. temp=saomiao;
  103. switch(temp)
  104. {
  105. case 0xeb:
  106.             key=8;
  107.                         break;
  108. case 0xdb:  
  109.             key=9;
  110.                         break;
  111. case 0xbb:
  112.             key=10;
  113.                         break;
  114. case 0x7b:
  115.             key=11;
  116.                         break;
  117. default :   
  118.            break;

  119. }
  120. K3:
  121. temp=saomiao;
  122. temp=temp&0xf0;
  123. while(temp!=0xf0)                           //等待按鍵被松開
  124. goto K3;
  125. }




  126. saomiao=0xf7;                      //掃描第4行鍵
  127. temp=saomiao;
  128. temp=temp&0xf0;
  129. if(temp!=0xf0)
  130. delay10ms();
  131. temp=saomiao;
  132. temp=temp&0xf0;
  133. if(temp!=0xf0)
  134. {
  135. temp=saomiao;
  136. switch(temp)
  137. {
  138. case 0xe7:
  139.             key=12;
  140.                         break;
  141. case 0xd7:  
  142.             key=13;
  143.                         break;
  144. case 0xb7:
  145.             key=14;
  146.                         break;
  147. case 0x77:
  148.             key=15;
  149.                         break;
  150. default:     
  151.            break;

  152. }
  153. K4: temp=saomiao;
  154. temp=temp&0xf0;
  155. while(temp!=0xf0)                           //等待按鍵被松開
  156. goto K4;
  157. }
  158. return key;
  159. }



  160. void display(uchar dat)
  161. {
  162. DB=table[dat];
  163. }




  164. main()
  165. {
  166. key=0;
  167. while(1)
  168. {
  169. key=key_scan();           //讀取按鍵值
  170. display(key);                   //顯示按鍵值
  171. }
  172. }

  173.                                                                                                                                                                                                 
復制代碼

所有資料51hei提供下載:
4x4矩陣鍵.zip (54.63 KB, 下載次數: 13)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美精品在线观看 | 日本精品视频在线 | 亚洲综合首页 | 亚洲视频在线观看免费 | 久久人体视频 | 天天干夜夜操视频 | 国产日韩欧美在线播放 | 黄网站涩免费蜜桃网站 | 99久久精品免费看国产四区 | 久久久久久久久久久久久9999 | 久久久久久国产精品免费免费狐狸 | av午夜激情| 欧美网站一区二区 | 亚洲va中文字幕 | 国产高清精品在线 | 欧美一区二区在线 | 草草视频在线观看 | av黄色在线 | 影音先锋欧美资源 | 五月天国产| 欧美精品一区在线 | 日韩一区二区三区在线 | 天天干天天操天天看 | 欧美一级淫片免费视频黄 | 日韩中文在线视频 | 久久精品com| 欧美激情一区二区三区 | 欧美激情国产日韩精品一区18 | 中文字幕亚洲精品在线观看 | 在线日韩欧美 | 久久国产精品色av免费观看 | 特一级毛片 | 一区二区三区国产好 | 国产精品一区在线播放 | 一区二区三区高清 | 精品国产乱码久久久久久图片 | 中文字幕视频一区二区 | 在线观看日韩精品视频 | 99久久婷婷国产综合精品电影 | 日本亚洲欧美 | 四虎影音|