基于51单片机的PS2键盘1602显示24c02存储的密码锁设计(附程序)

基于51单片机的PS2键盘密码锁设计
摘 要AT89S52是一种低功耗、高性能CMOS 8位微控制器,具有8K在系统可编程Flash 存储器,被广泛应用于各个领域。LCD1602液晶显示器以其微功耗、体积小、超薄轻巧等诸多优点而备受人们喜爱。本作品是以AT89S52作为主控芯片,LCD1602作为显示器,以 PS2键盘作为输入设备的密码锁。PS2键盘与AT89S52通过PS2接口协议进行通信,可以完成密码设置,密码重置及显示等诸多功能。本作品还使用了24C02存储器来实现密码锁的掉电保存功能。
关键词:AT89S52;LCD1602;24C02;PS2键盘
Abstract: AT89S52 is a low power,high performance CMOS 8 bit microcontroller, with 8K flash memory, is widely applied in various fields. LCD1602 liquid crystalDisplay with its low power consumption, small size, thin lightweight and many other advantages, is liked by people.This work is based on the AT89S52 as the main chip, the LCD1602 as display, PS2 keyboard as an input device of the cipher lock. PS2 keyboard and AT89S52 through PS2 interface protocolFor communication, can complete password, password reset and display and other functions. This work we also used the 24C02 memory to realize the password lock
the power-down save function.
Keywork: AT89C52; LCD1602; 24C02;PS/2 keyboard
1 实验目的及意义
    在单片机系统中,经常使用的键盘都是专用键盘.此类键盘为单独设计制作的,成本高、使用硬件连接线多,且可靠性不高,这一状况在那些要求键盘按键较多的应用系统中更为突出.与此相比,在PC系统中广泛使用PS/2键盘具有价格低、通用可靠,且使用连接线少(仅使用2根信号线)的特点,并可满足多种系统的要求.因此在单片机系统中应用PS/2键盘是一种很好的选择.
    对于单片机初学者的我而言,AT89S52简单易学,非常适合我学习。设计这个作品为了锻炼自己的动手实践能力,并且能够更深入的学习AT89S52。通过这个实验,我不但基本掌握了AT89S52这门知识,同时也为我以后更深入的学习一些复杂的单片机打下坚实的基础。
2 作品的原理
2.1原理框图
2.2单片机模块
图1.AT89S52单片机最小系统
1、单片机引脚说明
XTAL1:单芯片系统时钟的反向放大器输入端。
XTAL2:系统时钟的反向放大器输出端,一般在设计上只要在XTAL1和XTAL2上接上一只石英震荡晶体系统就可以工作了,此外可以在两引脚与地之间加入20PF的小电容,可以使系统更稳定,避免噪音干扰而死机。
RESET:重置引脚,高电平动作,当要对晶体重置时,只要对此引脚电平提升至高电平并保持两个及其周期以上的时间便能完成系统重置的各项动作,使得内部特殊功能寄存器内容均被设成已知状态。
2、复位电路
当按下按键时,就能完成整个系统的复位,使得程序从新运行。
3、时钟电路
时钟电路用于产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。   
在AT89C51芯片内部有一个高增益反相放大器,其输入端为芯片引脚X1,输出端为引脚X2,在芯片的外部跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器。 此电路采用12MHz的石英晶体
2.3PS2键盘模块
PS2模块由PS2键盘和PS2接口组成,利用通信协议对PS2键盘进行操作,PS2通讯协议是一种双向同步串行通讯协议。PS2键盘连线图如图所示:
图2.PS2键盘连线图
PS2接口操作时序如下图所示:
图3.时序图
PS2接口通信协议表如下表所示:
图4.通信协议表
表中,如果数据位中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键盘扫描方式:键盘的处理器如果发现有键被按下释放或按住键盘将发送扫描码的信息包到计算机扫描码有两种不同的类型通码和断码,当一个键被按下或按住就发送通码,当一个键被释放就发送断码,每个按键被分配了唯一的通码和断码,这样主机通过查唯一的扫描码就可以测定是哪个按键,每个键一整套的通断码组成了扫描码集有三套标准的扫描码集,分别是第一套、第二套、和第三套,所有现代的键盘默认使用第二套扫描码
  虽然多数第二套通码都只有一个字节宽但也有少数扩展按键的通码是两字节或四字节宽这类的通码第一个字节总是为E0h
  正如键按下通码就被发往计算机一样,只要键一释放断码就会被发送,每个键都有它自己唯一的通码,它们也都有唯一的断码,幸运的是你不用总是通过查表来出按键的断码在通码和断码之间存在着必然的联系,多数第二套断码有两字节长它们的第一个字节是F0h ,第二个字节是这个键的通码,扩展按键的断码通常有三个字节,它们前两个字节是E0h,F0h ,最后一个字节是这个按键通码的最后一个字节。我在下面列出了几个按键的第二套通码和断码。
2.4LCD1602显示模块
LCD1602采用8位并行数据传输,其操作时序如下图所示:
LCD1602接口由8位数据线,电源地电源正,液晶显示偏压信号(VL),数据命令选择端(RS),读写选择端(RW)组成。其接口信号说明如下图所示:
图5.接口信号说明图
可以在1602的液晶显示偏压信号端接一个可变电阻,调节显示亮度,初始状态时,调至1602上面一排显示12个黑块为止,LCD1602电路图如下图所示:
图6. LCD电路图
2.5 24C02存储模块
24c02是串行CMOS,E2PROM内部含有CAT24WC01 有一个8 字节页写缓冲器, 24c02有一个16 字节页写缓冲器.该器件通过I2C 总线接口进行操作有一个图7. 24C02芯片管脚及其描述
专门的写保护功能.                    
24C02是带有C总线接口的E2PROM存储器,具有掉电记忆的功能,并且可以象普通RAM一样用程序改写。它的容量是256个字节(00h~0ffh),有A2、A1、A0三位地址,可见C总线上可以连接8片AT24C02,它的寻址字节是1010 A2A1A0 R/W。
图8.24C02电路图
3 产品的元件清单
序号
名称
数量
1
AT89S52
1
2
24C02
1
3
LCD1602
1
4
PS2键盘
1
5
10k电位器
1
6
10k电阻
1
7
10uF电解电容
1
8
33PF瓷片电容
2
9
13M晶振
1
10
Mini—DIN连接器
1
11
按键
1
4 软件设计
4.1编程语言及编程软件的选择
本设计选择C语言作为编程语言。C语言虽然执行效率没有汇编语言高,但语言简洁,使用方便,灵活,运算丰富,表达化类型多样化,数据结构类型丰富,具有结构化的控制语句,程序设计自由度大,有很好的可重用性,可移植性等特点。 而汇编语言使用起来并没有这么方便。
本设计选用了Keil作为编程软件,.Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。
4.2程序设计
1、主程序设计:首先初始化IO口和键盘、LCD1602、24C02,然后接收按键的输入的密码值,并通过8位并行传输方式传送给LCD1602显示,并同时存入24C02中。
2、获取键值程序:按照PS2键盘协议操作,键盘按下时发送通码,弹起时发送断码,在单片机中,将接收到的码字与第二套扫描码比较,得出键值。
3、LCD显示程序:首先初始化LCD1602端口和寄存器,然后接收单片机传送的数据,通过1602写操作时序显示接收到的数据
4、24C02存储程序:首先初始化24C02,然后从单片机获取密码值。
5 调试
    调试时直接在作品上进行,调试过程中,先逐个模块进行调试,在整体进行。整个作品分为AT89S52模块、液晶显示模块、PS2键盘输入模块和24C02存储模块。在调试过程中,出现许多的问题,有硬件上的,也有软件上的。比如刚开始时,mini—DIN连接器引脚接错了,给作品调试带来了不少麻烦。不过还是主要是程序的调试。虽然很多问题,但是进过不断的调试和改进,很好的完成了作品。
6 作品展示及总结
该作品使用低功耗、高性能的AT89s52作为主控芯片,PS2键盘输入,LCD1602液晶显示的密码锁,可以实现密码设置、重置、掉电保存等功能。在制作过程中我遇到了许许多多的问题,在解决问题的过程中我学到了不少的知识,如:焊接、电路设计、protel的使用、编写程序等。所以说实践是学习的最好方法。
7 参考文献
[1] 张培仁《基于 C 语言编程 MCS-51 单片机原理与应用[M]》 北京:清华大学出版社,2003.
[2] 郭天祥《新概念51单片机C语言教程》 北京:电子工业出版社,2011.
[3] 谭浩强《C程序设计》第四版 北京:清华大学出版社
附件:
/*********************************************************************************************/

本文发布于:2024-09-21 16:21:17,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/479517.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:键盘   时钟   单片机   信号   系统   作品   扫描
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议