按键
- 1、按键的相关知识
- 2、独立按键
- 3、CPU如何处理按健
- 4、编程测试(用LED1作为指示)
- 5 、编程测试(用8个LED作为指示)
1、按键的相关知识
分为独立按键和矩阵按键
2、独立按键
由图得独立按键右边接地,左边独立连接到插座JP5。
但我们的独立按键和单片机连接时如下图:
(1)按键电路接法、上拉电阻。上拉是为了让引脚默认是高电平,但是上拉的力量扛不住接地,所以按键没有按下时上拉的力量保证了IO引脚输入为1,而按下后IO引脚输入绝对为0。
(2)按键这个设备对我们的意义:按键对于我们CPU来说是一个输入设备,输入的是人的操作。CPU通过监测按键连接的IO引脚的电平输入是1还是0就知道外部有没有人按下这个按键。相当于人通过按按键给CPU输入了一个信号,这个信号可以被CPU监测到从而指导CPU去做一定的工作。
3、CPU如何处理按健
(1)轮询式:所谓轮询式就是CPU不断的隔很小时间去查看有没有按键被按下,如果按下就处理按键,如果没按下就过一会再来查看。(按键什么时候被按下CPU是无法预知的)
(2)中断式
4、编程测试(用LED1作为指示)
(1)使用轮询法来处理独立按键K1,单片机在循环中每隔很短的时间就检测K1对应的P1.0引脚的输入电平是1还是0,如果是1则表示按键没有按下,延时等待下一次检验;如果是,表示按键己经按下了,点亮一颗LED1作为指示。
#include <REGX51.H>
sbit K1 = P1^0;
sbit LED1 = P0^0;
void main (void)
{
while(1)
{
if(K1 == 0)//K1按下
{
LED1 = 0X01;//LED1亮
}
else
LED1 = 0;
}
}
5 、编程测试(用8个LED作为指示)
按下K1时LED1亮,按下K2时LED2亮,以此类推。
#include <REGX51.H>
void main (void)
{
while(1)
{
if (P1 == 0xFE) //K1按下
P0 = 0X01; //LED1亮
else if(P1 == 0xFD) //K2按下
P0 = 0X02; //LED2亮
else if(P1 == 0xFB) //K3按下
P0 = 0X04; //LED3亮
else if(P1 == 0xF7) //K4按下
P0 = 0X08; //LED4亮
else if(P1 == 0xEF) //K5按下
P0 = 0X10; //LED5亮
else if(P1 == 0xDF) //K6按下
P0 = 0X20; //LED6亮
else if(P1 == 0xBF) //K7按下
P0 = 0X40; //LED7亮
else if(P1 == 0x7F) //K8按下
P0 = 0X80; //LED8亮
else
P0 = 0X00;
}
}