找回密码
 立即注册

QQ登录

只需一步,快速开始

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

怎么把单片机4x4的矩阵按键改成一个按键?

[复制链接]
跳转到指定楼层
楼主
ID:975613 发表于 2021-10-28 19:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include<reg51.h>
  2. #define ui unsigned char
  3. ui chuzhi[]={0xfe,0xfd,0xfb,0xf7};       //逐行扫描  
  4. ui jianhou[]={0x77,0x7b,0x7d,0x7e,
  5.                           0xb7,0xbb,0xbd,0xbe,
  6.                           0xd7,0xdb,0xdd,0xde,
  7.                           0xe7,0xeb,0xed,0xee};        //4x4矩阵键盘
  8. ui zifu[]={0x3f,0x06,0x5b,0x4f,0x66,
  9.                         0x6d,0x7d,0x07,0x7f,0x6f};           //共阴极数码管显示0~9
  10.         void delay(ui a)
  11. {
  12.         ui i,j;
  13.         for(i=a;i<0;i--)
  14.         for(j=110;j>0;j--);      
  15. }//延时a毫秒
  16. void display(ui k)
  17. {      
  18.         P2=0x04;                        //选中第二个数码管
  19.         P0=zifu[k/10];                //显示十位
  20.         delay(20);
  21.         P0=0X00;                        //显示清零
  22.         P2=0x00;                        //选中第一个数码管
  23.         P0=zifu[k%10];                //显示个位
  24.         delay(20);
  25.         P0=0X00;                        //显示清零
  26. }
  27. void main(void)
  28. {
  29.         ui i=0,j,k;
  30.         while(1)
  31.         {
  32.         P1=chuzhi[i];
  33.         if(P1!=chuzhi[i])
  34.         {
  35.                 for(j=0;j<16;j++)
  36.                 {
  37.                         if(P1==jianhou[j])
  38.                         k=j;
  39.                 }display(k);
  40.         }i++;
  41.         if(i==4)i=0;
  42.         }
  43. }
复制代码


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

使用道具 举报

沙发
ID:908826 发表于 2021-10-28 20:56 | 只看该作者
没看明白楼主的问题,一个按键是什么意思?
回复

使用道具 举报

板凳
ID:739610 发表于 2021-10-28 21:18 | 只看该作者
难不成用一个按键  按一下代表1#键  两下代表2#键........16下就是16#键
回复

使用道具 举报

地板
ID:624769 发表于 2021-10-28 22:46 | 只看该作者
不知道搂主什么意思,瞎猜吧:

假定你要只用 0xee 这个按键,那么你把 P1.4接地,或者P1.4 置0, 那么你只要 判断 P1.0 是否 为 0 , 就知道0xee 这个按键是否按下了, 不知道搂主是这个意思么。
回复

使用道具 举报

5#
ID:213173 发表于 2021-10-29 08:49 | 只看该作者
楼主是想用单键完成矩阵键盘功能?
回复

使用道具 举报

6#
ID:332444 发表于 2021-10-29 15:38 | 只看该作者
回复

使用道具 举报

7#
ID:332444 发表于 2021-10-29 16:02 | 只看该作者
改现成电路板不现实,但是可以看成是独立按键使用和编程。
回复

使用道具 举报

8#
ID:236035 发表于 2021-10-29 16:22 | 只看该作者
难道是用一个IO口吗?用AD测量电压。
楼主快出来,保证不打你。净让人瞎猜。
回复

使用道具 举报

9#
ID:230742 发表于 2021-10-29 17:38 | 只看该作者
我猜一下,可能是点按改变数码管各位,按长按跳到数码管十位,在点按改变数字,在长按跳到数码管百位,在点按。。。 。。。
我认为用4个按键科学一点,一个加,一个减,一个确认,一个返回。加和减的键按住可以自动加减的。
变频器一般就是这样的。
4个按键用AD做好了,也是一个IO口。
回复

使用道具 举报

10#
ID:57657 发表于 2021-11-6 11:27 | 只看该作者
wulin 发表于 2021-10-29 08:49
楼主是想用单键完成矩阵键盘功能?

可以实现,短按加1,长按连加,松开3秒确认。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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