收藏 分享(赏)

基于单片机的PS2键盘显示系统设计.doc

上传人:微传9988 文档编号:2491024 上传时间:2018-09-18 格式:DOC 页数:45 大小:1.14MB
下载 相关 举报
基于单片机的PS2键盘显示系统设计.doc_第1页
第1页 / 共45页
基于单片机的PS2键盘显示系统设计.doc_第2页
第2页 / 共45页
基于单片机的PS2键盘显示系统设计.doc_第3页
第3页 / 共45页
基于单片机的PS2键盘显示系统设计.doc_第4页
第4页 / 共45页
基于单片机的PS2键盘显示系统设计.doc_第5页
第5页 / 共45页
点击查看更多>>
资源描述

1、基于单片机的键盘显示系统设计作者姓名:专业名称:指导教师:老师基于单片机的键盘显示系统设计- I -摘要在单片机系统中,经常使用的键盘都是专用键盘。此类键盘为单独设计制作的,成本高、使用硬件连接线多,且可靠性不高,这一状况在那些要求键盘按键较多的应用系统中更为突出。与此相比,在 PC系统中广泛使用 PS2 键盘具有价格低、通用可靠,且使用连接线少(仅使用 2 根信号线) 的特点,并可满足多种系统的要求。因此在单片机系统中应用 PS2 键盘是一种很好的选择。论文在介绍 PS2 协议和 PS2 键盘工作原理与特点的基础上,给出了一个在单片机上实现对 PS2 键盘支持的硬件连接与驱动程序设计方案。该

2、设计实现了在单片机系统中对 PS2 键盘按键输入的支持。使用Keil C51 开发的驱动程序接口和库函数可以方便地移植到其他单片机或嵌入式系统中。所有程序在 Keil uVision4 上编译通过,在单片机STC89C58RD+上测试通过 PS2 协议。PS2 设备有主从之分,主设备采用 Female 插座,从设备采用 Male插头。现在广泛使用的 PS2 键盘鼠标均在从设备方式下工作。 PS2 接口的时钟与数据线都是集电极开路结构,必须外接上拉电阻(一般上拉电阻设置在主设备中)。主从设备之间数据通信采用双向同步串行方式传输,时钟信号由从设备产生。关键词:单片机 键盘 PS2IIAbstrac

3、tIn the SCM system, the keyboard often used is special keyboard. This kind of keyboard for design and production, alone.It cost is high, use too much connections to the hardware, and reliability is not high. The situation in the application system that the keyboard keys demand more is more outstandi

4、ng. By contrast, in the PC system used the PS2 widely has low price, general keyboard reliable, and use less connections (only use 2 root signal lines) features, and can meet the requirements of various systems. So in the SCM system use the PS2 keyboard is a very good choice.Introduced in the PS2 ag

5、reement and PS2 keyboard operation principle and features, paper is given in a single chip microcomputer to work out the PS2 keyboard support of the hardware connection and driver design implementation. This design is realized that the PS2 keyboard key input be supported in the single-chip microcomp

6、uter system. Use the driver interface and library function that the Keil C51 developed can be easily portable to other SCM or embedded systems. All procedures compiled in Keil uVision4,the PS2 agreement will be tested by STC89C58RD+.PS2 equipment master and slave, the master equipment adopts Female

7、socket, and the slave equipment with Male plugs. Nowaday the PS2 mouse and keyboard used widely are working under way of slave equipment. The clock and data with the PS2 interface are both open collector structure, must pull on the external resistance(the external resistance set in the main equipmen

8、t generally). The data communication between master-slave equipment use the bidirectional synchronous serial mode to transfer,the clock signal produced from the slave equipment.Keywords: SCM ,keyboard, PS2基于单片机的键盘显示系统设计- III -目录摘要 IAbstract .II目录 .III前言 .11.整体方案设计 21.1 方案论证 .21.2 方案比较 .32.单元模块设计 42.

9、1 PS2 键盘模块设计 42.2 单片机模块设计 .82.3 LCD 显示模块设计 143.驱动程序设计 173.1 单片机与键盘间 PS2 通信的程序设计 .183.2 键盘扫描码转换程序设计 .193.3 LCD 显示程序设计 .214.应用软件的简介 22结论 .23致谢 .24参考文献 .25附录 1:电路总图 26附录 2:PCB 图 27附录 3:元件菜单表 28附录 4:软件代码程序 29附录 5:第二套扫描码表 37附录 6:实物图 38基于单片机的键盘显示系统设计-1-前言单片机因其性价比高, 处理能力强, 且抗干扰能力好, 在医疗器械、机电液控制、数据传输等各类工控系统和

10、设备仪器中得到广泛应用。一方面, 在实际应用中 , 单片机经常需要将采集到的数据发送给 PC 机进行处理或保存等; 另一方面 , 工控系统和设备仪器设计, 因环境或软硬件资源的限制, 也往往需要不同的通信接口。比如, 很多工控 PC 机的键盘接口因受恶劣环境不利于键盘的使用而处于闲置状态。因此, 设计一个具有通用性的 PS2 键盘通信接口既方便 PC 机进行外设扩展, 又丰富了单片机的接口资源。单片机与 PC 机常用的数据通信协议为RS - 232 通信协议, 传输数据格式是二进制, 而单片机通过 PS2 键盘协议传输的数据格式是 ASCII 码, 可以直接以常用的文本文件和表格文件的形式进行

11、处理和保存。目前, 单片机采用 PS2 协议进行通信较多的是单片机接收 PS2 键盘设备的数据 , 而以单片机做为键盘与 PC 机通信则较为少见。本文的新颖之处主要表现为:1.本文主要着眼于基于单片机的 PS2 键盘通信模块的实现 , 本模块可通过 RS-232、RS-485 接口(串行通讯接口)或数据总线从其它系统上获取要传给 PC 机的数据。单片机把二进制数据转换成对应的键盘扫描码后上传给 PC 机。本模块只需要简单的软硬件改动(甚至于有时不需要改动) 就可以扩展大部分工控系统和设备仪器的通信功能, 具有较大的通用性。2. 本文比较深入地分析了 PC 机与键盘之间相互通信的时序, 并介绍了

12、 PC 机开机自检时键盘模块需要响应的几个主要命令。3. 本模块在条形码扫描系统中进行了应用测试, 实验证明了本模块具有较好的稳定性和可靠性, 有较广泛的应用范围。21.整体方案设计本设计的整体思路是:利用 PS2 键盘,通过 STC89C58RD+单片机接收 PS2 键盘的键值,并显示在 LCD12864 上。1.1 方案论证设计中采用了三个方案,具体的方案见方案一、方案二和方案三。方案一:普通键盘设计方案采用普通的 4X4 键盘,通过键盘扫描得到键值,有单片机控制并显示在 LCD 上,优点是成本低,设计简单,缺点是键盘扫描效率不够且容易出错。4X4 键盘 STC89C58RD+单片机LCD

13、12864 显示图 1.1 普通键盘整体方案一框图方案二:数码管显示设计方案采用普通的 PS2 键盘,通过键盘扫描得到键值,由单片机控制并显示在数码管上,优点是成本低,设计简单,键盘自动扫描,自动识别,自动编码,有键按下时才发送数据,因此减轻了 CPU 的负担,缺点是数码管显示不直观。PS2 键盘 STC89C58RD单片机数码管显示图 1.2 PS2 键盘整体方案一框图基于单片机的键盘显示系统设计-3-方案三:PS2 键盘方案见图 1.3 利用 PS2 键盘设计,优点是键盘自动扫描,自动识别,自动编码,有键按下时才发送数据,因此减轻了 CPU 的负担,用LCD12864 显示方便直观。PS2

14、 键盘 STC89C58RD 单片机LCD12864显示图 1.3 PS2 键盘整体方案二框图1.2 方案比较由于方案一采用的是 4X4 键盘,设计需要 CPU 不断的扫描键盘,占用了大量的 CPU 资源,方案二利用 PS2 键盘,有键按下时才发送数据,减轻了 CPU 的负担,但是用数码管显示不够直观,交互界面不够好,因此综合方案一和方案二的优点,本设计采用了方案三。42.单元模块设计2.1 PS2 键盘模块设计PC 机广泛采用的 PS2 接口为 mini-DIN 6pin 的连接器,如图 2.1所示。PS2 设备有主从之分,主设备采用 Female 插座,从设备采用Male 插头。现在广泛使

15、用的 PS2 键盘鼠标均在从设备方式下工作。PS2 接口的时钟与数据线都是集电极开路结构 ,必须外接上拉电阻 (一般上拉电阻设置在主设备中)。图 2.1 PS2 连接器左图:Male(插头) 右图:Female (插座)1:数据线(DATA);2:未用;3:电源地(GND);4:电源(+5V);5:时钟(CLK);6:未用。PS2 模块由 PS2 键盘和 PS2 接口组成,利用通信协议对 PS2 键盘进行操作,PS2 通讯协议是一种双向同步串行通讯协议。PS2 键盘连线图如图所示:图 2.2 PS2 键盘连线图基于单片机的键盘显示系统设计-5-电气特性:PS2 通讯协议是一种双向同步串行通讯协

16、议。通讯的两端通过 Clock(时钟脚 )同步,并通过 Data(数据脚)交换数据。任何一方如果想抑制另外一方通讯时,只需要把 Clock(时钟脚)拉到低电平。如果是 PC 机和 PS2 键盘间的通讯,PC 机必须做主机,也就是说,PC 机可以抑制 PS2 键盘发送数据,而 PS2 键盘则不会抑制 PC 机发送数据。一般两设备间传输数据的最大时钟频率是 33Khz,大多数 PS2 设备工作在 1020kHz。推荐值在 15Khz 左右,也就是说, Clock(时钟脚)高、低电平的持续时间都为 40s。每一数据帧包含 1112 个位,发送时序及每一位的含义如图 2.3 所示,与从设备到主设备通信

17、相比,其每帧数据多了一个 ACK 位。PS2 接口操作的时序如下图所示:(a)(b)图 2.3 键盘接口时序图(a) 键盘发送时序;(b) 键盘接收时序当从设备向主设备发送数据时,首先检查时钟线,以确认时钟线是否为高电平。如果是高电平,从设备就可以开始传输数据;反之,从设备要等待获得总线的控制权,才能开始传输数据。传输的每一帧由 11 位组成,发送时序及每一位的含义如图 2.3(a)所示。每一帧数据中开始位总是为 0,数据校验采用奇校验方式,停止位始终为 1。从设备到主设备通信时,从设备总是在时钟线为高时改变数据线状态,主设备在时钟下降沿读入数据线状态。主设备与从设备进行通信时,主设备首先将时

18、钟线和数据线设置6为“请求发送”状态,具体方式为:首先下拉时钟线至少 100us 抑制通信,然后下拉数据线“请求发送”,最后释放时钟线。在此过程中,从设备在不超过 10us 的间隔内必须检查这个状态 ,当设备检测到这个状态时,它将开始产生时钟信号。此时数据传输的每一帧由 12 位构成,其时序和每一位含义如图 2.3(b)所示。与从设备到主设备通信相比,其每帧数据多了一个 ACK 位。这是从设备应答接收到字节的应答位,由从设备通过拉低数据线产生,应答位 ACK 总是为 0。主设备到从设备通信过程中,主设备总是在时钟线为低电平时改变数据线的状态,从设备在时钟上升沿读入数据线状态。PS2 接口通信协

19、议表如下表所示:表 2.4 通信协议表1 个起始位 总是逻辑 08 个数据位 (LSB)低位在前1 个奇偶校验位 奇校验1 个停止位 总是逻辑 11 个应答位 仅用在主机对设备的通讯中表中,如果数据位中 1 的个数为偶数,校验位就为 1;如果数据位中 1 的个数为奇数,校验位就为 0;总之,数据位中 1 的个数加上校验位中 1 的个数总为奇数,因此总进行奇校验。PS2 设备从 PC 机接收一个字节:由于 PS2 设备能提供串行同步时钟,因此,如果 PC 机发送数据,则 PC 机要先把时钟线和数据线置为请求发送的状态。PC 机通过下拉时钟线大于 100s 来抑制通讯,并且通过下拉数据线发出请求发

20、送数据的信号,然后释放时钟。当 PS2 设备检测到需要接收的数据时,它会产生时钟信号并记录下面 8 个数据位和一个停止位。主机此时在时钟线变为低时准备数据到数据线,并在时钟上升沿锁存数据。而 PS2设备则要配合 PC 机才能读到准确的数据。具体连接步骤如下:(1)等待时钟线为高电平。(2)判断数据线是否为低,为高则错误退出,否则继续执行。(3)读地址线上的数据内容,共 8 个 bit,每读完一个位,都应检测基于单片机的键盘显示系统设计-7-时钟线是否被 PC 机拉低,如果被拉低则要中止接收。(4)读地址线上的校验位内容,1 个 bit。(5)读停止位。(6)如果数据线上为 0(即还是低电平)

21、,PS2 设备继续产生时钟,直到接收到 1 且产生出错信号为止(因为停止位是 1,如果 PS2 设备没有读到停止位,则表明此次传输出错)。 (7)输出应答位。(8)检测奇偶校验位,如果校验失败,则产生错误信号以表明此次传输出现错误。(9)延时 45 s,以便 PC 机进行下一次传输。读数据线的步骤如下:(1)延时 20 s;(2)把时钟线拉低;(3)延时 40 s;(4)释放时钟线;(5)延时 20 s;(6)读数据线。下面的步骤可用于发出应答位:(1)延时 15 s;(2)把数据线拉低;(3)延时 5s ;(4)把时钟线拉低;(5)延时 40 s;(6)释放时钟线;(7)延时 5s ;(8)

22、释放数据线。PS2 键盘扫描方式:键盘的处理器如果发现有键被按下释放或按住键盘将发送扫描码的信息包到计算机,扫描码有两种不同的类型:通码和断码,当一个8键被按下或按住就发送通码,当一个键被释放就发送断码,每个按键被分配了唯一的通码和断码,这样主机通过查找唯一的扫描码就可以测定是哪个按键,每个键一整套的通断码组成了扫描码集有三套标准的扫描码集,分别是第一套、第二套、和第三套,所有现代的键盘默认使用第二套扫描码(见附录 5)。虽然多数第二套通码都只有一个字节宽但也有少数扩展按键的通码是两字节或四字节宽这类的通码第一个字节总是为 E0h。正如键按下通码就被发往计算机一样,只要键一释放断码就会被发送,

23、每个键都有它自己唯一的通码,它们也都有唯一的断码,幸运的是你不用总是通过查表来找出按键的断码在通码和断码之间存在着必然的联系,多数第二套断码有两字节长它们的第一个字节是 F0h ,第二个字节是这个键的通码,扩展按键的断码通常有三个字节,它们前两个字节是 E0h,F0h,最后一个字节是这个按键通码的最后一个字节。一个键盘发送值的例子:通码和断码是以什么样的序列发送到你的计算机从而使得字符G 出现在你的字处理软件里的呢因为这是一个大写字母需要发生这样的事件次序按下 Shift 键按下 G 键释放 G 键释放 Shift 键与这些时间相关的扫描码如下 Shift 键的通码 12hG 键的通码 34h

24、 G 键的断码 F0h 34h Shift 键的断码 F0h 12h 因此发送到你的计算机的数据应该是12h 34h F0h 34h F0h 12h2.2 单片机模块设计STC89C51RD+ 系列单片机简介: STC89C51RD+系列单片机是宏晶科技推出的新一代超强抗干扰/高速/ 低功耗的单片机,指令代码完全兼容传统 8051 单片机,12 时钟/机器周期和 6 时钟/机器周期可任意选择,最新的 D 版本内部集 成MAX810 专用复位电路。特点:1.增强型 6 时钟/机器周期,12 时钟/机器周期 8051CPU2.工作电压:5.5V-3.4V(5V 单片机)/3.8V-2.0V(3V

25、单片机) 3.工作频率范围:0-40MHz,相当于普通 8051 的 0-80MHz实际基于单片机的键盘显示系统设计-9-工作频率可达 48MHz 4.用户应用程序空间 4K/8K/ 13K/16K/20K/32K/64 字节 5.片上集成 1280 字节/512 字节 RAM6.通用 I/O 口(32/36 个) ,复位后为:P1/P2/P3/P4 是准双向口/弱上拉( 普通 8051 传统 I/O 口),P0 口是开漏输出,作为总线扩展用时,不用加上拉电阻,作为 I/O 口用时,需加上拉电阻。 7.ISP(在系统可编程)IAP(在应用可编程),无需专用编程器/ 仿真器,可通过串口(P3.0

26、/P3.1) 直接下载用户程序, 8K 程序 3 秒即可完成一片 8.EPROM 功能 9.看门狗 10.内部集成 MAX810 专用复位电路(D 版本才有),外部晶体 20M以下时,可省外部复位电路 11.共 3 个 16 位定时器/计数器,其中定时器 0 还可以当成 2 个 8位定时器使用 12.外部中断 4 路,下降沿中断或低电平触发中断,Power Down模式可由外部中断低电平触发中断方式唤醒 13.通用异步串行口(UART),还可用定时器软件实现多个 UART 14.工作温度范围:0-75C/-40- +85 C15.封装:LQFP-44,PDIP-40,PLCC-44 ,PQFP

27、-44,如选择STC89 系列,请优先选择 LQFP-44 封装单片机的引脚图:10图 2.5 STC89C58RD+引脚图STC89C58RD+系列单片机的理由:加密性强, 无法解密;超强抗干扰:1 、高抗静电(E S D 保护)2 、轻松过 2KV/4KV 快速脉冲干扰(EFT 测试)3 、宽电压,不怕电源抖动4 、宽温度范围,-40855 、I / O 口经过特殊处理6 、单片机内部的电源供电系统经过特殊处理7 、单片机内部的时钟电路经过特殊处理基于单片机的键盘显示系统设计-11-8 、单片机内部的复位电路经过特殊处理9 、单片机内部的看门狗电路经过特殊处理三大降低单片机时钟对外部电磁辐

28、射的措施:1 、禁止 A L E 输出;2 、如选 6 时钟/ 机器周期,外部时钟频率可降一半;3 、单片机时钟振荡器增益可设为 1/2gain。超低功耗:1 、掉电模式: 典型功耗 0.1 A2 、空闲模式: 典型功耗 2mA3 、正常工作模式: 典型功耗 4mA - 7mA4 、掉电模式可由外部中断唤醒,适用于电池供电系统,如水表、气表、便携设备等。在系统可编程, 无需编程器, 可远程升级;可送 STC-ISP 下载编程器 ,1 万片/ 人/ 天;可供应内部集成 MAX810 专用复位电路的单片机,只有 D 版本才有内部集成专用复位电路,原复位电路可以保留,也可以不用,不用时 RESET

29、脚直接短到地。最小系统包括单片机,电源,复位电路,时钟电路。单片机接收PS2 键盘的键值,并控制 LCD 的显示。其系统框图如下图所示:12接收 PS2 键值盘STC89C58RD+单片机LCD 显示USB 供电复位电路和时钟电路图 2.6 单片机控制系统框图STC89C58RD+单片机有 4X8 个 IO 口,其中 P0 口需外接上拉电阻,因此本次设计采用 P3 口作为 PS2 接口(sbit psdata=P30;sbit psclk=P32;), P0 口作为与 12864 的接口,其电路图如下图所示:基于单片机的键盘显示系统设计-13-图 2.7 单片机连接图时钟电路和复位电路:图 2

30、.8 时钟电路和复位电路图14USB 供电:图 2.9 USB 供电图2.3 LCD 显示模块设计LCD12864 具有功耗低、体积小、重量轻、超薄等许多其他显示器无法比拟的优点,近几年来被广泛用于单片机控制的智能仪器、仪表和低功耗电子产品中。LCD 可分为段位式 LCD、字符式 LCD 和点阵式 LCD。其中,段位式 LCD 和字符式 LCD 只能用于字符和数字的简单显示,不能满足图形曲线和汉字显示的要求;而点阵式 LCD 不仅可以显示字符、数字,还可以显示各种图形、曲线及汉字,并且可以实现屏幕上下左右滚动、动画功能、分区开窗口、反转、闪烁等功能,用途十分广泛。LCD12864 每屏可显示

31、4 行 8 列共 32 个 1616 点阵的汉字,每个显示 RAM 可显示 1 个中文字符或 2 个 168 点阵全高 ASCII 码字符,即每屏最多可实现 32 个中文字符或 64 个 ASCII 码字符的显示。LCD12864 内部提供 1282 字节的字符显示 RAM 缓冲区(DDRAM)字符显示是通过将字符显示编码写入该字符显 示 RAM 实现的。根据写入内容的不同,可分别在液晶屏上显示 CGROM(中文字库)、HCGROM(ASCII 码字库) 及 CGRAM(自定义字形 )的内容。三种不同字符/ 字型的选择编码范围为:00000006H(其代码分别是 0000、0002、0004、

32、0006 共 4 个)显示自定义字型,02H7FH 显示半宽 ASCII 码字符,A1A0HF7FFH 显示 8192 种 GB2312 中文字库字基于单片机的键盘显示系统设计-15-形。字符 显示 RAM 在液晶模块中的地址 80H9FH。字符显示的RAM 的地址与 32 个字符显示区域有着一一对应的关系,其对应关系如下表所示。表 2.10 LCD 位码表本论文介绍了点阵式液晶显示器 LCD12864 与单片机的接口及编程的方法,一般 12864 有除了 VDD 逻辑电源(正)和 VSS 逻辑电源(负)外,主要的控制脚还有片选引脚 CSA、CSB、数据 指令选择引脚 D/I、读 写选择引脚

33、R/W、读写使能引脚 E、数据输入输出引脚D0-D7。LCD12864 采用 8 位并行数据传输,其操作时序如下表所示:表 2.11 LCD 工作模式表状态 输入 输出读状态 RS=L,RW=H,E=H D0D7=状态字写指令 RS=L,RW=L,D0D7=指令码,E=高脉冲 无读数据 RS=H,RW=H,E=H D0D7=数据写数据 RS=H,RW=L,D0D7=数据, E=高脉冲 无LCD12864 接口由 8 位数据线,电源地电源正,液晶显示偏压信号(VL ),数据命令选择端(RS),读写选择端( R/W)组成。其接口信号说明如下表所示:表 2.12 接口信号说明表编号 符号 引脚说明

34、编号 符号 引脚说明1 VSS 电源地 9 D2 Data I/O2 VDD 电源正极 10 D3 Data I/O3 VL 液晶显示偏压信号 11 D4 Data I/O4 RS 数据/命令选择端(H/L) 12 D5 Data I/O5 R/W 读写选择端(H/L) 13 D6 Data I/O6 E 使能信号 14 D7 Data I/O7 D0 Data I/O 15 BLA 背光源正极8 D1 Data I/O 16 BLK 背光源负极sbit rs=P10; /LCD 使能信号,下降沿有效;sbit rw=P11; /LCD 数据、指令寄存器;16sbit e=P12; /LCD

35、读、写操作;LCD12864 电路图如下图所示:图 2.13 LCD 电路图基于单片机的键盘显示系统设计-17-3.驱动程序设计驱动程序的开发使用 C 语言以及 Keil uVision4 编程环境。PS2 键盘驱动程序主要任务是实现单片机与键盘间 PS2 通信,同时将接收到的按键扫描码转换为该按键的键值,提供给系统上层软件使用。程序整体设计框图如下:开始初始化键盘、LCD接收键值LCD12864上显示处理键值图 3.1 程序整体设计框图183.1 单片机与键盘间 PS2 通信的程序设计首先初始化 IO 口和键盘、LCD12864,然后接收按键的键值,并通过 8 位串行传输方式传送给 LCD1

36、2864 显示。在 PS2 通信过程中,主设备( 文中是单片机) 是在时钟信号为低时发送和接收数据信号。因为单片机向键盘发送的是指令,需要键盘回应,所以这部分程序采用查询方式;而单片机接收键盘数据时,数据线上的信号在时钟为低时已经稳定,所以这部分程序采用中断方式,且不需要在程序中加入延时程序。单片机与键盘间 PS2 通信的主要程序代码如下:void write_com(uchar com) /写指令 rw=0;rs=0;delay_50us(1);P0=com;e=1;delay_50us(10);e=0;delay_50us(2);/void write_dat(uchar dat) /写数

37、据rw=0;rs=1;delay_50us(1);P0=dat;e=1;delay_50us(10);e=0;delay_50us(2);基于单片机的键盘显示系统设计-19-3.2 键盘扫描码转换程序设计按照 PS2 键盘协议操作,键盘按下时发送通码,弹起时发送断码,在单片机中,将接收到的码值与第二套扫描码比较,得出键值(第二套扫描码表见 附录 5)。由于键盘扫描码无规律可循,因此由键盘扫描码获得相应按键的键值(字符键为其 ASCII 值,控制键如 F1,Ctrl 等为自定义值), 只能通过查表的方式获得。由于按键的 3 种类型及部分按键对应着两个键值( 如 A 键的键值根据 Caps 和 S

38、hift 键状态有 0x41(A)和0x61(a)两种) ,因此综合考虑查表转换速度和资源消耗,设计中使用 4个键盘表:键盘扫描码转换基本集和切换集(kb_plain_mapNR_KEYS与 kb_shift_mapNR_KEYS);包含 E0 前缀的键盘扫描码转换基本集和切换集(kbeO_plain_mapNR_KEYS与 kbe0_shiftmapNR_KEYS)。PS2 104 键盘按键扫描码最大值为 0x83,所以设置 NR_KEYS 为 132。所有 4 个键盘表的定义均为如下形式:KB_MAPMAKE CODE=KEYVAL,如果扫描码对应的按键为空(如 KB_MAP0x00),则

39、定义相应键值为 NULL_KEY(0x00)。键盘扫描码转换的主要程序:switch(ps_key0) /严格地说应该是 switch(ps_key0+ps_key2+ps_key3+ps_keyi)这里只用到第一类所以. case 0x00: break;case 0x58: count1=0; flag=0; goto loop; break;case 0x76: write_com(0x01);count=0; break; /清除显示case 0x1c: ps2_key_display(0,flag); break;case 0x32: ps2_key_display(1,flag);

40、 break;case 0x21: ps2_key_display(2,flag); break;case 0x23: ps2_key_display(3,flag); break;case 0x24: ps2_key_display(4,flag); break;case 0x2b: ps2_key_display(5,flag); break;case 0x34: ps2_key_display(6,flag); break;case 0x33: ps2_key_display(7,flag); break;case 0x43: ps2_key_display(8,flag); break

41、;20case 0x3b: ps2_key_display(9,flag); break;case 0x42: ps2_key_display(10,flag); break;case 0x4b: ps2_key_display(11,flag); break;case 0x3a: ps2_key_display(12,flag); break;case 0x31: ps2_key_display(13,flag); break;case 0x44: ps2_key_display(14,flag); break;case 0x4d: ps2_key_display(15,flag); bre

42、ak;case 0x15: ps2_key_display(16,flag); break;case 0x2d: ps2_key_display(17,flag); break;case 0x1b: ps2_key_display(18,flag); break;case 0x2c: ps2_key_display(19,flag); break;case 0x3c: ps2_key_display(20,flag); break;case 0x2a: ps2_key_display(21,flag); break;case 0x1d: ps2_key_display(22,flag); br

43、eak;case 0x22: ps2_key_display(23,flag); break;case 0x35: ps2_key_display(24,flag); break;case 0x1a: ps2_key_display(25,flag); break;case 0x45: ps2_key_display(26,flag); break;case 0x16: ps2_key_display(27,flag); break;case 0x1e: ps2_key_display(28,flag); break;case 0x26: ps2_key_display(29,flag); b

44、reak;case 0x25: ps2_key_display(30,flag); break;case 0x2e: ps2_key_display(31,flag); break;case 0x36: ps2_key_display(32,flag); break;case 0x3d: ps2_key_display(33,flag); break;case 0x3e: ps2_key_display(34,flag); break;case 0x46: ps2_key_display(35,flag); break;case 0x0e: ps2_key_display(36,flag);

45、break;case 0x4e: ps2_key_display(37,flag); break;case 0x55: ps2_key_display(38,flag); break;case 0x5d: ps2_key_display(39,flag); break;default: break;基于单片机的键盘显示系统设计-21-3.3 LCD 显示程序设计首先初始化 LCD12864 端口和寄存器,然后接收单片机传送的数据,通过 12864 写操作时序显示接收到的数据。初始化 LCD12864 端口和寄存器的程序:sbit rs=P10; /LCD 使能信号,下降沿有效sbit rw=P

46、11; /LCD 数据、指令寄存器sbit e=P12; /LCD 读、写操作LCD 显示的主要程序:void ps2_key_display(uchar ps_i100,bit flag1 )count+;if(count=17)write_com(0x90);if(count=33)write_com(0x88);if(count=49)write_com(0x98);if(count=65) write_com(0x01);write_com(0x80);count=0; if(flag1)write_dat(ps2_key_disps_i100);elsewrite_dat(ps2_k

47、ey_dis1ps_i100);ps_key0=0x00;224.应用软件的简介Keil 的简介Keil 软件是目前最流行开发 51 单片机的软件设计之一,提供了 C编辑器,宏汇编,连接器,库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成的开发环境将这些部分组合在一起。我们通过 keil 软件编写的汇编源程序或者 C 语言源程序需要变为可执行代码的扩展名为 HEX 的二进制文件机器码才能在 CPU 等微处理器上执行。Protel 99SE 的简介Protel 99SE 是应用于 Windows9X/2000/NT 操作系统下的 EDA 设计软件,采用设计库管理模式,可以进行联

48、网设计,具有很强的数据交换能力和开放性及 3D 模拟功能,是一个 32 位的设计软件,可以完成电路原理图设计,印制电路板设计和可编程逻辑器件设计等工作,可以设计 32 个信号层,16 个电源-地层和 16 个机加工层。电路工程设计部分(1)电路原理设计部分(Advanced Schematic 99):电路原理图设计部分包括电路图编辑器(简称 SCH 编辑器)、电路图零件库编辑器(简称 Schlib 编辑器)和各种文本编辑器。本系统的主要功能是:绘制、修改和编辑电路原理图;更新和修改电路图零件库;查看和编辑有关电路图和零件库的各种报表。(2)印刷电路板设计系统(Advanced PCB 99)

49、:印刷电路板设计系统包括印刷电路板编辑器(简称 PCB 编辑器)、零件封装编辑器(简称PCBLib 编辑器) 和电路板组件管理器。本系统的主要功能是:绘制、修改和编辑电路板;更新和修改零件封装;管理电路板组件。(3)自动布线系统(Advanced Route 99):本系统包含一个基于形状(Shape-based)的无栅格自动布线器,用于印刷电路板的自动布线,以实现 PCB 设计的自动化。基于单片机的键盘显示系统设计-23-结论随着计算机工业的发展,作为计算机最常用输入设备的键盘也日新月异。IBM 推出 PS2 键盘接口标准。该标准定义了 84101 键,采用 6 脚 mini-DIN 连接器,用双向串行通讯协议并且提供有可选择的第

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

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

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报