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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6500|回復(fù): 9
收起左側(cè)

單片機(jī)行列反轉(zhuǎn)法實(shí)現(xiàn)矩陣鍵盤掃描的源程序+仿真

[復(fù)制鏈接]
ID:531603 發(fā)表于 2019-5-28 17:53 | 顯示全部樓層 |閱讀模式
《上次發(fā)過一次,這次程序?qū)懛ú煌9┐蠹覅⒖紖⒖肌?br />
//希望不要再有不懂裝懂的人再說成逐行掃描,不知道就不要瞎BB   (此行為注釋

*實(shí)現(xiàn)效果16個按鍵數(shù)碼管對應(yīng)顯示0~f
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載):
1.png

程序:
  1. #include <reg51.h>

  2. void delay(unsigned int i)                //延時函數(shù)
  3. {
  4.         unsigned int k;
  5.         for(k = 0; k < i; k++);
  6. }

  7. unsigned char table[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};                                        //數(shù)碼管顯示碼0~f
  8. unsigned char code key_code[] ={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77};  //鍵盤掃描碼
  9. char keyscan();                //行列反轉(zhuǎn)法實(shí)現(xiàn)的矩陣鍵盤掃描函數(shù)


  10. void main()
  11. {
  12.         char i;
  13.         P0=0x00;
  14.         while(1)
  15.         {
  16.                 i=keyscan();
  17.                 if(i!=-1)                                                //當(dāng)有按鍵被按下
  18.                 {
  19.                         P0=table[i];
  20.                         delay(10000);
  21.                 }
  22.         }
  23.         
  24. }


  25. char keyscan()
  26. {
  27.         char scan1,scan2,keycode,j,key;
  28.         key =-1;                                                                                                        //按鍵值初值為-1,如果沒有掃描到按鍵,函數(shù)返回-1
  29.         P2 =0xf0;                                                                                                        //寫:行為全1,列為全0
  30.         scan1 =P2;                                                                                                //讀:行列值
  31.         if(scan1 !=0xf0)                                                                        //如果讀入值不為0xf0,則表示有按鍵按下
  32.         {
  33.                 delay(1200);
  34.                 scan1 = P2;                                                                                        //再次讀入
  35.                 if(scan1 != 0xf0)                                                                //再次判斷是否有按鍵按下,去除抖動
  36.                 {
  37.                         P2 =0x0f;                                                                                        //行列反轉(zhuǎn),寫:行為全0,列為全1
  38.                         scan2 =P2;                                                                                //讀入行列值
  39.                         keycode = scan1 | scan2;                        //合并行列值,得到掃描碼
  40.                         for(j=0;j<16;j++)                                                        //由掃描碼表得到按鍵值
  41.                         {        
  42.                                 if(keycode ==key_code[j])
  43.                                 {key =j;
  44.                                         break;
  45.                                 }
  46.                         }
  47.                 }
  48.         }
  49.         return (key);                //返回按鍵值
  50. }
復(fù)制代碼
全部資料51hei下載地址:
行列反轉(zhuǎn)法矩陣鍵盤掃描.rar (83.25 KB, 下載次數(shù): 81)

評分

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

查看全部評分

回復(fù)

使用道具 舉報

ID:552373 發(fā)表于 2019-6-5 08:04 | 顯示全部樓層
仿真在哪里??里面只有c程序啊
回復(fù)

使用道具 舉報

ID:555241 發(fā)表于 2019-6-5 09:31 | 顯示全部樓層
這個怎么仿真操作啊
回復(fù)

使用道具 舉報

ID:555406 發(fā)表于 2019-6-5 11:04 | 顯示全部樓層
2,4,5,9,d, 都顯示不全
2.PNG
4.PNG
5.PNG
9.PNG
d.PNG
回復(fù)

使用道具 舉報

ID:531603 發(fā)表于 2019-6-30 10:34 | 顯示全部樓層
ywdmas 發(fā)表于 2019-6-5 11:04
2,4,5,9,d, 都顯示不全

顯示不全可能是單片機(jī)頻率不夠,或者限流電阻過大哈;再有可能就是該字符的顯示碼有錯誤喲,,可以再檢查檢查程序;;;我發(fā)的是沒問題的喲
2.png
4.png
5.png
9.png
d.png
回復(fù)

使用道具 舉報

ID:531603 發(fā)表于 2019-6-30 10:35 | 顯示全部樓層
2.png 4.png 5.png 9.png d.png

我發(fā)的是沒有問題的喲,顯示不全可能是字符碼有錯誤,或者電阻過大引起電流不夠造成的哈
回復(fù)

使用道具 舉報

ID:701002 發(fā)表于 2020-3-2 13:43 | 顯示全部樓層
這個仿真用proteus7.7打不開啊
回復(fù)

使用道具 舉報

ID:531603 發(fā)表于 2020-3-24 13:33 | 顯示全部樓層
huaxinfeng 發(fā)表于 2020-3-2 13:43
這個仿真用proteus7.7打不開啊

我用的是proteus8,7.7版本可能存在不兼容問題
回復(fù)

使用道具 舉報

ID:771701 發(fā)表于 2020-6-8 18:11 | 顯示全部樓層
{        
                                if(keycode ==key_code[j])
                                {key =j;
請問這三步是什么意思?
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久久午夜片 | 亚洲三级国产 | 久久国产精品99久久久久久丝袜 | 国产成人一区在线 | 日本高清在线一区 | 成人免费在线视频 | 欧美久久一区二区 | 精久久久久 | 在线日韩中文字幕 | 国产精品一区二区av | 成人欧美一区二区三区1314 | 亚洲国产乱码 | 狠狠躁天天躁夜夜躁婷婷老牛影视 | 久久这里只有精品首页 | 精品一区二区三区在线视频 | 中文字幕免费观看 | 国产色 | 国产亚洲久 | 国产99精品 | 91久久国产综合久久 | 在线第一页 | 综合久久亚洲 | 亚洲一区二区三 | 日韩欧美精品 | 欧美三级网站 | 99草免费视频 | 一区二区三区在线观看视频 | 欧美视频一区二区三区 | 亚洲 欧美 综合 | 欧美自拍日韩 | 91亚洲国产| 综合五月 | 日韩欧美大片 | 国产精品一区三区 | 黄色免费网站在线看 | 日日夜夜免费精品视频 | 国产午夜精品一区二区 | 午夜在线小视频 | 国产黄色网址在线观看 | 国产乱码精品1区2区3区 | xxxcom在线观看 |