单片机课程设计报告2.doc_第1页
单片机课程设计报告2.doc_第2页
单片机课程设计报告2.doc_第3页
单片机课程设计报告2.doc_第4页
单片机课程设计报告2.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

专业:电子信息工程班级:07级1班姓名:刘青原学号:20070710410指导老师:吴桂清一、设计内容:数字密码锁二、设计要求:(一)基本要求1、利用889C51作为控制器组成一数字型码锁。 2、开锁动作用LED管模拟。 3、开锁代码由小健盘输入,且同时有4位LED显示器上显出来,当你输入的四位数字与原存的密码完全相同时,则将锁打开。 4、密码可由小键盘输入进行改写。 5、修改密码,必须在30秒内完成,否则将发出报警号。 6、锁门与否,可由一开关控制,每次按Enter键时,89C51根据此开关的状态决定锁住或打开。(二)扩展功能1、键盘增加退格键、清除键和复位键。2、三次输入密码不正确,系统将锁定,输入代码将无效。按复位键后,将解除锁定。三、设计所需硬件及结构图:(一) 硬件:AT69C52,8255A,MAX232,2803,按钮键盘,电容,排阻若干(二) 硬件结构图:AT89C526位数码管发光二极管8255A小键盘 四、程序流程图五、软件软程序代码 PA EQU 7CFFH;A口地址 PB EQU 7DFFH;B口地址 CTR EQU 7FFFH;控制字地址 YR1 EQU 30H;密码存储单元 YR2 EQU 31H; YR3 EQU 32H YR4 EQU 33H NEW1 EQU 45H;用户输入密码存储单元 NEW2 EQU 46H NEW3 EQU 47H NEW4 EQU 48HLOCK_TIMES EQU 35H ORG 0000H JMP START_00 ORG 0100H; START_00: MOV YR1,#1H;初始密码为1234 MOV YR2,#2H MOV YR3,#3HCLR 02H MOV YR4,#4H;修改MAIN: MOV IE,#86H;开定时器0和外部中断1的中断 SETB IT1 LCALL KEY JB 02H,START;已经开始计时就不要再开始了 MOV 50H,#08H;若是12mhz来算则R7应为0FFH,R3应为0F4H MOV 51H,#06H MOV TMOD,#01H;定时器定时工作方式1 MOV TH0,#15H MOV TL0,#0AH SETB 02H;开始计时标志置1 SJMP STARTSTART: MOV DPTR,#CTR MOV A,#80H MOVX DPTR,A CLR PSW.1 ;PSW.1是是否进入重设密码功能的标志位,为0则没进入;反之则进入。By default,PSW.1=0 CLR F0 ;F0为重设密码时,输入原始密码正确与否标志:F0=0,wrong;F0=1,correct. Default=0 MOV B,#1H ;最初数码管不显示,B=当前要显示的数码管位数-1 MOV LOCK_TIMES,#0H;错误,移至START_00处 SETB P3.0 ;By default ,LED=off SETB P3.1 MOV NEW1,#00H;清除用户上次输入密码 MOV NEW2,#00H MOV NEW3,#00H MOV NEW4,#00HSCAN:LCALL DISP MOV P1,#0FFH MOV R0,#0F7H MOV R1,#00H ;存储按键号LP1: MOV A,R0 ;扫描行 MOV P1,A NOP ;延时读取键盘状态 MOV A,P1 MOV R2,A ;存储键盘扫描状态,为判断抖动做准备 SETB C ;为左移作准备 MOV R3,#04H ;判断四列是否扫描结束LP2:RLC A ;将A左移,检测该列中是否0所在位置 JNC KEY ;找到零,转去进行延时消抖LP3:INC R1 ;扫描下一列 DJNZ R3,LP2 MOV A,R0 SETB C RRC A MOV R0,A JC LP1 ;CY=1,行扫描未结束 ,因为是带进位的右移 LJMP SCAN ;扫描完毕,无有效键值KEY:LCALL DS10MS ;延时消抖 MOV A,P1 XRL A,R2 JNZ LP3 ;A=1,说明是干扰,继续转去扫描下一行LP4:MOV A,P1 ;wait for the button to bounce back XRL A,R2 JZ LP4 MOV A,R1 MOV DPTR,#TAB MOVC A,A+DPTRKEYIN:MOV R3,A ;判断输入的键义 XRL A,#0EH JZ ENTER ;按下确定键 MOV A,R3 XRL A,#0FH JZ MODIFY ;按下修改键 MOV A,R3 XRL A,#0DH JZ BUT_CHG ;按下重设密码键 BUT_N:MOV A,B ;是正常数字键 CJNE A,#5,INP_NUM ;判断输入密码的位数:达到四位则对键值不予理睬-ignore, 否则-INP_NUM JMP Ignore ;输入密码位数达到四位后,对后续输入的数字不做处理BUT_CHG: SETB TR0 SETB 02H SETB PSW.1 ;set PSW.1,enter process of resetting password LCALL ALL_LIGHT ;show this entering SETB P3.0 SETB P3.1 JMP SCAN ;返回接收新设定的密码MODIFY: ;修改输入密码,则显示的位数减一 MOV A,B CJNE A,#1H,MOD_EN ;输入密码删除完,对键值不作处理 JMP SCAN ;返回接收新键值MOD_EN: ; DEC B ;显示位数减一 JB F0,MOD_SYS ;F0=0,修改刚输入的用户密码;F0=1,修改输入的重设密码MOD_USER: MOV 48H,47H MOV 47H,46H MOV 46H,45H MOV 45H,#0H JMP SCANMOD_SYS: MOV 33H,32H MOV 32H,31H MOV 31H,30H MOV 30H,#0H JMP SCANINP_NUM: INC B ;输入密码位数增加,显示位数也随之增加 MOV A,R3 JB F0,SET_PW ;F0=0,可以输入重设的新密码,转去接受新密码进入密码存储单元USER_PW: ;input users password XCH A,48H XCH A,47H XCH A,46H XCH A,45H LJMP SCANSET_PW: ;input new password XCH A,33H XCH A,32H XCH A,31H XCH A,30H Ignore: LJMP SCANENTER:JB F0,set_OK;定义按下ENTER键的功能COMP1:MOV R7,#04H ;compare password inputted with the correct one MOV R0,#45H MOV R1,#30HL1: MOV A,R0 XRL A,R1 JNZ WRONG INC R0 INC R1 DJNZ R7,L1RIGHT:CLR P3.0 CALL LIGHT_DEL SETB P3.0 JB PSW.1,CHG_PW JMP BACK_STARTCHG_PW:SETB F0 ;原始密码输入正确,可以重设密码,将重设密码允许的标志位置位 MOV B,#1H LJMP SCANset_OK:INC 51HDJNZ 51H,LOCK;CLR EA CLR TR0 CLR P3.0WRONG:CLR P3.1 CALL LIGHT_DEL JNB PSW.1,BACK_START JB F0,BACK_START MOV A,LOCK_TIMES CJNE A,#2H,TRY_AGAIN CALL LOCKTRY_AGAIN:INC LOCK_TIMES MOV B,#1H SETB P3.1 LCALL SCANBACK_START: LJMP START ;返回后先将存放输入密码的地址全部清零,后进行键盘扫描ALL_LIGHT: CLR P3.0 CLR P3.1LIGHT_DEL: LCALL DELAY2 RETLOCK: MOV DPTR,#PB ;位选 MOV A,#0FH MOVX DPTR,A MOV DPTR,#PA MOV A,#0H MOVX DPTR,A ;送段码 LCALL DELAY3 ;延时 JMP $ RETORG 000BHT0IRS:DJNZ 50H,T01 DJNZ 51H,T01T01:MOV TMOD,#01H MOV TH0,#15H MOV TL0,#0AH SETB TR0RETI;*显示子程序*;DISP: MOV R2,#08H MOV 49H,B JNB F0,DEFAULT MOV R0,#33H ;显示用户输入的新密码 JMP DS2DEFAULT: ;正确密码为默认密码,显示输入的密码 MOV R0,#48HDS2: DJNZ B,AA MOV DPTR,#PB ;位选 MOV A,#0H MOVX DPTR,A MOV B,49H JMP JJAA: MOV DPTR,#PB ;位选 MOV A,R2 MOVX DPTR,A MOV DPTR,#PA MOV A,R0 LCALL TABLE MOVX DPTR,A ;送段码 LCALL DELAY1 ;延时 DEC R0 CLR C MOV A,R2 RRC A MOV R2,A JMP DS2;* *BCD码转化成段码子程序*;TABLE:INC A MOVC A,A+PCJJ: RETDB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH ;*延时4ms子程序*;DELAY1: MOV R4,#10;4ms延时DEL11: MOV R5,#0AHDEL12: MOV R3,#14HDEL13: DJNZ R3,DEL13 DJNZ R5,DEL12 DJNZ R4,DEL11 RET;*延时21ms子程序*;DS10MS:MOV R5,#42LOOP2:MOV R6,#248 DJNZ R6,$ DJNZ R5,LOOP2 RET;*延时1s子程序*;DELAY2:MOV R5,#50LOOP3:LCALL DS10MS DJNZ R5,LOOP3RET;*延时30s子程序*;DELAY3:MOV R5,#10LOOP4:LCALL DELAY2 DJNZ R5,LOOP4RETTAB: DB 01H,02H,03H,0AH DB 04H,05H,06H,0BH DB 07H,08H,09H,0CH DB 0EH,00H,0FH,0DH END六、PROTUES和KEIL联调仿真1、仿真原理图2、仿真上电3、输入正确密码1234数码D1管亮4、输入错误密码数码D2管亮5、修改密码成功,两个灯都亮6、三次输入错误密码,led提示灯亮,系统锁定6、 课程设计经验感受 整个设计通过软件和硬件上的调试。我想这对于自己以后的学习和工作都会有很大的帮助。在这次设计中遇到了很多实际性的问题,在实际设计中才发

温馨提示

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

评论

0/150

提交评论