




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
..单片机系统课程设计成绩评定表设计课题:基于89C51的电子密码锁的设计学院名称:电气工程学院专业班级:学生:学号:指导教师:设计地点:设计时间:指导教师意见:成绩:签名:年月日..单片机系统课程设计课程设计名称:基于89C51的电子密码锁的设计专业班级:自动F1203学生XX:学号:指导教师:课程设计地点:课程设计时间:..单片机系统课程设计任务书学生专业班级学号题目基于89C51的电子密码锁的设计课题性质工程设计课题来源自拟指导教师主要容〔参数〕利用AT89C51以及外围键盘以及液晶显示局部来组成电子密码锁,实现的功能如下:实现密码的输入以及密码判定〔初始密码程序中已设定好〕,同时液晶显示局部显示相关提示信息。假设连续输入错误密码三次那么自锁,无法继续输入密码。任务要求〔进度〕第1-2天:熟悉课程设计任务及要求,查阅技术资料,确定设计方案。第3-4天:按照确定的方案设计单元电路。要求画出单元电路图,元件及元件参数选择要有依据,各单元电路的设计要有详细论述。第5-6天:软件设计,编写程序。第7-8天:实验室调试。第9-10天:撰写课程设计报告。要求容完整、图表清晰、文理流畅、格式规、方案合理、设计正确,篇幅合理。主要参考资料[1]迎新.单片微型计算机原理、应用及接口技术〔第2版〕[M].:国防工业,2004审查意见系〔教研室〕主任签字:年月日目录1硬件组成与方案设计41.1硬件组成41.2方案设计42单元电路设计42.1时钟电路设计42.2复位电路设计52.3键盘电路设计62.4显示电路设计62.5整体电路图设计83系统软件工作流程图93.1主程序工作流程93.2键盘扫描程序104系统功能实际测试114.1程序实际编译测试114.2单片机实际操作演示11总结16参考文献17附录A:整体电路图18附录B:详细程序19..概述:自从人类开场制造锁以来长期所使用的锁都是机械锁,通俗的讲就是弹子芯锁。而传统的弹子芯锁,由于其本身锁芯密齿的有限加之开锁工具钥匙的容易复制性,使得其平安性大大降低。随着人们生活质量的提高,如何实现平安有效的防盗这一问题受到越来越多人的关注。传统的机械锁由于平安性能太差,被撬的事件屡见不鲜。相比之下,电子密码锁因其性强,使用灵活性好,平安系数高,受到了广阔用户的欢送。电子密码锁作为一种新型的锁,平安性有了较大的提高,还省去了传统机械锁的钥匙,使用者只要记得其密码,便可以开启,从而大大提高了防盗功能。本文主要设计了一种以单片机AT89C51为核心的电子密码锁。详细地介绍了该电子密码锁以及其外围电路的设计过程。电子密码锁主要由三局部组成:键盘输入局部、单片机最小系统局部、液晶显示局部。通过外围键盘来进展密码输入,单片机那么负责把输入的密码与设定好的密码进展比对从而判断是否输入正确,而液晶显示局部那么负责进展相关提示信息的显示。1硬件组成与方案设计1.1硬件组成硬件组成如图1.1所示:图1.1硬件组成示意图1.2方案设计该系统采用外围矩阵键盘来进展密码的输入,单片机那么执行键盘扫描程序来获取相应的键值从而到达输入密码的功能,同时,单片机与1602液晶显示屏相连,来显示输入密码等相关提示信息方便用户使用。当用户连续输入错误密码三次时那么电子密码锁自锁,无法继续输入密码,从而提高了电子密码锁的平安2单元电路设计2.1时钟电路设计时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊地工作。因此时钟频率直接影响单片机的速度。常用的时钟产生方法有两种:部时钟方式以及外部时钟方式。本设计采用的是部时钟方式。其中部时钟方式是利用芯片部的振荡器,然后在引脚XTAL1和XTAL2两端跨接晶体或瓷谐振器,就构成了稳定的自激振荡器。其发出的脉冲直接送入部时钟电路。外接晶振时,C1和C2的值通常选择为30pF左右,C1和C2对频率有微调作用。晶体的频率选择12MHz。为了减少寄生电容,更好地保证振荡器稳定可靠地工作,振荡器和电容应尽可能安装得遇单片机芯片靠近。如图2.1所示图2.1时钟电路2.2复位电路设计复位是单片机的初始化操作,单片机在启动运行时,都需要先复位,它的作用是CPU和系统中的其它部件都处于一个确定的初始状态,并从这个状态开场工作。故复位关系到一个单片机系统能否可靠地工作。本设计采用的是按键电平复位,按复位键之后复位端通过电阻与Vcc电源连通。为保证复位可靠,应保证复位高电平持续时间大于两个机器周期,R4电阻值为200欧姆,R5电阻值为10K,C3电容值为22uF。如图2.2所示图2.2复位电路2.3键盘电路设计计算机所使用的键盘有全编码键盘和非编码键盘两种,本设计采用的是非编码键盘。非编码键盘只是简单地提供行和列的矩阵,其它工作都靠软件来完成,由于其经济实用,目前在单片机应用系统中多采用这种方法。本设计中采用了非编码矩阵键盘,通过四根行线四根列线与单片机相连,通过单片机部程序从而实现计算键值,进展密码输入的功能。如图2.3所示图2.3键盘电路2.4显示电路设计单片机的显示方式有点阵显示,数码管显示以及液晶屏显示。本设计采用的是液晶屏显示方式。液晶显示模块已作为很多电子产品中都可以看到,显示的主要是数字、专用符号和图形。1602型LCD显示模块具有体积小,功耗低,显示容丰富等特点。1602型LCD可以显示2行16个字符,有8位数产品的通过器件,如在计算器、万用表、电子表及很多家用电子据总线D0-D7和RS,R/W,EN三个控制端口,工作电压为5V,并且具有字符比照度调节和背光功能。引脚功能说明:第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器比照度调整端,接正电源时比照度最弱,接地时比照度最高,比照度过高时会产生"鬼影〞,使用时可以通过一个10K的电位器调整比照度。第4脚:RS为存放器选择,高电平时选择数据存放器、低电平时选择指令存放器。第5脚:R/W为读写信号线,高电平时进展读操作,低电平时进展写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第7~14脚:D0~D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。如图2.4.1所示图2.4.1显示局部电路如图2.4.2所示图2.4.21602型LCD外形尺寸图2.5整体电路图设计如图2.5所示图2.5整体电路图3系统工作流程图3.1主程序工作流程主程序首先初始化外围显示电路,并显示相关信息提示用户输入密码。用户按下确认键开场输入密码。单片机那么执行键盘扫描程序,获取相应键值与设定密码进展比对,假设正确那么执行解锁。输入错误那么提醒用户再一次输入,假设连续错误输入三次时电子密码锁自锁,用户无法继续输入密码。程序流程图如图3-1所示图3.1主程序流程图3.2键盘扫描程序键盘扫描程序是本设计的核心程序,是单片机能否正确读取按键对应键值的关键所在。通过软件延时来去除按键时的抖动影响,之后通过单片机部程序来获取相应键值。键盘扫描流程图如图3-2所示。图3.2键盘扫描流程图4系统功能实际测试4.1程序实际编译测试在Keil编译环境下编译通过,0错误,0警告。生成HEX文件4.2单片机实际操作演示在单片机实际操作过程中,使用的程序烧录软件为STC-ISP软件,该软件可以对51核的单片机进展相关程序的烧写,使用十分方便。启动软件之后,首先软件进展相应的设置。选择单片机的型号,由于51核的单片机具有一定的通用性,应选择了STC89C52RC型号的单片机。接着翻开前面所生成好的HEX文件。然后设置端口,本次实际操作中选用的是端口3〔3〕与笔记本相连,故端口设置为3。设置完之后的软件截图如图4.3所示。图4.1烧录软件设置设置完成之后点击DownLoad下载按钮,并按下单片机上的电源按键,程序烧录到单片机中,单片机开场运行程序。〔1〕程序开场运行时,如下列图所示。图4.2开场运行画面〔2〕按下confirm按键,开场输入密码。如下列图所示。图4.3开场输入密码〔3〕密码的输入。如下列图所示。图4.4密码输入〔4〕密码输入错误时,显示相应信息。如下列图所示。图4.5密码输入错误〔5〕当连续三次输入密码错误时,显示相应提示信息。如下列图所示。图4.6连续密码错误输入3次〔6〕密码正确输入。如下列图所示。图4.7密码正确输总结学习了一年的单片机课程,自己对单片机的设计也有了一定的了解,通过这次课程设计,我得到了很多收获和体会,以及一个工程设计的根本过程。增强了查阅参考资料,查阅手册,图表和文献资料的自学能力。在进展本系统的设计过程中虽然遇到很多的问题,比方说画图,设计等各种问题都让自己懊恼不已。但是通过自己的思考以及与同学之间的探讨得到了一定程度的解决。在该设计完成之后进展了模拟仿真,最终的效果还是令人满意的。同时,由于设计的时间以及能力有限,本设计还存在着一些不合理的地方,比方用户无法自己设定密码,只能靠原始程序来进展设定。同时采用的过于简陋的机械键盘,在用户输入密码时可能会产生误操作等。但是从整体来看,通过这一个设计我还是得到了不少的锻炼。使用Proteus软件进展模拟仿真,使用Keil来进展源程序的编写,使用Visio软件来绘制流程图等。这些都大大提高了我的动手能力,为以后的设计打下了良好的根底。参考文献[1]迎新.单片微型计算机原理、应用及接口技术〔第2版〕[M].:国防工业,2004[2]祁伟,亭.单片机C51程序设计教程与实验[M].:航空航天大学.[3]楼然苗.光飞.单片机课程设计指导[M].:航空航天大学.附录A:整体电路图附录B:详细程序主函数局部:#include<reg52.h>#include"key.h"#include"lcd.h"ucharcodeshow_0[]="Pleaseinputthepassword:";ucharcodeshow_1[]="Thecipheris:";ucharcodeshow_2[]="********";ucharcodeshow_3[]="Thepasswordiswrong!";ucharcodeshow_4[]="Thisisthelasttime,";ucharcodeshow_5[]="Pleasetryittomorrow!";ucharcodeshow_6[]="youareright!";ucharinit_pswd[]={8,8,8,8,8,8,8,8};ucharpswd[8]={0};ucharpswd_1[8]={0};voidplay(uchar*j,uchark) //K是显示的个数,j是地址{uchari;for(i=0;i<k;i++){dat_w(*(j+i)); delay(20);}}main(){ucharj=0,i=0,sum_1=0;loop:init();clear();gotoxy(1,0);play(show_0,16);gotoxy(2,0);play(show_0+17,10);/****密码输入****/do{key();}while(ki!=15);clear();gotoxy(1,0);play(show_1,15);do{flag=0;key(); gotoxy(2,0); if(flag==1&&ki<=9) { pswd[i]=ki; play(show_2,i); i++; } if(ki==14) //14那么退出. break;} while(i<=8);for(i=0;i<=7;i++){sum_1=init_pswd[i]-pswd[i]+sum_1;if(sum_1!=0) { clear(); j++; if(j==3) { clear(); gotoxy(1,0); play(show_4,16); gotoxy(2,0); play(show_4+16,14); delay(500); delay(500); clear(); gotoxy(1,0); play(show_5+7,16); while(1);//三次输入密码失败,自锁 } gotoxy(1,0); play(show_3,16); gotoxy(2,5); play(show_3+15,7); delay(500); clear(); gotoloop; } if(sum_1==0) { clear(); gotoxy(1,0); play(show_6,15); do { key(); } while(ki!=13); loop1:clear(); /****第一次输密码***/ i=0; do { flag=0;key(); if(flag==1&&ki<=9) { pswd[i]=ki; i++; clear(); gotoxy(1,0); play(show_2,i); } }while(i<=7); clear(); /***第二次输密码****/ i=0; sum_1=0; do { flag=0;key(); if(flag==1&&ki<=9) { pswd_1[i]=ki; i++; clear(); gotoxy(1,0); play(show_2,i); } } while(i<=7); for(i=0;i<=7;i++) { sum_1=sum_1+pswd_1[i]-pswd[i]; } if(sum_1==0) { clear(); for(i=0;i<=7;i++) { init_pswd[i]=pswd[1]; } while(1); } if(sum_1!=0) { clear(); gotoloop1; } } }}LCD局部#ifndef_lcd_h#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintsbitE=P0^7;sbitRW=P0^6;sbitRS=P0^5; /***写命令***/voidcmd_w(ucharcmd){RW=0;RS=0;E=1;P2=cmd;delay(1);E=0;}/***写数据***/voiddat_w(uchardat){RW=0;RS=1;E=1;P2=dat;delay(1);E=0;}/***清屏****/voidclear(void){cmd_w(0x01); //清屏cmd_w(0x02); //清屏回到左上角}/***初始化**/voidinit(void){cmd_w(0x38);cmd_w(0x0d); }/***光标定位****/voidgotoxy(ucharx,uchary) //x是行数,y是列数{if(x==1){cmd_w(0x80+y);}e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 术后早期康复
- 车工工艺与技能训练(第二版)课件:车削工件的基准和定位基准的选择
- 基于2025年目标的智慧物流配送体系建设资金申请项目风险管理
- 教育行业并购整合策略优化路径:2025年投资趋势分析报告
- 新生儿窒息评估
- 术后疼痛护理读书报告
- 有机磷农药中毒心理护理
- 智力低下康复
- 社区健康教育经验分享
- 《网络主播培养与直播销售实战(AIGC版)》课件 第9章 售后服务与复盘
- 连续刚构箱梁体外预应力施工技术
- 年产6万吨丙烯腈合成段工艺设计
- 人物速写入门教程
- GB/T 5174-2004表面活性剂洗涤剂阳离子活性物含量的测定
- GB/T 17737.1-2013同轴通信电缆第1部分:总规范总则、定义和要求
- 广州 国际健康产业城发展规划方案
- 考研考博-英语-内蒙古工业大学考试押题卷含答案详解4
- 医院二级库管理制度(大全)
- 华为内部控制PPT培训课件
- 雨季监理实施细则
- 分层审核检查表LPA全套案例
评论
0/150
提交评论