




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.单片机按键连接方法总结(五种按键扩展方案详细介绍)单片机在各种领域运用相当广泛,而作为人机交流的按键设计也有很多种。不同的设计方法,有着不同的优缺点。而又由于单片机I/O资源有限,如何用最少的I/O口扩展更多的按键是我所研究的问题。接下来我给大家展示几种自己觉得比较好的按键扩展方案,大家可以在以后的单片机电路设计中灵活运用。1)、第一种是最为常见的,也就是一个I/O口对应一个按钮开关。这种方案是一对一的,一个I/O口对应一个按键。这里P00到P04,都外接了一个上拉电阻,在没有开关按下的时候,是高电平,一旦有按键按下,就被拉成低电平。这种方案优点是电路简单可靠,程序设计也很简单。缺点是占用I
2、/O资源多。如果单片机资源够多,不紧缺,推荐使用这种方案。2)、第二种方案也比较常见,但是比第一种的资源利用率要高,硬件电路也不复杂。这是一种矩阵式键盘,用8个I/O控制了16个按钮开关,优点显而易见。当然这种电路的程序设计相对也还是很简单的。由P00到P03循环输出低电平,然后检测P04到P07的状态。比方说这里P00到P03口输出1000,然后检测P04到P07,如果P04为1则说明按下的键为s1,如果P05为1则说明按下的是s2等等。为了电路的可靠,也可以和第一种方案一样加上上拉电阻。3)、第三种是我自己搞的一种方案,可以使用4个I/O控制8个按键,电路多了一些二极管,稍微复杂了一点。这
3、个电路的原理很简单,就是利用二极管的单向导电性。也是和上面的方案一样,程序需要采用轮训的方法。比方说,先置P00到P03都为低电平,然后把P00置为高电平,接着查询P02和P03的状态,如果P02为高则说明按下的是s5,若P03为高则说明按下的是s6,然后再让P00为低,P01为高,同样检测P02和P03的状态。接下来分别让P02和P03为高,其他为低,分别检测P00和P01的状态,然后再做判断。这种方案的程序其实也不难。4)这是我在一本书上看到的,感觉设计的非常巧妙,同样它也用到了二极管,不过比我的上一种方案的I/O利用率更高,他用4个I/O口控制了12个按键。我相信你了解了之后也会惊奇的。
4、首先好好品味一下这个方案吧,想想怎么来识别按键呢!首先,我们让P00到P03全输出高电平。如果这个时候从P00到P03的任意一个端口检测到低电平,很容易知道是按下了那个键,肯定是s13到s16的其中一个。如果没有检测到信号,就进行下一次的检测,让P01到P03为高电平,P00为低电平,然后检测P01到P03的状态。如果P01为低,则按下的是s1,;P02为低,则按下的是s2;P03为低,则按下的是s3。然后再让P00,P02,P03为高电平,P01为低电平。同理用上面的方法可以检测出按下的那个按键。(部分程序源代码会在后面贴出来,阅读代码可以更好理解电路)5)、接下来这种方案则更为强大。不过需
5、要用到一个A/D转换器(有的单片机集成有A/D转换器,则更为方便)。如果A/D转化器的分辨率为n位,理论上是可以扩展2n(2的n次方)个按键。这是一种接AD转化器的方案,有两种:第一种是并联式;第二种是串联式。在功能上也有些不同。第一种的话各个电阻值各不相同,当按下不同按键时,进入AD的模拟量是不一样的,通过AD转换,就可以得到按下的是哪个按键。方式一还可以同时识别多个按键,即可以设置组合键,只要电阻取得合适。方式二各个电阻可以取一样的,方便计算,但是不能有组合按键。因为当按下上面的按键后,下面所有按键都会被短路。(在实际运用中,还需要接地,这里没有画出)。前面说理论上可以扩展2n个按键,这只
6、是理论,因为这里电阻的精度有限,所以实际是不可能的,两个模拟量之间要有足够大的差值,程序才可能准确的分辨。上面就是我介绍的五种按键扩展方案,后面几种比较另类,不过也有他们的优点。以上电路我都仿真过,可以实现。附方案4键盘扫描源代码:sbit line_1=P0.1;sbit line_2=P0.2;sbit line_3=P0.3;sbit line_4=P0.4char key=0;void key_scan()line_1=line_2=line_3=line_4=1;if(line_1&line_2&line_3&line_4)if(line_1=0) key=13;return;if(
7、line_2=0) key=14; return;if(line_3=0) key=15;return;if(line_4=0) key=16; return;line_2=line_3=line_4=1;line_1=0;if(line_2&line_3&line_4)delay();if(line_2=0) key=1;return;if(line_3=0) key=2;return;if(line_4=0) key=3;return;line_1=line_3=line_4=1;line_2=0;if(line_1&line_3&line_4)delay();if(line_3=0) k
8、ey=5;return;if(line_4=0) key=6;return;line_1=line_2=line_4=1;line_3=0;if(line_2&line_1&line_4)delay();if(line_4=0) key=9;return;line_4=0;line_1=line_2=line_3=1;if(line_2&line_3&line_1)delay();if(line_1=0) key=10;return;if(line_2=0) key=11;return;if(line_3=0) key=12;return;line_3=0;line_1=line_2=line_4=1;if(line_2&line_3&line_4)delay();if(line_1=0) key=7;ret
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 市场代理销售合同协议要求
- A特种设备相关管理(A7大型游乐设施)复审考试题(附答案)
- 贝莱斯芽孢杆菌TCS001产芽孢发酵条件优化及其悬浮剂研究应用
- 非线性渗流作用下海底隧道氯化侵蚀规律研究
- 兰州市主城区社区生活圈资源可获性评价研究
- 餐饮服务员劳动合同范本(含合同解除赔偿)
- 博物馆展览馆展览内容策划与施工合同
- 茶艺文化旅游区合作开发合同
- 邴琰婚姻解除与财产分配子女监护权确定合同
- 采购质量管理培训与提升合同
- 防范和打击非法金融活动竞赛试题库500题(含答案)
- 广东省广州市越秀区2024-2025学年七年级下学期期末考试语文试题
- DG-TG08-12-2024 普通中小学建设标准
- 《电力建设工程施工安全管理导则》(NB∕T 10096-2018)
- 篮球--传切配合(纵切)课件.ppt
- 儿童学习困难课件
- 绘就“行走的思政课”
- 护生入科宣教
- 物理降温操作流程及评分标准
- 建设工程项目内部经济责任承包合同格式
- 工具钳工技能操作鉴定要素细目表09版
评论
0/150
提交评论