3x3矩阵按键显示,c,一个7段数码管

根据课本上的4x4矩阵按键改得。

按左边按键可显示对应的1~9这几个数。 

代码:

#include <reg51.h>
#define uchar unsigned char
sbit L1=P1^1;     //定义3根列线
sbit L2=P1^2;
sbit L3=P1^3;

uchar dis[16]={0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳极数码管    1~9
unsigned int time;
delay(time)            //延时
{
   unsigned int j;
   for(j=0;j<time;j++)
   {}
}
main()            //主
{
   uchar temp;
   uchar i;
   while(1)
   {
      P1=0Xef;      //行扫描初值,P1.4=0,P1.5~P1.7=1
      for(i=0;i<=2;i++)    //按行扫描,共3行
      {
         if(L1==0)     P0=dis[i*3+0]; //第1列有无被按下,若有,建号可能为1,4,7,送显示;
         if(L2==0)     P0=dis[i*3+1];     //第2列有无被按下,若有,建号可能为2,5,8,送显示;
         if(L3==0)     P0=dis[i*3+2]; //第3列有无被按下,若有,建号可能为3,6,9,送显示;
         
         delay(500);      //延时
         temp=P1;           //读入P1口状态
         temp=temp|0x0f;  //使p1.3~P1.1为输入
         temp=temp<<1;      //使p1.6~P1.4左移1位,准备下一行扫描
         temp=temp|0x0f; //移位后,让 p1.3~P1.1=1,保证其任为输入
         P1=temp;          //行扫描值送P1口,为下一行扫描做准备
      }
   }
}

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值