嵌入式键盘驱动ppt课件_第1页
嵌入式键盘驱动ppt课件_第2页
嵌入式键盘驱动ppt课件_第3页
嵌入式键盘驱动ppt课件_第4页
嵌入式键盘驱动ppt课件_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、嵌入式键盘驱动广州嵌入式软件公共技术支持中心广州嵌入式软件公共技术支持中心梁教师梁教师2019年年04月月矩阵式键盘原理矩阵式键盘原理矩阵式键盘普通适用于按键数量较多的场所,它由行线矩阵式键盘普通适用于按键数量较多的场所,它由行线和列线组成,按键位于行、列的交叉点上。和列线组成,按键位于行、列的交叉点上。如下图,一个如下图,一个44的行、列构造可以构成一个有的行、列构造可以构成一个有16个按键个按键的键盘。的键盘。矩阵式键盘原理矩阵式键盘原理按键设置在行、列交叉点上,行、列分别衔接到按键开按键设置在行、列交叉点上,行、列分别衔接到按键开关的两端。行线经过上拉电阻接到十关的两端。行线经过上拉电阻

2、接到十5 V上。上。平常无按键动作时,行线处于高电平形状平常无按键动作时,行线处于高电平形状;而当有健按下而当有健按下时,行线电平形状将由经过此按键的列线电平决议时,行线电平形状将由经过此按键的列线电平决议:列线列线电平假设为低,行线电平为低电平假设为低,行线电平为低;列线电平假设为高,那么列线电平假设为高,那么行线电平亦为高。这一点是识别矩阵式键盘能否被按下行线电平亦为高。这一点是识别矩阵式键盘能否被按下的关键所在。的关键所在。矩阵式键盘原理矩阵式键盘原理矩阵键盘按键的识别方法分两步进展矩阵键盘按键的识别方法分两步进展:识别键盘哪一行的键被按下。让一切列线均为低电平,识别键盘哪一行的键被按下

3、。让一切列线均为低电平,检查各行线电平能否为低。假设有行线为低,那么阐明检查各行线电平能否为低。假设有行线为低,那么阐明该行有键被按下,否那么阐明无键被按下。该行有键被按下,否那么阐明无键被按下。假设某行有键被按下,识别键盘哪一列的键被按下假设某行有键被按下,识别键盘哪一列的键被按下(亦亦称之为扫描法称之为扫描法)。逐列置低电平,并置其他各列为高电平。逐列置低电平,并置其他各列为高电平.检查各行线电平的变化。假设行电平变为低电平,那么检查各行线电平的变化。假设行电平变为低电平,那么可确定此行此列交叉点处按键被按下。可确定此行此列交叉点处按键被按下。S3C2410 的的I/O 引见引见S3C24

4、10 有117 个复用功能输入输出端口引脚,这些引脚是:PortA(GPA):32 个输入/输出端口PortB(GPB):11 个输入/输出端口PortC(GPC):16 个输入/输出端口PortD(GPD):16 个输入/输出端口PortE(GPE):16 个输入/输出端口PortF(GPF):8 个输入/输出端口PortG(GPG):16 个输入/输出端口PortH(GPH):11 个输入/输出端口S3C2410 的的I/O 引见引见端口控制阐明端口配置存放器GPACONGPHCON大部分的引脚是复用的,所以必需对于每个引脚要求定义一个功能,端口配置存放器定义了每个引脚的功能。端口数据存放

5、器GPADATGPHDAT假设端口配置成输出端口,数据可以被写到端口数据存放器的对应位,然后经过管脚输出。假设端口配置成输入端口,能从端口数据存放器对应的位中读出管脚上的电平端口上拉存放器GPBUPGPHUP端口上拉存放器控制着每个端口组的上拉存放器的使能或制止,当对应位为0,这个引脚的上拉存放器是允许的,当为1 时,上拉存放器是制止的。MIZI提供的提供的S3C2410.H运用一个运用一个32位的数来表示端口的运用情况。位的数来表示端口的运用情况。方式方式 |上拉上拉 |端口端口 | 端口引脚端口引脚MODE | PULLUP | PORT | OFS不需求本人手动组合,经过宏定义以及不需求

6、本人手动组合,经过宏定义以及SHIFT和和MASK组合。见程序组合。见程序MIZI提供的提供的S3C2410.H端口的表示端口的表示#define PORTA_OFS0#define PORTB_OFS1#define PORTC_OFS2#define PORTD_OFS3#define PORTE_OFS4#define PORTF_OFS5#define PORTG_OFS6#define PORTH_OFS7MIZI提供的提供的S3C2410.H端口引脚的表示端口引脚的表示#define GPIO_A0MAKE_GPIO_NUM(PORTA_OFS, 0)#define GPIO_A1

7、MAKE_GPIO_NUM(PORTA_OFS, 1)#define GPIO_A2MAKE_GPIO_NUM(PORTA_OFS, 2)#define GPIO_A3MAKE_GPIO_NUM(PORTA_OFS, 3)。#define MAKE_GPIO_NUM(p, o)(p GPIO_PORT_SHIFTT) | (o GPIO_OFS_SHIFT)MIZI提供的提供的S3C2410.Hset_gpio_ctrl(x) 功能:配置端口引脚的功能,设置功能:配置端口引脚的功能,设置IO口控制存放器和上口控制存放器和上拉存放器拉存放器用法:用法:set_gpio_ctrl(方式方式|上拉上

8、拉?|IO脚脚) 方式方式|能否上拉能否上拉|IO脚,在脚,在S3C2410.h中都有其定义好的名中都有其定义好的名字。字。 set_gpio_ctrl(GPIO_E11 | GPIO_PULLUP_DIS |GPIO_MODE_OUT);MIZI提供的提供的S3C2410.Hwrite_gpio_bit(x, v) 功能:把端口功能:把端口 对应的端口数据存放器对应的端口数据存放器x位设置为位设置为vwrite_gpio_bit(GPIO_E11, 0); read_gpio_bit(x) 功能:把端口数据存放器功能:把端口数据存放器x位的形状位的形状 读入,函数前往值既读入,函数前往值既是

9、其形状是其形状read_gpio_bit(GPIO_G11); MIZI提供的提供的S3C2410.Hwrite_gpio_reg(x, v) 功能:把端口数据存放器功能:把端口数据存放器x 设置为设置为v read_gpio_reg(x) 功能:读取端口数据存放器功能:读取端口数据存放器x,函数前往值既是其数据,函数前往值既是其数据 键盘的硬件实现键盘的硬件实现4X4 矩阵键盘矩阵键盘四个输入引脚:四个输入引脚: EINT0 -( GPF0 )-INPUT EINT2 -( GPF2 )-INPUT EINT11-( GPG3 )-INPUT EINT19-( GPG11 )-INPUT 四

10、个输出引脚:四个输出引脚: KEYSCAN0-( GPE11 )-OUTPUT KEYSCAN1-( GPG6 )-OUTPUT KEYSCAN2-( GPE13 )-OUTPUT KEYSCAN3-( GPG2 )-OUTPUT键盘的驱动实现引入构造体引入构造体key_info对按键进展描画对按键进展描画static struct key_info int irq_no; /外部中断号外部中断号unsigned int gpio_port; /输入端口,输入端口,EINTunsigned int gpio_port_kscan; /输出端口,输出端口,OUTPUTint key_no; /按

11、键序号,或者名字按键序号,或者名字 key_info_tab16 = 键盘初始化程序static int _init matrix4_buttons_init(void)注册字符设备注册字符设备 register_chrdev();初始化按键对应的输出端口初始化按键对应的输出端口 buttons_io_port_init();采用中断机制,注册中断号采用中断机制,注册中断号 request_irqs();键盘初始化程序/* 初始化初始化kscan口为输出口为输出0 */static void buttons_io_port_init(void)int i;for(i=0; i sizeof k

12、scan / sizeof kscan1; i+) set_gpio_ctrl(kscani | GPIO_PULLUP_DIS | GPIO_MODE_OUT);write_gpio_bit(kscani, 0);恳求注册中断恳求注册中断static int request_irqs(void)for (i = 0; i 运用中断个数运用中断个数; i+) 设置与外部中断号相对应的设置与外部中断号相对应的GPIO端口以及方式端口以及方式恳求中断号,并注册中断呼应函数。恳求中断号,并注册中断呼应函数。 键盘驱动的卸载函数键盘驱动的卸载函数static void _exit matrix4_bu

13、ttons_exit(void)释放中断释放中断 free_irqs();注销字符设备注销字符设备unregister_chrdev();按键中断处置按键中断处置 buttons_irqstatic void buttons_irq(int irq, void *dev_id, struct pt_regs *reg)设置设置GPIO为输入形状为输入形状 键盘扫描键盘扫描唤醒按键等待队列的进程唤醒按键等待队列的进程重新设置重新设置GPIO为输出为输出重新设置中断重新设置中断经过延时去键盘抖动经过延时去键盘抖动理想的情况下,当按键被按下时,I/O口电平被拉低,即逻辑0,当按键松开时,为逻辑1。但实践机械的触点动作与微处置器快速的执行速度不匹配,导致开关被按下或松开时产生抖动,好像弹簧一样,不能立刻产生稳定的0或1。 常用的去抖动方法有硬件和软件两种,硬件可采用单稳态触发起、高通滤波器等硬件实现,但该方法普通要

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论