矩阵键盘的改进(第一个专利)
目前已经申请专利成功了,就拿出来分享分享。
本发明公开了一种占用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
矩阵键盘的改进(第一个专利)相关推荐
- keyboard Matrix矩阵键盘
文章目录 一.功能实现(代码) 1.1 添加编译选项 1.2 添加设备树节点 1.2.1 添加kpp节点 1.2.2 在iomuxc中添加pinctrl_复用节点 1.2.3 屏蔽其他设备节点占用的键 ...
- 【Proteus】单片机配合矩阵键盘LCD1602制作简易计算器
前言 想出一个关于Protues仿真的系列,回想起在大学时做课程设计,大多数是用这个来做,这个系列就围绕一些常用的外设或者说课程设计题目来进行对以前知识的回顾,温故而知新,同时也希望能对新手读者的学习 ...
- c51单片机矩阵键盘1602计算器_【Proteus】单片机配合矩阵键盘LCD1602制作简易计算器...
前言 想出一个关于Protues仿真的系列,回想起在大学时做课程设计,大多数是用这个来做,这个系列就围绕一些常用的外设或者说课程设计题目来进行对以前知识的回顾,温故而知新,同时也希望能对新手读者的学习 ...
- 【51单片机】矩阵键盘逐行扫描法仿真实验+超详细Proteus仿真和Keil操作步骤
[51单片机]矩阵键盘逐行扫描法仿真实验+超详细Proteus仿真和Keil操作步骤 一.环境 二.硬件部分 1. Proteus新建工程 2. 添加元件 3.连接线路 4.硬件效果 三.软件部分 1 ...
- 利用c51进行数模转换并在液晶屏上显示_基于C51单片机的智能计算器、矩阵键盘、lcd1602...
目录 1绪论.............................................................................................. ...
- 51单片机之矩阵键盘多按键检测和松手检测
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 文章目录 前言 一.矩阵键盘是什么? 二.多按键检测 1.基本思想 三.松手检测 四.你如何拿去使用? 其他的随便,但是这玩 ...
- vba循环通过键盘某个按键按下退出循环_51单片机按键检测--独立按键与矩阵键盘...
按键可以说是51单片机项目开发的一个重要组件了,它是作为51单片机IO口输入的一种重要方式.我们可以通过按键控制单片机执行相应的程序,得到我们想要得效果.51单片机的按键输入主要有两种,一种是独立按键 ...
- c51单片机矩阵键盘1602计算器_基于51单片机矩阵键盘的简易计算器制作
1. 运算过程.符号公式实时显示在显示屏上(I2C 1602). 2. 自带三角函数.开根号.平方运算. 3. 计算得出的结果可设置保存并用以下一次计算. 4. 所有运算结果精确到至少小数点后两位. ...
- 51单片机独立键盘和矩阵键盘
独立键盘代码: #include<reg52.h> #include<intrins.h>#define uint unsigned int #define uchar uns ...
最新文章
- NXT节点搭建(三)安装Nxt客户端
- web developer tips (8):创建web用户控件并包含在web页面里
- 为网站文字前面添加图标 在线调用 Font Awesome 字体icon小图标 美化网站
- webservice获取天气预报异常
- 【算法】输入一个链表,反转链表后,输出新链表的表头。
- kotlin和java语言_Kotlin VS Java – 2020年您应该学习哪种编程语言?
- 2020 CSDN 博客之星投票已开启,请大家为我投票,多谢啦
- 【论文阅读】JDA(joint distribution adaptation)/2013初稿
- Machine Learning - Coursera week5 Backpropagation in Practice
- (centos6.5)MySQL服务安装
- 免费的开放源代码的Web应用服务器:Tomcat
- H5安卓下载以及IOS跳转AppStore下载App
- Jmeter+badboy
- html广告加图片,网站广告图片右下角加上“广告”水印标识代码
- 苹果开发者 - 添加App
- 傅里叶变换中采样频率(fs)的解读
- 语音降噪/语音增强的几种算法
- 软件测试中的白盒测试分析
- 横向打印二叉树 java_按树状横向打印二叉树
- 关于git中,两个branch自动同步的问题和解决