西华大学课程设计说明书
PS2键盘在单片机上的应用
摘 要:在嵌入式PC应用系统中,作为人机交互设备的键盘,往往采用结构简单按
键少的矩阵键盘。标准键盘虽然能直接与嵌入式PC机的PS/2接口相连,但是体积大,按键多,不能满足需求,本文提出用一种ATC52单片机实现具有标准PS/2接口的矩阵键盘,具有便捷,实用的特点。
关键词:PS/2接口,PS/2键盘,拨号键,ATC52,LCD1602
Abstract: PS/2 interface is one of the most useful mouse interface.It was IBM’s patent named osulum before. It is the dedicate interface of mouse and keyboard. This text implied a plan using PS/2 to make a system. PS/2 tansmit the data which was pressed, and ATC52 receive it ,disposed it and transmit it to Lcd1602. Lcd1602 discover it to make us know which key has been pressed. PS/2 simulate a phone’s dial keyboard. This system’s feature is the circuit is sample and useful.
Keywords: PS/2 keyboard, ATC52, LCD1602,PS/2 interface,dial keyboard
西华大学课程设计说明书
目录
1、前言 ....................................................................... 1 2、整体方案设计 ............................................................. 2 2.1 方案论证................................................................. 2 2.2 方案比较................................................................. 3 3、单元模块设计 ............................................................. 4 3.1 PS2键盘模块 ............................................................. 4 3.2 单片机模块............................................................... 6 3.3 LCD显示模块 ............................................................. 7 4 、软件设计 ................................................................. 9 5、系统技术指标及精度和误差分析 ............................................. 10 6 、结论 .................................................................... 11 7、设计小结 ................................................................ 12 8、致谢 .................................................................... 14 9、参考文献 ................................................................ 14 附录1:电路总图 ............................................................ 15 附录2:仿真图 .............................................................. 16 附录3:软件代码 ............................................................ 17
第 I 页
西华大学课程设计说明书
1、 前言
单片机因其性价比高, 处理能力强, 且抗干扰能力好, 在医疗器械、机电液控制、数据传输等各类工控系统和设备仪器中得到广泛应用。一方面, 在实际应用中, 单片机经常需要将采集到的数据发送给PC机进行处理或保存等; 另一方面, 工控系统和设备仪器设计, 因环境或软硬件资源的, 也往往需要不同的通信接口。比如, 很多工控PC机的键盘接口因受恶劣环境不利于键盘的使用而处于闲置状态。因此, 设计一个具有通用性的PS/2键盘通信接口既方便PC机进行外设扩展, 又丰富了单片机的接口资源。单片机与PC机常用的数据通信协议为RS - 232通信协议, 传输数据格式是二进制, 而单片机通过PS/2键盘协议传输的数据格式是ASC II码, 可以直接以常用的文本文件和表格文件的形式进行处理和保存。目前, 单片机采用PS/2协议进行通信较多的是单片机接收PS/2键盘设备的数据, 而以单片机做为键盘与PC机通信则较为少见。本文的新颖之处主要表现为:
1.本文主要着眼于基于单片机的PS/2键盘通信模块的实现, 本模块可通过RS -232、RS - 485接口或数据总线从其它系统上获取要传给PC机的数据。单片机把二进制数据转换成对应的键盘扫描码后上传给PC机。本模块只需要简单的软硬件改动(甚至于有时不需要改动) 就可以扩展大部分工控系统和设备仪器的通信功能, 具有较大的通用性。
2. 本文比较深入地分析了PC机与键盘之间相互通信的时序, 并介绍了PC机开机自检时键盘模块需要响应的几个主要命令。
3. 本模块在条形码扫描系统中进行了应用测试, 实验证明了本模块具有较好的稳定性和可靠性, 有较广泛的应用范围。
第 1 页
西华大学课程设计说明书
2 、整体方案设计
本设计的整体思路是:利用PS2键盘,通过ATC52单片机接收PS2键盘的键值,并显示在LCD1602上,PS2键盘模拟电话的拨号键。
2.1 方案论证
设计中采用了三个方案,具体的方案见方案一、方案二和方案三。 方案一:普通键盘设计方案
采用普通的4X4键盘,通过键盘扫描得到键值,有单片机控制并显示在LCD上,优点是成本低,设计简单,缺点是键盘扫描效率不够且容易出错。
4X4键盘 ATC52 单片机 LCD1602 显示
图2.1 普通键盘整体方案一框图
方案二:数码管显示设计方案
采用普通的PS2键盘,通过键盘扫描得到键值,由单片机控制并显示在数码管上,优点是成本低,设计简单,键盘自动扫描,自动识别,自动编码,有键按下时才发送数据,因此减轻了CPU的负担,缺点是数码管显示不直观。
PS2键盘 ATC52 单片机 数码管 显示
图2.2 PS2键盘整体方案一框图
方案三:PS2键盘方案
见图2.2.利用PS2键盘设计,优点是键盘自动扫描,自动识别,自动编码,有键按下时才发送数据,因此减轻了CPU的负担,用LCD1602显示方便直观。
第 2 页
西华大学课程设计说明书
PS2键盘 ATC52 单片机 LCD1602 显示
图2.3 PS2键盘整体方案二框图
2.2 方案比较
由于方案一采用的是4X4键盘,设计需要CPU不断的扫描键盘,占用了大量的CPU资源,方案二利用PS2键盘,有键按下时才发送数据,减轻了CPU的负担,但是用数码管显示不够直观,交互界面不够好,因此综合方案一和方案二的优点,本设计采用了方案三。
第 3 页
西华大学课程设计说明书
3、 单元模块设计
集成温度传感器实际上是一种半导体集成电路,它是利用晶体管的b—e结压降的不饱和值Vbe与热力学温度T和通过。
3.1 PS2键盘模块
PS2模块由PS2键盘和PS2接口组成,利用通信协议对PS2键盘进行操作,PS2通讯协议是一种双向同步串行通讯协议。PS2键盘连线图如图所示:
图3.1 PS2键盘连线图
PS2接口操作时序如下图所示:
图3.2 时序图
PS2接口通信协议表如下表所示:
第 4 页
西华大学课程设计说明书
图3.3 通信协议表
表中,如果数据位中1的个数为偶数,校验位就为1;如果数据位中1的个数为奇数,校验位就为0;总之,数据位中1的个数加上校验位中1的个数总为奇数,因此总进行奇校验。
由于PS/2设备能提供串行同步时钟,因此,如果PC机发送数据,则PC机要先把时钟线和数据线置为请求发送的状态。PC机通过下拉时钟线大于100μs来抑制通讯,并且通过下拉数据线发出请求发送数据的信号,然后释放时钟。当PS/2设备检测到需要接收的数据时,它会产生时钟信号并记录下面8个数据位和一个停止位。主机此时在时钟线变为低时准备数据到数据线,并在时钟上升沿锁存数据。而PS/2设备则要配合PC机才能读到准确的数据。具体连接步骤如下:
(1)等待时钟线为高电平。
(2)判断数据线是否为低,为高则错误退出,否则继续执行。
(3)读地址线上的数据内容,共8个bit,每读完一个位,都应检测时钟线是否被PC机拉低,如果被拉低则要中止接收。 (4)读地址线上的校验位内容,1个bit。 (5)读停止位。
(6)如果数据线上为0(即还是低电平),PS/2设备继续产生时钟,直到接收到1且产生出错信号为止(因为停止位是1,如果PS/2设备没有读到停止位,则表明此次传输出错。 (7) 输出应答位。
(8) 检测奇偶校验位,如果校验失败,则产生错误信号以表明此次传输出现错误。 (9)延时45 μs,以便PC机进行下一次传输。
PS2键盘扫描方式:键盘的处理器如果发现有键被按下释放或按住键盘将发送扫描码的信息包到计算机扫描码有两种不同的类型通码和断码,当一个键被按下或按住就发送通码,当一个键被释放就发送断码,每个按键被分配了唯一的通码和断码,这样主机通过查找唯一的扫描码就可以测定是哪个按键,每个键一整套的通断码组成了扫描码集有三套标准的扫描码集,分别是第一套、第二套、和第三套,所有现代的键盘默认使用第二套扫描码
第 5 页
西华大学课程设计说明书
虽然多数第二套通码都只有一个字节宽但也有少数扩展按键的通码是两字节或四字节宽这类的通码第一个字节总是为E0h
正如键按下通码就被发往计算机一样,只要键一释放断码就会被发送,每个键都有它自己唯一的通码,它们也都有唯一的断码,幸运的是你不用总是通过查表来找出按键的断码在通码和断码之间存在着必然的联系,多数第二套断码有两字节长它们的第一个字节是F0h ,第二个字节是这个键的通码,扩展按键的断码通常有三个字节,它们前两个字节是E0h,F0h ,最后一个字节是这个按键通码的最后一个字节。我在下面列出了几个按键的第二套通码和断码。
3.2 单片机模块
STCC52单片机是Atmel公司生产的单片机,51的内核,具有处理能强、运行速度快、功耗低等优点。最小系统包括单片机,电源,复位电路。单片机接收PS2键盘的键值,并控制LCD的显示。其系统框图如下图所示:
电源供电 接收PS2键值盘 STCATC2 单片机 控制LCD 显示 复位电路
图3.4 单片机控制系统框图
STCC52单片机有4X8个IO口,其中P0口需外接上拉电阻,因此本次设计采用P1口作为PS2接口,P2口作为与LCD1602的接口,其电路图如下图所示:
第 6 页
西华大学课程设计说明书
图3.5 单片机最小系统图
3.3 LCD显示模块
LCD1602采用8位并行数据传输,其操作时序如下图所示:
图3.6 LCD单片机图
LCD1602接口由8位数据线,电源地电源正,液晶显示偏压信号(VL),数据命令选择端(RS),读写选择端(RW)组成。其接口信号说明如下图所示:
第 7 页
西华大学课程设计说明书
图3.7接口信号说明图
可以在1602的液晶显示偏压信号端接一个可变电阻,调节显示亮度,初始状态时,调至1602上面一排显示12个黑块为止,LCD1602电路图如下图所示:
图3.8 LCD电路图
第 8 页
西华大学课程设计说明书
4、 软件设计
1、主程序设计:首先初始化IO口和键盘、LCD1602,然后接收按键的键值,并通过8位并行传输方式传送给LCD1602显示。
2、获取键值程序:按照PS2键盘协议操作,键盘按下时发送通码,弹起时发送断码,在单片机中,将接收到的码字与第二套扫描码比较,得出键值。本次设计共采用12个键,模拟电话的拨号键。
3、LCD显示程序:首先初始化LCD1602端口和寄存器,然后接收单片机传送的数据,通过1602写操作时序显示接收到的数据。
开始 初始化键盘、LCD 接收键值 处理键值 LCD1602 上显示
4.1 程序整体设计框图
第 9 页
西华大学课程设计说明书
5、 系统技术指标及精度和误差分析
随着计算机工业的发展,作为计算机最常用输入设备的键盘也日新月异。IBM推出PS2键盘接口标准。该标准定义了84~101键,采用6脚mini-DIN连接器,用双向串行通讯协议并且提供有可选择的第三套键盘扫描码集,同时支持17个主机到键盘的命令。
本系统利用PS2键盘作为交互接口,操作方便,比普通键盘精度高,在机械键盘中需要考虑键盘去抖的问题,硬件去抖或软件去抖,但是在PS2键盘中不需要考虑键盘去抖,因为PS2键盘采用按键发送通码,弹起发送断码的方式,不易出错。只要将接口连线处理好,单片机处理数据时不出错。
本次设计实现了软件的设计和电路设计和仿真,实现了系统功能,完成了系统设计指标:按下一个键,准确的显示在LCD1602上。
第 10 页
西华大学课程设计说明书
6 、结论
本系统采用第二套键盘扫描码,利用PS2键盘作为输入,准确度比普通键盘高,完成了系统的仿真图,电路图和程序设计,实现了系统的功能。
很多品牌机上采用PS/2口来连接鼠标和键盘。PS/2接口与传统的键盘接口除了在接口外型、引脚有不同外,在数据传送格式上是相同的。现在很多主板用PS/2接口插座连接键盘,传统接口的键盘可以通过PS/2接口转换器连接主板PS/2接口插座。
采用PS2键盘比普通键盘精度更高,使用更方便,USB即插即用,与USB相比,稳定性而言PS2比较好,但它不支持热拔插,因此在使用时需注意不能经常拔掉下PS2键盘。
第 11 页
西华大学课程设计说明书
7、 设计小结
本次设计完成后,在效果上能完全达到原先设计的功能。例如,通过按下按键“1”,能将数值“1”发送到LCD上显示驱动程序经Keil uVision3编译,在ATC52上单片机通过,该模拟键盘接口可以作为一个接口模块嵌入到其他设备仪器和工程控制系统,增加了与PC机的通信途径。在应用和测试结果分析中,该接口模块具有较高的可靠性与稳定性。
由于时间仓促和我们自身水平有限,本设计在功能上也只是完成了一些基本功能,对于电路的可靠性,稳定性等参数还未做过详细的测试。仿真中出现的一些问题,也尚未解决。
第 12 页
西华大学课程设计说明书
8、 致谢
在靳斌老师辛勤指导下,我与小组同学积极讨论和思考,完成本此课程设计,此次设计,使我们受益匪浅。在此我要感谢电气信息学院提供这次课程设计的机会;感谢电气信息学院各位老师的帮助。在这里我要特别感谢靳斌老师,在我们的设计过程中,至始至终都得到了靳斌老师的悉心指导,我们的设计才得以顺利完成。
第 13 页
西华大学课程设计说明书
9、 参考文献
[1] 张培仁.基于 C 语言编程 MCS-51 单片机原理与应用[M]. 北京:清华大学出版社,2003. [2] 杨振江、杜铁军.流行单片机实用子程序及应用实例[M].西安电子科技大学出版社,2002. [3] 蔡美琴、张为民.MCS-51 系列单片机系统及其应用(第二版)[M]. 北京:高等教育出版社,2004. [4] 苏家健.单片机原理及应用技术[M]. 北京:高等教育出版社,2004. [5] C语谭浩强.言程序设计(第三版)[M].北京:清华大学出版社,2005.
第 14 页
西华大学课程设计说明书
附录1:电路总图
图 附录1 电路总图
第 15 页
西华大学课程设计说明书
附录2:仿真图
图 附录2仿真图
第 16 页
西华大学课程设计说明书
附录3:软件代码
main.c:
#include uchar Dis_buffer[12]=\"01234567*#\"; uchar key_flag=0; void main() { uchar loca,key_value=0; Init_1602(); //初始化1602 while(1) { key_value = Get_key(); //键盘扫描 if(key_flag) { lcd_dis(Dis_buffer,key_value,loca++); key_flag=0; //标志位清零 } } } Lcd1602.c: #include void Init_1602(void) //初始化 { Lcd_write_CMD(0x38,0); Lcd_write_CMD(0x38,1); //设置显示模式 Lcd_write_CMD(0x08,1); //显示关闭 第 17 页//显示 西华大学课程设计说明书 Lcd_write_CMD(0x01,1); //清屏 Lcd_write_CMD(0x06,1); //光标从左向右移,文本不移 Lcd_write_CMD(0x0f,1); //显示开 } void delay_ms(UCHAR i) //延时 ms级 { unsigned int j; for(;i>0;i--) for(j=0;j<125;j++) {;} } void Lcd_write_CMD(UCHAR DATA_output,UCHAR If_Check) { if(If_Check) Check_ifbusy(); RS_1602=0; RW_1602=0; DATA_out=DATA_output; E_1602=1; delay_ms(1); E_1602=0; //锁存数据 RS_1602=1; RW_1602=1; } void Check_ifbusy(void) //读状态 { DATA_out=0xff; RS_1602=0; RW_1602=1; E_1602=1; while(DATA_out & 0x80) 第 18 页 //写指令 西华大学课程设计说明书 } { E_1602=0; //这两句protues仿真必须加 E_1602=1; // } E_1602=0; void Lcd_1602_Display(UCHAR *dis_p) //显示 { UCHAR i,len; //定义要放在前面 len=strlen(dis_p); Lcd_Set_XY(0,0); if( len>16) } 第 19 页 { } { } for( i=0;i Lcd_write_DATA(dis_p[i],1); Lcd_Set_XY(0,1); for( i=16;i else 西华大学课程设计说明书 void lcd_dis(UCHAR *dis_p,UCHAR i,UCHAR location) { Lcd_Set_XY(location,0); Lcd_write_DATA(dis_p[i],1); } void Lcd_Set_XY(UCHAR x,UCHAR y) //设置显示的初始坐标 { x &= 0x0f; y &= 0x01; delay_ms(1); if(y) { } else { } void Lcd_write_DATA(UCHAR DATA_output,UCHAR If_Check)//写数据 { if(If_Check)Check_ifbusy(); RS_1602=1; RW_1602=0; DATA_out=DATA_output; E_1602=1; delay_ms(1); E_1602=0; delay_ms(1000); } 第 20 页 Lcd_write_CMD(0X80+0X40+x,1); Lcd_write_CMD(0X80+x,1); } 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- niushuan.com 版权所有 赣ICP备2024042780号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务