2022年基于51单片机密码锁课程设计报告.docx

上传人:C****o 文档编号:12904890 上传时间:2022-04-26 格式:DOCX 页数:34 大小:869.17KB
返回 下载 相关 举报
2022年基于51单片机密码锁课程设计报告.docx_第1页
第1页 / 共34页
2022年基于51单片机密码锁课程设计报告.docx_第2页
第2页 / 共34页
点击查看更多>>
资源描述

《2022年基于51单片机密码锁课程设计报告.docx》由会员分享,可在线阅读,更多相关《2022年基于51单片机密码锁课程设计报告.docx(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精品学习资源单片机课程设计报告题目:简易电子密码锁设计专业:自动化班级:2021 届 1 班姓名:梁小龙同组队员:陈文杰、王珏文、陈绮雯、吴秀玲、何佳炽学号 :202130087109日期: 2021 年 3 月一.设计目地在日常地生活和工作中,住宅与部门地安全防范、单位地文件档案、财务报表以及一些个人资料地储存多以加锁地方法来解决.如使用传统地机械式钥匙开锁,人们常需要携带 多把钥匙,使用极不便利,且钥匙丢失后安全性即大打折扣.随着科学技术地不断进展,人们对日常生活中地安全保险器件地要求越来越高.为了满意人们对锁地使用要求,增加其安欢迎下载精品学习资源全性,用密码代替钥匙地密码锁应运而生.密

2、码锁具有安全性高、成本低、功耗低、易操作等优点 .在安全技术防范领域,具有防盗报警功能地电子密码锁逐步代替传统地机械式密码锁,克 服了机械式密码锁密码量少,安全性能差地缺点,使密码锁无论在技术上仍是在性能上都 大大提高一步 .随着大规模集成电路技术地进展,特殊是单片机地问世,显现了带微处理器地只能密码锁,它除了具有电子密码锁地功能外,仍引入了智能化治理、专家分析系统等 功能,从而使密码锁具有很高地安全性、牢靠性,应用日益广泛.本设计采纳单片机为主控芯片,结合外围电路,组成电子密码锁,用户想要打开锁,必先通过供应地键盘输入正确地密码才能将锁打开,密码输入错误就有提示,为了提高安全性,当密码输入错

3、误次将报警.密码可以由用户自己修改设定,锁开后才能修改密码.修改密码前必需再次输入密码,在输入新密码时候需要二次确认,以防止误操作.二设计要求和方案挑选1、 方案:用 AT89C52 设计地多功能密码锁 .以单片机作为微掌握器,可以实现基于以上优点,按键有效指示、输入错误、掌握开锁、错误报警、密码修改等功能,工作稳固可靠,保密性高,有用性强.2、电子密码锁总体设计欢迎下载精品学习资源电源输入键盘输入欢迎下载精品学习资源欢迎下载精品学习资源显示电路报警电路开锁电路AT89C52复位电路密码储备晶振电路欢迎下载精品学习资源三硬件部分AT89C52 简介:单片机 AT89C52 简介AT89C52

4、是美国 ATMEL 公司生产地低电压,高性能CMOS 8 位单片机,片内含4K bytes地可反复擦写地只读程序储备器(EPROM )和 128bytes 地随机存取数据序存器(RAM ),器件采纳 ATMEL 公司地高密度 /非易失性储备技术生产,兼容标准MCS-51 指令系统,片内置通用 8 位中心处理器( CPU )和 FLASH 储备单元, AT89C52 单片机为很多嵌入式掌握系统供应了一种灵活行高且价廉地方案 .主要特性 :欢迎下载精品学习资源. 与 MCS-51兼容. 4K 字节可编程 FLASH 储备器 寿命: 1000 写/擦循环 . 全静态工作: 0Hz-24KHz. 三级

5、程序储备器保密锁定. 128*8 位内部 RAM. 32条可编程 I/O 线. 两个 16 位定时器 /计数器. 5个中断源. 可编程串行通道. 低功耗地闲置和掉电模式. 片内振荡器和时钟电路1. 总电路图2. 键盘电路AT89C52欢迎下载精品学习资源按键与家庭电话式地按键方式3. 复位电路4. 晶振电路5. 显示电路欢迎下载精品学习资源显示容量芯片工作电压工作电流字符尺寸16*2 个字符4.55.5V2.0mA5v3.95*4.35mm时刻显示输入输出地内容以及操作过程.6. 报警电路当输入密码错误次数大于等于3 次时,会发出声响报警.7. 开锁电路欢迎下载精品学习资源欢迎下载精品学习资源

6、四软件设计1. 程序设计流程图2. 程序代码 #include 欢迎下载精品学习资源#include输入密码欢迎下载精品学习资源#define LCM_Data P0#define uchar unsigned char #define uintunsignedint#define w 6/定义正密确码?位数sbit lcd1602_rs=P25 ;sbit lcd1602_rw=P26 ;开锁sbit lcd1602_en=P27 ;sbitScl=P34 ; /24C02 串行时钟sbitSda=P35 ; /24C02 串行数据sbit ALAM = P21 ;判定按/报键警sbit K

7、EY = P20 ;/开锁sbitopen_led=P22 ;/开锁指示灯修改密码键欢迎下载精品学习资源bit operation=0 ;上锁/操键作标志位输入新密码欢迎下载精品学习资源bit pass=0;/密码正确标志bit ReInputEn=0 ;/重置输入充许标志欢迎下载精品学习资源bit s3_keydown=0 ;上/锁3 秒按键标志位修改密码欢迎下载精品学习资源bit key_disable=0 ;/锁定键盘标志unsigned char countt0,second; /t0 中断计数器 ,秒计数器void Delay5Msvoid ;unsigned char code a

8、=0xFE,0xFD,0xFB,0xF7;/控盘扫描掌握表unsigned char code b=0123456789;终止unsigned char code start_line= password:;unsigned char code name= =Coded Lock=;/显示名称unsigned char code Correct= correct;/输入正确unsigned char code Error= error;/输入错误unsigned char code codepassunsigned char code LockOpen= = passopen;/OPENuns

9、igned char code SetNew= SetNewWordEnable;unsigned char code Input= input:;/INPUT unsigned char code ResetOK= ResetPasswordOK ;unsigned char code initword= Init password.; unsigned char code Er_try= error,try again.; unsigned char code again= input again; unsigned char InputData6 ;/输入密码暂存区unsigned ch

10、ar CurrentPassword6=1,3,1,4,2,0;/当前密码值unsigned char TempPassword6;欢迎下载精品学习资源unsigned char N=0 ;/密码输入位数记数unsigned char ErrorCont ;/错误次数计数unsigned char CorrectCont ;/正确输入计数unsigned char ReInputCont ;/重新输入计数unsigned char code initpassword6=0,0,0,0,0,0;/=5ms延时 =void Delay5MsvoidunsignedintTempCyc = 5552

11、 ;whileTempCyc- ;/=400ms延时 =void Delay400Msvoidunsigned char TempCycA = 5 ;unsignedintTempCycB ;whileTempCycA-TempCycB=7269 ;whileTempCycB- ;/=24C02=void mDelayuint t / 延时uchari;whilet-fori=0 ;i125 ; i+ ;void Nopvoid/空操作_nop_ ;_nop_ ;_nop_ ;_nop_ ;/* 起始条件 */ void StartvoidSda=1;欢迎下载精品学习资源Scl=1;Nop ;

12、Sda=0;Nop ;/* 停止条件 */ void StopvoidSda=0;Scl=1;Nop ;Sda=1;Nop ;/* 应答位 */ voidAckvoidSda=0;Nop ;Scl=1;Nop ;Scl=0;/* 反向应答位 */ voidNoAckvoidSda=1;Nop ;Scl=1;Nop ;Scl=0;/* 发送数据子程序, Data 为要求发送地数据*/ void Senduchar DataucharBitCounter=8 ;uchar temp;dotemp=Data;Scl=0;Nop ;iftemp&0x80=0x80 Sda=1;欢迎下载精品学习资源el

13、se Sda=0;Scl=1;temp=Data1 ;Data=temp;BitCounter- ;whileBitCounter ;Scl=0;/* 读一字节地数据,并返回该字节值*/ uchar Readvoiduchar temp=0 ;uchar temp1=0 ;ucharBitCounter=8 ;Sda=1;do Scl=0;Nop ;Scl=1;Nop ;ifSdatemp=temp|0x01 ;else temp=temp&0xfe ;ifBitCounter-1temp1=temp1 ;temp=temp1;BitCounter- ;whileBitCounter ;ret

14、urntemp ;voidWrToROMuchar Data,ucharAddress,ucharNumuchari; uchar *PData ;PData=Data;fori=0 ;iNum ;i+Start;欢迎下载精品学习资源Send0xa0; Ack ;SendAddress+i;Ack ;Send*PData+i ;Ack ;Stop;mDelay20 ;voidRdFromROMuchar Data,ucharAddress,ucharNumuchari; uchar *PData ;PData=Data;fori=0 ;i0 ;x- fory=110 ;y0 ;y- ;欢迎下载

15、精品学习资源/-写指令 -write_1602comuchar com/*液晶写入指令函数*lcd1602_rs=0 ;/数据 /指令挑选置为指令.lcd1602_rw=0 ; / 读写挑选置为写P0=com;/ 送入数据delay1 ;lcd1602_en=1 ;/拉高使能端,为制造有效地下降沿做预备delay1 ;lcd1602_en=0 ;/en 由高变低,产生下降沿,液晶执行命令/-写数据 -write_1602datuchardat/*液晶写入数据函数 *lcd1602_rs=1 ;/数据 /指令挑选置为数据lcd1602_rw=0 ; / 读写挑选置为写P0=dat;/送入数据de

16、lay1 ;lcd1602_en=1 ; /en 置高电平,为制造下降沿做预备delay1 ;lcd1602_en=0 ; /en 由高变低,产生下降沿,液晶执行命令/-初始化 -voidlcd_initvoidwrite_1602com0x38 ;/设置液晶工作模式,意思:16*2 行显示, 5*7 点阵, 8 位数据write_1602com0x0c ;/开显示不显示光标write_1602com0x06 ;/整屏不移动,光标自动右移write_1602com0x01 ;/清显示/=将按键值编码为数值 =unsigned char codingunsigned char munsigned

17、 char k;switchmcase 0x18: k=1 ;break;case 0x28: k=2 ;break;case 0x48: k=3 ;break;case 0x88: k=A ;break;case 0x14: k=4 ;break;case 0x24: k=5 ;break;case 0x44: k=6 ;break;欢迎下载精品学习资源case 0x84: k=B ;break;case 0x12: k=7 ;break;case 0x22: k=8 ;break;case 0x42: k=9 ;break;case 0x82: k=C ;break;case 0x11:

18、k=* ; break;case 0x21: k=0 ;break;case 0x41: k=# ; break;case 0x81: k=D ;break;returnk ;/=按键检测并返回按键值=unsigned char keynumvoidunsigned char row,col,i ;P1=0xf0 ;ifP1&0xf0.=0xf0Delay5Ms ;Delay5Ms ;ifP1&0xf0.=0xf0row=P10xf0 ;/确定行线i=0 ;P1=ai ;/精确定位whilei4ifP1&0xf0.=0xf0col=P1&0xff; /确定列线break;/ 已定位后提前退出欢

19、迎下载精品学习资源else i+ ;elseP1=ai ;欢迎下载精品学习资源return 0;欢迎下载精品学习资源whileP1&0xf0.=0xf0;return row|col ;/行线与列线组合后返回else return 0; /无键按下时返回 0/=一声提示音,表示有效输入=voidOneAlamvoidALAM=0 ;Delay5Ms ;ALAM=1 ;/=二声提示音,表示操作成功=voidTwoAlamvoidALAM=0 ;Delay5Ms ;ALAM=1 ;Delay5Ms ;ALAM=0 ;Delay5Ms ;ALAM=1 ;/=三声提示音 ,表示错误 =voidThre

20、eAlamvoidALAM=0 ;Delay5Ms ;ALAM=1 ;Delay5Ms ;ALAM=0 ;Delay5Ms ;ALAM=1 ;Delay5Ms ;ALAM=0 ;Delay5Ms ;ALAM=1 ;/=显 示 输 入 地 N个 数 字 , 用 H代 替 以 便 隐 藏=voidDisplayOnevoid欢迎下载精品学习资源/DisplayOneChar9+N,1,*;write_1602comyi+5+N;write_1602dat* ;/=显示提示输入 =voidDisplayCharvoidunsigned char i;ifpass=1/DisplayListChar0

21、,1,LockOpen;write_1602comer ;fori=0 ;i16 ;i+write_1602datLockOpeni;欢迎下载精品学习资源else ifN=0/DisplayListChar0,1,Error;write_1602comer ;欢迎下载精品学习资源fori=0 ;i16 ;i+write_1602datErrori;欢迎下载精品学习资源else/DisplayListChar0,1,start_line;write_1602comer ;欢迎下载精品学习资源fori=0 ;i16 ;i+write_1602datstart_linei;voidDisplayIn

22、putvoidunsigned char i;ifCorrectCont=1欢迎下载精品学习资源/DisplayListChar0,0,Input;write_1602comer ;fori=0 ;i16 ;i+write_1602datInputi;/=重置密码=/=voidResetPasswordvoidunsigned char i;unsigned char j;ifpass=0pass=0;DisplayChar ;ThreeAlam ;elseifReInputEn=1ifN=6ReInputCont+ ;ifReInputCont=2fori=0 ;i6 ;ifTempPass

23、wordi=InputDatai/将两次输入地新密码作对比欢迎下载精品学习资源i+ ;else/DisplayListChar0,1,Error;write_1602comer ;欢迎下载精品学习资源forj=0 ;j16 ;j+write_1602datErrorj;欢迎下载精品学习资源ThreeAlam ; /错误提示pass=0;ReInputEn=0 ; /关闭重置功能, ReInputCont=0 ;DisplayChar ;break;欢迎下载精品学习资源ifi=6/DisplayListChar0,1,ResetOK ;write_1602comer ;欢迎下载精品学习资源for

24、j=0 ;j16 ;j+write_1602datResetOKj ;TwoAlam ;/操作胜利提示WrToROMTempPassword,0,6 ;/将新密码写入 24C02 储备ReInputEn=0 ;ReInputCont=0 ;CorrectCont=0 ;elseOneAlam ;/DisplayListChar0, 1, again ; /显示再次输入一次write_1602comer ;forj=0 ;j16 ;j+write_1602datagainj ;fori=0 ;i6 ;i+TempPasswordi=InputDatai;/将第一次输入地数据暂存起来N=0 ; /

25、输入数据位数计数器清零欢迎下载精品学习资源/=输 入 密 码 错 误 超 过 三 过 , 报 警 并 锁 死 键 盘=voidAlam_KeyUnablevoidP1=0x00 ;ALAM=ALAM;Delay5Ms ;/=取消所有操作=void Cancelvoidunsigned char i;unsigned char j;/DisplayListChar0, 1, start_line;write_1602comer ;forj=0 ;j16 ;j+write_1602datstart_linej;TwoAlam ;/提示音fori=0 ;i6 ;i+InputDatai=0 ;KEY

26、=1 ;/关闭锁 ALAM=1 ;/报警关operation=0 ;/操作标志位清零pass=0;/密码正确标志清零ReInputEn=0 ; /重置输入充许标志清零ErrorCont=0 ;/密码错误输入次数清零CorrectCont=0 ;/密码正确输入次数清零ReInputCont=0 ;/重置密码输入次数清零open_led=1;s3_keydown=0 ;key_disable=0 ;N=0 ; /输入位数计数器清零/=确 认 键 , 并 通 过 相 应 标 志 位 执 行 相 应 功 能=欢迎下载精品学习资源void Ensurevoidunsigned char i,j ;RdF

27、romROMCurrentPassword,0,6 ;/从 24C02 里读出储备密码ifN=6ifReInputEn=0/重置密码功能未开启fori=0 ;i6 ;ifCurrentPasswordi=InputDataii+ ;elseErrorCont+ ;ifErrorCont=3/错误输入计数达三次时,报警并锁定键盘write_1602comer ;fori=0 ;i16 ;i+write_1602datErrori;doAlam_KeyUnable ;while1 ;欢迎下载精品学习资源elseTR0=1 ;/开启定时欢迎下载精品学习资源key_disable=1 ;/锁定键盘pa

28、ss=0;break;ifi=6CorrectCont+ ;ifCorrectCont=1/正确输入计数,当只有一次正确输入时,开锁,/DisplayListChar0,1,LockOpen;write_1602comer ;欢迎下载精品学习资源forj=0 ;j16 ;j+write_1602datLockOpenj;TwoAlam ;/ 操作胜利提示音KEY=0 ;/开锁pass=1;/置正确标志位TR0=1 ;/开启定时open_led=0;/开锁指示灯亮forj=0 ; j6 ;j+/将输入清除InputDatai=0 ;else/当两次正确输入时,开启重置密码功能/DisplayLi

29、stChar0,1,SetNew ;write_1602comer ;forj=0 ;j16 ;j+write_1602datSetNewj ;TwoAlam ;/操作胜利提示ReInputEn=1 ; /答应重置密码输入CorrectCont=0 ;/正确计数器清零else/=当第一次使用或遗忘密码时可以用131420 对其密码初始化=ifInputData0=1&InputData1=3&InputData2=1&InputData3=4 &InputData4=2&InputData5=0WrToROMinitpassword,0,6 ; /强制将初始密码写入24C02 储备/Displ

30、ayListChar0,1,initword;/显示初始化密码write_1602comer ;forj=0 ;j16 ;j+write_1602datinitwordj;TwoAlam ;Delay400Ms ;TwoAlam ;欢迎下载精品学习资源elseN=0 ;/DisplayListChar0,1,Error;write_1602comer ;欢迎下载精品学习资源forj=0 ;j16 ;j+write_1602datErrorj;ThreeAlam ; /错误提示音pass=0;else/当已经开启重置密码功能时,而按下开锁键,/DisplayListChar0,1,Er_try;

31、write_1602comer ;forj=0 ;j16 ;j+write_1602datEr_tryj;ThreeAlam ;欢迎下载精品学习资源else/DisplayListChar0,1,Error;write_1602comer ;欢迎下载精品学习资源forj=0 ;j16 ;j+write_1602datErrorj;ThreeAlam ; /错误提示音pass=0;N=0 ; /将输入数据计数器清零,为下一次输入作预备operation=1 ;/=主函数 =void mainvoid欢迎下载精品学习资源unsigned char KEY2,NUM,M;unsigned char

32、i,j ;P1=0xFF;TMOD=0x11 ;TL0=0xB0 ;TH0=0x3C ;EA=1 ;ET0=1 ;TR0=0 ;Delay400Ms ;/启动等待,等 LCM 讲入工作状态lcd_init ;/LCD 初始化write_1602comyi ;/ 日历显示固定符号从第一行第0 个位置之后开头显示fori=0 ;i16 ;i+write_1602datnamei ;/ 向液晶屏写日历显示地固定符号部分write_1602comer ;/ 时间显示固定符号写入位置,从第2 个位置后开头显示fori=0 ;i16 ;i+write_1602datstart_linei;/ 写显示时间固

33、定符号,两个冒号write_1602comer+9 ; /设置光标位置write_1602com0x0f ; /设置光标为闪耀Delay5Ms ; / 延时片刻 可不要 欢迎下载精品学习资源while1N=0 ; /初始化数据输入位数欢迎下载精品学习资源ifkey_disable=1 Alam_KeyUnable ;elseALAM=1 ;/关报警KEY2=keynum ;ifKEY2.=0ifkey_disable=1second=0;欢迎下载精品学习资源elseNUM=codingKEY2;欢迎下载精品学习资源switchNUMcase A:;break;case B:;break;case C:;break;欢迎下载精品学习资源default:case D: ResetPassword;break;/重新设置密码case *: Cancel ;break;/取消当前输入case #: Ensure;b

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁