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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

關于3*4矩陣鍵盤控制燈亮時間控制 附單片機源程序

查看數: 2829 | 評論數: 2 | 收藏 2
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2020-1-17 15:56

正文摘要:

本帖最后由 Hajime_S 于 2020-1-17 16:32 編輯 單片機為89c52,矩陣鍵盤接p10-12為列,p13-16為行,燈接p20-21。第89行我用計算器算出11110011的值確實為0xf3,但按下星號鍵的時候燈亮都不亮,但是按下1,4,7鍵都 ...

回復

ID:213173 發表于 2020-1-18 10:59
Hajime_S 發表于 2020-1-17 16:48
我后來又用keil的debug模擬了一下, 在節點到73行的時候把P1的值改成0xF3,結果直接跳到return0去了;但改 ...

給你改了一下,P1.0~1.6   3*4矩陣按鍵,P2 LED顯示鍵值,P1.7可另作它用,不影響按鍵。
  1. #include "reg52.h"

  2. #define uint unsigned int
  3. #define uchar unsigned char

  4. uchar key=0xff;                                //定義鍵值全局變量

  5. void keyscan()                                        //按鍵掃描程序
  6. {
  7.         static bit sign=0;                //按鍵自鎖標志
  8.         static uchar count=0;        //消抖計數變量                       
  9.         uchar num=0;                                //臨時變量
  10.         P1&=0x80;                                        //清P1低7位1000 0000 最高位保持原狀
  11.         P1|=0x78;                                        //賦值P1 x111 1000 最高位保持原狀
  12.         num=P1&0x78;                                //保存P1低7位0xxx x000,x為0或1
  13.         if(num!=0x78)                                //檢測有按鍵按下
  14.         {
  15.                 if(++count>=100 && sign==0)//消抖與自鎖識別
  16.                 {                       
  17.                         sign=1;                                //按鍵自鎖標志置1
  18.                         P1&=0x80;                        //清P1低7位1000 0000
  19.                         P1|=0x87;                        //賦值P1 x000 0111
  20.                         num=(P1&0x07)|num;  //讀P1低3位+num xxxx xxxx                               
  21.                         switch(num)
  22.                         {
  23.                                 case 0x76: key= 0;/*key='1';*/ break;
  24.                                 case 0x75: key= 1;/*key='2';*/ break;
  25.                                 case 0x73: key= 2;/*key='3';*/ break;
  26.                                 case 0x6e: key= 3;/*key='4';*/ break;
  27.                                 case 0x6d: key= 4;/*key='5';*/ break;
  28.                                 case 0x6b: key= 5;/*key='6';*/ break;
  29.                                 case 0x5e: key= 6;/*key='7';*/ break;
  30.                                 case 0x5d: key= 7;/*key='8';*/ break;
  31.                                 case 0x5b: key= 8;/*key='9';*/ break;
  32.                                 case 0x3e: key= 9;/*key='#';*/ break;
  33.                                 case 0x3d: key=10;/*key='0';*/ break;
  34.                                 case 0x3b: key=11;/*key='*';*/ break;
  35.                         }
  36.                 }
  37.         }
  38.         else                                                //鍵抬起
  39.         {
  40.                 sign=0;                                //按鍵自鎖標志清0
  41.                 count=0;                                //消抖計數清0
  42.         }
  43. }

  44. void main()                                                //主函數
  45. {
  46.         while(1)
  47.         {
  48.                 keyscan();//按鍵掃描程序
  49.                 P2=key;//LED顯示鍵值
  50.         }
  51. }
復制代碼





ID:643607 發表于 2020-1-17 16:48
我后來又用keil的debug模擬了一下, 在節點到73行的時候把P1的值改成0xF3,結果直接跳到return0去了;但改成0xEB的時候,卻能跳到delay函數去。。。實在不知道哪里錯了

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 伊人伊人 | 欧美片网站免费 | 色播久久| 日韩一级精品视频在线观看 | 免费视频二区 | 国产成人福利在线 | 在线成人av | 欧美精品久久 | 日本在线播放一区二区 | 成人在线精品视频 | 97免费在线观看视频 | 三级免费 | 亚洲视频一区 | 亚洲天堂成人在线视频 | 日韩在线中文字幕 | 五月婷婷丁香婷婷 | 三级视频网站 | 黄色综合 | 国产精品久久久久久久久久软件 | 久久免费高清视频 | 日韩欧美精品在线播放 | 中文字幕久久久 | www.日日操 | 亚洲第一女人av | 久久9久 | 一二三四在线视频观看社区 | 在线中文字幕av | 日韩欧美在线一区 | 亚洲国产精品久久久 | 日韩精品视频一区二区三区 | 国产免费一区 | 色桃网| 国产电影一区二区三区爱妃记 | 99精品在线 | 精精国产xxxx视频在线播放 | 中文字幕一页二页 | 欧美激情一区二区三区 | 国产区精品在线观看 | 色综合久久88色综合天天 | 在线综合视频 | 丝袜美腿一区二区三区动态图 |