找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3326|回复: 2
收起左侧

矩阵键盘与单片机接口电路及代码

[复制链接]
ID:192976 发表于 2017-4-24 11:15 | 显示全部楼层 |阅读模式
这是我做的矩阵键盘电路图及程序代码
用PROTUES画的图
仿真有效哦
还请大家多多指教


0.png

单片机源程序:
  1. #include   <reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. uint led[]={0xc0,0xf9,0xa4, 0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
  5. 0x88,0x83,0xc6,0xa1,0x86,0x8e};
  6. uchar a,b,c,temp;
  7. void delay7ms(void)   //?? -0.217013888891us
  8. {
  9.     unsigned char a,b;
  10.     for(b=208;b>0;b--)
  11.         for(a=14;a>0;a--);
  12. }
  13. uchar key()
  14. {
  15.   P1=0x0f;
  16.     if(P1!=0x0f)
  17.      {
  18.        delay7ms();
  19.        if(P1!=0x0f);

  20.        P1=0xfe;
  21.        a=P1^0xfe;
  22.        switch(a)
  23.         {
  24.          case 0x80:c=0; break;
  25.           case 0x40:c=1; break;
  26.           case 0x20:c=2; break;
  27.           case 0x10:c=3; break;
  28.       }
  29.    temp=P1;
  30.    while(temp!=0xfe)
  31.     {
  32.    temp=P1;
  33.     }
  34.    }
  35.    
  36.     P1=0x0f;
  37.     if(P1!=0x0f)
  38.      {
  39.        delay7ms();
  40.        if(P1!=0x0f);
  41.        P1=0xfd;
  42.        a=P1^0xfd;
  43.        switch(a)
  44.         {
  45.          case 0x80:c=4; break;
  46.           case 0x40:c=5; break;
  47.           case 0x20:c=6; break;
  48.           case 0x10:c=7; break;
  49.       }
  50.    temp=P1;
  51.    while(temp!=0xfd)
  52.     {
  53.    temp=P1;
  54.     }
  55.    }
  56.    
  57.   P1=0x0f;
  58.     if(P1!=0x0f)
  59.      {
  60.        delay7ms();
  61.        if(P1!=0x0f);
  62.        P1=0xfb;
  63.        a=P1^0xfb;
  64.        switch(a)
  65.         {
  66.           case 0x80:c=8; break;
  67.           case 0x40:c=9; break;
  68.           case 0x20:c=10; break;
  69.           case 0x10:c=11; break;
  70.      }
  71.   temp=P1;
  72.    while(temp!=0xfb)
  73.     {
  74.    temp=P1;
  75.     }
  76.    }
  77.    P1=0x0f;
  78.     if(P1!=0x0f)
  79.      {
  80.        delay7ms();
  81.        if(P1!=0x0f);
  82.        P1=0xf7;
  83.        a=P1^0xf7;
  84.        switch(a)
  85.         {
  86.        case 0x80:c=12; break;
  87.           case 0x40:c=13; break;
  88.           case 0x20:c=14; break;
  89.           case 0x10:c=15; break;
  90.          }
  91.     temp=P1;
  92.    while(temp!=0xf7)
  93.     {
  94.    temp=P1;

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

下载:
jzjp.rar (16.08 KB, 下载次数: 17)
回复

使用道具 举报

ID:496708 发表于 2019-4-14 12:11 | 显示全部楼层
能放完吗?放一点是什么意思,骗人?
回复

使用道具 举报

ID:511752 发表于 2019-4-14 17:07 | 显示全部楼层
感谢分享
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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