《嵌入式键盘中断论文》-公开DOC·毕业论文

上传人:zhuma****mei1 文档编号:134639631 上传时间:2020-06-07 格式:DOC 页数:15 大小:394.50KB
返回 下载 相关 举报
《嵌入式键盘中断论文》-公开DOC·毕业论文_第1页
第1页 / 共15页
《嵌入式键盘中断论文》-公开DOC·毕业论文_第2页
第2页 / 共15页
《嵌入式键盘中断论文》-公开DOC·毕业论文_第3页
第3页 / 共15页
《嵌入式键盘中断论文》-公开DOC·毕业论文_第4页
第4页 / 共15页
《嵌入式键盘中断论文》-公开DOC·毕业论文_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《《嵌入式键盘中断论文》-公开DOC·毕业论文》由会员分享,可在线阅读,更多相关《《嵌入式键盘中断论文》-公开DOC·毕业论文(15页珍藏版)》请在金锄头文库上搜索。

1、湘南学院课程设计报告课程名称: 嵌入式系统 设计题目: 键盘驱动 专业班级: 学生姓名: 学生学号: 指导老师: 2013年 12月 23 日 目 录1概述11.1背景11.2设计要求11.3开发环境11.4关键技术12概要设计22.1、软件结构22.2、各功能模块设计22.2.1 S3C2410的I/O介绍.22.2.2 S3C2410中断介绍.32.2.3 按键驱动.43详细设计与实现73.1、界面说明73.2、程序流程83.3、关键代码84测试分析124.1.测试方法124.2 测试用例124.3 测试结果125小结13参考文献13嵌入式 课程设计报告1概述1.1背景许多嵌入式系统,尤其

2、是一些人机交互(HMI)较频繁的嵌入式系统,键盘是一种应用最为广泛的输入设备。由于嵌入式设备的功能互异性,为其提供一种通用性键盘是不可行的,一般都需要根据嵌入式系统的实际功能来设计所需的特殊键盘,并实现相应的驱动程序。在嵌入式设备上扩展键盘的常用方式是通过使用CPU的GPIO端口扫描实现的,显然,这种方式会占用系统的GPIO资源,特别是在GPIO资源比较紧张而按键又较多的系统,这个问题就特别突出。当然,也可以通过外扩GPIO(如8255等)或外扩专用的键盘接口(如8279等)方式实现,但这种方式显然增加了系统的复杂度,在实际系统设计中颇感不便。因此我们将借用嵌入式知识用软件来实现键盘驱动程序。

3、1.2设计要求用户设计行列键盘接口,一般常采用三种方法读取键值。一种是中断式,另外两种是扫描法和发转法。键盘扩展我们将采用SPI接口的键盘显示控制芯片ZLG7289。所包含的功能应该有:硬件中断,按键识别,键值显示。1.3开发环境硬件环境:S3C2410嵌入式开发板,JTAG仿真器。软件环境:PC机操作系统Win98,Win2000或WinXP,ADS1.2集成开发环境,仿真器驱动程序,超级终端驱动程序。1.4关键技术中断式技术的应用,在键盘按下时产生一个外部中断通知 CPU,并由中断处理程序通过不同的地址读取数据线上的状态,判断哪个按键被按下。本实验采用中断式实现用户键盘接口。 中断源向 C

4、PU 发出中断请求,若优先级别最高,CPU 在满足一定的条件下,可以中断当前程序的运行,保护好被中断主程序的断点及现场信息。然后,根据中断源提供的信息,找到中断服务子程序的入口地址,转去执行新的程序段,这就是中断响应。CPU 响应中断是有条件的,如内部允许中断、中断未被屏蔽、当前指令执行完等。CPU 响应中断以后,就会终止当前的程序,转去执行一个中断服务子程序,以完成为相应设备的服务。a.保护现场(由一系列的压栈指令完成)。目的是为了保护那些与主程序中有冲突的寄存器,(如 R0,R1,R2 等),如果中断服务子程序中所使用的寄存器与主程序中所使用的寄存器等没有冲突的话,这一步可以省略。b.中断

5、处理,中断处理程序在检查到相应的中断源后,调用对应的中断处理程序完成。c.恢复现场并返回(由一系列的出栈指令完成)。是与保护现场对应的,但要注意数据恢复的次序,以免混乱。由于中断服务子程序需要打断主程序的执行,因此其处理应该及时完成,较长时间的延时将导致系统性能严重下降。2概要设计2.1、软件结构初始化部分。这部分包括硬件层和软件层上的初始化。在本例中,需要先对矩阵电路和SN74hc164芯片所使用到的GPIO端口作配置,以使CPU可以对它们进行控制和访问。为了要将某个GPIO端口配置成输入输出或者是中断源,需要在对应的GPIO控制寄存器中设置正确的值,具体的值可以通过查阅S3C2410开发板

6、手册来获得。比如,为了将GPB1设置成SN74hc164的输入端,需要将GPBCON这个控制字中2,3两位设置成二进制的01,为了将GPG6设置成电压低跳变中断源,需要将GPGCON中12,13两位设置成二进制的10。在完成了硬件初始化操作以后,就是软件层上的初始化了。首先将键盘中断处理函数注册到系统,然后设置好一个定时器结构,以便在中断发生时将其挂到内核的定时器队列中去,该定时器将触发对键盘的扫描操作。最后通过SN74hc164将矩阵电路的16列置零。2.2、各功能模块设计2.2.1 S3C2410的I/O介绍(1)输入输出端口引脚:PortA(GPA):32个输入/输出端口PortB(GP

7、B):11个输入/输出端口PortC(GPC):16个输入/输出端口PortD(GPD):16个输入/输出端口PortE(GPE):16个输入/输出端口PortF(GPF):8个输入/输出端口PortG(GPG):16个输入/输出端口PortH(GPH):11个输入/输出端口(2)端口控制说明端口配置寄存器(GPACONGPHCON)在S3C2410中,大部分的引脚是复用的,所以必须对于每个引脚要求定义一个功能,端口配置寄存器定义了每个引脚的功能。端口数据寄存器(GPADATGPHDAT)如果端口配置成输出端口,数据能够被写到端口数据寄存器的对应位,然后通过管脚输出。如果端口配置成输入端口,能

8、从端口数据寄存器对应的位中读出管脚上的电平。端口上拉寄存器(GPBUPGPHUP)端口上拉寄存器控制着每个端口组的上拉寄存器的使能或禁止,当对应位为0,这个引脚的上拉寄存器是允许的,当为1时,上拉寄存器是禁止的。2.2.2 S3C2410中断介绍(1)源中断请求寄存器SRCPNDSRCPND寄存器32位中的每一位对应着一个中断源,每一位被设置为1,则相应的中断源产生中断请求并且等待中断被服务。因此,这个寄存器表明了哪个中断源在等待中断请求被处理。注意,SRCPND寄存器的每一位时由中断源自动设置的,而不管INTMSK寄存器中的屏蔽位。另外,SRCPND寄存器不影响中断控制器的优先级逻辑。在指定

9、中断源的中断服务程序中,SRCPND寄存器相对应的位必须被清楚来正确相应来自统一中断源的中断请求。如果从ISR返回而没有清除相应的位,也就是SRCPND寄存器中的对应位还是为1,那么就会一直响应这个中断请求。对应位清楚的时间依赖于用户的需求,如果想要从同一中断源接收另一次有效中断请求,你在第一次就应该清除相应的位,并且使能中断。(2)中断请求寄存器INTPND中断请求寄存器32位中的每一位对应着相应的中断请求,经过优先级逻辑后,INTPND寄存器只能有一位被设置为1,并且向ARM产生中断请求。在IRQ中断服务子程序,能够读取这个寄存器的指来决定32个中断源的那一个中断被服务。同SRCPND寄存

10、器,在中断服务子程序里,这个寄存器的值需要被清除。我们可以向INTPND寄存器写一个数据来清楚寄存器的制定位。(3)外部中断判断寄存器(EINTPND)EINTPND用来判断外部的20个中断源(EINT23:4),用户可以通过向EINTPEND寄存器的相应位写“1”,这样可以清楚该位。2.2.3 按键驱动(1)按键驱动程序流程图图4 按键驱动程序流程图设计行列键盘接口,一般常采用 3 种方法读取键值。一种是中断式,另外两种是扫描法和反转法。我们采用的是中断式。中断式:在键盘按下时产生一个外部中断通知 CPU,并由中断处理程序通过不同的地址读取数据线上的状态,判断哪个按键被按下。本实验采用中断式

11、实现用户键盘接口。中断方式的原理示意图如图5所示:图5 中断处理示意图中断源向 CPU 发出中断请求,若优先级别最高,CPU 在满足一定的条件下,可以中断当前程序的运行,保护好被中断主程序的断点及现场信息。然后,根据中断源提供的信息,找到中断服务子程序的入口地址,转去执行新的程序段,这就是中断响应。CPU 响应中断是有条件的,如内部允许中断、中断未被屏蔽、当前指令执行完等。(2)中断服务子程序CPU 响应中断以后,就会终止当前的程序,转去执行一个中断服务子程序,以完成为相应设备的服务。中断服务子程序的一般结构如下图6所示:图6 中断服务子程序处理流程a.保护现场(由一系列的压栈指令完成)。目的

12、是为了保护那些与主程序中有冲突的寄存器,(如 R0,R1,R2 等),如果中断服务子程序中所使用的寄存器与主程序中所使用的寄存器等没有冲突的话,这一步可以省略。b.中断处理,中断处理程序在检查到相应的中断源后,调用对应的中断处理程序完成。c.恢复现场并返回(由一系列的出栈指令完成)。是与保护现场对应的,但要注意数据恢复的次序,以免混乱。由于中断服务子程序需要打断主程序的执行,因此其处理应该及时完成,较长时间的延时将导致系统性能严重下降。扫描法:对键盘上的某一行送低电平,其它行为高电平,然后读取列值。若列值中有一位是低,则表明该行与低电平对应列的键被按下;否则扫描下一行。反转法:先将所有行扫描线

13、输出低电平,读列值。若列值有一位是低,则表明有键按下;然后所有列扫描线输出低电平,再读行值。根据读到的值组合就可以得到相应的键码。(3)ZLG7289工作原理ZLG7289 可用行线 R0R2 和列线 C0C7 构成矩阵键盘。同时在芯片内部可自动完成扫描、译码、去抖动处理等任务。当 ZLG7289 检测到有效的按键时,按键有效指示“KEY”引脚将从低电平变为高电平,并一直保持到按键代码被读取为止。“KEY”为高电平期间,如果 ZLG7289 接收到“读键盘数据”命令,(即“CS”管脚变低),则输出当前按键的键盘代码,ZLG7289键盘代码的范围为00H-0FH。如果在接收到“读键盘数据”时没有

14、按键按下,ZLG7289 将输出 0xFFH。在一次读键盘过程完成后,按键有效指示“KEY”将变为低电平。利用按键有效指示“KEY”与单片机的外部中断端相连,可完成具有中断的键盘监控功能,从而提高 CPU 的工作效率,减少按键响应时间。ZLG7289工作时需要外接RC振荡电路以供系统工作,RC元件的典型值 R=3.3k,C=20pF,此时的振荡频率约为 4MHz,由于此振荡频率较高,故在印制电路板布线时,所有元件尤其是振荡电路的元件应尽量靠近芯片,并尽量使电路连线最短。ZLG7289 的 RESET 复位端在一般应用情况下,可以直接与正电源连接,在需要较高可靠性的情况下,可以连接外部 RC 复

15、位电路,在上电或接收到 RESET 端的复位信号后,ZLG7289 大约需要经过 25ms 的复位时间才会进入到正常工作状态。程序中应尽可能地减少 CPU 对 ZLG7289 的访问次数,以提高程序的效率。值得注意的是,如果有 2 个键同时被按下,则 ZLG7289 只能给出其中一个按键的代码,因此 ZLG7289 不适合应用于需要 2 个或 2 个以上按键同时被按下的应用场合。如确实需要双键组合使用或组合增加键盘数量,可在单片机的某 I/O 脚接入一键与 ZLG7289 共同组双键键盘监控电路。串行接口及时序ZLG7289采用串行方式与单片机或微处理器接口,串行数据从“DIO”引脚输出,并由“CLK”端发出同步时钟脉冲。当ZLG7

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 毕业论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号