普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 2317|回复: 2

矩阵按键

 关闭 [复制链接]

2

主题

3

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2019-7-21 23:29:25 | 显示全部楼层 |阅读模式
#include"reg51.h"
typedef unsigned int u16;
typedef unsigned char u8;
void delay(u16 i)
{
   while (i--);
}
sbit la=P2^0;
sbit lb=P2^1;
sbit lc=P2^2;
u8 smg[8]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07};
int main ()
{
P1=0x00;
  while (1)
  {
  int point;
  P0=0x0f;
  if (P0!=0x0f){
  delay (1000);
  if (P0!=0x0f)
  {
   switch(P0)
   {
     case (0x0e):point=0;break;
  case (0x0d):point=4;break;
     }
  P0=0xf0;
   switch(P0)
   {
   case (0xe0):point=point;break;
   case (0xd0):point=point+1;break;
   case (0xb0):point=point+2;break;
   case (0x70):point=point+3;break;
   }
   switch(point)
   {
   case 0:la=0,lb=0,lc=0;    P1=smg[point];break;
   case 1:la=1,lb=0,lc=0;    P1=smg[point];break;
   case 2:la=0,lb=1,lc=0;    P1=smg[point];break;
   case 3:la=1,lb=1,lc=0;    P1=smg[point];break;
   case 4:la=0,lb=0,lc=1;    P1=smg[point];break;
   case 5:la=1,lb=0,lc=1;    P1=smg[point];break;
   case 6:la=0,lb=1,lc=1;    P1=smg[point];break;
   case 7:la=1,lb=1,lc=1;    P1=smg[point];break;
   }
    }
while (P0!=0xf0){}
   }
  }
  return 0;
}      各位大哥帮我看下这个代码有没有问题,我这个是矩阵按键和动态数码管结合起来,按第一个就第一个亮0,按第二个就第二个亮一,依次类推,但有时候按到某一个再不管按其他的哪个都不会变化了,有时候又不会,我不知道是不是代码的问题。
回复

使用道具 举报

4

主题

156

帖子

516

积分

高级会员

Rank: 4

积分
516
发表于 2019-7-22 14:19:37 | 显示全部楼层
   例程里面就有一个矩阵按键控制动态数码管的, 你可以看一下
回复 支持 反对

使用道具 举报

2

主题

3

帖子

19

积分

新手上路

Rank: 1

积分
19
 楼主| 发表于 2019-7-26 11:08:32 | 显示全部楼层
YXUN 发表于 2019-7-22 14:19
例程里面就有一个矩阵按键控制动态数码管的, 你可以看一下

好的  谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-5-14 20:54 , Processed in 0.086829 second(s), 30 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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