版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式键盘驱动矩阵式键盘原理矩阵式键盘一般适用于按键数量较多的场合,它由行线和列线组成,按键位于行、列的交叉点上。如图所示,一个4×4的行、列结构可以构成一个有16个按键的键盘。S3C2410的I/O介绍S3C2410有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介绍端口控制说明端口配置寄存器(GPACON――GPHCON) 大部分的引脚是复用的,所以必须对于每个引脚要求定义一个功能,端口配置寄存器定义了每个引脚的功能。端口数据寄存器(GPADAT――GPHDAT) 如果端口配置成输出端口,数据能够被写到端口数据寄存器的对应位,然后通过管脚输出。如果端口配置成输入端口,能从端口数据寄存器对应的位中读出管脚上的电平端口上拉寄存器(GPBUP――GPHUP) 端口上拉寄存器控制着每个端口组的上拉寄存器的使能或禁止,当对应位为0,这个引脚的上拉寄存器是允许的,当为1时,上拉寄存器是禁止的。MIZI提供的S3C2410.H使用一个32位的数来表示端口的使用情况。模式|上拉|端口|端口引脚MODE|PULLUP|PORT|OFS不需要自己手动组合,通过宏定义以及SHIFT和MASK组合。见程序MIZI提供的S3C2410.H端口的表示#definePORTA_OFS 0#definePORTB_OFS 1#definePORTC_OFS 2#definePORTD_OFS 3#definePORTE_OFS 4#definePORTF_OFS 5#definePORTG_OFS 6#definePORTH_OFS 7MIZI提供的S3C2410.H端口引脚的表示#defineGPIO_A0 MAKE_GPIO_NUM(PORTA_OFS,0)#defineGPIO_A1 MAKE_GPIO_NUM(PORTA_OFS,1)#defineGPIO_A2 MAKE_GPIO_NUM(PORTA_OFS,2)#defineGPIO_A3 MAKE_GPIO_NUM(PORTA_OFS,3)。。。#defineMAKE_GPIO_NUM(p,o) ((p<<GPIO_PORT_SHIFTT)|(o<<GPIO_OFS_SHIFT))MIZI提供的S3C2410.Hset_gpio_ctrl(x)
功能:配置端口引脚的功能,设置IO口控制寄存器和上拉寄存器用法:set_gpio_ctrl(模式|上拉?|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位的状态读入,函数返回值既是其状态read_gpio_bit(GPIO_G11);MIZI提供的S3C2410.Hwrite_gpio_reg(x,v)功能:把端口数据寄存器x设置为vread_gpio_reg(x)
功能:读取端口数据寄存器x,函数返回值既是其数据键盘的硬件实现键盘的硬件实现4X4矩阵键盘四个输入引脚: EINT0-----(GPF0)----INPUT EINT2-----(GPF2)----INPUT EINT11-----(GPG3)----INPUT EINT19-----(GPG11)----INPUT四个输出引脚: KEYSCAN0---(GPE11)----OUTPUT KEYSCAN1---(GPG6)----OUTPUT KEYSCAN2---(GPE13)----OUTPUT KEYSCAN3---(GPG2)----OUTPUT键盘的驱动实现引入结构体key_info对按键进行描述staticstructkey_info{ intirq_no;//外部中断号 unsignedintgpio_port;//输入端口,EINT unsignedintgpio_port_kscan;//输出端口,OUTPUT intkey_no;//按键序号,或者名字}key_info_tab[16]={ ……}键盘初始化程序staticint__initmatrix4_buttons_init(void){ 注册字符设备register_chrdev(……); 初始化按键对应的输出端口buttons_io_port_init(); 采用中断机制,注册中断号request_irqs();}键盘初始化程序/*初始化kscan口为输出0*/staticvoidbuttons_io_port_init(void){ inti; for(i=0;i<sizeofkscan/sizeofkscan[1];i++){
set_gpio_ctrl(kscan[i]|GPIO_PULLUP_DIS|GPIO_MODE_OUT); write_gpio_bit(kscan[i],0); }}请求注册中断staticintrequest_irqs(void){ for(i=0;i<使用中断个数;i++){
设置与外部中断号相对应的GPIO端口以及模式
请求中断号,并注册中断响应函数。 }}键盘驱动的卸载函数staticvoid__exitmatrix4_buttons_exit(void){ 释放中断free_irqs(…); 注销字符设备unregister_chrdev(…);}按键中断处理buttons_irqstaticvoidbuttons_irq(intirq,void*dev_id,structpt_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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年3月广西玉林市陆川县城镇公益性岗位人员招聘5人备考题库含答案详解【培优】
- 2026四川德阳市就业创业促进中心市本级公益性岗位招聘1人备考题库及答案详解【网校专用】
- 施工项目总结与经验分享方案
- 2026新疆八一钢铁集团有限公司冶金铸造吊行车工社会化招聘16人备考题库附答案详解(精练)
- 施工人员岗位技能提升方案
- 2026江西赣州市就业创业服务中心招募青年见习1人备考题库含答案详解(达标题)
- 施工人员技能认证管理方案
- 2026河南郑外集团郑开学校附中教师招聘1人备考题库带答案详解(培优a卷)
- 蒙牛2026届春季校园招聘备考题库【必考】附答案详解
- 施工现场人员意见收集与处理方案
- 管理会计学 第10版 课件 第3章 本-量-利分析
- Unit 3 Zhong Nanshan- Part B(小学英语教学)闽教版英语五年级下册
- 消防维保方案(消防维保服务)(技术标)
- 车辆交通危险点分析预控措施
- QC成果提高SBS防水卷材铺贴质量一次合格率
- 大舜号海难事故案例分析
- TGRM 057.1-2023 非煤岩岩爆倾向性评价规范 第1部分:室内指标测定及等级分类
- 2023年安徽新闻出版职业技术学院单招考试职业技能考试模拟试题及答案解析
- LY/T 2271-2014造林树种与造林模式数据库结构规范
- GB/T 6554-2003电气绝缘用树脂基反应复合物第2部分:试验方法电气用涂敷粉末方法
- GB/T 19409-2013水(地)源热泵机组
评论
0/150
提交评论