导航:首页 > 操作系统 > 单片机按键实验

单片机按键实验

发布时间:2022-01-21 23:00:55

A. 单片机应用:把独立按键、静态数码管、矩阵键盘三个实验程序合成一个程序(并注释)请大神们帮助

100软妹币..

B. 单片机独立按键实验

能不能别发图片,折怎么调试

C. 单片机汇编矩阵键盘实验(扫描法)

关于扫描按键的原理,可以看下面这篇文章。

本文以循序渐进的思路,引导大家思考如何用最少的IO驱动更多的按键,并依次给出5种方案原理图提供参考。在实际项目中我们经常会遇到有按键输入的需求,但有的时候为了节省资源成本,我们都会选择在不增加硬件的情况下使用最少的控制器IO驱动更多的按键,那么具体是怎么做的呢,下面我们就以用5个IO引脚为例,讲下怎么设计可以实现更多的按键?共有5种设计思路,下面依次介绍。

思路一

首先通常想到的可能是下面这样的设计:

这样我们可以先识别K01、K02、K03、K04、K05,若没有按键按下然后再和思路四的设计一样去识别其他按键。但这样存在一个问题,如果IO1配置为0,IO5读到0,那么怎么知道是K51按下还是K05按下呢,这里只需要在程序里做下判断,先判断下是不是K05按下,若不是就是K51,因为按键K01、K02、K03、K04、K05在5个IO口都为读取的情况下,就可以识别,不需要扫描识别处理,相当于这5个按键优先级高与其他按键。

总结

综合上述,5个IO口最多可以识别25个按键,思路五程序上处理比较麻烦,若实际中只按思路四设计,也可识别20个按键,那么如果有N个IO口可识别多少按键呢?这里给出如下公式:

假设有N个IO口按照思路三可以识别N*(N-1)/2个;

按照思路四可识别N*(N-1)个;

按照思路5可以识别N*(N-1)+N个。

最后再说下,如果实际设计时,还是按思路四设计好,软件也没那么麻烦。如果是你的话你会选择哪种方法呢?你还有没有其他的设计方法呢?

D. 单片机是ATmega48的,在设计一个简单的按键实验,但是不知道为什么按键按下去始终没有反应,求指教

汗 电路图就有问题
硬件是 是按键跟电阻位置对调。电阻是上拉,按键是按下短路。
软件上是 IO配置为带上拉数字输入。如DDRC &= ~0x02,PORTC |= 0x02;

E. 51单片机中独立按键控制led灯的实验当中按键的返回值怎么设定

返回值,不需要设定。

对返回值,进行判断,应该有个预定值。

这就要看你的独立按键通过什么接口芯片接入单片机了。

通常是某个位,为0。

F. 89C51单片机简单键盘实验利用keil uVision4仿真程序。利用简单键盘模块中提供的8个独

#include<reg52.h>
sbit key = P1^0;//按键
void delay(unsigned int time)
{
unsigned int i,j;

for(i=0; i<time; i++)

for(j=0; j<1000; j++)

{;}
}
void mian()
{
unsigned int temp =0x00;
while(1)
{
if(key == 0)
{
delay(20);//适当延时,消除按键抖动,自己看实际情况修改时间
if(key == 0)

temp = ~temp;

}
P2 = temp;
}

}

G. 单片机实验编程 按键声光报警实验 编写程序.c

要同步就把扬声器和指示灯用一个I/O控制就可以了,那就用定时器定时,0.5-1S取反一次就可以了,加一个触发的引脚即可

H. 按键实验

无论是矩阵键盘还是独立键盘,单片机检测其是否被按下的方法都是一样的。也就是检测与按键对应的 I/O 口的电平高低。

Ø 独立按键有一端固定为低电平或高电平,单片机写检测程序时比较方便。

Ø 矩阵按键两端都与单片机I/O口相连,因此检测时需要人为地通过单片机 I/O 口送出低电平。先送一列为低电平,其余几列全为高电平(此时确定了列数),然后轮流检测一次各行是否有低电平,若某一行为低电平(此时又确定了行数)。那么我们就可以确定是哪一行哪一列的键被按下。 用同样的方法,依次轮流送各列一次低电平,再轮流检测一次各行中是否有低电平。这样就可检测完 所有的按键,也就能判断出被按下的是哪一个键。 当然我们也可将各行线置低电平,然后扫描检测各列线中是否出现低电平, 这就是矩阵键盘检测的原理和方法。


#include <reg51.h>

#define uchr unsigned char

#define uint unsigned int


uchr code DSY_Table[]= //共阳极数码管编码

{

0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80, //0,1,2,3,4,5,6,7,8

0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xBF, //9,A,B,C,D,E,F,-

};


uchr key; //按键序号


void delayms(uchr x)

{

uchr i;

while(x--) for(i=0;i<120;i++);

}


void main()

{

uchr kp;

P0=0xff;


while(1)

{

P1=0xfd; //P1.1置 0

if(P1!=0xfd) //有键按下?

{

delayms(5); //延时消抖动

if(P1!=0xfd) //确认

{

kp=P1; //读取端口键值

while(P1!=0xfd); //等待键松开

switch(kp&0xf0) //屏蔽低4位,判断高4位

{

case 0xe0: //若高4位为e(即1键)

key=1; //赋键值

break;

case 0xd0: //若高4位为d(即5键)

key=5; //赋键值

break;

case 0xb0: //若高4位为b(即9键)

key=9; //赋键值

break;

case 0x70: //若高4位为7(即"9"键:num[9])

key=13; //赋键值

break;

}

}

}

P0 = DSY_Table[key]; //显示按键值

delayms(5);

}

}

阅读全文

与单片机按键实验相关的资料

热点内容
品牌云服务器提供商 浏览:321
加密投资者的心理 浏览:696
小米无命令 浏览:821
不要层层等命令 浏览:368
4k播放器怎样设置源码 浏览:950
二手冰箱压缩机多少钱 浏览:517
excelpdf转换器注册码 浏览:392
工作三年的大专程序员 浏览:728
java毕业设计文献 浏览:143
筹码集中度指标源码 浏览:482
listsortjava 浏览:186
plc闪光电路编程实例 浏览:299
socket编程试题 浏览:206
华为的服务器怎么设置从光驱启动 浏览:871
程序员真的累吗 浏览:328
学信网app为什么刷脸不了 浏览:874
天蝎vs程序员 浏览:996
单片机下载口叫什么 浏览:190
程序员的道 浏览:926
云服务器不实名违法吗 浏览:558