第二讲 按键 DS1302.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第一部分 按键 原理图 图1 矩阵按键和独立按键 共20个按键,有4*4矩阵键盘:S1~S16,4个独立按键:S17~S20 1、独立按键 51单片机接按键,按键一端接地,另一端与I/O引脚相连,按键按下为低电平,未按下为高电平如果用P0口需要加上拉电阻(10k),其他端口可以不加上拉电阻,编程时只要检测高低电平来判断是否有按键按下就可以了。 P0口是开漏的,不管它的驱动能力多大,相当于它是没有电源的,需要外部的电路提供,绝大多数情况下P0口是必需加上拉电阻的P0口 S17~S20、4个独立按键一端接地,一端接P33~P30,按键按下为低电平,未按下为高电平void main (void) { P1=0xFF;//P1口置1 KEY=1; //按键输入端口电平置高 while (1) //主循环 { if(!KEY) //如果检测到低电平,说明按键按下 LED=0; else LED=1; //这里使用if判断,如果按键按下led点亮,弹起来熄灭。 //上述4句可以用一句替代 LED=KEY; } } 程序2: sbit KEY=P3^3; //定义按键输入端口S17 sbit LED=P1^2; //定义led输出端口 void main (void) { P1=0xFF;//P1口置1 KEY=1; //按键输入端口电平置高 while (1) //主循环 { if(!KEY) //如果检测到低电平,说明按键按下 { DelayMs(10); //延时去抖,一般10-20ms if(!KEY) //再次确认按键是否按下,没有按下则退出 { while(!KEY);//如果确认按下按键等待按键释放,没有释放则一直等待 { LED=!LED;//释放则执行需要的程序 } } } } } 程序3:按键加减操作,见程序,并且按照第4个程序的方法修改程序。 3、矩阵按键 方法一:矩阵键盘行列扫描 #define KeyPort P3 /*------------------------------------------------ 按键扫描函数,返回扫描键值 ------------------------------------------------*/ unsigned char KeyScan(void) //键盘扫描函数,使用行列逐级扫描法 { unsigned char Val; KeyPort=0xf0;//高四位置高,低四位拉低 if(KeyPort!=0xf0)//表示有按键按下 { DelayMs(10); //去抖 if(KeyPort!=0xf0) { //表示有按键按下 KeyPort=0xfe; //检测第一行 if(KeyPort!=0xfe) { Val=KeyPort0xf0; Val+=0x0e; while(KeyPort!=0xfe); DelayMs(10); //去抖 while(KeyPort!=0xfe); return Val; } KeyPort=0xfd; //检测第二行 if(KeyPort!=0xfd) { Val=KeyPort0xf0; Val+=0x0d; while(KeyPort!=0xfd); DelayMs(10); //去抖 while(KeyPort!=0xfd); return Val; } KeyPort=0xfb; //检测第三行 if(KeyPort!=0xfb) { Val=KeyPort0xf0; Val+=0x0b; while(KeyPort!=0xfb); DelayMs(10); //去抖 while(KeyPort!=0xfb); return Val; } KeyPort=0xf7; //检测第四行 if(KeyPort!=0xf7) { Val=KeyPort0xf0; Val+=0x07; w

文档评论(0)

boss + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档