目前已经申请专利成功了,就拿出来分享分享。

本发明公开了一种占用4条IO接口的键盘电路,包括成4×5矩阵排列的电路单元,分别设置在4×5矩阵行和列的IO接口引线、导线,设置在

4×5矩阵右侧的接地线;设置在第一列第一行、第二列第二行、第三列第三行、第四列第四行的电路单元为二极管,设置在4×5矩阵其余位置的电路单元为按键触点;4个二极管的正极与负极分别对应相应的列的导线和相应行的IO接口引线;设置在第一列、第二列、第三列、第四列的按键触点的一个引脚电连接相应列的导线,另一个引脚电连接相应行的IO接口引线,设置在第五列的按键触点的一个引脚电连接相应行的IO接口引线,另一个引脚电连接接地线。本发明使用4条IO接口引线实现 8 条接口引线完成的功能。

老式矩阵键盘电路如下:

上数字电路课程的时候,老师讲到RAM的存储阵列的时候,突然想到的,开始至做了如下改进:

这个改进我相信朋友们都能够看懂吧,这个和RAM的存储阵列差不多,

下面是测试电路的代码,电路我是用protues画的,在文章后面我会上传上来。

main.c

  #include<reg51.h>sbit  KEY0=P0^0;sbit  KEY1=P0^1;    sbit  KEY2=P0^2;sbit  KEY3=P0^3;sbit  LED0=P1^0;sbit  LED1=P1^1;sbit  LED2=P1^2;sbit  LED3=P1^3;sbit  LED4=P1^4;sbit  LED5=P1^5;sbit  LED6=P1^6;sbit  LED7=P1^7; sbit  LED8=P3^0;sbit  LED9=P3^1;sbit  LED10=P3^2;sbit  LED11=P3^3;sbit  LED12=P3^4;sbit  LED13=P3^5;sbit  LED14=P3^6;sbit  LED15=P3^7;void   Key_Scan(); unsigned char key=0;void main(){LED0=1; LED1=1;LED2=1;LED3=1;LED4=1;LED5=1;LED6=1;LED7=1;LED8=1; LED9=1;LED10=1;LED11=1;LED12=1;LED13=1;LED14=1;LED15=1;while(1){Key_Scan();switch(key){case 1:LED0=~LED0;key=0;break;case 2:LED1=~LED1;key=0;break;case 3:LED2=~LED2;key=0;break;case 4:LED3=~LED3;key=0;break;case 5:LED4=~LED4;key=0;break;case 6:LED5=~LED5;key=0;break;case 7:LED6=~LED6;key=0;break;case 8:LED7=~LED7;key=0;break;case 9:LED8=~LED8;key=0;break;case 10:LED9=~LED9;key=0;break;case 11:LED10=~LED10;key=0;break;case 12:LED11=~LED11;key=0;break;case 13:LED12=~LED12;key=0;break;case 14:LED13=~LED13;key=0;break;case 15:LED14=~LED14;key=0;break;case 16:LED15=~LED15;key=0;break;default:break;}}}void  Key_Scan()   //按键扫描{    unsigned int i;if(((KEY0)&&(KEY1)&&(KEY2)&&(KEY3))!=1) //检测 1\2\3\4{for(i=200;i>0;i--);if(((KEY0)&&(KEY1)&&(KEY2)&&(KEY3))!=1){if(KEY0==0)  key=1;if(KEY1==0)  key=2;if(KEY2==0)  key=3;if(KEY3==0)  key=4;while(((KEY0)&&(KEY1)&&(KEY2)&&(KEY3))!=1);for(i=200;i>0;i--); }}if(((KEY0)&&(KEY1)&&(KEY2)&&(KEY3))==1)   //检测 5\6\7{for(i=2000;i>0;i--);if(((KEY0)&&(KEY1)&&(KEY2)&&(KEY3))==1){KEY0=0;                             //第一个IO赋值为0if(((KEY1)&&(KEY2)&&(KEY3))!=1){for(i=20;i>0;i--); if(((KEY1)&&(KEY2)&&(KEY3))!=1){if(KEY1==0) key=5;if(KEY2==0) key=6;if(KEY3==0) key=7;while(((KEY1)&&(KEY2)&&(KEY3))!=1);for(i=200;i>0;i--); }}KEY0=1;}}if(((KEY0)&&(KEY1)&&(KEY2)&&(KEY3))==1)  //检测 8\9\10{for(i=2000;i>0;i--);if(((KEY0)&&(KEY1)&&(KEY2)&&(KEY3))==1){KEY1=0;              //第二个IO赋值为0if(((KEY0)&&(KEY2)&&(KEY3))!=1){for(i=20;i>0;i--);if(((KEY0)&&(KEY2)&&(KEY3))!=1){if(KEY0==0)     key=8;if(KEY2==0)     key=9;if(KEY3==0)     key=10;while(((KEY0)&&(KEY2)&&(KEY3))!=1);for(i=200;i>0;i--); }}KEY1=1;   }}  if(((KEY0)&&(KEY1)&&(KEY2)&&(KEY3))==1)       //检测 11\12 \13{for(i=2000;i>0;i--);if(((KEY0)&&(KEY1)&&(KEY2)&&(KEY3))==1){KEY2=0;  //第三个IO赋值为0if(((KEY0)&&(KEY1)&&(KEY3))!=1){for(i=20;i>0;i--);if(((KEY0)&&(KEY1)&&(KEY3))!=1){if(KEY0==0)     key=11;if(KEY1==0)     key=12;if(KEY3==0)     key=13;while(((KEY0)&&(KEY1)&&(KEY3))!=1);for(i=200;i>0;i--);}}KEY2=1;}}if(((KEY0)&&(KEY1)&&(KEY2)&&(KEY3))==1)       //检测 14\15\16{for(i=2000;i>0;i--);if(((KEY0)&&(KEY1)&&(KEY2)&&(KEY3))==1){KEY3=0;  //第四个IO赋值为0if(((KEY0)&&(KEY1)&&(KEY2))!=1){for(i=20;i>0;i--);if(((KEY0)&&(KEY1)&&(KEY2))!=1){if(KEY0==0)      key=14;if(KEY1==0)      key=15;if(KEY2==0)      key=16;while(((KEY0)&&(KEY1)&&(KEY2))!=1);for(i=200;i>0;i--); }}KEY3=1;}}}   

protues电路下载地址:http://download.csdn.net/detail/qq_21792169/9526981

矩阵键盘的改进(第一个专利)相关推荐

  1. keyboard Matrix矩阵键盘

    文章目录 一.功能实现(代码) 1.1 添加编译选项 1.2 添加设备树节点 1.2.1 添加kpp节点 1.2.2 在iomuxc中添加pinctrl_复用节点 1.2.3 屏蔽其他设备节点占用的键 ...

  2. 【Proteus】单片机配合矩阵键盘LCD1602制作简易计算器

    前言 想出一个关于Protues仿真的系列,回想起在大学时做课程设计,大多数是用这个来做,这个系列就围绕一些常用的外设或者说课程设计题目来进行对以前知识的回顾,温故而知新,同时也希望能对新手读者的学习 ...

  3. c51单片机矩阵键盘1602计算器_【Proteus】单片机配合矩阵键盘LCD1602制作简易计算器...

    前言 想出一个关于Protues仿真的系列,回想起在大学时做课程设计,大多数是用这个来做,这个系列就围绕一些常用的外设或者说课程设计题目来进行对以前知识的回顾,温故而知新,同时也希望能对新手读者的学习 ...

  4. 【51单片机】矩阵键盘逐行扫描法仿真实验+超详细Proteus仿真和Keil操作步骤

    [51单片机]矩阵键盘逐行扫描法仿真实验+超详细Proteus仿真和Keil操作步骤 一.环境 二.硬件部分 1. Proteus新建工程 2. 添加元件 3.连接线路 4.硬件效果 三.软件部分 1 ...

  5. 利用c51进行数模转换并在液晶屏上显示_基于C51单片机的智能计算器、矩阵键盘、lcd1602...

    目录 1绪论.............................................................................................. ...

  6. 51单片机之矩阵键盘多按键检测和松手检测

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 文章目录 前言 一.矩阵键盘是什么? 二.多按键检测 1.基本思想 三.松手检测 四.你如何拿去使用? 其他的随便,但是这玩 ...

  7. vba循环通过键盘某个按键按下退出循环_51单片机按键检测--独立按键与矩阵键盘...

    按键可以说是51单片机项目开发的一个重要组件了,它是作为51单片机IO口输入的一种重要方式.我们可以通过按键控制单片机执行相应的程序,得到我们想要得效果.51单片机的按键输入主要有两种,一种是独立按键 ...

  8. c51单片机矩阵键盘1602计算器_基于51单片机矩阵键盘的简易计算器制作

    1. 运算过程.符号公式实时显示在显示屏上(I2C 1602). 2. 自带三角函数.开根号.平方运算. 3. 计算得出的结果可设置保存并用以下一次计算. 4. 所有运算结果精确到至少小数点后两位. ...

  9. 51单片机独立键盘和矩阵键盘

    独立键盘代码: #include<reg52.h> #include<intrins.h>#define uint unsigned int #define uchar uns ...

最新文章

  1. NXT节点搭建(三)安装Nxt客户端
  2. web developer tips (8):创建web用户控件并包含在web页面里
  3. 为网站文字前面添加图标 在线调用 Font Awesome 字体icon小图标 美化网站
  4. webservice获取天气预报异常
  5. 【算法】输入一个链表,反转链表后,输出新链表的表头。
  6. kotlin和java语言_Kotlin VS Java – 2020年您应该学习哪种编程语言?
  7. 2020 CSDN 博客之星投票已开启,请大家为我投票,多谢啦
  8. 【论文阅读】JDA(joint distribution adaptation)/2013初稿
  9. Machine Learning - Coursera week5 Backpropagation in Practice
  10. (centos6.5)MySQL服务安装
  11. 免费的开放源代码的Web应用服务器:Tomcat
  12. H5安卓下载以及IOS跳转AppStore下载App
  13. Jmeter+badboy
  14. html广告加图片,网站广告图片右下角加上“广告”水印标识代码
  15. 苹果开发者 - 添加App
  16. 傅里叶变换中采样频率(fs)的解读
  17. 语音降噪/语音增强的几种算法
  18. 软件测试中的白盒测试分析
  19. 横向打印二叉树 java_按树状横向打印二叉树
  20. 关于git中,两个branch自动同步的问题和解决

热门文章

  1. css中大于符号是什么意思
  2. 23岁男孩创业卖药枕,成功实现自己创业梦
  3. Build finished with errors/Executable Not Found
  4. vs2015切换工作环境与括号风格
  5. Nginx安装Lua
  6. AndroidBug5497Workaround 修改
  7. 华为为什么不上市?八个问题读懂华为
  8. 【Vaadin教程】利用IDEA开发基于Vaadin网络聊天室程序
  9. easyexcel 设置标题_easyexcel设置单元格格式为文本
  10. 利用机器学习进行人脸颜值评分