找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机矩阵按键检测数码管显示示例(Proteus仿真电路,C语言程序代码)

[复制链接]
跳转到指定楼层
楼主
矩阵按键检测示例(Proteus仿真电路,C语言程序代码)
4X4矩阵按键
按键检测按键分别从0~F
数码管显示
下面是Proteus仿真电路


(注:没画最小系统)
上图为E按键按下后

下面为C语言程序
#include<reg51.h>
char  seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};
//共阳极断码表
unsigned num=16;

void delay(unsigned int n)
{
  unsigned i=0,j=0;
   for(i=0;i<n;i++)
   {
       for(j=0;j<120;j++);
   }
}

void key_scan()
{
unsigned char temp=0,temp0=0,temp1=0;
P1=0xf0;
  if(P1!=0xf0)
  {
     delay(20);
     temp0=P1;
     P1=0x0f;
     if(P1!=0x0f)
     {
         temp1=P1;
     }
  }
  temp=temp0+temp1;
  if(temp==0xee)
     num=0;
  if(temp==0xed)
     num=1;
  if(temp==0xeb)
     num=2;
  if(temp==0xe7)
     num=3;
  if(temp==0xde)
     num=4;
  if(temp==0xdd)
     num=5;
  if(temp==0xdb)
     num=6;
  if(temp==0xd7)
     num=7;
  if(temp==0xbe)
     num=8;
  if(temp==0xbd)
     num=9;
  if(temp==0xbb)
     num=10;
  if(temp==0xb7)
     num=11;
  if(temp==0x7e)
     num=12;
  if(temp==0x7d)
     num=13;
  if(temp==0x7b)
     num=14;
  if(temp==0x77)
     num=15;
}

void dis_play()
{
  P2=seg[num];
}

void main()
{
  while(1)
  {
     key_scan();
     dis_play();
   }
}



下面有仿真电路和程序
矩阵按键.zip (27.05 KB, 下载次数: 42)

评分

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

查看全部评分

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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