EDA课程设计-键盘驱动程序

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

键盘驱动程序键盘驱动程序摘要键盘上的每一个键都有两个唯一的数值进行标志。为什么要用两个数值而不是一个数值呢?这是因为一个键可以被按下,也可以被释放。当一个键按下时,它们产生一个唯一的数值,当一个键被释放时,它也会产生一个唯一的数值,我们把这些数值都保存在一张表里面,到时候通过查表就可以知道是哪一个键被敲击,并且可以知道它是被按下还是被释放了。这些数值在系统中被称为键盘扫描码。本课程设计目的旨在使用Altera公司的EP2C35系列的FPGA芯片,利用SOPC-NIOSII-EP2C35开发板PS2键盘接口等资源,实现一个键盘驱动程序。以达到外接键盘按键的选择、8位动态七段数码管实现按键扫描码显示和16*16点阵实现按键字符显示的目的。关键词:键盘;扫描码;数码管键盘驱动程序目录1绪论-------------------------------------------------------------------------------------------12系统设计-------------------------------------------------------------------------------------22.1总体设计-------------------------------------------------------------------------------22.2八位七段数码管显示模块----------------------------------------------------------32.316*16点阵显示模块-----------------------------------------------------------------42.4键盘扫描模块-------------------------------------------------------------------------52.5动态扫描模块-------------------------------------------------------------------------73程序设计-------------------------------------------------------------------------------------93.1流程-------------------------------------------------------------------------------------93.2八位七段数码管显示程序----------------------------------------------------------93.316*16点阵显示程序----------------------------------------------------------------103.4键盘扫描程序------------------------------------------------------------------------113.5动态扫描程序------------------------------------------------------------------------114总结------------------------------------------------------------------------------------------124.1遇到的问题及解决------------------------------------------------------------------124.2扩展设想------------------------------------------------------------------------------124.3心得与体会---------------------------------------------------------------------------13参考文献-----------------------------------------------------------------------------------------14附录-----------------------------------------------------------------------------------------------15附录A八位七段数码管显示程序----------------------------------------------------15附录B16*16点阵显示程序-----------------------------------------------------------18附录C键盘扫描程序-------------------------------------------------------------------28附录D动态扫描程序-------------------------------------------------------------------30附录E总电路图-------------------------------------------------------------------------32键盘驱动程序第1页(共32页)1绪论EDA是电子设计自动化(ElectronicDesignAutomation)的缩写,在20世纪60年代中期从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。本课程设计目的旨在使用Altera公司的EP2C35系列的FPGA芯片,利用SOPC-NIOSII-EP2C35开发板PS2键盘接口等资源,实现一个键盘驱动程序。以达到外接键盘按键的选择、8位动态七段数码管实现按键扫描码显示和16*16点阵实现按键字符显示的目的。利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。键盘驱动程序第2页(共32页)2系统设计VHDL语言是一种用于电路设计的高级语言。它在80年代的后期出现。最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言。VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了它成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。本文利用模块化思想将整个设计分为八位七段数码管显示、16*16点阵显示和键盘扫描等模块,以达到键盘扫描码的显示。2.1总体设计在本课程设计中要求利用外接键盘实现键盘按键的选择,在8位动态七段数码管上实现按键扫描码的显示,在16*16点阵上实现按键字符的显示。设计中采用模块化,用键盘扫描输出端作为数据总线来对整个程序控制,各模块共一个系统时钟,数字信号源模块的时钟选择为1MHZPS2键盘采用是键盘内部的时钟。其总体设计如下图2.1所示。键盘驱动程序第3页(共32页)图2.1系统总体设计2.2八位七段数码管显示模块八位七段数码管是电子开发过程中常用的输出显示设备。在实验系统中使用的是两个四位一体、共阴极型七段数码管。由于七段数码管公共端连接到GND(共阴极型),当数码管的中的那一个段被输入高电平,则相应的这一段被点亮。反之则不亮。共阳极性的数码管与之相么。四位一体的七段数码管在单个静态数码管的基础上加入了用于选择哪一位数码管的位选信号端口。八个数码管的a、b、c、d、e、f、g、h、dp都连在了一起,8个数码管分别由各自的位选信号来控制,被选通的数码管显示数据,其余关闭。其单个静态数码管如下图2.2所示,数码管显示模块的电路原理如图2.3所示。图2.2静态七段数码管键盘驱动程序第4页(共32页)图2.3数码管显示电路原理2.316*16点阵显示模块16*16点阵由此256个LED通过排列组合而形成16行*16列的一个矩阵式的LED阵列,俗称16*16点阵。单个的LED的电路如下图2.4所示。图2.4单个LED电路图由上图可知,对于单个LED的电路图当Rn输入一个高电平,同时Cn输入一个低电平时,电路形成一个回路,LED发光。也就是LED点阵对应的这个点被点亮。16*16点阵也就是由16行和16列的LED组成,其中每一行的所有16个LED的Rn端并联在一起,每一列的所有16个LED的Cn端并联在一起。通过给Rn输入一个高电平,也就相当于给这一列所有LED输入了一个高电平,这时只要某个LED的Cn端输入一个低电平时,对应的LED就会被点亮。具体的电路如下图2.5所示。图2.516*16点阵电路原理图键盘驱动程序第5页(共32页)16*16点阵的电路原理在前面已经做了详尽的说明,在此实验中,16*16点阵由4个8*8点阵组成,考虑到LED电流功耗与FPGA电流功耗的关系,在实验的电路中加入驱动电路。具体电路如下图2.6所示。图2.616*16点阵电路图2.4键盘扫描模块PS2通信协议是一种双向同步串行通迅协议。通迅的两端通过CLOCK(时钟信号端)同步,并通过DATA(数据端口)交换数据。任何一方如果想要抑制另外一方的通迅时,只需要把CLOCK拉到低电平。PS2控制接口仅使用到两条传输端口,一为频率端口,另一则为数据端口如图2.7所示,且此传输埠必为三态(Tri-State)并具有双向(bidirectional)特性。PS2传输产品上,常见为鼠标与键盘,两者的驱动原理均相同,仅扫描码(scancode)不同。因此我们以PS2键盘为例进行说明。Male(Plug)Female(Socket)6-pinMini-DIN(PS2):1-Data2-NotImplemented3-Ground4-Vcc(+5V)5-Clock6-NotImplem

1 / 34
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功