找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3288|回复: 1
打印 上一主题 下一主题
收起左侧

用89C51控制的矩阵键盘源代码

[复制链接]
跳转到指定楼层
楼主
ID:216375 发表于 2017-10-18 22:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
刚开始接触89C51时写的矩阵键盘的源代码,适合新手参考

单片机源程序如下:
  1. #include<reg52.h>

  2. sbit we = P2^7;
  3. sbit du = P2^6;


  4. unsigned char code leddata[]={

  5.                 0x3F,  //"0"
  6.                 0x06,  //"1"
  7.                 0x5B,  //"2"
  8.                 0x4F,  //"3"
  9.                 0x66,  //"4"
  10.                 0x6D,  //"5"
  11.                 0x7D,  //"6"
  12.                 0x07,  //"7"
  13.                 0x7F,  //"8"
  14.                 0x6F,  //"9"
  15.                 0x77,  //"A"
  16.                 0x7C,  //"B"
  17.                 0x39,  //"C"
  18.                 0x5E,  //"D"
  19.                 0x79,  //"E"
  20.                 0x71,  //"F"
  21.                 0x76,  //"H"
  22.                 0x38,  //"L"
  23.                 0x37,  //"n"
  24.                 0x3E,  //"u"
  25.                 0x73,  //"P"
  26.                 0x5C,  //"o"
  27.                 0x40,  //"-"
  28.                 0x00,  //熄灭
  29.                 0x00  //自定义

  30.                          };

  31. void delay(unsigned int c)
  32. {
  33.         unsigned int a,b;
  34.         for(a=c;a>0;a--)
  35.         for(b=114;b>0;b--);
  36. }

  37. unsigned int keyscan()
  38. {
  39.         unsigned int core_l,core_h;
  40.         P3 = 0xf0;
  41.        
  42.         if((P3&0xf0)!=0xf0)
  43.         {        delay(5);
  44.                 if((P3&0xf0)!=0xf0)
  45.                 core_l = P3;
  46.                 P3 = core_l|0x0f;
  47.                 core_h = P3&0x0f;
  48.                 while((P3&0x0f)!=0x0f);
  49.         }
  50.        

  51.         return core_h+core_l;
  52. }

  53. void keypro()
  54. {
  55.         switch( keyscan() )
  56.         {
  57.                  //第一行键值码
  58.                 case 0xee: P0 = leddata[0];                break;
  59.                 case 0xde: P0 = leddata[1];                break;
  60.                 case 0xbe: P0 = leddata[2];                break;
  61.                 case 0x7e: P0 = leddata[3];                break;

  62.                 //第二行键值码
  63.                 case 0xed: P0 = leddata[4];                break;
  64.                 case 0xdd: P0 = leddata[5];                break;
  65.                 case 0xbd: P0 = leddata[6];                break;
  66.                 case 0x7d: P0 = leddata[7];                break;

  67.                 //第三行键值码
  68.                 case 0xeb: P0 = leddata[8];                break;
  69.                 case 0xdb: P0 = leddata[9];                break;
  70.                 case 0xbb: P0 = leddata[10];        break;
  71.                 case 0x7b: P0 = leddata[11];        break;

  72.                 //第四行键值码
  73.                 case 0xe7: P0 = leddata[12];        break;
  74.                 case 0xd7: P0 = leddata[13];        break;
  75.                 case 0xb7: P0 = leddata[14];        break;
  76.                 case 0x77: P0 = leddata[15];        break;
  77.         }

  78. }
  79. void main()
  80. ……………………

  81. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
矩阵键盘.zip (10.75 KB, 下载次数: 16)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:338666 发表于 2018-5-28 18:00 | 只看该作者
这个程序 实现一个什么功能啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表