




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
_单片机应用实习实 习 报 告院系名称: 电气与信息工程学院专业班级: 测控14-1学生姓名: 黄文峰 学 号: 20141765指导老师: 曲贵波 张鹏黑龙江工程学院教务处制2016年6月实习任务书学生姓名黄文峰院系电气与信息工程学院专业班级测控14-1指导教师姓名曲贵波 张鹏职称副教授是否外聘是 否题目名称键盘式电子密码锁一、设计的内容、目的和意义 本次实习是有关于键盘式电子密码锁的设计。键盘式的电子密码锁使用最为广泛,本产品主要用于保险箱、防盗门、保险柜之类的,还有一部分用于保管箱和运钞车。该产品在键盘上输入密码,易于掌握,由于密码是记在用户的脑子里,所以既准确又可靠,不易破解,除非自己丢失或者泄露。如今电子密码锁向着“随意设定密码”“显示乱序”“多重设定密码”“锁定键盘”等方向发展,使得不法分子无从入手。尽管新型电子防盗锁层出不穷,但是键盘式电子密码锁仍在市场上占据着主流地位,并且经常作为其他类型防盗锁的辅助功能。本设计主要可实现:(1)在一定时间内没有任何按键操作则关闭显示器,并锁定键盘,单片机复位后锁定取消;(2)能够从键盘中输入密码,并相应地在显示器上显示*;(3)能够判断密码是否正确,正确则开锁,错误则输出相应信息;(4)在操作错误达到一定次数后能够报警;(5)能够实现密码的修改;二、设计的技术指标要求1、研究方法(1)总体按照最优化的方法进行软件设计和硬件设计,走软件实现道路;(2)对软硬件进行模块划分,并对各单元电路结合EDA工具进行论证设计; (3)在查阅文献基础上展开设计,力求创新。2、技术要求(1)可以修改密码;(2)输入密码必须正确;(3)密码输入次数过多会自动报警;摘 要本设计从经济实用角度出发,采用STC89C52单片机作为密码监控装置和控制核心,结合AT24C02存储单元电路,4*4矩阵键盘电路,LCD1602显示电路,报警电路和开锁电路构成的,通过键盘输入正确的密码来控制电路,从而完成开锁、机械上锁、智能锁定键盘、修改密码等功能的电子产品。通过编程来实现,其性能和安全性已远远超过传统的机械锁。本设计具有保密性好、成本低、功耗低、操作简单、随机开锁成功率几乎为零、密码可变、误码输入保护、多次错误报警、断电记忆等优点。方案比较及选择方案1:采用数字电路控制。用以74LS112双JK触发器构成的数字电路作为密码锁的核心控制,将密码保存在JK触发器中,用其与输入密码通过比较器比较,判断密码正确与否。其优点是设计原理简单,但是控制的准确性和灵活性比较差,物理结构较为复杂,操作不便。方案2:采用STC89C52单片机为核心的控制。由于单片机的性能、存储、运行速度、I/O口、定时/计数器、功耗、晶振、复位等因素,用以STC89C52单片机作为核心,利用单片机灵活的编程设计和丰富的I/O端口及其控制的准确性,来实现电子密码锁的基本功能。利用外接AT24C02存储芯片存储密码,LCD1602液晶显示,蜂鸣器作为报警驱动。单片机控制原理如图1.1。 STC89C52单片机矩阵键盘LCD1602显示屏储存单元开锁模式报警模式图1.1 单片机控制原理图。确定方案及理由:结合上述两种方案,结合现实生活需求,本设计选用方案二。精品资料第1章 总体设计方案1.1 总体设计方案 此电子密码锁的系统中设计主要由三部分组成:44矩阵键盘接口电路、密码锁的控制电路、输出八段显示电路。另外系统还有LED提示灯,报警蜂鸣器等。系统能完成本机超次锁定、修改用户密码基本的密码锁的功能。本设计的任务拟采用单片机(C51)作为单片机的核心单元,利用单片机串行发射、接收等功能而设计的一款具有本机开锁和报警功能的电子密码锁。本系统成本低廉,功能实用。主要分为以下几个部分:(1)设置密码及修改设置6位密码,密码可以由用户自己修改设定(只支持6位密码),密码通过键盘输入,若密码正确,则将锁打开。锁打开后才能修改密码。修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作。(2)密码显示为了帮助用户确认是否有键按下,特在电路中设置了模拟显示电路;而为了防止密码外泄;显示时,并不是显示用户按下的数字符号,而是以一个特定的字母符号提醒用户是否有键按下。有键按下,就会显示出字符-“*”,没键按下,则不会显示字符。这样既巧妙的提醒了用户又保护了用户密码,此乃本设计可靠性优点之一。(3)密码错误报警当用户键入错误密码时,密码输入错误数码显示器会出现错误提示。当连续三次出现密码错误时,系统就会报警,由蜂鸣器发出报警声,锁定键盘且系统会长期报警不止。这时必须按复位方可停止。此乃安全可靠性之一。1.2 软硬件功能分析主要分为以下几个部分:(1)单片机:本部分的功能包括写入和读取各种控制命令及数据处理,同时还要对各执行单元进行控制。单片机是整个系统的控制核心及数据处理核心。(2)键盘部分:本部分由用户通过键盘输入各种信息送入到单片机进行处理。(3)显示部分:本部分完成的是单片机处理后的数据和信息的显示以及系统提示信息的显示。(4)密码存储部分:本部分完成存储原始密码和用户更改密码数据的功能。(5)其它部分:本部分的目的是为了提高系统的可用性和实用性。主要包括电源部分、复位部分、晶振部分、开锁部分和报警部分。电源部分主要的功能是为单片机提供适当的工作电源,同时也为其它的部分提供电源。复位部分功能是使单片机在出现故障时进行成功的复位。晶振部分功能是给单片机提供时钟。开锁部分主要是根据单片机数据处理的结果驱动继电器控制开锁的操作。报警部分主要的功能就是在错误操作下实现报警提示。 第2章 硬件电路设计2.1 单片机最小系统电路设计 单片机最小系统设计是单片机应用系统设计的基础。STC89C52单片机最小系统电路如图2.1所示。图2.1 单片机最小系统电路2.2输入电路及其接口技术在电子密码锁中各种信息的输入都是通过键盘输入部分完成的。把单个按键按照4*4组成键盘,四条行线连接到单片机的P1.0-P1.3四条I/O口线上, 四条列线连接到单片机的P1.4-P1.7四条I/O口线上,运行的时候,单片机通过控制P1口得高低电平,然后根据变化进行判断。单片机向行线输入高电平,向列线输入低电平,按键未被按下之前保持电平给定不变,按键按下,行线的高电平变成低电平。同样对列线进行判定,即可判断所输入的信息。键盘部分的电路连接如图2.2所示:图2.2 键盘输入电路2.3 人机接口电路设计本设计利用显示屏作为显示单元,采用动态显示技术,电路如图2.3所示。图2.3 显示电路 第3章 系统软件设计3.1软件概述经过前几章的设计工作,系统的硬件电路设计已经完成了。然而,对于一个完整的设计系统来说,只有硬件电路的设计完成是不够的,它必须通过软件编程来实现系统工作的控制功能,从而才能实现电路应有的系统功能。单片机系统的软件设计主要使用汇编语言或高级语言。汇编语言与系统硬件的关系密切,可方便地实现诸如中断管理以及模拟/数字量的输入/输出等功能,具有占用系统资源小、执行速度快的特点,但是,对复杂的大型应用系统,其代码可读性差,并不利于升级和维护。高级语言的代码效率和长度都不如汇编语言,但其结构清晰、可读性好、开发周期短、有极强的可移植性,在多数应用方面执行效率与汇编语言的差距也不大,近年来得到了极为广泛的应用。而C语言既有高级语言的各种特点,又可对硬件进行操作,并可进行结构化程序设计。用C语言编写的程序较容易移植,可生成简洁、可靠的目标代码,用C语言进行单片机计算机开发已经是必然的发展趋势。 矩阵键盘扫描子程序应该具有以下2个基本的功能:(1)能判断是否有键按下;(2)能确定是哪个键被按下。由于设计中要求能够显示密码输入界面、密码输入信息、密码正确后提示界面、密码错误后提示界面和修改密码相关界面等信息,故要用到很多个显示子程序来显示不同的内容。掉电存储子程序就是将初始密码写进AT24C02,单片机每次复位后从AT24C02中读取密码用来和输入的密码进行比较,以判断输入的密码的正确性。3.2 主程序设计 通过之前的硬件系统设计,综合各方面的考虑,系统主控流程图3.1所示:NY初始化显示输入密码界面输入密码密码正确?开锁扫描功能键有键输入?是改密键?进行改密操作显示欢迎回家界面是闭锁键?进行闭锁操作YNYNNY开启定时中断次数5?调用报警子程序YN图3.1 主程序流程图3.3 中断服务子程序设计 本系统软件采取顺序程序控制,由于没有实时事件,故没有采取中断系统实习总结 通过本次实习,让我对于单片机的理解不仅仅只限于书本,对于利用单片机制作产品的过程有个更清晰的认识。利用Altium Designer画电路图更加熟练,对于电路板的焊接以及电路的连接也越发的老练。对于各种硬件的功能理解的更为透彻。利用kell4来编写部分程序以及对程序的修改。相对来说,软件的设计要难于硬件的设计。当然了,这仅仅是对于我自己来说。还有程序的烧写,我们利用老师所发的下载器和STC-ISP来完成对程序的烧写。最终使得所做密码锁可以按要求来工作。 在这三周里,我深刻体会到了知识的不足,对单片机理解颇少,因此在这实习里不断查阅资料和同学,课外上网找资料。最后和我的队友一起完成这个密码锁。在这过程中,遇到很多问题,例如显示屏不显示、密码输入不正确,键盘实现不了密码的输入等等。最后我们还是一个一个的克服了困难,成功了完成这个作品。 参考文献1 张金敏,董海棠,高博,卫晓娟.单片机原理与应用系统设计M.西南交通大学出版社,2010. 2 秦实宏,徐春辉.MCS-51单片机原理及应用M.华中科技大学出版社,2010. 3 皮大能,南光群,刘金华.单片机课程设计指导书M.北京理工大学出版社,2010. 4 蒋辉平,周国雄.基于Proteus的单片机系统设计与仿真实例M.机械工业出版社,2009.5 贺敬凯,刘德新,管明祥.单片机系统设计、仿真与应用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_();_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,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=Modify Success!;uchar code table1013=Welcome back!;/*/相关函数的声明/*void delay1ms();void delay(uchar n);void write_1602com(uchar com);void write_1602dat(uchar dat);void initinal(void);bit lcdbusy();uchar key_scan();void enter_password(void);/功能:显示输入密码画面void password_error(void);/功能:显示输入密码错误后的画面void ok(void);/功能:显示输入密码正确后的画面void new_password(void);/功能:显示输入新密码的画面void enter_again(void);/功能:显示再次输入新密码的画面void enter_error(void);/功能:显示两次输入的密码不一样后的画面void modify_success(void);/功能:显示更改成功后的画面void welcome(void); /功能:显示欢迎画面void wtite_1602com(uchar com);void write_1602dat(uchar dat); /*函数功能:延时若干毫秒入口参数:n*/ void delay(uchar n) unsigned 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; /*函数功能:定时函数,在一段时间内没有键按下则关闭显示器*/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_1602com(0x01);write_1602com(0x0c);time_1s=0; while(1); /*/功能:使蜂鸣器发音/*void warn()P37=1;NOP3();NOP3();NOP3();P37=0;NOP3();NOP3();NOP3(); /*/函数名: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_1602com(uchar com)while(lcdbusy();e=0;rw=0;rs=0;P0=com;delay(1);e=1;delay(1);e=0;/*/函数名:写数据函数/功能:调入该函数可以向1602液晶显示器输入数据/*void write_1602dat(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_1602com(0x38); /数据总线为8位,显示2行,0=57点阵/每字符write_1602com(0x0f); /显示功能开,有光标,光标不闪烁write_1602com(0x06); /显示光标write_1602com(0x01); /清屏write_1602com(0x80);/*/函数名:显示函数/功能:显示输入密码/*void enter_password(void) uchar j;initinal();write_1602com(0x80);for(j=0;j15;j+)write_1602dat(table2j);delay(10);write_1602com(0xc0+0x0a);/*/函数名:显示函数/功能:显示输入密码错误后的画面/*void password_error(void)uchar j;write_1602com(0x0c); /显示功能开,无光标write_1602com(0x80); /显示位置第一行第一列write_1602com(0x01);for(j=0;j15;j+)write_1602dat(table4j);delay(10);/*/函数名:显示函数/功能:显示输入旧密码的画面/*void old_password(void)uchar j;initinal();write_1602com(0x80);for(j=0;j14;j+)write_1602dat(table5j);delay(10);write_1602com(0xc0+0x0a);/*/函数名:显示函数/功能:显示输入新密码的画面/*void new_password(void)uchar j;initinal();write_1602com(0x80);for(j=0;j14;j+)write_1602dat(table6j);delay(10);write_1602com(0xc0+0x0a);/*/函数名:显示函数/功能:显示再次输入新密码的画面/*void enter_again(void)uchar j;initinal();write_1602com(0x80);for(j=0;j12;j+)write_1602dat(table7j);delay(10);write_1602com(0xc0+0x0a);/*/函数名:显示函数/功能:显示两次输入的密码不一样后的画面/*void enter_error(void)uchar j;write_1602com(0x0c); /显示功能开,无光标write_1602com(0x80); /显示位置第一行第一列write_1602com(0x01);for(j=0;j12;j+)write_1602dat(table8j);delay(10);/*/函数名:显示函数/功能:显示更改成功之后的画面/*void modify_success(void)uchar j;write_1602com(0x0c);write_1602com(0x80);write_1602com(0x01);for(j=0;j15;j+)write_1602dat(table9j);delay(10);/*/函数名:显示函数/功能:显示欢迎画面/*void welcome(void)uchar j;write_1602com(0x0c); /显示功能开,无光标write_1602com(0x80); /显示位置第一行第4列write_1602com(0x01);write_1602com(0x80);for(j=0;j=0&j=9&m0)write_1602com(0x11);write_1602dat(0x20);write_1602com(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;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;return 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(date1);/发送数据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_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(0x40,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+)mim
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第4节 生物的分类说课稿-2025-2026学年初中生命科学沪教版第二册-沪教版
- 2025年殡仪馆工作人员招聘面试模拟题
- 2025年药品生产安全实践考核题及解析
- 2025年医卫类药学(师)专业知识-基础知识参考题库含答案解析(5套)
- 无形资产管理知识培训课件
- 2025年提升职业素养各类工作面试笔试预测试题及答案
- 无尘室知识培训考卷课件
- 2025年医卫类病案信息技术(中级)基础知识-专业知识参考题库含答案解析(5套)
- 新招电工面试题目及答案
- 2025年医卫类微生物检验技术(师)-专业知识参考题库含答案解析(5套)
- GB/T 528-2009硫化橡胶或热塑性橡胶拉伸应力应变性能的测定
- GB/T 4950-2021锌合金牺牲阳极
- 中日关系历史
- GB/T 15171-1994软包装件密封性能试验方法
- 2023年江苏省中学生生物学竞赛(奥赛)初赛试题和答案
- 信息系统运维服务方案
- 化工试生产总结报告
- 导数与原函数的对称性 微专题课件-2023届高三数学一轮复习
- DB32-T 3129-2016适合机械化作业的单体钢架塑料大棚 技术规范-(高清现行)
- 中西医结合肿瘤医院员工手册
- 健康教育学【完整版】
评论
0/150
提交评论