bate2000的个人空间 https://blog.eetop.cn/bate [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

VOD视频点播系统(三)

已有 1572 次阅读| 2008-3-27 16:54 |个人分类:VOD

S3C2410平台的嵌入式linux阵式键盘驱动程序

Ø矩阵式键盘一般适用于按键数量较多的场合,它由行线和列线组成,按键位于行、列的交叉点上。

Ø如图所示,一个4×4的行、列结构可以构成一个有16个按键的键盘。

矩阵式键盘原理

Ø按键设置在行、列交叉点上,行、列分别连接到按键开关的两端。行线通过上拉电阻接到十5 V上。

Ø平时无按键动作时,行线处于高电平状态;而当有健按下时,行线电平状态将由通过此按键的列线电平决定:列线电平如果为低,行线电平为低;列线电平如果为高,则行线电平亦为高。这一点是识别矩阵式键盘是否被按下的关键所在。

 

矩阵式键盘原理

Ø矩阵键盘按键的识别方法分两步进行:

Ø①识别键盘哪一行的键被按下。让所有列线均为低电平,检查各行线电平是否为低。如果有行线为低,则说明该行有键被按下,否则说明无键被按下。

Ø②如果某行有键被按下,识别键盘哪一列的键被按下(亦称之为扫描法)。逐列置低电平,并置其余各列为高电平.检查各行线电平的变化。如果行电平变为低电平,则可确定此行此列交叉点处按键被按下。

 

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 个输入/输出端口

 

Ø端口控制说明

Ø端口配置寄存器(GPACON――GPHCON

       大部分的引脚是复用的,所以必须对于每个引脚要求定义一个功能,端口配置寄存器定义了每个引脚的功能。

Ø端口数据寄存器(GPADAT――GPHDAT

       如果端口配置成输出端口,数据能够被写到端口数据寄存器的对应位,然后通过管脚输出。如果端口配置成输入端口,能从端口数据寄存器对应的位中读出管脚上的电平

Ø端口上拉寄存器(GPBUP――GPHUP

       端口上拉寄存器控制着每个端口组的上拉寄存器的使能或禁止,当对应位为0,这个引脚的上拉寄存器是允许的,当为1 时,上拉寄存器是禁止的。

 

MIZI提供的S3C2410.H

Ø使用一个32位的数来表示端口的使用情况。

Ø模式     |上拉         |端口     | 端口引脚

ØMODE | PULLUP | PORT | OFS

Ø不需要自己手动组合,通过宏定义以及SHIFTMASK组合。见程序

 

Ø端口的表示

Ø#define PORTA_OFS            0

Ø#define PORTB_OFS            1

Ø#define PORTC_OFS            2

Ø#define PORTD_OFS            3

Ø#define PORTE_OFS            4

Ø#define PORTF_OFS            5

Ø#define PORTG_OFS            6

Ø#define PORTH_OFS            7

 

Ø端口引脚的表示

Ø#define GPIO_A0     MAKE_GPIO_NUM(PORTA_OFS, 0)

Ø#define GPIO_A1     MAKE_GPIO_NUM(PORTA_OFS, 1)

Ø#define GPIO_A2     MAKE_GPIO_NUM(PORTA_OFS, 2)

Ø#define GPIO_A3     MAKE_GPIO_NUM(PORTA_OFS, 3)

Ø。。。

Ø#define MAKE_GPIO_NUM(p, o)      ((p << GPIO_PORT_SHIFTT) | (o << GPIO_OFS_SHIFT))

 

Øset_gpio_ctrl(x)    

Ø功能:配置端口引脚的功能,设置IO口控制寄存器和上拉寄存器

Ø用法:set_gpio_ctrl(模式|上拉?|IO)

Ø模式|是否上拉|IO脚,在S3C2410.h中都有其定义好的名字。

Ø

Øset_gpio_ctrl(GPIO_E11 | GPIO_PULLUP_DIS |GPIO_MODE_OUT);

MIZI提供的S3C2410.H

Øwrite_gpio_bit(x, v)

Ø功能:把端口 对应的端口数据寄存器x位设置为v

Øwrite_gpio_bit(GPIO_E11, 0);

 

Øread_gpio_bit(x)    

Ø功能:把端口数据寄存器x位的状态 读入,函数返回值既是其状态

Øread_gpio_bit(GPIO_G11);

MIZI提供的S3C2410.H

Øwrite_gpio_reg(x, v)

Ø功能:把端口数据寄存器x 设置为v

 

 

Øread_gpio_reg(x)    

Ø功能:读取端口数据寄存器x,函数返回值既是其数据

 

键盘的硬件实现

Ø4X4 矩阵键盘

Ø四个输入引脚: 

Ø                  EINT0 -----( GPF0  )----INPUT

Ø                          EINT2 -----( GPF2  )----INPUT

Ø                   EINT11-----( GPG3  )----INPUT

Ø                   EINT19-----( GPG11 )----INPUT     

 

                                                                                       

VOD视频点播系统(三)


点赞

发表评论 评论 (1 个评论)

回复 qiuiori 2008-3-29 11:42
不错

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 0

    获赞
  • 6

    评论
  • 104

    访问数
关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-26 08:22 , Processed in 0.023854 second(s), 15 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部