7aduc848课程设计.多功能密码锁

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

任务及设计要求1.设计一多位电子密码锁,输入密码用“F”表示,输入密码正确,绿灯亮(或显示其它标志、蜂鸣器替代),输入密码错误,红灯亮(或显示其它标志、蜂鸣器替代).2.具有确定键和取消键,在未确定之前可以取消,重新输入.3.连续输入三次错误密码,红灯闪烁,报警电路动作,键盘锁定.4.具有密码重置、修改功能.5.具有密码输入等待操作时间限制功能,超过限定时间报警.6.显示北京时间,时间可调整.7.可利用蜂鸣器添加提示音.系统原理框图硬件原理图元件清单元件数量元件数量ADUC848芯片01片三极管若干按键18个MAX23201片8段数码管05位二极管若干AT24C0801片下载线01根蜂鸣器01个电源线01根电阻若干开关01个电容若干硬件原理图仿真用原理图由于元件库缺少ADUC848,故使用了STC89C51代替仿真,因为端口两个芯片的P1口输入输出的设置不同,在仿真中修改了键盘扫描函数,以适用STC89C51的仿真.电源模块原理图有如下3种供电方式:1/5V电源适配器供电(开关往上拨、插针1下面两脚接跳线帽).2/7~12V电源适配器供电(开关往上拨、插针1上面两脚接跳线帽).3/USB供电(开关往下拨).RS232串口连接原理图该模块中采用maxin公司的max232作电平转换,接上串口转换下载线就可以从计算机上下载程序了.数码管显示模块原理本开发板采用共阴极数码管,段码由PNP三极管驱动,位码由NPN型三极管驱动.本设计中使用了低5位的数码管.蜂鸣器原理图本设计中采用无源电磁式蜂鸣器,蜂鸣器由PWM1(P2.6)控制.PWM1为片内PWM模块的输出.蜂鸣器的驱动采用普通NPN三极管.按键输入模块原理图由于P1口(用于行扫描)内部无上拉电阻,为使无键按下时行信号为高电平,故将行信号接上拉电阻,电阻大小10K即可.P2.0~P2.3为4X4矩阵式键盘列扫描信号.程序主要程序流程图程序#includeaduc848.h#includeintrins.h/***********************************************************************************类型定义************************************************************************************/#defineuintunsignedint#defineucharunsignedchar/***********************************************************************************状态定义************************************************************************************/#defineopened0#definenew115#definenew216#definesucced5#definefanin10#definenull11#defineerror12#definedifferent13#definetover14/***********************************************************************************按键定义************************************************************************************/#defineenter10#defineback11#definetrevise12#definerevise13#definecancel14#definevain15#defineoff16#defineend17#definefinish18/***********************************************************************************函数声明************************************************************************************/voidp_base();voidp_revise();voidp_new1();voidp_new2();voidp_trevise();voidp_show();ucharp_scan();voidp_record();voidp_delay(uintf_n);voidp_state(ucharf_s);ucharp_compare(uchar*f_k1,uchar*f_k2);voidp_copy(uchar*f_s,uchar*f_k);voidp_rsave();voidp_wsave();voidp_rtime();voidp_stime();voidp_start();voidp_stop();bitp_rack();voidp_nack();ucharrbyte();voidp_wbyte(ucharf_b);ucharp_rdata(ucharf_a);voidp_wdata(ucharf_a,ucharf_d);/***********************************************************************************I/O口定义************************************************************************************/sbitp00=P0^0;sbitp10=P1^0;sbitp11=P1^1;sbitp12=P1^2;sbitp13=P1^3;sbitp14=P1^4;sbitp15=P1^5;sbitp16=P1^6;sbitp17=P1^7;sbitp20=P2^0;sbitp21=P2^1;sbitp22=P2^2;sbitp23=P2^3;sbitp24=P2^4;sbitp25=P2^5;sbitp26=P2^6;sbitp27=P2^7;sbitp30=P3^0;sbitp31=P3^1;sbitp32=P3^2;sbitp33=P3^3;sbitp34=P3^4;sbitp35=P3^5;sbitp36=P3^6;sbitp37=P3^7;/***********************************************************************************全局变量定义************************************************************************************/ucharbot,key1[9],key2[9],save[9],stime[4],s,min,h,mino,mint,ho,ht,n1=1,n2=1,lock,minu,sign,tov,state,n,sound,point=1,ts,flash=7,bright33=1,bright35=1,bright36=1,bright37=1;showlist[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0x71,0xff,0x21,0x85,0xe1,0x7f,0x7d};uintms;/***********************************************************************************主函数************************************************************************************/voidmain(){EA=1;ET0=1;TMOD=0x11;TH0=0xf9;TL0=0xdb;TR0=1;I2CCON=0xe8;sound=0;tov=1;P1=0x00;p_rsave();sign=p_rdata(40);if(sign!=1)p_new1();p_base();}/***********************************************************************************基础解锁函数************************************************************************************/voidp_base(){n=0;state=fanin;while(1){if(n==0)state=fanin;elsestate=n;bot=p_scan();if(n!=0&&tov==0){p_state(tover);main();}switch(bot){casevain:break;caseenter:key1[n]=end;if(p_compare(key1,save)){p_state(succed);lock=0;point=1;state=opened;openedwhile(1){bot=p_scan();switch(bot){caseoff:main();break;caseback:while(1){bot=p_scan();switch(bot){caseoff:main();break;caseenter:p_wdata(40,0);main();break;}}}}}else{p_state(error);p_record();main();}break;casecancel:main();break;caseback:if(n!=0)key1[n--]=end;break;caserevise:p_revise();break;casetrevise:p_trevise();break;default:if(n+1==9){p_state(error);main();}key1[n++]=bot;}}}/***********************************************************************************密码修改函数************************************************************************************/voidp_revise(){n=0;p_state(fanin);state=fanin;while(1){if(n==0)state=fanin;elsestate=n;bot=p_scan();if(tov==0){p_state(tover);main();}switch(bot){casevain:break;caseenter:key1[n]=end;if(p_compare(key1,save)){lock=0;point=1;p_state(succed);p_new1();}else{p_state(error);;p_record();main();}break;casecancel:main();break;caseback:if(n!=0)key1[n--]=end;break;caserevise:p_revise();caseoff:break;casetrevise:p_trevise();break;default:if(n+1==9){p_state(error);main();}key1[n++]=bot;}}}/***********

1 / 32
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功