预览加载中,请您耐心等待几秒...
1/4
2/4
3/4
4/4

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

单片机综合设计实验 一、实验目的 掌握嵌入式系统的设计原理、程序编写与调试的开发过程。 二、实验内容 电子密码锁设计(A类):根据设定好的密码,采用8个按键实现密码的输入功能,当密码输入正确之后,锁就打开,显示某个字符;如果输入的三次的密码不正确,就锁定按键3秒钟,同时发出报警声显示另一个字符,直到没有按键按下3秒后,才打开按键锁定功能;否则在3秒钟内仍有按键按下,就重新锁定按键3秒时间并报警。在单片机实验板上实现 二、实验要求 根据给定题目设计Proteus仿真原理图; 根据给定题目设计有关的51汇编语言(或C语言)源程序,并编译成可执行文件; 在Proteus仿真界面下运行程序实现给定的功能。 三.程序设计内容(1).密码的设定,在此程序中密码是固定在程序存储器ROM中,假设预设的密码为“21213232”共8位密码。(2).密码的输入问题:由于采用按键来完成密码的输入,首先输入密码的长度,接着根据密码的长度输入密码的位数,直到所有长度的密码都已经输入完毕,才能完成密码的输入过程。进入密码的判断比较处理状态并给出相应的处理过程。(3).按键禁止功能:初始化时,是允许按键输入密码,当有按键按下并开始进入按键识别状态时,按键禁止功能被激活,但启动的状态在3次密码输入不正确的情况下发生的。 开始 初始化 有键按下? 调用显示 启动定时 识别按键 按键数=8? 超时? 比较密码 开门 开始 自动清除 <3次? 报警 N N Y Y Y Y N N 主程流程图 Proteus仿真原理图: 程序 TIMEQU-2000 DISPDATA30H;30-34H DISDATA35H KEYDATA36H WRONGDATA50H CNTDATA51H CLKBITP0.0 DATBITP0.1 STRBITP0.2 BEEPBITP0.7 S4BITP2.7 S3BITP2.6 S2BITP2.5 S1BITP2.4 K1BITP2.3 K2BITP2.2 K3BITP2.1 K4BITP2.0 ORG0000H LJMPMAIN ORG000BH LJMPTIM0 ORG001BH LJMPDT1 MAIN: MOVSP,#60H ;MOVIE,#82H SETBEA SETBET0 SETBET1 MOVTMOD,#11H MOVTH0,#HIGH(TIM) MOVTL0,#LOW(TIM) MOVTH1,#70H;定时20ms MOVTL1,#00H; SETBTR0 MOVKEY,#0 MOVR5,#08H MOVR0,#40H MOVWRONG,#00H MOVDISP+0,#0FFH MOVDISP+1,#0FFH MOVDISP+2,#0FFH MOVDISP+3,#0FFH ;............................................ ;大循环 ;............................................ START: MOVR5,#08H MOVR0,#40H LCALLINPUT LCALLCOMPARE LJMPSTART ;............................................ LOOP:INCWRONG MOVDISP+1,#0EH ;第二个数码管显示"E"表示密码输入错误,锁没有打开 MOVKEY,#0 SJMPSTART ;............................................ ;输入8位密码 ;............................................ INPUT: MOVA,KEY JZINPUT MOV@R0,A MOVA,@R0 ;MOVDISP+3,A MOVDISP+3,A LCALLDELAY_S ;消抖 INCR0 MOVKEY,#0 DJNZR5,INPUT MOVKEY,#0 RET ;............................................. ;判断输入的密码是否正确 ;............................................. COMPARE:MOVR1,#00H MOVR5,#08H MOVR0,#40H MOVA,WRONG CJNEA,#2,NEXT ;判断输入错误次数是否等于3,不等于跳转NEXT MOVWRONG,#00H ;等于3调用按键锁定子程序 MOVKEY,#0 LCALLLOCK