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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

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

[復制鏈接]
跳轉到指定樓層
樓主
ID:71259 發表于 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;    //對地的按鍵優先級高,這里是為了防止誤判
  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. }
復制代碼


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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美在线观看一区 | 国产中文区二幕区2012 | 我要看黄色录像一级片 | 国产精品mv在线观看 | 欧美日韩精品一区二区天天拍 | 日韩一区二区三区在线观看 | 啪啪综合网 | 午夜精品视频 | 国产日韩欧美一区二区 | 一级全黄少妇性色生活免费看 | 日韩精品一区二区三区高清免费 | 国产香蕉视频 | 国产免费观看久久黄av片涩av | 欧美日韩一 | 毛片一区二区三区 | 色婷婷久久久久swag精品 | 天天操天天干天天曰 | 伊人狠狠| 国产精品视频免费观看 | 欧美日韩在线一区二区 | 国产精品自产拍 | 国产三级一区二区 | 污污的网站在线观看 | 国产日韩欧美一区 | 亚洲国产精品久久 | 国产精品国产三级国产播12软件 | 亚洲小视频在线观看 | 亚洲欧美精品久久 | 日韩中文字幕视频在线 | 热久久免费视频 | 国产精品精品视频一区二区三区 | 精品视频99 | 中文字幕在线一区二区三区 | 国产无人区一区二区三区 | 91性高湖久久久久久久久_久久99 | 五月婷婷亚洲 | 成人h动漫精品一区二区器材 | 中文字幕成人在线 | 久久精品国产99国产精品 | 日韩在线免费 | 天天夜天天操 |