键盘接口

2024-09-29

键盘接口(共5篇)

键盘接口 篇1

一、引言

1.通过动态扫描来判断是否有键按下。

2.将键值转换成对应的ASCII码值。

3.在时钟脉冲的作用实现串行数据的接收与发送。

二、设计方案分析

1.动态扫描原理。 (1) 依次使列线scan0—scan7输出0电平, 检查行线retn0—retn7的电平状态。如果行线retn0—retn7的电平全为高电平, 表示没键按下。如果retn0—retn7上的电平不全为高电平, 表示有键按下。 (2) 如果没键按下, 就返回扫描。有键按下则进行逐行扫描, 找出闭合键的键号。其过程是:先使scan0=0, scan1—scan7=1, 检测retn0—retn7上的电平, 如果retn=0, 则表示第一行第一列的键被按下, 如果retn1=0, 则表示第二行第二列的键被按下, 其他依次类推;如果retn0—retn7均不为0, 则表示这一列没键按下;然后再使s c a n 1=0, 检测第二列按键, 这样一直循环下去, 知道把闭合的键找到为止。

当有键按下时, 根据该时刻的scan值和retn值就可判断按下的是哪一个键。

2.芯片内部模块框图

三、模块设计

1.数据接收模块框图

该模块实现对串行数据的接收记数和串并变换的控制功能。

reset复位输入端;clk时钟输入端;r x d串行数据接收端;led[2..0]输出按下键对应的ASCII码值的低三位去驱动发光二极管。

串行数据接收控制单元:将串行数据接收计数器设置位一个6位计数器, 高4位为sh_r, 低2位为sl_r, 利用该计数器的状态实现串行数据的同步控制和记数控制。

串并转换电路单元:从RXD端接收的串行数据进经过串并变换后, 将其低三位经LED输出端输出, 驱动发光二极管LED0, LED1, LED2发光, 从而显示接收端RXD的每个数据的低三位。当每个数据的低三位相同时, 显示状态就不变化, 否则就出现闪烁现象, 以此来检查芯片的工作情况。

2.行编码, 列记数译码模块框图

该模块实现行输入数据的编码、列扫描信号的记数、列值的译码功能。

行编码电路单元:正常工作时, 列扫描信号s a n c按列扫描, 如果扫描到只有一个按键按下时, 则相应的行扫描信号从rent0至rent7输入行编码电路, 经过编码后的3位行编码信号由renc0至renc3输出;当由两个键同时按下时, 行号低的位具有高优先级, 优先编码;如果没有按键按下则rent=11111111.

列扫描记数电路单元:列记数器为一个6位计数器, 对列扫描进行状态和记数控制;该计数器由行输入信号r e t n控制, 当retn="11111111"时, 即没有按键按下时, 列计数器对列扫描循环记数, 进行加1操作;一旦有键按下, 则记数输出信号scnt被锁定为该时刻的记数值并保持不变, 经译码后形成列扫描输出信号scan。

3.发送模块框图

该模块实现对发送计数器状态, 以及记数的控制, 将键值转换成对应的ASCII码并发送的功能。

根据是否有键按下来决定是否启动发送计数器。当有键按下时, 发送计数器被启动记数, 然后将此时retn和scan的状态通过查表转换变成该键对应的ASCII码发送出去, 但只有当按键离开以后才能进入下一个数据的发送准备状态。

摘要:本设计是用VHDL语言来实现的基于RS232按位串行通信总线的行列式矩阵键盘接口电路, 具有复位和串行数据的接收与发送功能, 根据发光二极管led0—led2的显示状态可判断芯片的工作情况;实现所有电路功能的程序均是在美国ALTERA公司生产的具有现场可编程功能的芯片EPM7128SLC84-15上调试通过的。该电路的设计贴近生活, 实用性强, 制成芯片后可作为一般的PC机键盘与主机的接口使用。

关键词:CPLD,VHDL,键盘接口

参考文献

[1]邢立军:微型计算机接口技术.机械工业出版社.2004.8

[2]周志光:单片机技术与应用.中南大学出版社.2005.8

[3]房小翠:单片微型计算机与机电接口技术.国防工业出版社2002.3

键盘接口 篇2

(2)如果键盘、鼠标正常,说明不是键盘、鼠标的问题,接下来拿一个好的键盘、鼠标接到故障电脑中检测键盘、鼠标是否能使用,如果能使用,说明是键盘、鼠标不兼容,如果不能使用,则可能是主板的键盘、鼠标接口接触不良,仔细检查接口是否有虚焊等故障。

(3)如果不是键盘、鼠标故障或接触不良故障,则是主板键盘、鼠标接口电路故障。接着测量键盘、鼠标接口的供电引脚对地阻值是否为180~380欧,如果不是,则是供电线路中的跳线帽没有插好或跳线连接的保险电阻或电感损坏造成的,更换损坏的元器件即可,

(4)如果跳线对地阻值为180~380欧,说明键盘、鼠标电路供电部分正常,接着检测电路中数据线和时钟线的对地阻值(正常为600欧左右,且数据线和时钟线的阻值相差不能大于5欧))。如果对地阻值不正常,接着检查键盘、鼠标电路中连接的上拉电阻和滤波电容是否损坏,如果损坏,更换损坏的元器件即可。

(5)如果上拉电阻和滤波电容正常,接着检测电路中连接的电感是否正常,如果电感不正常,更换损坏的电感。

用AVR单片机设计无线键盘接口 篇3

个人计算机早已走入千家万户, 成为工作、生活不可或缺的组成部分。但种类繁多的计算机接口线, 如电源线、显示器线、打印机电缆、网线、音箱线、鼠标线、键盘线以及各种各样的USB接口线, 常常计算机的后面凌乱不堪。随着无线技术的迅速发展, 计算机的各种附属设备也有无线化的趋势。其中最典型的是无线键盘和无线鼠标。当前的大部分无线键盘采用红外技术实现键盘与计算机之间的通信, 将其最大作用距离限制在2米以内。本文设计了一种以单片机为核心的、利用无线射频技术的无线键盘接口, 可以有效克服红外接口无线键盘作用距离短的问题。

2、AVR单片机特点

AVR单片机吸取了PIC及8051等系列单片机的优点, 同时在内部结构上还作了一些重大改进, 其主要的优点如下:

(1) 内嵌高质量的Flash程序存储器, 可反复擦写, 支持ISP和IAP, 便于产品的调试、开发、生产、更新。

内嵌长寿命的EEPROM, 可长期保存关键数据, 避免断电丢失。片内大容量的RAM不仅能满足一般场合的使用, 同时也更有效的支持使用高级语言开发系统程序。

(2) 高速度、低功耗, 具有SLEEP (休眠) 功能。

AVR的一条指令执行速度可达50ns (20MHz) , 而耗电则在1uA~2.5mA间。AVR采用Harvard结构, 以及一级流水线的预取指令功能, 即对程序的读取和数据的操作使用不同的数据总线, 因此, 当执行某一指令时, 下一指令被预先从程序存储器中取出, 这使得指令可以在每一个时钟周期内被执行。

(3) 外设丰富。

AVR单片机包含的外设有I2C、SPI、EEP-ROM、RTC、看门狗定时器、ADC、PWM和片内振荡器等, 可以真正做到单片。

(4) 抗干扰性好。

有看门狗定时器 (WDT) 安全保护, 可防止程序走飞, 提高产品的抗干扰能力。此外, 电源抗干扰能也很强。

(5) 高度保密。

可多次烧写的Flash且具有多重密码保护锁定 (LOCK) 功能, 因此可低价快速完成产品商品化, 且可多次更改程序 (产品升级) , 方便了系统调试, 而且不必浪费IC或电路板, 大大提高了产品质量及竞争力。

(6) 驱动能力强。

具有大电流10~20mA (输出电流) 或40mA (吸电流) 的特点, 可直接驱动LED、SSR或继电器。

(7) 低功耗。

具有6种休眠功能, 能够从低功耗模式迅速唤醒。

(8) 超功能精简指令。

具有32个通用工作寄存器 (相当于8051中的32个累加器) , 克服了单一累加器数据处理造成的瓶颈现象。片内含有128-4K字节SRAM, 可灵活使用指令运算, 适合使用功能很强的C语言编程, 易学、易写、易移植。

(9) 中断向量丰富。

34个中断源, 不同中断向量入口地址不一样, 可快速响应中断。

(10) 可靠性高。

AVR单片机内部有电源上电启动计数器, 当系统RESET复位上电后, 利用内部的RC看门狗定时器, 可延迟MCU正式开始读取指令执行程序的时间。这种延时启动的特性, 可使MCU在系统电源、外部电路达到稳定后再正式开始执行程序, 提高了系统工作的可靠性, 同时也可节省外加的复位延时电路。此外, 内置的电源上电复位 (POR) 和电源掉电检测 (BOD) , 也有效提高了单片机的可靠性。

3、总体设计

无线键盘的总体组成框图如图1所示。系统主要由一个常规的102键ps/2键盘, 两个AVR单片机, 一个433.92MHz的发射装置和一个433.92MHz的接收装置构成。其中AVR单片机选用的是ATmega32。

由图可以看出, 无线键盘主要由两部分组成:键盘端和计算机端。在键盘端, 一片ATmega32单片机一头连接键盘, 另一头连接着射频发射装置。键盘与单片机及单片机与射频发射装置之间的通信都通过单片机内置的UART接口来完成。在计算机端, 另一片ATmega32单片机与射频接收装置及计算机相连。接收装置与单片机及单片机与计算机之间的通信同样是利用单片机内置的UART接口来完成。

4、硬件设计

4.1 计算机端电路

计算机端的硬件电路如图2所示。计算机通过6针微型标准接头与单片机相连, 并为单片机和射频接收装置供电。时钟线与单片机PORTA口的第5个引脚相连, 数据线则与PORTA口的第4个引脚相连。这些引脚设置为带上拉电阻的输入端口, 以保证空闲时时钟线与数据线都能被拉到高电平。PORTA口的第7个引脚串接一个510Ω的电阻与时钟线相连, PORTA口的第6个引脚串接另一个510Ω的电阻与数据线相连。这样就可以分别用PORTA口的第7引脚和第6引脚将时钟线与数据线下拉到低电平, 而不必将第5和第4引脚短接到地以避免端口引脚的烧毁。射频接收装置采用的是Radiotronix的RCR-433-RP产品, 该设备接收从无线键盘发送过来的信息, 然后将其通过单片机的RXD发送到单片机。

4.2 键盘端电路

键盘端的硬件电路如图3所示。键盘通过6针微型标准插座与单片机连接。键盘数据线与单片机PORTD的第7个引脚相连。时钟线则与单片机的第17个引脚相连, 也即是说时钟线连接的是单片机的外部中断1端口。时钟线信号出现下降沿时触发单片机的外部中断, 键盘将1位数据发送到单片机。然后单片机通过UART的TXD引脚将这位数据发送到射频发射装置。发射装置采用的是Radiotronix公司的RCT-433-AS, 该装置将从单片机接收的数据发送到计算机端。

5、软件设计

5.1 计算机端软件

计算机端的单片机软件主要完成从UART口接收数据。数据以字节为单位发送。在每个字节数据之前, 有一串值为0xAA的初始化字节流。这样接收装置可以自动调节增益以便更好地处理输入数据。在初始化的字节流后面是0xFF字节, 这表明下一个字节将是有效的数据字节。由于单片机利用UART从接收装置处接收数据, 因此要不断有规律地查询UART检查是否新接收到数据。单片机利用如图4所示的状态机对所接收的数据进行解码。

5.2 键盘端软件

键盘端单片机软件主要完成两项任务:一是从键盘读取数据;二是将数据发送到发射装置。当敲击键盘时, 键盘首先要在时钟线上产生一个时钟信号, 同时将数据送到数据线。一旦时钟信号变低, 单片机响应中断, 从数据线上读取1字节数据。为了充分利用接收装置的自动增益控制功能以更准确地读取数据, 在每个字节之前有11字节的值为0xAA的初始化字节流及1字节的0xFF。此外, 还利用定时器2跟踪数据发送的时间, 如果超过25毫秒数据还没有发送成功, 那么单片机控制发射装置不断地循环发送0xAA, 0xFF, 0xAA, 0xFF。这样接收

6、结束语

本文简单介绍了AVR单片机的主要特点, 并以ATmega32单片机为核心设计了一个无线键盘接口。该接口主要由两个ATmega32单片机, 一个射频发射装置和一个射频接收装置构成。给出了完整的硬件电路, 并介绍了软件的基本工作过程。该接口与普通的ps/2键盘相连即构成一个无线键盘。这种无线键盘能有效克服普通红外无线键盘作用距离比较短的缺点。

摘要:AVR单片机是ATMEL公司研发的增强型内置Flash的RISC高速8位单片机。本文利用AVR单片机设计了一个无线键盘接口。该接口一端连接计算机, 另一端连接普通的ps/2键盘, 通过发射射频信号实现键盘与计算机之间的无线通信, 有效克服了红外接口作用距离太短的问题。

关键词:单片机,AVR,无线键盘

参考文献

[1]、马潮, AVR单片机嵌入式原理与应用实践, 北京航空航天大学出版社, 2007

[2]、杨正忠耿德根, AVR单片机应用开发指南及实例精解, 中国电力出版社, 2008

键盘接口 篇4

随着数字集成电路制造工艺的发展,可编程逻辑器件密度越来越高,单片FPGA的规模可达上千万门,逐渐成为嵌入式系统设计的核心器件。将电子系统的核心模块设计成IP核,嵌入到FP-GA中,无论是在减小系统体积、降低系统功耗,还

是提高系统可靠性方面都具有明显的优势,同时还能提高开发效率,降低产品成本。

1 键盘IP设计原理

笔者设计基于FPGA的4×4矩阵式键盘(图1)接口IP核。键盘接口IP核的总体设计思想基于矩阵式键盘扫描原理。IP核的结构主要由分频器(division_even)和键盘扫描状态机(keyboard_scan_machine_state)两个模块组成,如图2所示。其中分频器用于将系统时钟(sys_clk)降低到键盘IP核所要求时钟周期范围内。键盘扫描状态机是IP核设计的核心,有键按下时在键盘时钟(key_clk)的作用下,循环输出列线扫描码C3~C0并接收行线R3~R0信号检测按键位置,设置键盘状态标志(n KEY)并输出四位按键编码KeyCode[3..0]。

2 分频器设计

由于扫描状态机对时钟频率无严格要求,故扫描周期设计为20ms,有利于消除按键抖动,提高按键检测的可靠性。当系统时钟为50MHz时,采用偶分频器实现106分频即可得到20ms的时钟信号。其核心Verilog代码为:

3 键盘扫描状态机设计

键盘扫描状态机是IP核设计的核心,当有键按下时启动扫描状态机检测按键位置,输出按键编码并设置键盘状态信号有效,供微处理器或控制器以查询或中断方式读取按键值。扫描状态机定义了NO_KEY_PRESSED(无键按下)、SCAN_C0(扫描第0列)、SCAN_C1(扫描第1列)、SCAN_C2(扫描第2列)、SCAN_C3(扫描第3列)和KEY_PRESSED(有键按下)6个状态。在没有键按下时状态机处于NO_KEY_PRESSED状态,键盘状态信号nKEY无效。有键按下时状态机进入SCAN_C0、SCAN_C1、SCAN_C2和SCAN_C3进行循环扫描,寻找按键位置。确定按键位置后进入KEY_PRESSED状态,输出按键编码keycode并设置键盘状态信号n KEY有效。扫描状态机采用标准三段式进行描述,由时序进程、逻辑进程、同步输出和按键编码4个模块组成。

时序进程用来描述在时钟脉冲的作用下现态(curr_state)和次态(next_state)的转换关系,其核心代码为:

逻辑进程根据现态和行线信号ROW[3..0]的值确定状态机的次态。为了与外接矩阵键盘在时序上满足状态机检测要求,逻辑进程设计成时序逻辑电路,其状态转换图如图3所示。

输出进程功能见表1,在时钟脉冲作用下,根据次态给C[3..0]赋值,为下一个状态检测提供列线信号,并设置相应的键盘状态信号n KEY。

检测到按键位置时,状态机进入KEY_PRESSED状态,同时键盘编码模块根据列扫描码和行扫描码的值按表2所示编码逻辑输出键值,同时设置键盘状态标志n KEY有效,以便微处理以查询或中断方式读取键盘编码。

4 仿真与测试

分频器和扫描状态机设计完成后,在Quartus II开发环境中按图2所示的原理框图设计顶层原理图,建立仿真波形文件进行仿真,键盘扫描状态机的仿真结果如图4所示。从图4中可以看出,IP核能够正确地检测出按键位置,给出相应的按键编码。

完成引脚锁定后,将IP核重新综合下载到FPGA中,与图1所示的键盘电路相接,测试键盘接口IP核功能正确,满足设计要求。

5 结束语

键盘接口 篇5

随着科技的不断进度与发展, 嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一, 像常见到的手机、PDA、机顶盒、高清电视 (HDTV) 、路由器、汽车电子、智能家电、医疗仪器、航天航空设备等都是典型的嵌入式系统。

嵌入式系统中人机交互技术最为重要, WINCE和LINUX系统比较流行, 然而这两种系统的驱动开发门槛较高, 尤其对于特殊的矩阵键盘而言, 实现基于USB接口的控制电路具有一定的难度。本文设计了一种基于STM32的可定制的USB键盘控制电路, 比一般的专用的USB键盘接口芯片更加简单方便, 利用软件的可以进行灵活的修改, 大大的提高矩阵键盘的通用性。

1 方案比较

传统方案:标准的PC104键盘大多采用专用的USB键盘芯片 (如MC178-04B) , 其价格便宜而被广泛运用, 但是其接口比较固定, 不利于开发者自己定制, 例如按键连发、多键识别 (A, E同时按下) 等特定的功能需求, 传统方案的缺陷就慢慢的凸显出来了。

本文设计的方案:运用带USB接口功能的MCU (STM32F103ZET芯片) 制作USB HID设备, 根据矩阵键盘设计键码扫描程序, 可以完美的解决类似于上面的需求, 同时STM32的芯片的性价比高、开发简单, 适合一般的嵌入式开发工程师。

2 系统的硬件设计 (图1)

系统总共分为5部分:系统供电部分, JTAG调试接口, 矩阵键盘模块, USB从设备接口, STM32F103ZET芯片内部包含AD模块, 为了能够使系统能够正常运行, 尽管AD模块未使用, 设计时应给予相应正常供电, 使引脚VREF+、VDDA接VCC, 引脚VREF-、VSSA接GND, 否则系统不能正常运行。

2.1 电源部分

系统供电部分采用LT1117三端可调线性稳压芯片, 输出电流可达800m A, 采用SOT-223封装以减小空间, 输入端和输出端分别接入100n F和10u F电容进行滤波降低电压纹波, 最终使电压稳定到3.3V。

2.2 USB模块接口电路设计 (图2)

根据USB1.1官方协议可知, USB为主从设备区分是有硬件电路实现的, USB HID设备属于从设备, USB上拉电压接在D+线上, 所以本设计USB实现全速通讯。当开关开启时, 嵌入式系统就能自动开始枚举该USB设备。

2.3 矩阵键盘接口设计

传统的矩阵的键盘识别方法为扫描法和线反转法, 只能识别单个按键, 硬件电路设计如图3所示:

由上图可知当双按键按下时产生了线与逻辑冲突, 对该设计进行改进, 采用行线为开漏输出, 列线上有10K的上拉电阻, 当双按键按下时1和0线与产生0, 这样有效的识别了双按键, 如图4所示:

3 软件设计要点

3.1 USB键盘配置

USB通信协议中涉及了大量的描述符等相关信息其中包括设备描述符, 配置描述符, 接口描述符, HID描述符等, 在STM32的库文件中给出了相关的框架hw_config.c usb_desc.c usb_istr.c usb_prop.c usb_pwr.c嵌入式开发者进行相关的框架填写便可进行正确的USB通信, USB键盘相关配置如下:

3.2多按键键盘识别

由于需要多按键识别处理, 使用全键盘扫描另外再添加了横向多按键处理, 纵向多按键处理, 处理步骤如下所示:

则说明为单按键按下直接发送相关字符;

否则, dat&0XFF00!=0XFF00则说明为双按键按下, 分别对数据的每一位进行处理判断在哪一位为0说明在那一列当中有按键按下, 同时与行输出相结合从而有效的识别出了相关多按键按下;

(4) 从按键映射表中找到相关的字符键码, 利用USB_Send Char () 接口函数与主机设备进行通信。

4 结论

本文提出的基于USB接口的矩阵键盘控制接口电路, 与传统键盘方案进行了比较, 其可定制的特点具有更大的灵活性。针对矩阵键盘多按键的特殊需求, 对基本按键提出了改进的方法, 对应多按键的识别上, 提出了合理的解决步骤。在嵌入式系操作系统如WINCE、LINUX上有较高的通用性和灵活性, 对于有外接4X4、8X8等矩阵键盘, 手机键盘等, 具有一定的实用价值。

参考文献

[1]李小琦, 汪红.基于嵌入式Linux的USB键盘驱动设计[J].科技资讯, 2009 (19) :97-98.

[2]李丽宏, 郝志刚.嵌入式Linux的USB驱动设计[J].电子设计工程.2011 (11) :170173.

[3]张淼, 赵冒童.基于STM32F103RBT6芯片的USB键盘设计与实现[J]..福建电脑.2014.

上一篇:环境保护制度论文下一篇:外周浅静脉穿刺法