欢迎来到天天文库
浏览记录
ID:12352488
大小:605.37 KB
页数:10页
时间:2018-07-16
《8位数字密码锁设计--eda课程设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验名称EDA课程设计课程名称8位数字密码锁设计专业班级电子科学与技术学生姓名指导教师实验日期2017-10-18一实验目的与要求实验目的:设计一个电子密码锁,要求是设定6位的密码锁,从键盘输入密码,可用6个数码管显示输入的密码位数。密码输入正确后即可开锁,输入三次错误密码就不断报警。实验内容:.电子密码锁的硬件的选择1.1主控芯片本次设计采用的单片机芯片是AT89S52。AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器、256字节RAM、32位I/O口线,看门狗定时器、2个数据指针、三个16位定时器、计数
2、器、一个6向量2级中断结构、全双工串行口、片内晶振及时钟电路。1.2EEPROM数据存储器24C02,。本次设计采用24C02芯片为密码存储器,宰掉电的情况下可以继续保存数据。24C02芯片作为系统的从器件,它与主器件之间的通信遵循I^2C总线协议,协议规定任何将数据传送到总线的器件作为发送器,任何从总线接收数据的器件为接收器。串入并出移位寄存器74HC164。它是高速硅门CMOS器件,与低功耗肖特基型TTL器件的引脚兼容,是8位边沿触发式移位寄存器,串行输入数据,然后并行输出。数据通过两个输入端之一串行输入,任一输入端可以用作高电平使能端,控制另一
3、输入端的数据输入。两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不能悬空。时钟每次由低变高时,数据右移一位,输入到Q0,主复位输入端上的一个地电平将使其它所有输入端都无效,同时非同步地清除寄存器,强制所有的输出为低电平。1.4八位数据锁存器74273。74273芯片是八位高速寄存器,其内部由8个D锁存器构成,有共同的时钟输入端和异步复位器。其特性有:边沿触发、8位高速寄存器、数据并入并出、同步时钟,异步复位。2、系统硬件各部分电路2.1数据处理及控制本次设计中,由AT89S52芯片连同附加电路构成的单片机最小系统作为数据处理及控制部分。2
4、.2键盘输入本次采用行列式键盘作为密码锁系统的输入部分,把2单个按键按4*4格式组合成键盘,四条行线连接到单片机的P1.0~P1.3四条I/O口线上,四条列线连接到单片机芯片的P1.4~P1.7四条I/O口线上,在系统运行时,通过检测每条行线和列线上的电平变化,即可判断出用户输入的为何种信息,其电路连接图如下图所示:2.3密码存储本次设计采用在掉电情况下依然能保存数据的EEPROM存储芯片24C02作为密码存储部分的记忆芯片,在电子密码锁系统中,系统需要存储的密码仅有6位,数量较小,所以,芯片的地址选择端口可以直接接地线,只需把芯片的时钟输入端口(S
5、CK)和数据输入端口(SDA)和单片机相连,其电路图2.4显示部分电子密码锁系统需要显示的信息少,故采用七段LED数码显示器,数据传输采用串行方式,由单片机的串行数据口P3.0发送,在经过74HC164串行移位寄存器把串行数据转换成8位并行数据,用以驱动七段LED数码显示管。电路图如下:本次设计得程序:voidmain(){uchari=0;ucharIIC_Password[10];ucharIS_Valid_User=0;P0=0xFF;P1=0xFF;P2=0xFF;TMOD=0x02;//T0设置为8位自动重装模式TH0=175;TL0=17
6、5;TR0=1;//启动T0DelayMS(10)//将24C04中预先写入的密码读入passRecString(0xa0,0,IIC_Password,6);IIC_Password[6]=' ';while(1){P1=0xF0;if(P1!=0xF0)KeyNo=Keys_Scan();//扫描键盘获取键序号KeyNoswitch(KeyNo){case0:case1:case2:case3:case4:case5:case6:case7:case8:case9:if(i<=5)//密码限制在6位以内{//如果i为0则执行一次清屏if(i==
7、0)Display_String("",0x40);UserPassword[i]=KeyNo+'0';UserPassword[i+1]=' ';DSY_BUFFER[i]='*';DSY_BUFFER[i+1]=' ';Display_String(DSY_BUFFER,0x40);i++;}break;case10://按A键开锁if(strcmp(UserPassword,IIC_Password)==0){LED_OPEN=0;//点亮LEDClear_Password();Display_String("UnlockOK!",0x40
8、);实验心得:在这次的课程设计中也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在设计过
此文档下载收益归作者所有