LCD显示制作电子密码锁.docx_第1页
LCD显示制作电子密码锁.docx_第2页
LCD显示制作电子密码锁.docx_第3页
LCD显示制作电子密码锁.docx_第4页
LCD显示制作电子密码锁.docx_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录一、题目分析1二、硬件设计1三、软件设计5四调试及运行14五、前期仿真15六、心得体会17项目名称: 电子密码锁(LCD显示)一、题目分析1、题目与分析:设计并制作电子密码锁(LCD显示),要能实现密码控制开关状态,并同步显示。该设计所要实现的功能可以分为两部分,第一是实现密码锁,第二是有LCD显示功能,具体分析如下。电子密码锁在平时状态为锁闭的,有三个LED灯来显示开关状态,红灯亮表示是锁住状态,红灯和黄灯亮表示输入密码错误,绿灯亮表示密码正确并可以打开,并且设置了输入密码三次错误后将被锁死,不得再次输入。LCD显示为与电子密码锁整个状态相对应,启动时显示为“输入密码”,当正在输入密码时显示*,输入完成验证完密码后相应显示“正确!”或“错误!”,当密码输入正确时若要修改密码则显示“修改!”。2、实际应用:电子密码锁在生活和工作中应用相当广泛,例如保险柜、存储盒和其他一些放置很珍贵东西的地方。二、硬件设计相对仿真来说硬件设计更需要扎实的理论知识和熟练的焊接技术,要考虑的方方面面很多,即使仿真能够实现的功能在无误焊接情况下也不一定能实现,更主要的是在后期的调试。本设计主控制器采用AT89S52 单片机,利用时钟芯片DS1302 来实现计时,LCD用12864硬件设计框图:元件选择依据及特性:1、单片机AT89S52 与AT89s51功能相同。2、LCD12864相关控制和资料1)、LCD12864模块的20个引脚定义如下:1.Vss 逻辑电源地2.VDD逻辑电源正5v3.V0LCD驱动电压4.RS 数据/指令选择:高电平为数据,低电平为指令5.R/W读/写选择:高电平为读数据,低电平为写数据6.E读写使能,高电平有效,下降沿锁定数据7.DB0数据输入输出引脚8.DB1数据输入输出引脚9.DB2数据输入输出引脚10.DB3数据输入输出引脚11.DB4数据输入输出引脚12.DB5数据输入输出引脚13.DB6数据输入输出引脚14.DB7数据输入输出引脚15.CS1片选择号,低电平时选择前64列16.CS2片选择号,低电平时选择后64列17.RET复位信号,低电平有效。18.VEE输出15v电源给V0提供驱动电源19.A背光电源LED正极20.K背光电源LED负极2)、DDRAM地址表及相关内容Y地址计数器具有循环记数功能,各显示数据写入后,Y地址自动加1,Y地址指针从0到63。在横向上(也就是Y)就一共是128列数据。分为CS1和CS2两个64列来写入。在竖方向上(也就是X)一字节数据显示8个点,竖向64个点分为8个字节,称做8页(X=0-7)。要满屏显示一张图就要从y=0127、X=07一共写1288=1024个字节的数据。同样在AT89S51中存一张图就要1024个字节的空间。 3)、软件编程注意事项程序的编写与硬件是分不开的。以图6为例,A11A8对应CS2、CS1、R/W、RS,未用的地址线为高。则当向12864的左半屏(CS1=1,CS2=0)写(R/W=0)数据(RS=1)时,总线地址为0x1111010111111111。即0xF5FF。C文件中定义如下:#define WD1 XBYTE0xF5FF定义了总线地址后,对外部地址的操作变得非常简单。如向左半屏写数据0xFF: WD1=0xFF4)、LCD初始化包含开显示(0x3F),起始行(0xC0),设置起始页地址(0xB8)和Y地址(0x40),即分别向LCD的左右半屏写命令。可按括号内的数据进行初始化,显示一幅新图片前必须清屏,否则之前显示的数据仍存在于液晶上。1. 显示开关控制(on/off)2.设置显示起始行3.设置页地址4.设置Y地址仿真电路图:实物图:元件清单:名称数量 备注 单片机 1AT89S52电容 330pF*2 10uF 晶振 2 12MHz LCD显示 112864 按键 5三、软件设计 首先编程实现电子密码锁的功能,然后单独实现控制LCD的初始化和各项控制,两部分功能实现后进行相互嵌套调用即可融合在一起。程序清单 ORG 0000H AJMP MAIN ORG 0013H AJMP INT_1RS BIT P2.2RW BIT P2.1EN BIT P2.0CS1 BIT P2.4CS2 BIT P2.3DAT EQU 40HCOM EQU 41HPAG EQU 42HLINE EQU 43HCOLUMN EQU 44HONOFF EQU 45HSCREEN EQU 46H ORG 0100HMAIN: MOV SP,#60H SETB IT1 SETB EA MOV 30H,#01 ;赋初值 MOV 31H,#02 MOV 32H,#03 MOV R3,#00 ;输入密码正确数 MOV R7,#03HL0: MOV P1,#7FH ;点亮红灯表示锁住 MOV R0,#50H ;输入的密码存放区的首地址 CLR EX1 MOV R1,#00 ;可以输入三个密码ACALL Initlcd ACALL Clearscreen ACALL Set_line MOV SCREEN,#1 MOV PAG,#2 MOV COLUMN,#0 ACALL DISPLAYLJMP D3 SJMP $SR: CJNE R1,#03,L1 ;判断是否输入三个密码 L6: JB P1.0,$ ;确定键是否按下ACALL DEL_10MS JB P1.0,L6JNB P1.0,$LCALL JY ;开始校验密码MOV P1,#0BFH ;点亮绿灯表示打开SETB EX1 ;密码正确后开中断表示可以修改密码ACALL ClearscreenACALL ZQLCALL DEL_5S ;5秒后不打开自动关闭 CJNE R3,#02,L0 ;允许输入三次L1:JB P1.1,L2 ;第一个按键 ACALL DEL_10MS JB P1.1,L1 JNB P1.1,$ ACALL XH LCALL PRE_1 SJMP SR L2:JB P1.2,L3 ;第二个按键 ACALL DEL_10MS JB P1.2,L2 JNB P1.2,$ ACALL XH LCALL PRE_2 SJMP SR L3:JB P1.3,L1 ;第三个按键 ACALL DEL_10MS JB P1.3,L3 JNB P1.3,$ ACALL XH LCALL PRE_3 LCALL SRPRE_1:MOV R0,#01 INC R0 INC R1 RETPRE_2:MOV R0,#02 INC R0 INC R1 RETPRE_3:MOV R0,#03 INC R0 INC R1 RETJY: MOV R0,#50H ;校验密码 MOV A,R0 CJNE A,30H,FT INC R0 MOV A,R0 CJNE A,31H,FT INC R0 MOV A,R0 CJNE A,32H,FT RET FT: INC R3 MOV P1,#5FH ACALL Clearscreen ACALL CW ACALL DEL_5S CJNE R3,#03,L9 LX: MOV P1,#0FFH LCALL DEL_10MS MOV P1,#7FH LCALL DEL_10MS DJNZ R7,LX MOV P1,#0FFH ACALL Clearscreen ACALL DBQ ACALL Clearscreen SJMP $ ;输入三次后锁死 L9:LCALL L0 RETDEL_10MS:MOV TMOD,#01H ;延时10MS MOV TL0,#0F0H MOV TH0,#0D8H SETB TR0 JNB TF0,$ MOV TL0,#0F0H MOV TH0,#0D8H CLR TF0 RETDEL_5S: MOV R7,#5 L4: MOV R6,#100 L5: LCALL DEL_10MS DJNZ R6,L5 DJNZ R7,L4 RETL7: MOV TMOD,#10H MOV TH1,#3CH MOV TL1,#0B0H MOV R5,#5 SETB TR1LOOP:JNB TF0,$ MOV TH1,#3CH MOV TL1,#0B0H CLR TF1 DJNZ R5,LOOP CPL P0.0 JB P1.4,L7 JNB P1.4,$ RETINT_1:MOV P1,#1FH ;中断开始 ACALL Selectscreen ACALL Clearscreen ACALL XG MOV R0,#30H MOV R1,#00 MOV R3,#00 ZD_1:JB P1.1,ZD_2 ;开始重新输入第一个密码 ACALL DEL_10MS JB P1.1,ZD_1 JNB P1.1,$ ACALL XH LCALL ZD_4 SJMP ZD_7 ZD_2: JB P1.2,ZD_3 ;第二个密码 ACALL DEL_10MS JB P1.2,ZD_2 JNB P1.2,$ ACALL XH LCALL ZD_5 SJMP ZD_7 ZD_3: JB P1.3,ZD_1 ;第三个密码 ACALL DEL_10MS JB P1.3,ZD_3 JNB P1.3,$ ACALL XH LCALL ZD_6 SJMP ZD_7 ZD_4:MOV R0,#01 ;重新赋值给30H INC R1 INC R0 RET ZD_5:MOV R0,#02 ;重新赋值给31H INC R1 INC R0 RET ZD_6:MOV R0,#03 ;重新赋值给32H INC R1 INC R0 RET ZD_7:CJNE R1,#03,ZD_1 JB P1.0,$ ;确定键是否按下 ACALL DEL_10MS JB P1.0,$ JNB P1.0,$ MOV P1,#07FH RETIRead_busy:MOV P0,#00HCLR RSSETB RWSETB ENL10:ANL A,P0JB ACC.7,L10CLR ENRETLCD_write_command:ACALL Read_busyCLR RS CLR RW MOV P0,COMSETB ENNOPNOPCLR ENRETLCD_write_data:ACALL Read_busySETB RS CLR RW MOV P0,DATSETB ENNOPNOPCLR ENRETSet_page:MOV A,#0B8HORL A,PAGMOV COM,AACALL LCD_write_commandRETSet_line:MOV A,#0C0HORL A,LINEMOV COM,AACALL LCD_write_commandRETSet_column:MOV A,#3FHANL A,COLUMNORL A,#40HMOV COM,AACALL LCD_write_commandRETSetonoff:MOV A,#3EHORL A,ONOFFMOV COM,AACALL LCD_write_commandRETSelectscreen:MOV A,SCREENCJNE A,#00H,S1CLR CS1CLR CS2S1:CJNE A,#01H,S2CLR CS1SETB CS2S2:CJNE A,#02H,S3SETB CS1CLR CS2S3:RETClearscreen:ACALL SelectscreenMOV R2,#0C2:MOV 50H,#64MOV PAG,R2ACALL Set_pageMOV COLUMN,#0ACALL Set_columnC1:MOV DAT,#0ACALL LCD_write_dataDJNZ 50H,C1INC R2CJNE R2,#8,C2RETInitlcd:ACALL Read_busyMOV SCREEN,#0ACALL SelectscreenMOV ONOFF,#0ACALL SetonoffACALL SelectscreenMOV ONOFF,#1ACALL SetonoffACALL SelectscreenACALL ClearscreenMOV LINE,#0ACALL Set_lineRETDISPLAY: MOV R2,#0MOV DPTR,#TAB1ACALL Selectscreen ;设置ACALL Set_page ;设置页ACALL Set_columnMOV SCREEN,#1D1: MOV A,R2MOVC A,A+DPTRMOV DAT,AACALL LCD_write_dataINC R2CJNE R2,#64,D1MOV A,PAGADD A,#1MOV PAG,AACALL Set_pageACALL Set_columnMOV SCREEN,#1 MOV R2,#0MOV DPTR,#TAB2D2:MOV A,R2MOVC A,A+DPTRMOV DAT,AACALL LCD_write_dataINC R2CJNE R2,#64,D2 LJMP L1XH: MOV SCREEN,#2 MOV R2,#0MOV DPTR,#TAB7ACALL Selectscreen ;设置ACALL Set_page ;设置页ACALL Set_columnMOV SCREEN,#1D7: MOV A,R2MOVC A,A+DPTRMOV DAT,AACALL LCD_write_dataINC R2CJNE R2,#16,D7MOV A,PAGADD A,#1MOV PAG,AACALL Set_pageACALL Set_columnMOV SCREEN,#1 MOV R2,#0MOV DPTR,#TAB8D8:MOV A,R2MOVC A,A+DPTRMOV DAT,AACALL LCD_write_dataINC R2CJNE R2,#16,D8MOV A,PAGADD A,#1MOV PAG,AMOV A,PAGADD A,#1MOV PAG,ARETTAB1: DB88H,68H,1FH,0C8H,0CH,28H,90H,0A8H,0A6H,0A1H,26H,28H,10H,0B0H,10H,00H ;输 DB00H,00H,00H,00H,00H,01H,0E2H,1CH,0E0H,00H,00H,00H,00H,00H,00H,00H ;入 DB10H,4CH,24H,04H,0F4H,84H,4DH,56H,24H,24H,14H,84H,24H,54H,0CH,00H ;密 DB02H,82H,0F2H,4EH,43H,0E2H,42H,0FAH,02H,02H,02H,0FFH,02H,80H,00H,00H ;码TAB3: DB 00H,02H,02H,0C2H,02H,02H,02H,0FEH,82H,82H,82H,0C2H,83H,02H,00H,00H ;正DB04H,84H,0E4H,9CH,84H,0C6H,24H,0F0H,28H,27H,0F4H,2CH,24H,0F0H,20H,00H ;DB00H,00H,00H,00H,00H,00H,38H,0FCH,0F8H,18H,00H,00H,00H,00H,00H,00H TAB5: DB80H,40H,70H,0CFH,48H,48H,48H,48H,7FH,48H,48H,7FH,0C8H,68H,40H,00H ;错DB40H,42H,0C4H,0CH,00H,40H,5EH,52H,52H,0D2H,52H,52H,5FH,42H,00H,00H DB00H,00H,00H,00H,00H,00H,38H,0FCH,0F8H,18H,00H,00H,00H,00H,00H,00H TAB2: DB09H,09H,05H,0FFH,05H,00H,0FFH,0AH,8AH,0FFH,00H,1FH,80H,0FFH,00H,00H DB80H,40H,20H,10H,0CH,03H,00H,00H,00H,03H,0CH,30H,40H,0C0H,40H,00H DB00H,01H,0FDH,41H,40H,41H,41H,7FH,41H,41H,41H,41H,0FCH,00H,00H,00HDB 01H,00H,7FH,20H,20H,7FH,08H,09H,09H,09H,0DH,49H,81H,7FH,01H,00HTAB4: DB40H,40H,40H,7FH,40H,40H,40H,7FH,40H,40H,40H,40H,40H,60H,40H,00HDB 01H,00H,7FH,20H,20H,0BFH,40H,3FH,09H,09H,7FH,09H,89H,0FFH,00H,00HDB 00H,00H,00H,00H,00H,00H,30H,33H,33H,30H,00H,00H,00H,00H,00H,00HTAB6: DB00H,02H,02H,7FH,22H,12H,00H,0FFH,49H,49H,49H,49H,0FFH,01H,00H,00HDB 00H,00H,7FH,20H,12H,82H,42H,22H,1AH,07H,1AH,22H,42H,0C3H,42H,00HDB 00H,00H,00H,00H,00H,00H,30H,33H,33H,30H,00H,00H,00H,00H,00H,00HTAB7: DB00H,00H,00H,00H,80H,0C0H,9EH,0FCH,0F0H,0BEH,8EH,0C0H,80H,00H,00H,00HTAB8: DB00H,00H,00H,00H,01H,01H,79H,3FH,07H,7DH,31H,01H,01H,00H,00H,00HTAB9: DB40H,20H,0F8H,07H,0F0H,0A0H,90H,4FH,54H,24H,0D4H,4CH,84H,80H,80H,00H ;修 DB04H,0C4H,44H,44H,44H,0FEH,44H,20H,0DFH,10H,10H,10H,0F0H,18H,10H,00H ;改 DB00H,00H,00H,00H,00H,00H,38H,0FCH,0F8H,18H,00H,00H,00H,00H,00H,00H TAB10: DB00H,00H,0FFH,00H,0FH,80H,92H,52H,49H,25H,24H,12H,08H,00H,00H,00H DB00H,7FH,20H,20H,10H,90H,80H,40H,21H,16H,08H,16H,61H,0C0H,40H,00HDB 00H,00H,00H,00H,00H,00H,30H,33H,33H,30H,00H,00H,00H,00H,00H,00HTAB11: DB08H,48H,88H,08H,0C8H,38H,10H,90H,10H,10H,10H,0FFH,10H,18H,10H,00H ; DB02H,02H,02H,02H,02H,82H,42H,0F2H,0EH,42H,82H,02H,02H,03H,02H,00H ;DB40H,48H,48H,48H,0FFH,48H,48H,00H,0C4H,44H,44H,44H,0FEH,04H,00H,00H ;起TAB12: DB20H,10H,0CH,03H,04H,18H,00H,00H,03H,40H,80H,7FH,00H,00H,00H,00HDB00H,08H,04H,02H,01H,00H,00H,0FFH,00H,00H,00H,01H,03H,06H,00H,00HDB40H,20H,1FH,20H,7FH,42H,42H,40H,47H,48H,48H,48H,48H,6EH,20H,00HEND四调试及运行 仿真能够实现各项功能,制作的电路板电子密码锁部分已做好并能实现预期功能,但是LCD12864到最后一天才到,之前一直用的是18个引脚的,买到的元器件是20引脚的,初始化和相关控制参数都不同,考虑到自身能力和时间问题所以实际制作时就没有LCD12864的显示部分。结果没有很完整。五、前期仿真 仿真图程序清单 ORG 0000H AJMP MAIN ORG 000BH AJMP TIME ORG 0100HMAIN:MOV SP,#60H MOV DPTR,#TAB MOV TMOD,#02H MOV TH0,#0CEH MOV TL0,#0CEH SETB EA SETB ET0 MOV R1,#5 MOV R2,#5 MOV R3,#01H MOV R5,#01H MOV P2,00H MOV P1,#0FFHZZ: JB P1.0,FZ JNB P1.0,$ SETB TR0 MOV P2,#01H MOV R4,#01HFZ: JB P1.1,TZ JNB P1.1,$ SETB TR0 MOV P

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论