欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

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

    • 资源ID:8977182       资源大小:554.25KB        全文页数:35页
    • 资源格式: DOCX        下载积分:1金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要1金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    1、基于51单片机的PS2键盘1602显示24c02存储的密码锁设计附程序基于51单片机的PS2键盘密码锁设计摘 要:AT89S52是一种低功耗、高性能CMOS 8位微控制器,具有8K在系统可编程Flash 存储器,被广泛应用于各个领域。LCD1602液晶显示器以其微功耗、体积小、超薄轻巧等诸多优点而备受人们喜爱。本作品是以AT89S52作为主控芯片,LCD1602作为显示器,以 PS2键盘作为输入设备的密码锁。PS2键盘与AT89S52通过PS2接口协议进行通信,可以完成密码设置,密码重置及显示等诸多功能。本作品还使用了24C02存储器来实现密码锁的掉电保存功能。关键词:AT89S52;LCD1

    2、602;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 i

    3、s 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 memor

    4、y to realize the password lock the power-down save function.Keywork: AT89C52; LCD1602; 24C02;PS/2 keyboard1 实验目的及意义 在单片机系统中,经常使用的键盘都是专用键盘.此类键盘为单独设计制作的,成本高、使用硬件连接线多,且可靠性不高,这一状况在那些要求键盘按键较多的应用系统中更为突出.与此相比,在PC系统中广泛使用PS/2键盘具有价格低、通用可靠,且使用连接线少(仅使用2根信号线)的特点,并可满足多种系统的要求.因此在单片机系统中应用PS/2键盘是一种很好的选择. 对于单片机初学者的我而

    5、言,AT89S52简单易学,非常适合我学习。设计这个作品为了锻炼自己的动手实践能力,并且能够更深入的学习AT89S52。通过这个实验,我不但基本掌握了AT89S52这门知识,同时也为我以后更深入的学习一些复杂的单片机打下坚实的基础。2 作品的原理2.1原理框图2.2单片机模块图1.AT89S52单片机最小系统1、单片机引脚说明XTAL1:单芯片系统时钟的反向放大器输入端。XTAL2:系统时钟的反向放大器输出端,一般在设计上只要在XTAL1和XTAL2上接上一只石英震荡晶体系统就可以工作了,此外可以在两引脚与地之间加入20PF的小电容,可以使系统更稳定,避免噪音干扰而死机。RESET:重置引脚,

    6、高电平动作,当要对晶体重置时,只要对此引脚电平提升至高电平并保持两个及其周期以上的时间便能完成系统重置的各项动作,使得内部特殊功能寄存器内容均被设成已知状态。2、复位电路当按下按键时,就能完成整个系统的复位,使得程序从新运行。3、时钟电路时钟电路用于产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。 在AT89C51芯片内部有一个高增益反相放大器,其输入端为芯片引脚X1,输出端为引脚X2,在芯片的外部跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器。 此电路采用12MHz的石英

    7、晶体。2.3PS2键盘模块PS2模块由PS2键盘和PS2接口组成,利用通信协议对PS2键盘进行操作,PS2通讯协议是一种双向同步串行通讯协议。PS2键盘连线图如图所示:图2.PS2键盘连线图PS2接口操作时序如下图所示:图3.时序图PS2接口通信协议表如下表所示:图4.通信协议表表中,如果数据位中的个数为偶数,校验位就为;如果数据位中的个数为奇数,校验位就为;总之,数据位中的个数加上校验位中的个数总为奇数,因此总进行奇校验。由于设备能提供串行同步时钟,因此,如果机发送数据,则机要先把时钟线和数据线置为请求发送的状态。机通过下拉时钟线大于来抑制通讯,并且通过下拉数据线发出请求发送数据的信号,然后

    8、释放时钟。当设备检测到需要接收的数据时,它会产生时钟信号并记录下面个数据位和一个停止位。主机此时在时钟线变为低时准备数据到数据线,并在时钟上升沿锁存数据。而设备则要配合机才能读到准确的数据。具体连接步骤如下:()等待时钟线为高电平。()判断数据线是否为低,为高则错误退出,否则继续执行。()读地址线上的数据内容,共个,每读完一个位,都应检测时钟线是否被机拉低,如果被拉低则要中止接收。()读地址线上的校验位内容,个。()读停止位。()如果数据线上为(即还是低电平),设备继续产生时钟,直到接收到且产生出错信号为止(因为停止位是,如果设备没有读到停止位,则表明此次传输出错。() 输出应答位。() 检测

    9、奇偶校验位,如果校验失败,则产生错误信号以表明此次传输出现错误。()延时 ,以便机进行下一次传输。PS2键盘扫描方式:键盘的处理器如果发现有键被按下释放或按住键盘将发送扫描码的信息包到计算机扫描码有两种不同的类型通码和断码,当一个键被按下或按住就发送通码,当一个键被释放就发送断码,每个按键被分配了唯一的通码和断码,这样主机通过查找唯一的扫描码就可以测定是哪个按键,每个键一整套的通断码组成了扫描码集有三套标准的扫描码集,分别是第一套、第二套、和第三套,所有现代的键盘默认使用第二套扫描码虽然多数第二套通码都只有一个字节宽但也有少数扩展按键的通码是两字节或四字节宽这类的通码第一个字节总是为E0h正如

    10、键按下通码就被发往计算机一样,只要键一释放断码就会被发送,每个键都有它自己唯一的通码,它们也都有唯一的断码,幸运的是你不用总是通过查表来找出按键的断码在通码和断码之间存在着必然的联系,多数第二套断码有两字节长它们的第一个字节是F0h ,第二个字节是这个键的通码,扩展按键的断码通常有三个字节,它们前两个字节是E0h,F0h ,最后一个字节是这个按键通码的最后一个字节。我在下面列出了几个按键的第二套通码和断码。2.4LCD1602显示模块LCD1602采用8位并行数据传输,其操作时序如下图所示:LCD1602接口由8位数据线,电源地电源正,液晶显示偏压信号(VL),数据命令选择端(RS),读写选择

    11、端(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一样用程序改写。它的容量是25

    12、6个字节(00h0ffh),有A2、A1、A0三位地址,可见C总线上可以连接8片AT24C02,它的寻址字节是1010 A2A1A0 R/W。图8.24C02电路图3 产品的元件清单序号名称数量1AT89S521224C0213LCD160214PS2键盘1510k电位器1610k电阻1710uF电解电容1833PF瓷片电容2913M晶振110MiniDIN连接器111按键14 软件设计4.1编程语言及编程软件的选择本设计选择C语言作为编程语言。C语言虽然执行效率没有汇编语言高,但语言简洁,使用方便,灵活,运算丰富,表达化类型多样化,数据结构类型丰富,具有结构化的控制语句,程序设计自由度大,有

    13、很好的可重用性,可移植性等特点。 而汇编语言使用起来并没有这么方便。本设计选用了Keil作为编程软件,.Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。4.2程序设计1、主程序设计:首先初始化IO口和键盘、LCD1602、24C02,然后接收按键的输入的密码值,并通过8位并行传输方式传送给LCD1602显示,并同时存入24C02中。2、获取键值程序:按照PS2键盘协议操作,键盘按下时发送通码,弹起时发送断码,在单片机中,将接收到的码字与第二套扫描码比较,得出键值。3、LCD显示程序:首先初始化LCD1602端口和寄存器

    14、,然后接收单片机传送的数据,通过1602写操作时序显示接收到的数据4、24C02存储程序:首先初始化24C02,然后从单片机获取密码值。5 调试 调试时直接在作品上进行,调试过程中,先逐个模块进行调试,在整体进行。整个作品分为AT89S52模块、液晶显示模块、PS2键盘输入模块和24C02存储模块。在调试过程中,出现许多的问题,有硬件上的,也有软件上的。比如刚开始时,miniDIN连接器引脚接错了,给作品调试带来了不少麻烦。不过还是主要是程序的调试。虽然很多问题,但是进过不断的调试和改进,很好的完成了作品。6 作品展示及总结该作品使用低功耗、高性能的AT89s52作为主控芯片,PS2键盘输入,

    15、LCD1602液晶显示的密码锁,可以实现密码设置、重置、掉电保存等功能。在制作过程中我遇到了许许多多的问题,在解决问题的过程中我学到了不少的知识,如:焊接、电路设计、protel的使用、编写程序等。所以说实践是学习的最好方法。7 参考文献1 张培仁基于 C 语言编程 MCS-51 单片机原理与应用M 北京:清华大学出版社,2003. 2 郭天祥新概念51单片机C语言教程 北京:电子工业出版社,2011.3 谭浩强C程序设计第四版 北京:清华大学出版社附件:/*/第一次使用时,存储芯片为空时。按,输入初始密码,按.输入密码开启蜂鸣器/若设置了初始密码,按.输入密码开启蜂鸣器/按;重置密码,重置后

    16、直接输入密码开启蜂鸣器/完成断电保存/输入错误密码后,在输入正确密码可用/*/#include #include /标准输入输出#include#define uchar unsigned char#define uint unsigned intsbit scl=P36; /24c02时钟线接口 sbit sda=P37; /24c02数据线接口sbit fmq=P17;sbit RS=P10; /Pin4sbit E =P11; /Pin6#define Data P0/数据端口sbit Key_Data=P33; /定义Keyboard引脚sbit Key_CLK =P32; /使用中断

    17、bit BF; bit Shift; /定义上档键标志bit Key_UP; /定义通码断码标志unsigned char KeyV;unsigned char IntNum;unsigned char DisNum;char code cs=new mima;char code sr=enter mima;char code f=Data Error;static uchar data csmm20;static uchar data srmm20;static int t1=1,t2=1,t3=1,t4=1,t5=1,t6=1,num=0;void DelayUs(unsigned cha

    18、r us) /微秒延时函数 unsigned char uscnt; uscnt=us1; /*12MHz频率*/ while(-uscnt);void DelayMs(unsigned char ms) / 毫秒函数声明 while(-ms) DelayUs(250); DelayUs(250); DelayUs(250); DelayUs(250); void delay() ;/*/* 存储芯片 */*/void start() /开始信号 sda=1; delay(); scl=1; delay(); sda=0; delay(); void stop() /停止 sda=0; del

    19、ay(); scl=1; delay(); sda=0; delay(); void respons() /应答 uchar i; scl=1; delay(); while(sda=1)&(i50) i+; scl=0; delay(); void init() /初始化 sda=1; delay(); scl=1; delay(); void write_byte(uchar date) uchar i,temp; temp=date; for(i=0;i8;i+) temp=temp1; scl=0; delay(); sda=CY; delay(); scl=1; delay(); s

    20、cl=0; delay(); sda=1; delay();uchar read_byte() uchar i,k; scl=0; delay(); sda=1; delay(); for(i=0;i8;i+) scl=1; delay(); k=(k=0x10) p=pos+0xb0; /是第二行则命令代码高4位为0xc else p=pos+0x80; /是第二行则命令代码高4位为0x8 WriteCommand (p);/写命令 WriteData (c); /写数据void ShowString (unsigned char line,char *ptr) /写入字符串函数 unsig

    21、ned char l,i; l=line4; for (i=0;i16;i+) ShowChar (l+,*(ptr+i);/循环显示16个字符void InitLcd() /初始化函数 DelayMs(15); WriteCommand(0x38); /display mode WriteCommand(0x38); /display mode WriteCommand(0x38); /display mode WriteCommand(0x06); /显示光标移动位置 WriteCommand(0x0f); /显示开及光标设置 WriteCommand(0x01); /显示清屏 /*/ /

    22、键盘/*/unsigned char code UnShifted592 = /键盘数组 0x1C, a,0x32, b,0x21, c,0x23, d,0x24, e,0x2B, f,0x34, g,0x33, h,0x43, i,0x3B, j,0x42, k,0x4B, l,0x3A, m,0x31, n,0x44, o,0x4D, p,0x15, q,0x2D, r,0x1B, s,0x2C, t,0x3C, u,0x2A, v,0x1D, w,0x22, x,0x35, y,0x1A, z,0x45, 0,0x16, 1,0x1E, 2,0x26, 3,0x25, 4,0x2E, 5

    23、,0x36, 6,0x3D, 7,0x3E, 8,0x46, 9,0x0E, ,0x4E, -,0x55, =,0x5D, ,0x29, ,0x54, ,0x5B, ,0x4C, ;,0x52, ,0x41, ,0x49, .,0x4A, /,0x71, .,0x70, 0,0x69, 1,0x72, 2,0x7A, 3,0x6B, 4,0x73, 5,0x74, 6,0x6C, 7,0x75, 8,0x7D, 9,;unsigned char code Shifted592 = 0x1C, A,0x32, B,0x21, C,0x23, D,0x24, E,0x2B, F,0x34, G,0x33, H,0x43, I,0x3B, J,0x42, K,0x4B, L,0x3A, M,0x31, N,0x44, O,0x4D, P,0x15, Q,0x2D, R,0x1B, S,0x2C, T,0x3C, U,0x2A, V,0x1D, W,0x22, X,0x35, Y,0x1A, Z,0x45, ),0x16, !,0x1E, ,0x26, #,0x25, $,0x2E, %,0x36, ,0x3D, &,0x3E, *,0x46, (,0x0E, ,0x4E, _,0x55, +,


    注意事项

    本文(基于51单片机的PS2键盘1602显示24c02存储的密码锁设计附程序.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开