ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:357.25KB ,
资源ID:6012650      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6012650.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于51单片机的无线电子密码锁课程设计.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于51单片机的无线电子密码锁课程设计.docx

1、基于51单片机的无线电子密码锁课程设计探2013级电子信息工程专业单片机课程设计探单片机课程设计报告书基于89C51单片机 课题名称无线电子密码锁的设计姓 名 刘武学 号 30学 院 通信与电子工程学院指导教师祝秋香讲师2015年12月20日一、设计任务及要求设计任务:设计一个六位密码的无线电子密码锁。要求:(1)通过无线的方式进行远程开关密码锁;(2)通过无线的方式更改密码;(3)实现密码掉电存储。指导教师签名:年 月 日、指导教师评语指导教师签名:-年 月 日三、成绩验收盖章年 月 日基于89C51单片机无线电子密码锁的设计1设计目的(1)了解MCS-51单片机使用方法与熟悉蓝牙模块;(2

2、)掌握AT89C51芯片的使用方法及蓝牙模块的连接与使用;(3)熟悉单片机程序仿真软件Proteus的使用;(4)了解MCS-51单片机开发板工作原理以及芯片的组合;(5)熟悉无线电子密码锁的设计及实现。2设计思路2、1选择设计电路设计51单片机与蓝牙连接的电路。2、2所选设计电路的原因(1)由于无线电子密码锁的设计需要用到蓝牙模块 ,用到的单片机资源并不就是很多,而51单片机的资源有8位CPU、4KB的ROM、128B的RAM、2个16 位定时/计数器、4组8位的I/O、1个串口与5个中断源,可以更有效率的利用到 51单片机的资源。(2)可现实无线功能的模块有:蓝牙模块、无线模块、红外遥控模

3、块,因为相对 之下,蓝牙模块更容易实现,更容易操作,最后选择蓝牙模块实现手机远程控制(3)为了提高效率,可以利用51单片机开发板的硬件,用LED灯模拟密码锁的 开关,当LED灯亮起时代表锁已经开启,熄灭则代表密码锁被关闭。应用在实际中 可用继电器替代LED的亮灭去控制强电开关。3设计过程3、1设计总框图无线电子密码锁分为两个主要功能模块:51单片机模块,蓝牙实现模块。这两 个模块共同工作完成本电路的功能实现。 其中利用AT89C51芯片来实现51单片 机模块功能,完成数码管、发光二极管的实现,同时利用HC06蓝牙模块来实现手 机远程控制功能。其设计总框图如图 1所示:无线蓝牙串 口通信主控模块

4、输入状态显示AT89C51手机蓝牙串-开关状态显示口助手图1总体方框图3、2单元模块设计3、2、1、 总电路其设计的总电路如图2所示:图2总电路图其工作原理如下:通过在51单片机开发板对AT89C52芯片写入程序,建立单片机与蓝牙模块 之间的串口通信,并通过手机输入指令输入到蓝牙模块之中,通过程序利用单片机 串口将蓝牙与51单片机进行通信,并控制单片机的引脚,从而控制外围电路的 LED灯的亮灭与数码管的功能实现。3、2、2 51单片机系统单片机最小系统就是在以MCS-51单片机为基础上扩展,使其能更方便地运 用于测试系统中,不仅具有控制方便、组态简单与灵活性大等优点,而且可以大幅 度提高被测试

5、的技术指标,从而能够大大提高产品的质量与数量。单片机以其功 能强、体积小、可靠性高、造价低与开发周期短等优点 ,称为在实时检测与自动控制领域中广泛应用的器件,在工业生产中称为必不可少的器件,尤其就是在日常 生活中发挥的作用也越来越大。本课题设计主要在MCS-51单片机上扩展I/O 口 , 扩展定时器定时范围,扩展键盘显示接口。下图为AT89C51芯片引脚图如图3所示:器 Y LEE LI于匚晋才 -T6 = r图3 89C51芯片引脚图3、2、3复位及振荡电路单片机中的复位及振荡电路如图 4所示:图4复位及振荡电路图复位电路由按键复位与上电复位两部分组成。 按键复位就就是在复位电容上 并联一个

6、开关,当开关按下时电容被放电、RST也被拉到高电平,而且由于电容的 充电会保持一段时间的高电平来使单片机复位。 MCS51使用11、0592MHz的晶体振荡器作为振荡源,由于单片机内部带有振荡电路,所以外部只要连接一个晶 振与两个电容即可,电容容量一般在15pF至50pF之间。3、2、4八段数码显示管单片机中数码管的实现与显示电路如图5所示:图5数码管电路图MCS-51单片机包含六个共阴极8段数码管显示器,可以使用动态扫描或者静 态显示方式驱动。八位段选在通过330Q限流后连接在单片机的P0口上。3、2、5按键及LED电路单片机中LED灯与按键电路如图6所示:图6按键及LED电路图开发板上提供

7、了 8个独立LED,由P2口控制,同样采用共阳级接法,所以只有当 P2口输出低电平时LED才会点亮。这样做的主要原因就是因为单片机的低电平驱 动能力高。3、2、6蓝牙模块HC-06就是主从一体化的蓝牙串口模块,主从可指令切换,指令少于HC-05,使 用简单。(供电电压3、3V3、6V)主机:用来搜索从设备,不能被其她设备搜索。(带 白点的蓝牙模块)从机:用来被搜索的设备,不能主动搜索其她设备。主从连上以后就相当于一根串口线使用 ,这个时候就不分主从 ,也就就是透传模式。蓝牙透传模 块可以让您原来使用串口的设备摆脱线缆的束缚在 10米范围内实现无线串口通信。4 系统设计4、 1 主程序流程图系统

8、总流程图如图 7 所示 ,流程图分析 :首先系统初始化 ,系统开始运行 ,当手 机输入数字密码时 ,数码管会以加密的方式显示输入状态 ,若就是 6 位密码输入正 确,则LED亮起(代表锁打开),否则熄灭。在LED灯亮起的前提下,可以输入命令c 进入更改密码模式 ,然后重新输入新密码 ,此时数码管显示的就是不加密的明文。 输入新密码完成之后输入命令 (对新密码进行确认,所有的操作均在手机端的APP中完成。在手机按键操作之下点击clos可以直接关闭密码锁,点击retry能 够重新开始输入密码。本密码锁能实现掉电密码保存功能 ,即使断电重启也不会重新恢复初始密码 ,大大提高了电子密码锁的实用性与安全

9、性。而更改密码这一 功能就是在高级模式下更改的 ,一般人即使知道了密码但就是不知道更改密码的 命令就是无法更改密码的 ,安全保障更上一层。注:更改密码为此密码锁的高级模式 ,普通权限下使用的就是 “键盘模式 ”。数码管显示输入状态NO密码是否正确? -确认新密码或重新输入新密码YES图7程序流程图4、2硬件测试(1)用手机连上HC06模块的蓝牙之后,在手机APP中的键盘模式里面输入图8输入初始密码的测试结果图初始密码12345并观察单片机的变化,显示结果如图8所示:数码管上显示输入密码的状态,6位密码均被用进行加密,从手机APP的 图上面可以瞧出输入的密码为 012345码输入正确,数码管下方

10、的一排LED灯 亮起。(2)在手机APP的命令模式中输入 c在开锁的状态下),设置新密码为 321654此时新密码设置的过程为明文在数码管上显示。然后输入d对新密码进 行确认。显示结果如图9所示:图9设置新密码(3)进入APP键盘模式,点击clos按钮,关闭密码锁,然后重新掉电启动密码 锁输入01234旧密码,显示结果如图10所示:图10密码更新之后输入旧密码可见数码管右下方的LED灯没有亮起,说明输入密码错误结果如图11所示:图11输入新密码测试图由结果可知输入正确的新密码之后可以成功开启密码锁 ,而原始的密码则不 能。说明密码更改成功。4、3测试结果分析与结论在编写程序的时候,需要一定的逻

11、辑思维,同时需要有耐心同时又要细心。在 编译成功后,产生以“* hex”与“* bin ”后缀的目标文件。在下载程序的时候,需要注意的就是,先要将程序下载到AT89C51中再将蓝 牙与单片机用杜邦线连接起来。从硬件测试的结果可以知道,显示功能与所写程序实现的功能基本符合,基本 完成了基础的无线电子密码锁设计。5设计体会经过多次的反复测试与分析,对电路的原理及功能更加熟悉,同时提高了设计 能力与及对电路的分析能力。同时在软件的编程方面得到更到的提高 ,对编程能 力得到加强,同时对所学的知识得到很大的提高与巩固。总之,在这次课程设计过程中,我收获了很多,不仅对我以后的学习有很大的 帮助,也为将来的

12、人生之路坐了一个很好的铺垫参考文献1 黄辉先、 单片机原理及应用 M 、 湘潭 : 湘潭大学出版社 , 2013、附录 程序设计/*无线电子密码锁 1312203-30 刘武*与 P1 相连的 8 位发光 LED 点亮代表锁被打开 ;熄灭代表锁被锁上。 程序功能 : 本程序结合了 24C02 存储器的存储功能 ,可以掉电保存密码。利用 HC-06 无线蓝牙模块与手机端的蓝牙进行通信 ,再通过 HC-06 的串口与 51 单片机 进行串口通信 ,从而达到远程开关锁的功能。远程距离可达 510 米(视场地空旷程度而定 )1、开锁 :开启设备 ,从手机端输入密码 ,当 6 位密码正确时点亮 8 位发

13、光 LED 。 2、 更改密码 :只有当开锁 (LED 亮 ) 后,该功能方可使用。从手机 app 进入实时命令模 式输入c(cha nge之后再输入想要更改的密码,最后输入d确认密码。3、重试密 码:手机端app的键盘模式”中点击“retry或者进入实时命令模式输入a,当设置 密码时 ,设置中途想更改密码 , 也可按下此键重新设置。4、关闭密码锁:手机端app的键盘模式中点击“close或者进入实时命令模式下 输入 b。注:更改密码为此密码锁的高级模式 ,普通权限下使用的就是 “键盘模式 ”。 */#include#include #define uint unsigned int #def

14、ine uchar unsigned char uchar old1,old2,old3,old4,old5,old6;uchar new1,new2,new3,new4,new5,new6; /新采集的密码uchar a=16,b=16,c=16,d=16,e=16,f=16; /送/ 入数码管显示的变量uchar wei,key,temp,input;bit allow,genggai,ok,wanbi,retry,close,on; /各个状态位sbit dula=P2A6;sbit wela=P2A7;sbit beep=P2A3;sbit sda=P2A0; /IO 口定义sbit

15、scl=P2A1;unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x40;/*IIC芯片24C02存储器驱动程序*/void nop()_nop_();_nop_();/24C02 读写驱动程序 / void delay1(unsigned int m) unsigned int n;for(n=0;nm;n+);void init() /24c02 初始化子程序scl=1;nop();sda=1;nop();void s

16、tart() /启动 I2C 总线sda=1;nop();scl=1;nop();sda=0;nop();scl=0;nop();void stop() /停止 I2C 总线sda=0;nop();scl=1;nop();sda=1;nop();void writebyte(unsigned char j) / 写一个字节unsigned char i,temp;temp=j;for (i=0;i8;i+) temp=temp1; scl=0; nop();sda=CY; /temp左移时,移出的值放入了 CY中 nop();scl=1; 待sda线上的数据稳定后,将scl拉高nop();sc

17、l=0;nop();sda=1;nop();unsigned char readbyte() /读一个字节unsigned char i,j,k=0;scl=0; nop(); sda=1;for (i=0;i8;i+)nop(); scl=1; nop();if(sda=1)j=1;elsej=0;k=(k1)|j;scl=0;nop();return(k);void clock() /I2C 总线时钟unsigned char i=0;scl=1;nop();while(sda=1)&(i0;j-) for(k=125;k0;k-);void display(uchar a,uchar b

18、,uchar c,uchar d,uchar e,uchar f) dula=0;P0=tablea;dula=1;dula=0;wela=0;P0=0xfe; wela=1;wela=0;delay(5);P0=tableb;dula=1;dula=0;P0=0xfd;wela=1;wela=0; delay(5);P0=tablec;dula=1;dula=0;P0=0xfb;wela=1;wela=0;delay(5);P0=tabled;dula=1;dula=0;P0=0xf7;wela=1;wela=0;delay(5);P0=tablee;dula=1;dula=0;P0=0xe

19、f;wela=1;wela=0;delay(5);P0=tablef;dula=1;dula=0;P0=0xdf;wela=1;wela=0;delay(5);void keysca n()输入按键扫描模块if(on)switch(input)case 0: key=0;wei+; break;case 1: key=1;wei+; break;case 2: key=2;wei+; break;case 3: key=3;wei+; break;case 4: key=4;wei+; break;case 5: key=5;wei+;break;case 6:key=6; wei+;brea

20、k; case 7:key=7; wei+;break; case 8:key=3; wei+;break; case 9:key=3; wei+;break; case a: retry=1; break;case b:close=1; break; case c:genggai=1; wei=0; break; case d:if(allow)ok=1; break;beep=0;/delay(500);beep=1;on=0;void shumima() /对按键采集来的数据进行分配if(!wanbi)switch(wei)case 1:new1=key; if(!allow) a=17

21、;else a=key; break;case 2:new2=key; if(a=17) b=17; else b=key; break;case 3:new3=key; if(a=17) c=17; else c=key; break;case 4:new4=key; if(a=17) d=17; else d=key; break;case 5:new5=key; if(a=17) e=17; else e=key; break;case 6:new6=key;if(a=17) f=17;else f=key; wanbi=1; break;void yanzheng() /验证密码就是否

22、正确if(wanbi) /只有当六位密码均输入完毕后方进行验证if(new1=old1)&(new2=old2)&(new3=old3)&(new4=old4)&(new5=old5)&(new6=old6)allow=1; /当输入的密码正确 ,会得到 allowe 置 1void serial_init()SCON=0X50;TMOD=0X20;TH1=0XFD;TL1=0XFD;TR1=1;EA=1;ES=1;void main()init(); /初始化 24C02old1=read24c02(110);old2=read24c02(111);old3=read24c02(112);o

23、ld4=read24c02(113);old5=read24c02(114);old6=read24c02(115);serial_init();/ 初始化串口中断while(1)keyscan();shumima();yanzheng();if(allow) /验证完后 ,若 allow 为 1,则开锁P1=0x00;if(!genggai)wanbi=0;if(genggai) /当更改密码键(c)被按下,genggai会被置1if(allow) /若已经把锁打开 , 才有更改密码的权限while(!wanbi) /当新的六位密码没有设定完则一直在这里循环 keyscan();shumim

24、a();if(retry|close) /而当探测到重试键或者关闭密码锁键被按下时 ,则跳出 wanbi=1;break;display(a,b,c,d,e,f);if(ok) /更改密码时 ,当所有六位新密码均被按下时 ,可以按下此键 ,结束密码更改 (d) / 其她时间按下此键无效ok=0; wei=0; genggai=0;old1=new1;old2=new2;old3=new3; /此时 ,旧的密码将被代替 old4=new4;old5=new5;old6=new6;/新密码写入存储区。write24c02(110,old1);write24c02(111,old2);write24

25、c02(112,old3);write24c02(113,old4);write24c02(114,old5);write24c02(115,old6); a=16;b=16;c=16;d=16;e=16;f=16;if(retry) / 当重试按键被按下 ,retry 会被置位retry=0; wei=0;wanbi=0;a=16;b=16;c=16;d=16;e=16;f=16; new1=0;new2=0;new3=0;new4=0;new5=0;new6=0;if(close) /当关闭密码锁按键被按下 ,close 会被置位close=0;ge nggai=O;/所有变量均被清零。wei=0; wanbi=0;allow=0;P1=0xff;a=16;b=16;c=16;d=16;e=16;f=16;new1=0;new2=0;new3=0;new4=0;new5=0;new6=0;display(a,b,c,d,e,f); /实时显示void serial_interrpt(void) interrupt 4if(RI=1)RI=0;input=SBUF;on=1;/输入数据标志位

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1