单片机教程网

电脑版
提示:原网页已由神马搜索转码, 内容由www.51hei.com提供.
查看:3419|回复:2
打印上一主题下一主题

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

[复制链接]
跳转到指定楼层
楼主
ID:192976发表于 2017-4-24 11:15|只看该作者|只看大图回帖奖励
这是我做的矩阵键盘电路图及程序代码
用PROTUES画的图
仿真有效哦
还请大家多多指教




单片机源程序:
  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 单片机教程网