单片机实习报告材料键盘式电子密码锁

上传人:痛*** 文档编号:82983685 上传时间:2022-04-30 格式:DOC 页数:27 大小:1.14MB
收藏 版权申诉 举报 下载
单片机实习报告材料键盘式电子密码锁_第1页
第1页 / 共27页
单片机实习报告材料键盘式电子密码锁_第2页
第2页 / 共27页
单片机实习报告材料键盘式电子密码锁_第3页
第3页 / 共27页
资源描述:

《单片机实习报告材料键盘式电子密码锁》由会员分享,可在线阅读,更多相关《单片机实习报告材料键盘式电子密码锁(27页珍藏版)》请在装配图网上搜索。

1、word单片机应用实习实习报告院系名称: 电气与信息工程学院专业班级: 测控14-1学生某某: 黄文峰学 号: 20141765指导教师: 曲贵波X鹏某某工程学院教务处制2016年6月实习任务书学生某某黄文峰院系电气与信息工程学院专业班级测控14-1指导教师某某曲贵波 X鹏职称副教授是否外聘是 否题目名称键盘式电子密码锁一、设计的内容、目的和意义本次实习是有关于键盘式电子密码锁的设计。键盘式的电子密码锁使用最为广泛,本产品主要用于保险箱、防盗门、保险柜之类的,还有一局部用于保管箱和运钞车。该产品在键盘上输入密码,易于掌握,由于密码是记在用户的脑子里,所以既准确又可靠,不易破解,除非自己丢失或者

2、泄露。如今电子密码锁向着“随意设定密码“显示乱序“多重设定密码“锁定键盘等方向开展,使得不法分子无从入手。尽管新型电子防盗锁层出不穷,但是键盘式电子密码锁仍在市场上占据着主流地位,并且经常作为其他类型防盗锁的辅助功能。本设计主要可实现:1在一定时间内没有任何按键操作如此关闭显示器,并锁定键盘,单片机复位后锁定取消;2能够从键盘中输入密码,并相应地在显示器上显示*;3能够判断密码是否正确,正确如此开锁,错误如此输出相应信息;4在操作错误达到一定次数后能够报警;5能够实现密码的修改;二、设计的技术指标要求1、研究方法1总体按照最优化的方法进展软件设计和硬件设计,走软件实现道路;2对软硬件进展模块划

3、分,并对各单元电路结合EDA工具进展论证设计;3在查阅文献根底上展开设计,力求创新。2、技术要求1可以修改密码;2输入密码必须正确;3密码输入次数过多会自动报警;摘 要本设计从经济实用角度出发,采用STC89C52单片机作为密码监控装置和控制核心,结合AT24C02存储单元电路,4*4矩阵键盘电路,LCD1602显示电路,报警电路和开锁电路构成的,通过键盘输入正确的密码来控制电路,从而完成开锁、机械上锁、智能锁定键盘、修改密码等功能的电子产品。通过编程来实现,其性能和安全性已远远超过传统的机械锁。本设计具有某某性好、本钱低、功耗低、操作简单、随机开锁成功率几乎为零、密码可变、误码输入保护、屡次

4、错误报警、断电记忆等优点。方案比拟与选择方案1:采用数字电路控制。用以74LS112双JK触发器构成的数字电路作为密码锁的核心控制,将密码保存在JK触发器中,用其与输入密码通过比拟器比拟,判断密码正确与否。其优点是设计原理简单,但是控制的准确性和灵活性比拟差,物理结构较为复杂,操作不便。方案2:采用STC89C52单片机为核心的控制。由于单片机的性能、存储、运行速度、I/O口、定时/计数器、功耗、晶振、复位等因素,用以STC89C52单片机作为核心,利用单片机灵活的编程设计和丰富的I/O端口与其控制的准确性,来实现电子密码锁的根本功能。利用外接AT24C02存储芯片存储密码,LCD1602液晶

5、显示,蜂鸣器作为报警驱动。单片机控制原理如图1.1。 STC89C52单片机矩阵键盘LCD1602显示屏储存单元开锁模式报警模式图1.1 单片机控制原理图。确定方案与理由:结合上述两种方案,结合现实生活需求,本设计选用方案二。26 / 27第1章 总体设计方案1.1 总体设计方案 此电子密码锁的系统中设计主要由三局部组成:44矩阵键盘接口电路、密码锁的控制电路、输出八段显示电路。另外系统还有LED提示灯,报警蜂鸣器等。系统能完本钱机超次锁定、修改用户密码根本的密码锁的功能。本设计的任务拟采用单片机C51作为单片机的核心单元,利用单片机串行发射、接收等功能而设计的一款具有本机开锁和报警功能的电子

6、密码锁。本系统本钱低廉,功能实用。主要分为以下几个局部:1设置密码与修改设置6位密码,密码可以由用户自己修改设定只支持6位密码,密码通过键盘输入,假如密码正确,如此将锁打开。锁打开后才能修改密码。修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作。(2密码显示为了帮助用户确认是否有键按下,特在电路中设置了模拟显示电路;而为了防止密码外泄;显示时,并不是显示用户按下的数字符号,而是以一个特定的字母符号提醒用户是否有键按下。有键按下,就会显示出字符-“*,没键按下,如此不会显示字符。这样既巧妙的提醒了用户又保护了用户密码,此乃本设计可靠性优点之一。(3密码错误报警当用户键入错

7、误密码时,密码输入错误数码显示器会出现错误提示。当连续三次出现密码错误时,系统就会报警,由蜂鸣器发出报警声,锁定键盘且系统会长期报警不止。这时必须按复位方可停止。此乃安全可靠性之一。1.2 软硬件功能分析主要分为以下几个局部:1单片机:本局部的功能包括写入和读取各种控制命令与数据处理,同时还要对各执行单元进展控制。单片机是整个系统的控制核心与数据处理核心。2键盘局部:本局部由用户通过键盘输入各种信息送入到单片机进展处理。3显示局部:本局部完成的是单片机处理后的数据和信息的显示以与系统提示信息的显示。4密码存储局部:本局部完成存储原始密码和用户更改密码数据的功能。5其它局部:本局部的目的是为了提

8、高系统的可用性和实用性。主要包括电源局部、复位局部、晶振局部、开锁局部和报警局部。电源局部主要的功能是为单片机提供适当的工作电源,同时也为其它的局部提供电源。复位局部功能是使单片机在出现故障时进展成功的复位。晶振局部功能是给单片机提供时钟。开锁局部主要是根据单片机数据处理的结果驱动继电器控制开锁的操作。报警局部主要的功能就是在错误操作下实现报警提示。第2章 硬件电路设计2.1 单片机最小系统电路设计 单片机最小系统设计是单片机应用系统设计的根底。STC89C52单片机最小系统电路如下列图。图 单片机最小系统电路输入电路与其接口技术在电子密码锁中各种信息的输入都是通过键盘输入局部完成的。把单个按

9、键按照4*4组成键盘,四条行线连接到单片机的四条I/O口线上, 四条列线连接到单片机的四条I/O口线上,运行的时候,单片机通过控制P1口得上下电平,然后根据变化进展判断。单片机向行线输入高电平,向列线输入低电平,按键未被按下之前保持电平给定不变,按键按下,行线的高电平变成低电平。同样对列线进展判定,即可判断所输入的信息。键盘局部的电路连接如下列图:图2.2 键盘输入电路2.3 人机接口电路设计本设计利用显示屏作为显示单元,采用动态显示技术,电路如下列图。图2.3 显示电路第3章 系统软件设计软件概述经过前几章的设计工作,系统的硬件电路设计已经完成了。然而,对于一个完整的设计系统来说,只有硬件电

10、路的设计完成是不够的,它必须通过软件编程来实现系统工作的控制功能,从而才能实现电路应有的系统功能。单片机系统的软件设计主要使用汇编语言或高级语言。汇编语言与系统硬件的关系密切,可方便地实现诸如中断管理以与模拟/数字量的输入/输出等功能,具有占用系统资源小、执行速度快的特点,但是,对复杂的大型应用系统,其代码可读性差,并不利于升级和维护。高级语言的代码效率和长度都不如汇编语言,但其结构清晰、可读性好、开发周期短、有极强的可移植性,在多数应用方面执行效率与汇编语言的差距也不大,近年来得到了极为广泛的应用。而C语言既有高级语言的各种特点,又可对硬件进展操作,并可进展结构化程序设计。用C语言编写的程序

11、较容易移植,可生成简洁、可靠的目标代码,用C语言进展单片机计算机开发已经是必然的开展趋势。矩阵键盘扫描子程序应该具有以下2个根本的功能:(1)能判断是否有键按下;(2)能确定是哪个键被按下。由于设计中要求能够显示密码输入界面、密码输入信息、密码正确后提示界面、密码错误后提示界面和修改密码相关界面等信息,故要用到很多个显示子程序来显示不同的内容。掉电存储子程序就是将初始密码写进AT24C02,单片机每次复位后从AT24C02中读取密码用来和输入的密码进展比拟,以判断输入的密码的正确性。3.2 主程序设计通过之前的硬件系统设计,综合各方面的考虑,系统主控流程图所示:NY初始化显示输入密码界面输入密

12、码密码正确?开锁扫描功能键有键输入?是改密键?进展改密操作显示欢迎回家界面是闭锁键?进展闭锁操作YNYNNY开启定时中断次数5?调用报警子程序YN图3.1 主程序流程图3.3 中断服务子程序设计本系统软件采取顺序程序控制,由于没有实时事件,故没有采取中断系统实习总结 通过本次实习,让我对于单片机的理解不仅仅只限于书本,对于利用单片机制作产品的过程有个更清晰的认识。利用Altium Designer画电路图更加熟练,对于电路板的焊接以与电路的连接也越发的老练。对于各种硬件的功能理解的更为透彻。利用kell4来编写局部程序以与对程序的修改。相对来说,软件的设计要难于硬件的设计。当然了,这仅仅是对于

13、我自己来说。还有程序的烧写,我们利用教师所发的下载器和STC-ISP来完成对程序的烧写。最终使得所做密码锁可以按要求来工作。 在这三周里,我深刻体会到了知识的不足,对单片机理解颇少,因此在这实习里不断查阅资料和同学,课外上网找资料。最后和我的队友一起完成这个密码锁。在这过程中,遇到很多问题,例如显示屏不显示、密码输入不正确,键盘实现不了密码的输入等等。最后我们还是一个一个的克制了困难,成功了完成这个作品。参考文献1 X金敏,董海棠,高博,卫晓娟.单片机原理与应用系统设计M.西南交通大学,2010.2 秦实宏,徐春辉.MCS-51单片机原理与应用M.华中科技大学,2010.3 皮大能,南光群,X

14、某某.单片机课程设计指导书M.理工大学,2010.4 蒋辉平,周国雄.基于Proteus的单片机系统设计与仿真实例M.机械工业,2009.5 贺敬凯,X德新,管明祥.单片机系统设计、仿真与应用M.某某电子科技大学,2011.6 戴文雯.采用STC89C51的电子密码锁的设计J.某某航空航天大学学报(210016),2013.附 录附录A 总原理图附录B 源程序#include #include #include #include#define uchar unsigned char #define uint unsigned int #define NOP3() _nop_();_nop_()

15、;_nop_()uchar time_1s=0,i=0;uchar time_50ms=0;sbit rs=P22;sbit rw=P21;sbit e=P20;sbit SCL=P25;sbit SDA=P26;sbit P35=P35;sbit P36=P36;sbit P37=P37;uchar data kong7=0,0,0,0,0,0,0;uchar data mima7=1,2,3,4,5,6,0;uchar data mima07=0,0,0,0,0,0,0;uchar data mima17=0,0,0,0,0,0,0;uchar data mima27=0,0,0,0,0,

16、0,0;uchar data mima37=0,0,0,0,0,0,0;uchar data table17=1,9,9,0,1,0,0;uchar code table215=Enter Password:;uchar code table416=Password Error!;uchar code table514=Old Password:;uchar code table614=New Password:;uchar code table712=Enter Again:;uchar code table812=Enter Error!;uchar code table915=Modif

17、y Success!;uchar code table1013=Wele back!;/*/相关函数的声明/*void delay1ms();void delay(uchar n);void write_1602(uchar );void write_1602dat(uchar dat);void initinal(void);bit lcdbusy();uchar key_scan();void enter_password(void);/功能:显示输入密码画面void password_error(void);/功能:显示输入密码错误后的画面void ok(void);/功能:显示输入密码

18、正确后的画面void new_password(void);/功能:显示输入新密码的画面void enter_again(void);/功能:显示再次输入新密码的画面void enter_error(void);/功能:显示两次输入的密码不一样后的画面void modify_success(void);/功能:显示更改成功后的画面void wele(void); /功能:显示欢迎画面void wtite_1602(uchar );void write_1602dat(uchar dat); /*函数功能:延时假如干毫秒入口参数:n*/ void delay(uchar n) unsigned

19、char i,x,y;for(i=0;in;i+)for(x=0;x10;x+)for(y=0;y33;y+); /*函数功能:延时1ms*/void delay1(uchar n) unsigned char i,j; for(i=0;in;i+) for(j=0;j10;j+)delay(10); /*函数功能:定时器子函数,调用该函数可以计时*/ void time( )TMOD = 0x01; /定时器0,工作方式1 TH0 = (65536-50000)/256; TL0 = (65536-50000)%256; /50ms中断一次 EA = 1;ET0 = 1;TR0 = 1; /

20、*函数功能:定时函数,在一段时间内没有键按下如此关闭显示器*/void time_1( ) interrupt 1 TH0 = (65536-65536)/256;TL0 = (65536-65536)%256;time_50ms+;if(time_50ms=20)time_1s+;time_50ms=0;if(time_1s=20)write_1602(0x01);write_1602(0x0c);time_1s=0; while(1); /*/功能:使蜂鸣器发音/*void warn()P37=1;NOP3();NOP3();NOP3();P37=0;NOP3();NOP3();NOP3(

21、); /*/函数名:bit lcdbusy()/功能:检测忙标志/*bit lcdbusy()bit result;rs=0;rw=1;e=1;delay(1);result=(bit)(P0&0x80);e=0;return result;/*/函数名:写命令函数/功能:调用该函数可能定义1602液晶显示器的各种命令/*void write_1602(uchar )while(lcdbusy();e=0;rw=0;rs=0;P0=;delay(1);e=1;delay(1);e=0;/*/函数名:写数据函数/功能:调入该函数可以向1602液晶显示器输入数据/*void write_1602d

22、at(uchar dat)while(lcdbusy();e=0;rw=0;rs=1;P0=dat;delay(1);e=1;delay(1);e=0;/*/函数名:初始化函数/功能:对1602液晶显示器进展初始化/*void initinal(void)rs=0;e=0;write_1602(0x38); /数据总线为8位,显示2行,0=57点阵/每字符write_1602(0x0f); /显示功能开,有光标,光标不闪烁write_1602(0x06); /显示光标write_1602(0x01); /清屏write_1602(0x80);/*/函数名:显示函数/功能:显示输入密码/*voi

23、d enter_password(void) uchar j;initinal();write_1602(0x80);for(j=0;j15;j+)write_1602dat(table2j);delay(10);write_1602(0xc0+0x0a);/*/函数名:显示函数/功能:显示输入密码错误后的画面/*void password_error(void)uchar j;write_1602(0x0c); /显示功能开,无光标write_1602(0x80); /显示位置第一行第一列write_1602(0x01);for(j=0;j15;j+)write_1602dat(table4

24、j);delay(10);/*/函数名:显示函数/功能:显示输入旧密码的画面/*void old_password(void)uchar j;initinal();write_1602(0x80);for(j=0;j14;j+)write_1602dat(table5j);delay(10);write_1602(0xc0+0x0a);/*/函数名:显示函数/功能:显示输入新密码的画面/*void new_password(void)uchar j;initinal();write_1602(0x80);for(j=0;j14;j+)write_1602dat(table6j);delay(1

25、0);write_1602(0xc0+0x0a);/*/函数名:显示函数/功能:显示再次输入新密码的画面/*void enter_again(void)uchar j;initinal();write_1602(0x80);for(j=0;j12;j+)write_1602dat(table7j);delay(10);write_1602(0xc0+0x0a);/*/函数名:显示函数/功能:显示两次输入的密码不一样后的画面/*void enter_error(void)uchar j;write_1602(0x0c); /显示功能开,无光标write_1602(0x80); /显示位置第一行第

26、一列write_1602(0x01);for(j=0;j12;j+)write_1602dat(table8j);delay(10);/*/函数名:显示函数/功能:显示更改成功之后的画面/*void modify_success(void)uchar j;write_1602(0x0c);write_1602(0x80);write_1602(0x01);for(j=0;j15;j+)write_1602dat(table9j);delay(10);/*/函数名:显示函数/功能:显示欢迎画面/*void wele(void)uchar j;write_1602(0x0c); /显示功能开,无光

27、标write_1602(0x80); /显示位置第一行第4列write_1602(0x01);write_1602(0x80);for(j=0;j=0&j=9&m0)write_1602(0x11);write_1602dat(0x20);write_1602(0x11);passwordm=0;m-; /*启动I2C总线函数*/void Start()SCL=1;SDA=1;NOP3();SDA=0;NOP3();SCL=0;/*I2C停止*/void Stop()SDA=0;SCL=1;NOP3();SDA=1;NOP3();/*发送应答位函数*/void CHECK_ACK()SDA=0

28、;NOP3();SCL=1;NOP3();SCL=0;NOP3();SDA=1;/*发送非应答位函数*/void CHECK_NACK()SDA=1;NOP3();SCL=1;NOP3();SCL=0;NOP3();SDA=0;/*I2C初始化*/void Init_24cxx()SDA=1;NOP3();SCL=1;NOP3();/*读I2C函数*/uchar I2C_Read()uchar i,temp;temp=0;SDA=1;SCL=0;for(i=0;i8;i+)temp=temp1;SCL=1;NOP3();if(SDA=1)temp=temp+1;NOP3();SCL=0;ret

29、urn temp;/*写I2C函数*/void I2C_Write(uchar date1)uchar i,temp;temp=date1;SCL=0;for(i=0;i8;i+)SDA=(bit)(temp&0x80);SCL=1;NOP3();SCL=0;temp=temp8;addrl=address%256;EA=0;Start();I2C_Write(0xa0);/发送命令字+芯片编号+P0+WCHECK_ACK();I2C_Write(addrh);/发高位地址CHECK_ACK();I2C_Write(addrl);/发低位地址CHECK_ACK();I2C_Write(date

30、1);/发送数据CHECK_ACK();Stop();/停止EA=1;/*读相应地址的数据*/uchar Read_add(uint address)uchar addrh,addrl,temp;addrh=address8;addrl=address%256;EA=0;Start();I2C_Write(0xa0);CHECK_ACK();I2C_Write(addrh);/发高位地址CHECK_ACK();I2C_Write(addrl);/发低位地址CHECK_ACK();Start();I2C_Write(0xa1);CHECK_ACK();temp=I2C_Read();CHECK_

31、NACK();Stop();EA=1;return temp;/*写数据函数:将数组写入AT24C02*/void Write_nums(uchar table) int x=10;while(x-)Write_add(0x00,table0); Write_add(0x00,table0);Write_add(0x10,table1); Write_add(0x10,table1);Write_add(0x20,table2); Write_add(0x20,table2);Write_add(0x30,table3); Write_add(0x30,table3);Write_add(0x

32、40,table4); Write_add(0x40,table4);Write_add(0x50,table5); Write_add(0x50,table5); /*主函数*/void main()uchar k=0,j=0;/Write_nums(mima);mima0=Read_add(0x00);mima1=Read_add(0x10);mima2=Read_add(0x20);mima3=Read_add(0x30);mima4=Read_add(0x40);mima5=Read_add(0x50);time();initinal();for(k=0;k6;k+)mima0k=ko

33、ngk;for(;strcmp(mima,mima0)!=0;)enter_password();enter(mima0);if(strcmp(mima,mima0)=0|strcmp(table1,mima0)=0)wele();P36=0;delay1(20);if(strcmp(table1,mima0)=0)break;else password_error();for(k=0;k=5)write_1602(0x01);write_1602(0x0c);while(1)warn();while(1) j=key_gn();time_50ms=0;time_1s=0;if(j=c) fo

34、r(k=0;k6;k+)mima1k=kongk;for(k=0;k6;k+)mima2k=kongk;for(k=0;k6;k+)mima3k=kongk;for(;strcmp(mima,mima1)!=0;)old_password();enter(mima1);if(strcmp(mima,mima1)=0|strcmp(table1,mima1)=0)new_password();enter(mima2);enter_again();enter(mima3);if(strcmp(mima2,mima3)=0)modify_success(); for(k=0;k=5)write_16

35、02(0x01);write_1602(0x0c);while(1)warn(); if(j=d)P36=1;附录C 元器件清单元器件名称元器件数量预算价格实际花销三极管S90121个0元0元独立按键16个LCD1602显示屏1个蜂鸣器1个LED红灯1个电位器1个AT24C021个附录D实物图片实习指导教师评价表题目名称设计报告得分序号评 价 项 目总分为得分1应用文献资料能力与综合运用知识能力102设计说明书撰写水平;插图质量103设计实验能力与创新性10设计报告得分总计30实物制作效果30评语: 指导教师签字:年月日学生某某班级学号平时表现20分辩论20分综合评定得分实习成绩注:1、综合评定得分=平时表现占20,制作与报告占60,辩论占20。在平时表现和实物制作、设计报告和辩论中,假如有单项不合格者,总成绩按不与格处理; 2、最后成绩的评定以优90100、良8089、中7079、与格6069和不与格少于60分五级给出。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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