单片机按键连接方法Word文档格式.docx

上传人:b****4 文档编号:7755191 上传时间:2023-05-09 格式:DOCX 页数:7 大小:239.92KB
下载 相关 举报
单片机按键连接方法Word文档格式.docx_第1页
第1页 / 共7页
单片机按键连接方法Word文档格式.docx_第2页
第2页 / 共7页
单片机按键连接方法Word文档格式.docx_第3页
第3页 / 共7页
单片机按键连接方法Word文档格式.docx_第4页
第4页 / 共7页
单片机按键连接方法Word文档格式.docx_第5页
第5页 / 共7页
单片机按键连接方法Word文档格式.docx_第6页
第6页 / 共7页
单片机按键连接方法Word文档格式.docx_第7页
第7页 / 共7页
亲,该文档总共7页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单片机按键连接方法Word文档格式.docx

《单片机按键连接方法Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机按键连接方法Word文档格式.docx(7页珍藏版)》请在冰点文库上搜索。

单片机按键连接方法Word文档格式.docx

这种方案优点是电路简单可靠,程序设计也很简单。

缺点是占用I/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个按键,电路多了一些二极管,稍微复杂了一点。

这个电路的原理很简单,就是利用二极管的单向导电性。

也是和上面的方案一样,程序需要采用轮训的方法。

比方说,先置P00到P03都为低电平,然后把P00置为高电平,接着查询P02和P03的状态,如果P02为高则说明按下的是s5,若P03为高则说明按下的是s6,然后再让P00为低,P01为高,同样检测P02和P03的状态。

接下来分别让P02和P03为高,其他为低,分别检测P00和P01的状态,然后再做判断。

这种方案的程序其实也不难。

4)这是我在一本书上看到的,感觉设计的非常巧妙,同样它也用到了二极管,不过比我的上一种方案的I/O利用率更高,他用4个I/O口控制了12个按键。

我相信你了解了之后也会惊奇的。

首先好好品味一下这个方案吧,想想怎么来识别按键呢!

首先,我们让P00到P03全输出高电平。

如果这个时候从P00到P03的任意一个端口检测到低电平,很容易知道是按下了那个键,肯定是s13到s16的其中一个。

如果没有检测到信号,就进行下一次的检测,让P01到P03为高电平,P00为低电平,然后检测P01到P03的状态。

如果P01为低,则按下的是s1,;

P02为低,则按下的是s2;

P03为低,则按下的是s3。

然后再让P00,P02,P03为高电平,P01为低电平。

同理用上面的方法可以检测出按下的那个按键。

(部分程序源代码会在后面贴出来,阅读代码可以更好理解电路)

5)、接下来这种方案则更为强大。

不过需要用到一个A/D转换器(有的单片机集成有A/D转换器,则更为方便)。

如果A/D转化器的分辨率为n位,理论上是可以扩展2^n(2的n次方)个按键。

这是一种接AD转化器的方案,有两种:

第一种是并联式;

第二种是串联式。

在功能上也有些不同。

第一种的话各个电阻值各不相同,当按下不同按键时,进入AD的模拟量是不一样的,通过AD转换,就可以得到按下的是哪个按键。

方式一还可以同时识别多个按键,即可以设置组合键,只要电阻取得合适。

方式二各个电阻可以取一样的,方便计算,但是不能有组合按键。

因为当按下上面的按键后,下面所有按键都会被短路。

(在实际运用中,还需要接地,这里没有画出) 

前面说理论上可以扩展2^n个按键,这只是理论,因为这里电阻的精度有限,所以实际是不可能的,两个模拟量之间要有足够大的差值,程序才可能准确的分辨。

上面就是我介绍的五种按键扩展方案,后面几种比较另类,不过也有他们的优点。

以上电路我都仿真过,可以实现。

附方案4键盘扫描源代码:

sbitline_1=P0.1;

sbitline_2=P0.2;

sbitline_3=P0.3;

sbitline_4=P0.4

charkey=0;

voidkey_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(line_2==0){key=14;

return;

if(line_3==0){key=15;

if(line_4==0){key=16;

line_2=line_3=line_4=1;

line_1=0;

if(~(line_2&

delay();

if(line_2==0){key=1;

if(line_3==0){key=2;

if(line_4==0){key=3;

line_1=line_3=line_4=1;

line_2=0;

if(line_3==0){key=5;

if(line_4==0){key=6;

line_1=line_2=line_4=1;

line_3=0;

line_1&

if(line_4==0){key=9;

line_4=0;

line_1=line_2=line_3=1;

line_1))

if(line_1==0){key=10;

if(line_2==0){key=11;

if(line_3==0){key=12;

if(line_1==0){key=7;

if(line_2==0){key=8;

if(line_1==0){key=4;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 初中作文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2