基于单片机的模拟手机键盘
openharmony模拟按键的方法

一、概述在使用开放原子系统时,我们经常需要模拟按键来控制设备或应用程序。
本文将介绍在openharmony系统中模拟按键的方法,帮助开发者更好地使用openharmony系统。
二、使用sendevent命令模拟按键1. 使用sendevent命令可以模拟按键事件,该命令可以在终端或通过adb shell执行。
2. sendevent命令需要知道设备的输入设备路径、事件类型、事件代码以及事件值。
3. 首先需要查找设备的输入设备路径,可以通过命令“cat/proc/bus/input/devices”来查看。
4. 然后使用sendevent命令模拟按键事件,例如模拟点击HOME键可以使用如下命令:```shellsendevent /dev/input/event0 1 172 1sendevent /dev/input/event0 0 0 0sendevent /dev/input/event0 1 172 0sendevent /dev/input/event0 0 0 0```其中,第一列是事件类型,第二列是事件代码,第三列是事件值。
三、使用input命令模拟按键1. 在openharmony系统中,也可以使用input命令来模拟按键事件,该命令更加简洁易用。
2. input命令格式为“input keyevent <event_code>”,其中event_code为按键事件的代码。
3. 模拟点击HOME键可以使用如下命令:```shellinput keyevent 3```四、使用C/C++代码模拟按键1. 在openharmony系统中,也可以通过C/C++代码来模拟按键事件。
2. 首先需要获取设备的输入设备文件描述符,可以通过open函数来打开输入设备。
3. 然后通过write函数向输入设备写入事件数据,模拟按键事件。
4. 代码示例:```c#include <tl.h>#include <linux/input.h>int fd;struct input_event event;fd = open("/dev/input/event0", O_RDWR);if (fd < 0) {perror("open input device"); return -1;}event.type = EV_KEY;event.code = KEY_HOME;event.value = 1;write(fd, event, sizeof(event));event.type = EV_SYN;event.code = SYN_REPORT; event.value = 0;write(fd, event, sizeof(event));event.type = EV_KEY;event.code = KEY_HOME;event.value = 0;write(fd, event, sizeof(event));event.type = EV_SYN;event.code = SYN_REPORT; event.value = 0;write(fd, event, sizeof(event));close(fd);```五、总结本文介绍了在openharmony系统中模拟按键的几种方法,包括使用sendevent命令、input命令以及C/C++代码。
基于单片机的键盘接口的设计与实现

B F键 盘 缓 冲 器 数 据 结 构 U
(
u s n dc a h a ; 盘 缓 冲器 头 指 针 n i e h r e d键 g u s n dc a ti键 盘缓 冲器 尾指 针 ni e h r a ; g l
有 很 强 的优 势 。其 优 化 的 功 能 以 及 良好 的人 机 接 口界 面 , 其 应 使 用 领 域愈 加 广 泛 , 已在 便 携 式 测 量 监 控 仪 器 、 业 控 制 应 用 公 为单 片机 应 用 系统 中必 备 的 输 入 设 备 , 有 很 强 的 通 用 性 , 而 介 绍 基 于 单 片 机 的键 盘 具 因 接 口的设 计 与 实 现 很 有 必 要 。
a lc to s o ha h ic isf yb r ntra ea esm pl,t e pr c si r rm unsr la l nd sa y, nd i sw orh o ppi ai n h w t tt e cr u t orke oa d i e c r i f e h o esng p og a r eib y a tbl a ti t p pulrzn . aii g
维普资讯
本 目 任 辑: 媛 栏责 编 谢 媛
开 发 研 究 与 没 计 技 术 ,
基于单片机 的键 盘接 口的设计 与实现
曹彩萍 。 李钢 ( 肥 工 业 大 学 , 徽 合 肥 20 0 ) 合 安 30 9 摘要 : 章详 细介 绍 了基 于 单 片机 的键 盘 接 口的 设 计 与 实现 。 际使 用 结 果表 明 , 键 盘 接 口 电路 设 计 简单 , 盘 处 理 程 序 运 行稳 定 文 实 该 键 可靠 . 有推广价值。 具 关键 词 : 程 器 ; 片机 ; 盘 ; 件 设 计 编 单 键 软
基于单片机的快速按键识别方法

基于单片机的快速按键识别方法基于单片机的快速按键识别方法快速按键识别技术是信息处理方面的一个重要领域,应用于各种设备与系统。
在现代电子产品中,按键控制是常用的操作方式之一。
而基于单片机的快速按键识别方法,是目前较为常见的实现方式之一。
一、快速按键识别原理快速按键识别是通过按键接通时,产生的电信号来判断你所按的按键类型及次数,进而执行对应的操作。
单片机通过外部中断或定时器来进行按键事件的处理和识别,实现快速的数据处理与反馈。
二、快速按键识别系统设计1.硬件设计硬件设计主要包括单片机、键盘、蜂鸣器和LED等模块。
其中,单片机为整个系统的核心部件,键盘是输入信号的来源,蜂鸣器是输出信号的反馈,LED则为系统的指示灯。
2.软件设计软件设计则需要通过编程实现按键事件的处理、识别及反馈,其中主要包括定时器、外部中断、键盘扫描和矩阵按键扫描等方式。
三、快速按键识别方法1.定时器扫描法通过定时器来设定扫描周期,通过中断来响应按下事件,实现按键的检测。
相比其他方法,定时器扫描法的扫描速度较快,适用于对响应速度有要求的场合。
2.(硬件)按键编码法每个按键使用一个编码计数器的,通过单片机译码器来解码,实现按键的响应。
这种方法根据不同的按键引脚电平来区分每个按键,适合于按键比较多的场合。
3.矩阵按键扫描法矩阵扫描是常用的键盘扫描方法,遵循矩阵思想,通过行列交叉检测来检测按键的按下,比较简单可靠,适合于按键数量较多的场合。
四、总结基于单片机的快速按键识别方法应用广泛,可以有效提高按键的响应速度和灵敏度,实现更加智能化的操作。
实现这种技术需要考虑系统的硬件和软件设计,但是相比其他识别方式,它更加高效和快速,更容易向各个方向进行扩展。
单片机c语言程序设计---矩阵式键盘实验报告

单片机c语言程序设计---矩阵式键盘实验报告课程名称:单片机c语言设计实验类型:设计型实验实验项目名称:矩阵式键盘实验一、实验目的和要求1.掌握矩阵式键盘结构2.掌握矩阵式键盘工作原理3.掌握矩阵式键盘的两种常用编程方法,即扫描法和反转法二、实验内容和原理实验1.矩阵式键盘实验功能:用数码管显示4*4矩阵式键盘的按键值,当K1按下后,数码管显示数字0,当K2按下后,显示为1,以此类推,当按下K16,显示F。
(1)硬件设计电路原理图如下仿真所需元器件(2)proteus仿真通过Keil编译后,利用protues软件进行仿真。
在protues ISIS 编译环境中绘制仿真电路图,将编译好的“xxx.hex”文件加入AT89C51。
启动仿真,观察仿真结果。
操作方完成矩阵式键盘实验。
具体包括绘制仿真电路图、编写c源程序(反转法和扫描法)、进行仿真并观察仿真结果,需要保存原理图截图,保存c源程序,总结观察的仿真结果。
完成思考题。
三、实验方法与实验步骤1.按照硬件设计在protues上按照所给硬件设计绘制电路图。
2.在keil上进行编译后生成“xxx.hex”文件。
3.编译好的“xxx.hex”文件加入AT89C51。
启动仿真,观察仿真结果。
四、实验结果与分析void Scan_line()//扫描行{Delay(10);//消抖switch ( P1 ){case 0x0e: i=1;break;case 0x0d: i=2;break;case 0x0b: i=3;break;case 0x07: i=4;break;default: i=0;//未按下break;}}void Scan_list()//扫描列{Delay(10);//消抖switch ( P1 ){case 0x70: j=1;break;case 0xb0: j=2;break;case 0xd0: j=3;break;case 0xe0: j=4;break;default: j=0;//未按下break;}}void Show_Key(){if( i != 0 && j != 0 ) P0=table[ ( i - 1 ) * 4 + j - 1 ];else P0=0xff;}五、讨论和心得。
4.3 单片机键盘接口电路设计

//函数功能:键盘扫描 //检测到有键按下 //延时10ms再去检测 //按键k1被按下 //按键k2被按下 //按键k3被按下 //按键k4被按下
▲▲▲
独立式键盘接口设计案例
void forward(void) { P3=0xfe; led_delay(); P3=0xfd; led_delay(); P3=0xfb; led_delay(); P3=0xf7; led_delay(); P3=0xef; led_delay(); P3=0xdf; led_delay(); P3=0xbf; led_delay(); P3=0x7f; led_delay(); }
break;
}
}
}
▲▲▲
独立式键盘接口设计案例
void key_scan(void) { P1=0xff; if((P1&0x0f )!=0x0f ) { delay10ms(); if(S1==0) keyval=1; if(S2==0) keyval=2; if(S3==0) keyval=3; if(S4==0) keyval=4; }
//处理按下的k1键,“……”为处理程序 //跳出switch语句 //处理按下的k2键 //跳出switch语句 //处理按下的k3键 //跳出switch语句 //处理按下的k4键 //跳出switch语句 //处理按下的k5键 //跳出switch语句
独立式键盘接口设计案例
1.独立式键盘的查询工作方式
{
case 1:forward(); //键值为1,调用正向流水点亮函数
break;
case 2:backward(); //键值为2,调用反向流水点亮函数
break;
case 3:Alter(); //键值为3,调用高、低4位交替点亮函数
arduino虚拟键盘开发环境及对应键盘按键代码

arduino虚拟键盘开发环境及对应键盘按键代码今天的stm32系列的开发先断更⼀天,来玩玩淘宝卖的虚拟键盘的硬件(oled屏幕坏了,等⼀个新屏幕)不知道⼩伙伴有没有见过下图这⼏款淘宝买的标题叫硬件虚拟键盘的设备上图这⼏款虚拟键盘其实都是⽤的同⼀个IC,多的ESP8266和内存卡插槽啊都是这个IC功能的扩展如果想了解ESP8266远程控制键盘或者内存卡提取写好脚本控制键盘可以上github找到他们的对应开源代码之后有空我也会更新⼀下我在github上⾯使⽤开源代码的效果那么这篇就介绍⼀下虚拟键盘的开发环境的搭建以及简单的使⽤⽅法介绍硬件设备:虚拟键盘IC:atmega32u4我使⽤的是下图这款,当然没有上⾯淘宝卖的好看,但是功能⼀样嘛上⾯卖的要50到70之间,我这个只花15块钱,多找找就有这种惊喜价格,这IC⾃⼰购买的话也要13块钱左右开发环境搭建3、打开项⽬–加载库中选择点击Keyboard,会将#include <Keyboard.h>⾃动添加到代码中4、在⼯具–开发板中选择arduino Leonardo,这个开发板的IC就是atmega32u4,配置好这⼏部以后就可以开始测试⼀下硬件虚拟键盘了来进⾏使⽤实战测试我们先弄⼀个打开windows下的cmd过程就是:按下win+R然后填⼊cmd后点击回车1 #include <Keyboard.h>2//为什么加⼊延时3//每个按键按下和释放都需要⼀个短暂的时间间隔4//避免按下和释放间隔时间太短电脑还没识别到按下5void setup() {6 delay(1000);7 Keyboard.press(KEY_LEFT_GUI);8 Keyboard.press('r');9 delay(100);10 Keyboard.releaseAll();11 Keyboard.print("cmd");12 delay(1000);13 Keyboard.press(KEY_RETURN);14 delay(100);15 Keyboard.release(KEY_RETURN);1617 }1819void loop() {2021 }打开cmd这⾥没有过程视频,不过确实是打开了cmd界⾯注意⼀下要关闭输⼊法,不然打到输⼊法⾥⾯去了我们在看⼀下windows下的设备显⽰未接⼊开发板时这个是笔记本⾃带的键盘来的接⼊开发板时然后就可以看到多了⼀个HID键盘啦这个端⼝COM5是因为这款IC⾃带串⼝,不仅⽅便直接写⼊重新,还剩下了⼀个USB转串⼝芯⽚真的很好⽤注意事项:按下必须和释放配合使⽤按下Keyboard.press()释放Keyboard.release()另外咱整理了⼀些代码中对应的硬件虚拟键盘键位的定义也可以在Keyboard.h的库中查看1键盘左边ctrl --- KEY_LEFT_CTRL2键盘左边shift --- KEY_LEFT_SHIFT3键盘左边alt --- KEY_LEFT_ALT4键盘左边win --- KEY_LEFT_GUI5键盘右边ctrl --- KEY_RIGHT_CTRL6键盘右边shift --- KEY_RIGHT_SHIFT7键盘右边alt --- KEY_RIGHT_ALT8键盘右边win --- KEY_RIGHT_GUI9⽅向键上 --- KEY_UP_ARROW10⽅向键下 --- KEY_DOWN_ARROW11⽅向键左 --- KEY_LEFT_ARROW12⽅向键右 --- KEY_RIGHT_ARROW13空格键 --- KEY_BACKSPACE14 tab键 --- KEY_TAB15回车键 --- KEY_RETURN16 esc键 --- KEY_ESC17 insert键 --- KEY_INSERT18 delete键 --- KEY_DELETE19 page up键 --- KEY_PAGE_UP20 page down键 --- KEY_PAGE_DOWN21 home键 --- KEY_HOME22 end键 --- KEY_END23 capslock键 --- KEY_CAPS_LOCK24 F1 --- KEY_F125 F2 --- KEY_F226 F3 --- KEY_F327 F4 --- KEY_F428 F5 --- KEY_F529 F6 --- KEY_F630 F7 --- KEY_F731 F8 --- KEY_F832 F9 --- KEY_F933 F10 --- KEY_F1034 F11 --- KEY_F1135 F12 --- KEY_F12键盘按键定义结束这款IC还可以模拟⿏标的移动,真是多功能有空的话我做⼀个硬件的外挂来玩⼀下,之后也会更新⼀下⿏标移动的开发今天也是充满希望的⼀天。
基于51单片机4乘4矩阵键盘的设计

case 0x7d:KEY=7;break;
case 0xeb:KEY=8;break;
case 0xdb:KEY=9;break;
case 0xbb:KEY=10;break;
case 0x7b:KEY=11;break;
case 0xe7:KEY=12;break;
控制任务:
编程实现4乘4的矩阵键盘控制连接在P0口和P1口上的16个LED,当按下某键并释放后只有对应的LED灯亮,例如按S0后D0亮,按S1后D1亮。
程序及仿真:
#include<reg51.h>
unsigned char code led[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
b=P2;
a=a|b;
switch(a)
{
case 0xee:KEY=0;break;
case 0xde:KEY=1;break;
case 0xbe:KEY=2;break;
case 0x7e:KEY=3;break;
case 0xed:KEY=4;break;
case 0xdd:KEY=5;break;
{
P0=0xff;
P1=led[n-8];
}}
int main(void)
{
whilsplay(KEY);
}
return 0;
}
更多资源,请关注微博“风竹弈星”,私聊。
unsigned char KEY=0xff;
void keyscan(void)
{
unsigned char a,b;
P2=0xf0;//高四位作为输入(高电平),低四位输出低电平
应用于低性能单片机的拼音输入法设计与实现

1引言随着嵌入式系统应用领域的不断拓展[1],越来越多的嵌入式设备要求实现中文汉字的输入与显示。
目前应用于智能终端最为广泛的是美国特捷通讯的T9输入法,其次有Mo-torola 的iTAP 输入法和Ericson 的字能输入法等[2]。
尽管市场上还有许多输入法,且它们的功能也十分强大,但是它们大多对硬件要求较高,几乎不支持没有操作系统的嵌入式产品。
而在低端市场,单片机往往需要花费大部分资源来完成输入法功能,这不免导致系统主功能缺少足够的资源可供调用,出现头重脚轻的状况。
因此,研究一种实用且低成本的中文输入法是非常有市场前景和必要性的。
2设计思路单片机中的输入法的传统思路是:选用较大容量的EE-PROM 存放汉字字库,汉字内码则装入FLASH 中,这样虽然可以实现输入法功能,但是其造成了主控芯片的资源大量浪费,FLASH 不能用来存放更多的系统功能代码。
而后,虽然出现了带字库的LCD ,但其做法大都是选择具有较大程序存储器的微处理器,以便存储拼音到字型码的映射表,这样虽然可以解决FLASH 不足的问题,但是成本大幅提高,产品竞争力将随之下降。
本文的设计思路是:采用已附带汉字字库的点阵液晶,直接略去字库所需的内存;然后将汉字内码保存到EEPROM ,而内码大小远小于相应的字库内容,在此处我们可以节省出大量空间。
主控只需要在拼音与内码之间建立一种对应关系,最后通过键盘选择要输入的汉字并显示在液晶屏上。
3硬件设计本系统按功能可划分为输入、处理、存储和输出四个部分[3]。
对于拼音输入法来说,至少需要实现26个字母键、10个数字键、ESC 键、OK 键、MENU 键、MODE 键、UP 键和DOWN 键,可以自制或选择标准键盘。
处理器选用NXP 的LPC2103芯片,它的最高工作速度可达70MHz ,拥有32KB 的片内FLASH 程序存储器和8K 的片内SRAM [4],能够满足大部分嵌入式系统的需求[5],特别适用于访问控制和指纹打卡机等小型应用中,如果在该芯片上开发输入法,作者经过实验测试得到以下结论:使用传统方法时片内FLASH 和RAM 均存在内存不够的问题,改进方案是去掉字模部分,引入带字模的液晶显示器,这样就节约了大量的主控芯片的FLASH 空间,但由于字库内码仍然存放在RAM 中,LPC2103的RAM 依然不足,所以这里采用24c256作为存储器,搭配以ST7920为控制器的液晶,最后发现完成输入法功能后,系统仅使用了主控3KByte FALSH,4KByte RAM ,使得存储量小的主控也能胜任调整后的拼音输入法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
信息工程学院课程设计报告书题目 :基于单片机的模拟手机键盘专业:电子信息科学与技术班级:_学号:学生姓名:_指导教师:2013年10月18日信息工程学院课程设计任务书学号学生姓名专业(班级)电子信息设计题目基于单片机的模拟手机键盘单片机晶振频率:12MHz;电源电压: +5v设计技术参数编程控制单片机端口实现按键输出0~9 十个数字并在液晶上显示出来。
设计要求两天工作量注:可填写课程设计报告的字数要求或要完成的图纸数量。
工作计划[1]康华光,陈大钦 . 电子技术基础—模拟部分(第五版)[M]. 北京:高等教育出版社,2005参考[2] 郭天祥 .51 单片机 C 语言教程[ M]. 北京:电子工业出版, 2012资料指导教师签字教研室主任签字信息工程学院课程设计成绩评定表学生姓名:学号:专业(班级):电子信息课程设计题目:基于单片机的模拟手机键盘指导教师评语:成绩:指导教师:年月日摘要本文是做基于89C52 单片机的手机键盘的设计;利用P0 端 3*4 的键值来模拟手机键盘中的数字,将采用编程的方法来实现使用12 个键来做到0 到 9 的数字输出和退位清零,并在液晶屏上显示。
手机作为现代移动通信的载体,其技术也得到了很大的发展,手机的键盘布局已经成了各大厂商门竞争的主要方面,本次设计提高了我们对单片机的操作能力,让我们更加认识到单片机的广阔前景,对于我们更加深入学习和了解单片机提供了极大的帮助。
关键词:矩阵键盘,LCD液晶屏, 89C52 单片机。
目录1任务提出与方案论证 ..............................................................................................................- 2 -1.1方案一 ......................................................................................................................- 2 -1.2方案二 ..........................................................................................................................- 2 -1.3方案对比与选择 ............................................................................................................- 2 -2.系统硬件电路的设计 .............................................................................................................- 4 -2.1微处理器的选择 ...........................................................................................................- 4 -2.2单片机的基本机构 ........................................................................................................- 4 -2.3键盘接口电路 ................................................................................................................- 5 -2.4消除抖动 ........................................................................................................................- 6 -3详细设计 ..................................................................................................................................- 7 -3.1程序流程设计 ...............................................................................................................- 7 -3.2硬件电路设计 ...............................................................................................................- 8 -4总结.........................................................................................................................................- 9 -参考文献 (10)附录 (11)1任务提出与方案论证1.1 方案一采用 8255 芯片,通过 PA,PB 口输出; PC 的高四位输出,低四位输入;定时器测量两次按键的间隔,进行手机键盘的模拟;此种方法思路简单,能够实现 0 到 9 的数值在数码管上的显示。
方框图如图 1.1。
主控模块8255 芯片单片机(AT89C52)键盘扫描Lcd 液晶显示图 1.1 方案一方框图1.2方案二采用易购的AT89C52 系列。
该方法采用静态显示法来控制LED 的数值显示,P0 口接锁存器防止总线间的冲突, P0 口输出段码数据, P1.0 口到 P1.8 口接 9 个按键,用于 1 到 26 的数值设置;在硬件电路不变的情况下,通过改变信号来实现数码管的显示。
方框图如图 1.2 所示。
键盘扫描数据锁存器LCD 显示AT89C52P0 端口列驱动图 1.2 方案二方框图1.3 方案对比与选择由于方案 2 需要数据锁存器等硬件,且接口较复杂,又考虑到数码管显示只有6 位,而且系统没有其他复杂的处理任务;所以在综合比较之下,方案1 显的更加简单明了,可行性更高;我们一致决定采用方案 1 来实现 a 到 z 对应的 1 到26的数值显示。
2.系统硬件电路的设计2.1 微处理器的选择1)控制中心使用 MCS-51 来实现2)驱动用 8255 芯片来实现3)显示用 6 个三级数码显示管来实现4)使用 +5V 电源2.2 单片机的基本机构1)MCS-51 单片机内部结构MCS-51 单片机内部包含中央处理器( CPU)、程序存储器 (ROM) 、数据存储器(RAM) 、定时 / 计数器、并行 I/O 接口、串行 I/O 接口和中断系统等几大单元。
其内部结构图如图 2.1 所示。
振荡器8051 4KB掩膜特殊功能寄存器定时器T0 T1ROM SDR 128KBCPU并行 I/O 接口串行接口中断系统P0P1P2P3TXD RXD INT0INT1图 2.1 单片机 8051 内部结构图单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿 (Princeton)结构。
INTEL 的 MCS-51 系列单片机采用的是哈佛结构的形式,而后续产品 16 位的 MCS-96 系列单片机则采用普林斯顿结构。
1)中央处理器中央处理器 (CPU)是整个单片机的核心部件,是 8 位数据宽度的处理器,能处理 8 位二进制数据或代码, CPU 负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。
2)数据存储器8051 内部有 128 个 8 位用户数据存储单元和 128 个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的 RAM 只有 128 个,可存放读写的数据,运算的中间结果或用户定义的字型表。
3)程序存储器8051 共有 4KB 8 位掩膜 ROM ,用于存放用户程序,原始数据或表格。
4)定时 /计数器单片机 8051 内有两个 16 位的可编程定时 /计数器,以实现定时或计数产生中断用于控制程序转向。
5)并行输入输出 (I/O) 口单片机 8051 共有 4 组 8 位 I/O 口(P0、 P1、 P2 或 P3),用于对外部数据的传输。
6)全双工串行口单片机 8051 内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。
7)中断系统单片机 8051 具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有 2 级的优先级别选择。
8)时钟电路单片机 8051 内置最高频率达12MHz 的时钟电路,用于产生整个单片机运行的脉冲时序,但单片机8051 需外置振荡电容。
2.3 键盘接口电路图 2.2 为键盘接口电路的原理图,图中矩阵式键盘和8255 的 PA 口相连,AT89C52 的 PB 和 8255 的 D0 口相连, AT89C52 不断的扫描键盘,看是否有键按下,如有,则根据相应程序对按键作出相应的反应。
图 2.2矩阵式键盘接口图2.4 消除抖动使用键盘时,由于键的闭合和断开,此过程中会产生一个抖动期。
抖动时间的长短与开关机械特性有关,一般为10~20ms。
为了保证CPU 对键的闭合的正确判定,必须去除抖动,在键的稳定闭合和断开期间读取键的状态。
去除抖动可以采用硬件和软件两种方法。
硬件方法就是在案件输入通道添加去抖动电路,从根本上避免电压抖动的产生。
软件方法则采用延迟10~20ms 的时间,待电压稳定后,在进行状态输入。
由于软件延时方法经济实惠且技术上完全可行,所以此设计采用软件方法去抖。
3详细设计3.1 程序流程设计利用 KEIL 软件编程,使用单片机P0 口接上拉电阻驱动液晶屏,使用P3 口连接矩阵键盘扫描按键,在程序开始运行之后,首先是对数据进行初始化之后判断按键值,通过键值判断该键值是否设置了相应数值,有则转入相应的的程序输出数值,若没有则返回继续判断。