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

標題: 單片機4X4矩陣鍵盤掃描的proteus仿真和程序源碼 [打印本頁]

作者: 云之凡    時間: 2018-7-27 07:16
標題: 單片機4X4矩陣鍵盤掃描的proteus仿真和程序源碼
4X4矩陣鍵盤掃描仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. #define SCANPORT P1
  5. sbit spk=P2^3;                                                                        //按鍵提示音驅動端口
  6. uchar code table[]={ 0x3f,0x06,0x5b,0x4f,0x66,
  7.                                          0x6d,0x7d,0x07,0x7f,0x6f,  //數碼管顯示代碼
  8.                                          0x77,0x7c,0x39,0x5e,0x79,
  9.                                          0x71};
  10. uchar a_LineScan[4]={0xEF,0xDF,0xBF,0x7F};            //列掃描賦值

  11. void delay(uchar x)
  12. {
  13.   uchar j;
  14.   while(x--)  
  15.   for(j=110;j>0;j--);
  16. }

  17. uchar KeyScan()                                                                    //掃描函數
  18. {
  19.         uchar Temp=0;                                 
  20.         uchar i=0,j=0;            

  21.         for(i=0;i<4;i++)       
  22.                 {
  23.                         SCANPORT=a_LineScan[i];                        //定義掃描端口          
  24.                         Temp=SCANPORT & 0x0F;                            //取低四位掃描信號
  25.                         if(Temp!=0)
  26.                         {
  27.                         delay(10);                                                    //消抖函數
  28.                         if(Temp!=0)
  29.                         {                                               
  30.                         if(Temp!=0x0F)                                             //掃描按鍵是否按下
  31.                                 {                                                                         
  32.                                 switch(Temp)
  33.                                         {
  34.                                         case 0x0E: j=10;break;            //第一列
  35.                                         case 0x0D: j=20;break;                //第二列
  36.                                         case 0x0B: j=30;break;                //第三列
  37.                                         case 0x07: j=40;break;                //第四列
  38.                                         default:   j=50;break;                //輸入錯誤
  39.                                         }
  40.                                 break;
  41.                                 }
  42.                         }
  43.                         }
  44.                 }
  45.         return i+j+1;                                                                 //送出返回值
  46. }
  47. void KeyProcess(unsigned char KeyCode)                    //數碼管顯示函數
  48. {
  49.                
  50.         switch(KeyCode)
  51.                 {                                                                                //j=10
  52.                 case 11:P0=table[0];spk=1;break;            //'0'
  53.                 case 12:P0=table[1];spk=1;break;                //'1'
  54.                 case 13:P0=table[2];spk=1;break;               
  55.                 case 14:P0=table[3];spk=1;break;               
  56.                                                                                                   //j=20
  57.                 case 21:P0=table[4];spk=1;break;                //'4'
  58.                 case 22:P0=table[5];spk=1;break;                //'5'
  59.                 case 23:P0=table[6];spk=1;break;
  60.                 case 24:P0=table[7];spk=1;break;
  61.                                                                                                   //j=30
  62.                 case 31:P0=table[8];spk=1;break;                //'8'
  63.                 case 32:P0=table[9];spk=1;break;                //'9'
  64.                 case 33:P0=table[10];spk=1;break;               
  65.                 case 34:P0=table[11];spk=1;break;               
  66.                                                                                                 //j=40
  67.                 case 41:P0=table[12];spk=1;break;                //'C'
  68.                 case 42:P0=table[13];spk=1;break;                //'d'
  69.                 case 43:P0=table[14];spk=1;break;               
  70.                 case 44:P0=table[15];spk=1;break;               

  71.                 default:break;                                                        //無法識別
  72.                 }
  73. }
  74. void main()
  75. {                                                                                                  
  76.         spk=0;                                                                                //揚聲器初始化
  77.         P0=0;
  78.         while(1)
  79.         {
  80.                 KeyProcess(KeyScan());
  81.                 spk=0;                                                                        //復位揚聲器
  82.         }
  83. }
復制代碼

所有資料51hei提供下載:

20161111144-李作鑫4×4鍵盤矩陣按鍵.rar (66.55 KB, 下載次數: 130)



作者: zwmwcj    時間: 2020-3-24 09:00
謝謝學習
作者: yayayunyun    時間: 2022-1-17 10:50
你好!請問一下,顏色怎么修改的?我試過了修改背景,但是沒有實現




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 丁香婷婷久久久综合精品国产 | 中文字幕欧美一区 | 日韩精彩视频 | 日韩中文字幕2019 | 国产91综合一区在线观看 | 99re6热在线精品视频播放 | 人人九九精 | 在线只有精品 | 91麻豆精品国产91久久久久久久久 | 日韩一区二区三区在线视频 | 极品的亚洲 | 精品一区二区三区视频在线观看 | 中文字幕国产高清 | 欧美亚洲国语精品一区二区 | 91社区在线观看播放 | 日韩欧美在线视频观看 | 中文字幕在线第二页 | 祝你幸福电影在线观看 | 日日干日日色 | 国产免费让你躁在线视频 | 亚洲综合色婷婷 | 亚洲欧美激情国产综合久久久 | 日韩在线观看视频一区 | 狠狠干天天干 | 成人免费视频在线观看 | 精品欧美一区二区在线观看 | 亚洲国产成人精品在线 | 欧美日在线 | 久久精品小视频 | 亚州无限乱码 | 国产99久久 | 春色av| av在线免费观看网址 | 久久大全 | 成人激情视频免费在线观看 | 精品一区二区三区四区视频 | 久久国产精品一区二区三区 | 一级毛片高清 | 久久精彩视频 | 激情福利视频 | 精品免费国产一区二区三区四区介绍 |