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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4192|回復: 0
收起左側(cè)

單片機3個IO做9個按鍵程序

[復制鏈接]
ID:71259 發(fā)表于 2014-12-30 00:49 | 顯示全部樓層 |閱讀模式
  1. #include<reg51.h>
  2. //P0.0-P0.2
  3. unsigned char leddata[]={

  4.                 0xC0,  //"0"
  5.                 0xF9,  //"1"
  6.                 0xA4,  //"2"
  7.                 0xB0,  //"3"
  8.                 0x99,  //"4"
  9.                 0x92,  //"5"
  10.                 0x82,  //"6"
  11.                 0xF8,  //"7"
  12.                 0x80,  //"8"
  13.                 0x90,  //"9"
  14.                 0x88,  //"A"
  15.                 0x83,  //"B"
  16.                 0xC6,  //"C"
  17.                 0xA1,  //"D"
  18.                 0x86,  //"E"
  19.                 0x8E,  //"F"
  20.                 0x89,  //"H"
  21.                 0xC7,  //"L"
  22.                 0xC8,  //"n"
  23.                 0xC1,  //"u"
  24.                 0x8C,  //"P"
  25.                 0xA3,  //"o"
  26.                 0xBF,  //"-"
  27.                 0xFF,  //熄滅
  28.                 0xFF  //自定義

  29.                          };

  30. unsigned char key;

  31. void delay(unsigned char x)
  32. {
  33. unsigned char i;
  34. while(x--)
  35.   for(i=0;i<115;i++);
  36. }


  37. void keyscan()
  38. {
  39. //------先掃描直接接地的3個按鍵-----//
  40. P0|=0X07;  //先將IO拉高
  41. if(P0&0X01==0){
  42.   delay(15);
  43.   key=7;
  44.   return;
  45. }
  46. else if(P0&0x02==0){
  47.   delay(15);
  48.   key=8;
  49.   return;
  50. }
  51. else if(P0&0x04==0){
  52.   delay(15);
  53.   key=9;
  54.   return;
  55. }  

  56. //------接著對逐一對IO口進行掃鍵-----//
  57. P0|=0X07;   //先將IO拉高,很重要
  58. P0&=0XFE;  //P0.0置0
  59. if((P0&0X02)==0){
  60.   delay(15);
  61.   if((P0&0X02)==0){
  62.    P0|=0X07;    //對地的按鍵優(yōu)先級高,這里是為了防止誤判
  63.    if((P0&0X07)==0X07)
  64.     key=1;
  65.    else
  66.        key=8;  

  67.    return;
  68.   }
  69. }
  70. else if((P0&0X04)==0){
  71.   delay(15);
  72.   if((P0&0X04)==0){
  73.    P0|=0X07;
  74.    if((P0&0X07)==0X07)
  75.     key=2;
  76.    else
  77.     key=9;
  78.    return;
  79.   }
  80. }

  81. P0|=0X07;//先將IO拉高,很重要
  82.   P0&=0XFD;
  83. if((P0&0X01)==0){
  84.   delay(15);
  85.   if((P0&0X01)==0){
  86.    P0|=0X07;
  87.    if((P0&0X07)==0X07)
  88.     key=3;
  89.    else
  90.        key=7;
  91.    return;   
  92.   }  
  93. }
  94. else if((P0&0X04)==0){
  95.   delay(15);
  96.   if((P0&0X04)==0){
  97.       P0|=0X07;
  98.    if((P0&0X07)==0X07)
  99.        key=4;
  100.    else
  101.       key=9;  
  102.    return;   
  103.   }
  104. }

  105. P0|=0X07; //先將IO拉高,很重要
  106. P0&=0XFB;
  107. if((P0&0X01)==0){
  108.   delay(15);
  109.   if((P0&0X01)==0){
  110.       P0|=0X07;
  111.    if((P0&0X07)==0X07)
  112.     key=5;
  113.    else
  114.     key=7;
  115.    return;   
  116.   }
  117. }
  118. else if((P0&0X02)==0){
  119.   delay(15);
  120.   if((P0&0X02)==0){
  121.    P0|=0X07;
  122.    if((P0&0X07)==0X07)
  123.     key=6;
  124.    else
  125.     key=8;
  126.    return;   
  127.   }
  128. }

  129. }

  130. void main()
  131. {
  132. while(1){
  133.   keyscan();
  134.   P3=leddata[key];
  135. }
  136. }
復制代碼


回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 黄色小说视频 | 天天看片天天爽 | 日本久久精品 | 国产草草 | 天天天天操 | 国产精品久久久精品 | 久久精品视 | 国产视频在线看 | 亚洲香蕉视频 | 久草免费在线视频 | 亚洲激情网 | 五月天毛片 | 欧美午夜精品久久久久免费视 | 国产区在线观看 | 国产精品久久久一区二区三区 | 黄色一级免费 | 伊人操 | 日韩一区在线视频 | 日韩免费一区二区三区 | 白白色在线观看 | 亚洲国产成人91精品 | 欧美日韩在线一区二区 | 日产av在线| 亚洲女优在线 | 国产男女无遮挡猛进猛出 | 伊人久久综合 | 日本a在线观看 | 五月婷视频 | 亚洲高清视频在线观看 | 91色交视频| 国产高潮在线观看 | 欧美1区2区| www.青青草.com | 99视频网站| 伊人久久国产 | 日韩中文在线视频 | 一区二区三区四区在线播放 | 亚洲精品第一 | 欧美国产日韩一区 | 麻豆av网站 | 日本免费不卡视频 |