- 1、本文档共71页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章 FPGA在微机工程中实践应用 9.1 键盘接口设计9.2 LED驱动器设计9.3 D/A接口设计9.4 A/D接口设计 教学目标了解键盘接口原理及设计方法理解LED驱动器设计原理理解和掌握D/A接口设计的主要内容理解和掌握A/D接口设计的主要内容教学重点理解LED驱动器设计理解和掌握D/A接口设计的主要内容理解和掌握A/D接口设计的主要内容9.1键盘接口设计键盘工作原理 键盘是由一组规则排列的按键组成,一个按键实际上是一个开关元件,它是微型计算机最常用的输入设备。微机键盘通常使用机械触点式按键开关,其主要功能是把机械上的通断转换为电气上的逻辑关系。也就是说,它能提供标准的TTL逻辑电平,以便与通用数字系统的逻辑电平相容。 去抖动措施在触点抖动期间检测按键的通与断状态,可能导致判断出错。即按键一次按下或释放被错误地认为是多次操作,这种情况是不允许出现的。为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施,可从硬件、软件两方面予以考虑。硬件去抖动措施:在键数较少时,可采用硬件去抖软件去抖动措施: 当键数较多时采用软件去抖。矩阵式键盘的结构及原理 该类型键盘由行线和列线组成,按键位于行、列线的交叉点上。由图9-2可知,一个4×4的行、列结构可以构成一个含有16个按键的键盘,但是只占用8个I/O口线,因此,矩阵式键盘较之独立式按键键盘可以节省很多I/O口。 图9-2矩阵式键盘按键的识别 识别按键的方法很多,其中,最常见的方法是扫描法。以下是以8号键的识别为例来介绍扫描法:8号键按下时,第2行一定为低电平,然而,第2行为低电平时,能否肯定是8号键按下呢?回答是否定的,因为9、10、11号键按下同样使第2行为低电平。 接下页为进一步确定具体键,不能使所有列线在同一时刻都处在低电平,可在某一时刻只让一条列线处于低电平,其余列线均处于高电平,另一时刻,让下一列处在低电平,依此循环,这种依次轮流每次选通一列的工作方式称为键盘扫描。采用键盘扫描后,再来观察8号键按下时的工作过程,当第0列处于低电平时,第2行处于低电平,而第1、2、3列处于低电平时,第2行却处在高电平,由此可判定按下的键应是第2行与第0列的交叉点,即8号键。 键盘的编码对于矩阵式键盘,按键的位置由行号和列号唯一确定,因此可分别对行号和列号进行二进制编码,然后将两值合成一个字节,高4位是行号,低4位是列号。如图9.2中的8号键,它位于第2行,第0列,因此,其键盘编码应为20H。采用上述编码对于不同行的键离散性较大,不利于散转指令对按键进行处理。因此,可采用依次排列键号的方式对安排进行编码。以图9-2中的4×4键盘为例,可将键号编码为:01H、02H、03H…0EH、0FH、10H等16个键号。编码相互转换可通过计算或查表的方法实现。矩阵式按键FPGA描述 键盘接口顶层模块 library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity key is Port ( clk : in std_logic; keyin : in std_logic_vector(3 downto 0); keyvalue : out std_logic_vector(3 downto 0); keypressed : out std_logic; keydrv : inout std_logic_vector(3 downto 0));end key;architecture Behavioral of key is接下页component keyscan port( clk_scan: in std_logic; --扫描时钟key_drv: out std_logic_vector(3 downto 0)--扫描信号);end component; component clkgen port( clk : in std_logic; clk_scan : out std_logic);end component; 接下页component keydecoderport( key_in: in std_logic_vector(3 downto 0); --键盘输入 key_drv: in std_logic_vector(3 downto 0);--键盘输出 clk: in std_logic; --全局时钟 clk_scan: in std_logic;--扫描时钟keyvalue: out std_logic_vector(3 downto 0);--键盘的键值key_pressed: out std_logic);e
您可能关注的文档
最近下载
- 程序设计语言的形式语义习题答案解析.pdf
- 3.1.1+植物的根能吸收水和无机盐课件2024-2025学年济南版生物七年级下册.pptx VIP
- 2024年湖南环境生物职业技术学院单招职业技能测试题库及答案解析.docx VIP
- icu早期康复治疗课件.pptx
- GB50028和GB55009燃气应用部分详细解读PPT.pptx
- 中考历史复习高频考点归类复习提纲(含5套卷).pdf
- 四年级计算题大全(列竖式计算-可打印).pdf
- 2020年陕西科技大学招聘辅导员试题及答案.docx
- 聚丙烯塑料的改性及应用.pdf VIP
- (苏教版)数学三年级上册寒假作业计算题“天天练”习题卡,含30份题组,附参考答案.doc
文档评论(0)