码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 矩阵键盘独立接口设计(Keil+Proteus)


    前言

    实验:通过4*4的矩阵键盘,按下某个按钮之后会在数码管上面显示对应的键号。(0~F)

    基础操作参考这篇博客:

    LED数码管的静态显示与动态显示(Keil+Proteus)-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/weixin_64066303/article/details/134101256

    Keil

    实验采用的是共阳极的接法。所以这个二进制的数据里面的元素都是共阳极的。

    通过逐行的扫描,假设当前扫描第一行,对应的P1^0~P1^3中有0则说明是该行有键被按下,结合if判断可以确定是哪一列。

    1. #include
    2. #define uchar unsigned char
    3. #define uint unsigned int
    4. sbit L1=P1^0;//定义列
    5. sbit L2=P1^1;
    6. sbit L3=P1^2;
    7. sbit L4=P1^3;
    8. //共阳极字符0~F的段码
    9. uchar dis[16]={0xC0,0XF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
    10. uint time;
    11. //延时,放键盘抖动
    12. void delay(uint time);
    13. void main(void){
    14. uchar temp;
    15. uchar i;
    16. while(1){
    17. P1=0xEF;//行扫描初值1110 1111(扫描P1^4)
    18. for(i=0;i<4;i++){//逐行为低,按行扫描,一共4行
    19. if(L1==0)P0=dis[i*4+0];//判断第一列有无键被按下
    20. if(L2==0)P0=dis[i*4+1];//判断第二列有无键被按下
    21. if(L3==0)P0=dis[i*4+2];//判断第三列有无键被按下
    22. if(L4==0)P0=dis[i*4+3];//判断第四列有无键被按下
    23. delay(500);//延时
    24. temp=P1;//读入P1口的状态
    25. temp=temp|0x0F;//将P1^3~P1^0为1
    26. temp=temp<<1;//左移,准备扫描下一行
    27. temp=temp|0x0F;
    28. P1=temp;//为扫描下一行做准备
    29. }
    30. }
    31. }
    32. //软件消除抖动,延时
    33. void delay(uint time){
    34. uint i;
    35. for(i=0;i
    36. }

    Proteus

    相信大家已经轻车熟路了,就直接放原理图了。

    所需要的器件

    元件名称Proteus关键字
    51单片机AT89C51
    复位按钮BUTTON
    电阻RES
    共阳极八位数码管7SEG-MPX1-CA
    电源POWER

     

    矩阵键盘

    总结

    继续加油!!!

  • 相关阅读:
    Springboot配置WebMvcConfig解决Cors非同源访问跨域问题
    期货公司开户实力经纪业务的规模
    9.30 校招 实习 内推 面经
    plink如何更新表型数据
    PyTorch - autograd自动微分
    2022ICPC 网络赛第二场 B Non-decreasing Array(区间dp)
    Debezium的基本使用(以MySQL为例)
    java计算机毕业设计舞蹈网站源代码+数据库+系统+lw文档
    Xubuntu16.04系统中解决无法识别exFAT格式的U盘
    计算机毕业设计(40)java毕设作品之在线购物网站销售系统
  • 原文地址:https://blog.csdn.net/weixin_64066303/article/details/134275251
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号