为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

14 键盘控制

2011-06-01 9页 pdf 366KB 10阅读

用户头像

is_758875

暂无简介

举报
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 课 (键盘控制) ...
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,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索