14 键盘控制
慧净电子----做人人都买得起的 51515151单片机开发板------------真诚为你服务,基于 HJ-1GHJ-1GHJ-1GHJ-1G开发板
慧净电子网:WWW.HLMCU.COM 慧净小店:http://shop37031453.taobao.com/http://shop37031453.taobao.com/http://shop37031453.taobao.com/http://shop37031453.taobao.com/
手把手教你学 51 单片机 C 语言教程 第 14 课
(键盘控制)
...
慧净电子----做人人都买得起的 51515151单片机开发板------------真诚为你服务,基于 HJ-1GHJ-1GHJ-1GHJ-1G开发板
慧净电子网:WWW.HLMCU.COM 慧净小店:http://shop37031453.taobao.com/http://shop37031453.taobao.com/http://shop37031453.taobao.com/http://shop37031453.taobao.com/
手把手教你学 51 单片机 C 语言教程 第 14 课
(键盘控制)
5.1 学习目标
独立按键是区别于矩阵键盘的一种按键方式,主要是按键直接连接到 IO 口,另外一端连接
VCC 或者 GND,一般情况连接到 GND(地),也就是按键按下的时候,IO 口的电平被强
制拉低,即 0,而通 过 IO 输入
该端口电平就可以判断按键是否按下。
5.2 硬件电路
5.3 原理图
5.3.1 触点存在抖动现象说明
由于按键本身都存在不同的机械抖动,单片机属于高速检测器件,可以很容易检测出抖动,
但抖动并不是我们需要的,容易造成误操作,所以正常使用过程中需要添加去抖动程序,主
要用于跳过抖动,避免造成干扰。
慧净电子----做人人都买得起的 51515151单片机开发板------------真诚为你服务,基于 HJ-1GHJ-1GHJ-1GHJ-1G开发板
慧净电子网:WWW.HLMCU.COM 慧净小店:http://shop37031453.taobao.com/http://shop37031453.taobao.com/http://shop37031453.taobao.com/http://shop37031453.taobao.com/
5.3.2 开发板独立按键模块原理图
5.4 源码编写
独立按键软件操作简单,主要检测按键连接的 IO 口是否为“0”,为“0”表
示按键按下。
用以下语句:
Sbit KEY1 = P3^0;
If(!KEY1){//添加按键按下时需要执行的操作}
实际使用中按键有固定的机械抖动,根据不同按键抖动时间不同,一般
4-15mS,根据这个特点,需要延时躲避抖动,由于按下和释放都会存着抖动,
实际使用程序需要进行 2 次去抖。具体程序如下:
#include
sbit BY1=P3^4; //定义按键的输入端S2键
unsigned char count; //按键计数,每按一下,count加1
unsigned char temp;
unsigned char a,b;
void delay10ms(void) //延时程序
{
unsigned char i,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
key() //按键判断程序
{
慧净电子----做人人都买得起的 51515151单片机开发板------------真诚为你服务,基于 HJ-1GHJ-1GHJ-1GHJ-1G开发板
慧净电子网:WWW.HLMCU.COM 慧净小店:http://shop37031453.taobao.com/http://shop37031453.taobao.com/http://shop37031453.taobao.com/http://shop37031453.taobao.com/
if(BY1==0) //判断是否按下键盘
{
delay10ms(); //延时,软件去干扰
if(BY1==0) //确认按键按下
{
count++; //按键计数加1
if(count==8) //计8次重新计数
{
count=0; //将count清零
}
}
while(BY1==0);//按键锁定,每按一次count只加1.
}
}
move() //广告灯向左移动移动函数
{
a=temp<>(8-count);
P1=a|b;
}
main()
{
count=0; //初始华参数设置
temp=0xfe;
P1=0xff;
P1=temp;
while(1) //永远循环,扫描判断按键是否按下
{
key(); //调用按键识别函数
move(); //调用广告灯移动函数
}
}
//如果有干扰请加去抖程序
//红外接收头部分用黑色物质遮光,防止干扰按键,因为红外接收和按键使用同
一个端口
4X4 点阵实验
//4*4 键盘检测程序,按下键后相应的代码显示在数码管上
#include
慧净电子----做人人都买得起的 51515151单片机开发板------------真诚为你服务,基于 HJ-1GHJ-1GHJ-1GHJ-1G开发板
慧净电子网:WWW.HLMCU.COM 慧净小店:http://shop37031453.taobao.com/http://shop37031453.taobao.com/http://shop37031453.taobao.com/http://shop37031453.taobao.com/
sbit beep=P2^3;
sbit dula=P2^6;
sbit wela=P2^7;
unsigned char i=100;
unsigned char j,k,temp,key;
void delay(unsigned char i)
{
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
display(unsigned char num)
{
P0=table[num];
// P0=0xff;
dula=1;
dula=0;
P0=0xc0;
wela=1;
wela=0;
}
void main()
{
dula=0;
wela=0;
while(1)
{
P3=0xfe;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xee:
key=0;
break;
慧净电子----做人人都买得起的 51515151单片机开发板------------真诚为你服务,基于 HJ-1GHJ-1GHJ-1GHJ-1G开发板
慧净电子网:WWW.HLMCU.COM 慧净小店:http://shop37031453.taobao.com/http://shop37031453.taobao.com/http://shop37031453.taobao.com/http://shop37031453.taobao.com/
case 0xde:
key=1;
break;
case 0xbe:
key=2;
break;
case 0x7e:
key=3;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
beep=0;
}
beep=1;
display(key);
// P0=table[key];
/* P0=0xff;
dula=1;
while(i--);
dula=0;
P0=0xc0;
wela=1;
wela=0;
dula=0;
wela=0;
P0=0xff;
dula=1;
dula=0;
P0=0xc5;
wela=1;
wela=0; */
P1=0xfe;
}
}
P3=0xfd;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
慧净电子----做人人都买得起的 51515151单片机开发板------------真诚为你服务,基于 HJ-1GHJ-1GHJ-1GHJ-1G开发板
慧净电子网:WWW.HLMCU.COM 慧净小店:http://shop37031453.taobao.com/http://shop37031453.taobao.com/http://shop37031453.taobao.com/http://shop37031453.taobao.com/
{
delay(10);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xed:
key=4;
break;
case 0xdd:
key=5;
break;
case 0xbd:
key=6;
break;
case 0x7d:
key=7;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
beep=0;
}
beep=1;
display(key);
/* P0=table[key];
dula=1;
// while(100--);
dula=0;
P0=0xc0;
wela=1;
wela=0;
*/ P1=0xfc;
}
}
P3=0xfb;
temp=P3;
temp=temp&0xf0;
慧净电子----做人人都买得起的 51515151单片机开发板------------真诚为你服务,基于 HJ-1GHJ-1GHJ-1GHJ-1G开发板
慧净电子网:WWW.HLMCU.COM 慧净小店:http://shop37031453.taobao.com/http://shop37031453.taobao.com/http://shop37031453.taobao.com/http://shop37031453.taobao.com/
if(temp!=0xf0)
{
delay(10);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xeb:
key=8;
break;
case 0xdb:
key=9;
break;
case 0xbb:
key=10;
break;
case 0x7b:
key=11;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
beep=0;
}
beep=1;
display(key);
/* P0=table[key];
dula=1;
// while(100--);
dula=0;
P0=0xc0;
wela=1;
wela=0;
*/ P1=0xf8;
}
}
P3=0xf7;
temp=P3;
慧净电子----做人人都买得起的 51515151单片机开发板------------真诚为你服务,基于 HJ-1GHJ-1GHJ-1GHJ-1G开发板
慧净电子网:WWW.HLMCU.COM 慧净小店:http://shop37031453.taobao.com/http://shop37031453.taobao.com/http://shop37031453.taobao.com/http://shop37031453.taobao.com/
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xe7:
key=12;
break;
case 0xd7:
key=13;
break;
case 0xb7:
key=14;
break;
case 0x77:
key=15;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
beep=0;
}
beep=1;
display(key);
/* P0=table[key];
dula=1;
// while(100--);
dula=0;
P0=0xc0;
wela=1;
wela=0;
*/ P1=0xf0;
}
}
}
慧净电子----做人人都买得起的 51515151单片机开发板------------真诚为你服务,基于 HJ-1GHJ-1GHJ-1GHJ-1G开发板
慧净电子网:WWW.HLMCU.COM 慧净小店:http://shop37031453.taobao.com/http://shop37031453.taobao.com/http://shop37031453.taobao.com/http://shop37031453.taobao.com/
}
版权声明:(部分资料图片来源网络)
1、本教程为慧净电子会员整理作品,欢迎网上下载、转载、传播、免费共享给
各位单片机爱好者!
2、该教程可能会存在错误或不当之处,欢迎朋友们指正。
3、未经协商便做出不负责任的恶意评价(中评,差评),视为自动放弃一切售后服
务的权利!
4、我们的产品收入一部分是赠送给慈善机构的,以免影响到你的善心.大家好,
才是真的好(双方好评)。
下面是有缘人看的,谢谢理解
善有善报,恶有恶报,不是不报,时候未到。
从古至今,阴司放过谁,大家得多行善。
行善积德,爱护动物,哪怕小蚂蚁也是生命。
可改变命运,可心想事成,有利保佑子孙后代更昌盛。
学习弟子规,教我们如何做人,看和谐拯救危机,教我们看宇宙。
看为什么不能吃它们,教我们慈悲心,看因果轮回纪录,教我们懂得因果报应。
切勿造恶,种瓜得瓜种豆得豆,一切都有过程,待成熟之时,福德或果报自来找
你。
慧净
2008 年 8 月 8 日
本文档为【14 键盘控制】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。