找回密码
 立即注册

QQ登录

只需一步,快速开始

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

求4*3矩阵键盘输入多位数码管显示,51单片机

[复制链接]
跳转到指定楼层
楼主
ID:146408 发表于 2016-12-6 23:14 来自触屏版 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
如依次键入1234,数码管既显示1234
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2016-12-7 03:32 | 只看该作者
看下面这个4*3矩阵键盘的程序:

回复

使用道具 举报

板凳
ID:1 发表于 2016-12-7 03:36 | 只看该作者
另外还有一个3*4矩阵键盘,稍微修改一下即可:

  1. #include "reg51.h"

  2. #define uint8 unsigned char

  3. #define uint16 unsigned int

  4. uint8 code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39}; //0~9,AbC

  5. void delay(uint16 x)

  6. {

  7. uint8 i;

  8. for(x;x>0;x--)

  9. for(i=110;i>0;i--);

  10. }

  11. uint8 scanf()

  12. {

  13. uint8 temp,key=0;

  14. P1=0x07; //行扫描

  15. temp=P1&0x07;

  16. delay(5);

  17. if(temp != 0x07)

  18. {

  19. if(temp==1) key=0;

  20. if(temp==2) key=4;

  21. if(temp==4) key=8;

  22. }

  23. P1=0xf8; //列扫描

  24. temp=P1&0xf8;

  25. delay(5);

  26. if(temp != 0xf8)

  27. {

  28. if(temp==0xf0) key=key+1;

  29. if(temp==0xe8) key=key+2;

  30. if(temp==0xd8) key=key+3;

  31. if(temp==0xb8) key=key+4;

  32. }

  33. while(P1!=0xf8); //松手检测

  34. return key;

  35. }

  36. void main()

  37. {

  38. uint8 key;

  39. while(1)

  40. {

  41. key=scanf();

  42. P2=tab[key]; //当显示0表示没按下按键,显示其他则表示按下相应按键了

  43. }

  44. }
复制代码
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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