版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
电子信息工程专业单片机课程设计※※※※※※※※※※※电子信息工程专业单片机课程设计※※※※※※※※※※※※※※※※※※※※※※※※单片机课程设计报告书课题名称基于89C51单片机无线电子密码锁的设计姓名学号学院通信与电子工程学院专业电子信息工程指导教师一、设计任务及要求设计任务:设计一个六位密码的无线电子密码锁。要求:(1)通过无线的方式进行远程开关密码锁;(2)通过无线的方式更改密码;(3)实现密码掉电存储。指导教师签名:年月日二、指导教师评语指导教师签名:年月日三、成绩验收盖章年月日基于89C51单片机无线电子密码锁的设计1设计目的(1)了解MCS-51单片机使用方法和熟悉蓝牙模块;(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)为了提高效率,可以利用51单片机开发板的硬件,用LED灯模拟密码锁的开关,当LED灯亮起时代表锁已经开启,熄灭则代表密码锁被关闭。应用在实际中可用继电器替代LED的亮灭去控制强电开关。3设计过程3.1设计总框图无线电子密码锁分为两个主要功能模块:51单片机模块,蓝牙实现模块。这两个模块共同工作完成本电路的功能实现。其中利用AT89C51芯片来实现51单片机模块功能,完成数码管、发光二极管的实现,同时利用HC06蓝牙模块来实现手机远程控制功能。其设计总框图如图1所示:图1总体方框图3.2单元模块设计3.2.1.总电路其设计的总电路如图2所示:图2总电路图其工作原理如下:通过在51单片机开发板对AT89C52芯片写入程序,建立单片机与蓝牙模块之间的串口通信,并通过手机输入指令输入到蓝牙模块之中,通过程序利用单片机串口将蓝牙与51单片机进行通信,并控制单片机的引脚,从而控制外围电路的LED灯的亮灭和数码管的功能实现。3.2.251单片机系统单片机最小系统是在以MCS-51单片机为基础上扩展,使其能更方便地运用于测试系统中,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被测试的技术指标,从而能够大大提高产品的质量和数量。单片机以其功能强、体积小、可靠性高、造价低和开发周期短等优点,称为在实时检测和自动控制领域中广泛应用的器件,在工业生产中称为必不可少的器件,尤其是在日常生活中发挥的作用也越来越大。本课题设计主要在MCS-51单片机上扩展I/O口,扩展定时器定时范围,扩展键盘显示接口。下图为AT89C51芯片引脚图如图3所示:图389C51芯片引脚图3.2.3复位及振荡电路单片机中的复位及振荡电路如图4所示:图4复位及振荡电路图复位电路由按键复位和上电复位两部分组成。按键复位就是在复位电容上并联一个开关,当开关按下时电容被放电、RST也被拉到高电平,而且由于电容的充电,会保持一段时间的高电平来使单片机复位。MCS51使用11.0592MHz的晶体振荡器作为振荡源,由于单片机内部带有振荡电路,所以外部只要连接一个晶振和两个电容即可,电容容量一般在15pF至50pF之间。3.2.4八段数码显示管单片机中数码管的实现与显示电路如图5所示: 图5数码管电路图MCS-51单片机包含六个共阴极8段数码管显示器,可以使用动态扫描或者静态显示方式驱动。八位段选在通过330Ω限流后连接在单片机的P0口上。3.2.5按键及LED电路单片机中LED灯与按键电路如图6所示:图6按键及LED电路图开发板上提供了8个独立LED,由P2口控制,同样采用共阳级接法,所以只有当P2口输出低电平时LED才会点亮。这样做的主要原因是因为单片机的低电平驱动能力高。3.2.6蓝牙模块HC-06是主从一体化的蓝牙串口模块,主从可指令切换,指令少于HC-05,使用简单。(供电电压
3.3V~3.6V)主机:用来搜索从设备,不能被其他设备搜索。(带白点的蓝牙模块)从机:用来被搜索的设备,不能主动搜索其他设备。主从连上以后就相当于一根串口线使用,这个时候就不分主从,也就是透传模式。蓝牙透传模块可以让你原来使用串口的设备摆脱线缆的束缚在10米范围内实现无线串口通信。4系统设计4.1主程序流程图系统总流程图如图7所示,流程图分析:首先系统初始化,系统开始运行,当手机输入数字密码时,数码管会以加密的方式显示输入状态,若是6位密码输入正确,则LED亮起(代表锁打开),否则熄灭。在LED灯亮起的前提下,可以输入命令’c’进入更改密码模式,然后重新输入新密码,此时数码管显示的是不加密的明文。输入新密码完成之后输入命令’d’对新密码进行确认,所有的操作均在手机端的APP中完成。在手机按键操作之下点击’close’可以直接关闭密码锁,点击’retry’能够重新开始输入密码。本密码锁能实现掉电密码保存功能,即使断电重启也不会重新恢复初始密码,大大提高了电子密码锁的实用性和安全性。而更改密码这一功能是在高级模式下更改的,一般人即使知道了密码但是不知道更改密码的命令是无法更改密码的,安全保障更上一层。注:更改密码为此密码锁的高级模式,普通权限下使用的是“键盘模式”。图7程序流程图4.2硬件测试(1)用手机连上HC06模块的蓝牙之后,在手机APP中的键盘模式里面输入初始密码‘012345’并观察单片机的变化,显示结果如图8所示:图8输入初始密码的测试结果图数码管上显示输入密码的状态,6位密码均被用‘—’进行加密,从手机APP的图上面可以看出输入的密码为‘012345’,密码输入正确,数码管下方的一排LED灯亮起。(2)在手机APP的命令模式中输入‘c’(在开锁的状态下),设置新密码为‘321654’,此时新密码设置的过程为明文在数码管上显示。然后输入‘d’对新密码进行确认。显示结果如图9所示:图9设置新密码(3)进入APP键盘模式,点击’close’按钮,关闭密码锁,然后重新掉电启动密码锁,输入’012345’旧密码,显示结果如图10所示:图10密码更新之后输入旧密码可见数码管右下方的LED灯没有亮起,说明输入密码错误。(4)点击APP键盘模式里面的‘retry’重新输入密码。输入密码为‘321654’显示结果如图11所示:图11输入新密码测试图由结果可知输入正确的新密码之后可以成功开启密码锁,而原始的密码则不能。说明密码更改成功。4.3测试结果分析与结论在编写程序的时候,需要一定的逻辑思维,同时需要有耐心同时又要细心。在编译成功后,产生以“*.hex”和“*.bin”后缀的目标文件。在下载程序的时候,需要注意的是,先要将程序下载到AT89C51中再将蓝牙与单片机用杜邦线连接起来。从硬件测试的结果可以知道,显示功能与所写程序实现的功能基本符合,基本完成了基础的无线电子密码锁设计。5设计体会经过多次的反复测试与分析,对电路的原理及功能更加熟悉,同时提高了设计能力与及对电路的分析能力。同时在软件的编程方面得到更到的提高,对编程能力得到加强,同时对所学的知识得到很大的提高与巩固。总之,在这次课程设计过程中,我收获了很多,不仅对我以后的学习有很大的帮助,也为将来的人生之路坐了一个很好的铺垫。参考文献[1]黄辉先.单片机原理及应用[M].湘潭:湘潭大学出版社,2013.附录程序设计/******************************************************************** 无线电子密码锁1312203-30刘武********************************************************************* 与P1相连的8位发光LED点亮代表锁被打开;熄灭代表锁被锁上。程序功能:本程序结合了24C02存储器的存储功能,可以掉电保存密码。利用HC-06无线蓝牙模块与手机端的蓝牙进行通信,再通过HC-06的串口与51单片机进行串口通信,从而达到远程开关锁的功能。远程距离可达5~10米(视场地空旷程度而定)开锁:开启设备,从手机端输入密码,当6位密码正确时点亮8位发光LED。2、更改密码:只有当开锁(LED亮)后,该功能方可使用。从手机app进入实时命令模式,输入'c'(change)之后再输入想要更改的密码,最后输入'd'确认密码。3、重试密码:手机端app的“键盘模式”中点击“retry”,或者进入实时命令模式输入'a',当设置密码时,设置中途想更改密码,也可按下此键重新设置。4、关闭密码锁:手机端app的"键盘模式"中点击“close”,或者进入实时命令模式下输入'b'。注:更改密码为此密码锁的高级模式,普通权限下使用的是“键盘模式”。*******************************************************************/#include<reg52.h>#include<intrins.h>#defineuintunsignedint#defineucharunsignedcharucharold1,old2,old3,old4,old5,old6;ucharnew1,new2,new3,new4,new5,new6;//新采集的密码uchara=16,b=16,c=16,d=16,e=16,f=16;//送入数码管显示的变量ucharwei,key,temp,input;bitallow,genggai,ok,wanbi,retry,close,on; //各个状态位sbitdula=P2^6;sbitwela=P2^7;sbitbeep=P2^3;sbitsda=P2^0;//IO口定义sbitscl=P2^1;unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x40};/*****************IIC芯片24C02存储器驱动程序**************/voidnop(){ _nop_(); _nop_();}/////////24C02读写驱动程序////////////////////voiddelay1(unsignedintm){ unsignedintn; for(n=0;n<m;n++);}voidinit()//24c02初始化子程序{ scl=1; nop(); sda=1; nop();}voidstart()//启动I2C总线{ sda=1; nop(); scl=1; nop(); sda=0; nop(); scl=0; nop();}voidstop()//停止I2C总线{ sda=0; nop(); scl=1; nop(); sda=1; nop();}voidwritebyte(unsignedcharj)//写一个字节{ unsignedchari,temp; temp=j; for(i=0;i<8;i++){ temp=temp<<1; scl=0; nop(); sda=CY; //temp左移时,移出的值放入了CY中 nop(); scl=1; //待sda线上的数据稳定后,将scl拉高 nop();}scl=0;nop();sda=1;nop();}unsignedcharreadbyte()//读一个字节{unsignedchari,j,k=0;scl=0;nop();sda=1;for(i=0;i<8;i++){ nop();scl=1;nop(); if(sda==1) j=1; else j=0; k=(k<<1)|j; scl=0; } nop(); return(k);}voidclock()//I2C总线时钟{unsignedchari=0;scl=1;nop();while((sda==1)&&(i<255)) i++;scl=0;nop();}////////从24c02的地址address中读取一个字节数据/////unsignedcharread24c02(unsignedcharaddress){unsignedchari;start();writebyte(0xa0);clock();writebyte(address);clock();start();writebyte(0xa1);clock();i=readbyte();stop();delay1(100);return(i);}//////向24c02的address地址中写入一字节数据info/////voidwrite24c02(unsignedcharaddress,unsignedcharinfo){start();writebyte(0xa0);clock();writebyte(address);clock();writebyte(info);clock();stop();delay1(5000);}/****************密码锁程序模块*********************/voiddelay(unsignedchari){ ucharj,k;for(j=i;j>0;j--)for(k=125;k>0;k--);}voiddisplay(uchara,ucharb,ucharc,uchard,uchare,ucharf){dula=0;P0=table[a];dula=1;dula=0;wela=0;P0=0xfe;wela=1;wela=0;delay(5);P0=table[b];dula=1;dula=0;P0=0xfd;wela=1;wela=0;delay(5);P0=table[c];dula=1;dula=0;P0=0xfb;wela=1;wela=0;delay(5);P0=table[d];dula=1;dula=0;P0=0xf7;wela=1;wela=0;delay(5);P0=table[e];dula=1;dula=0;P0=0xef;wela=1;wela=0;delay(5);P0=table[f];dula=1;dula=0;P0=0xdf;wela=1;wela=0;delay(5);}voidkeyscan()//输入按键扫描模块{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++;break; 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;}voidshumima() //对按键采集来的数据进行分配{ if(!wanbi) { switch(wei) { case1:new1=key; if(!allow) a=17; elsea=key; break; case2:new2=key; if(a==17)b=17; elseb=key; break; case3:new3=key; if(a==17)c=17; elsec=key; break; case4:new4=key; if(a==17)d=17; elsed=key; break; case5:new5=key; if(a==17)e=17; elsee=key; break; case6:new6=key; if(a==17)f=17; elsef=key; wanbi=1; break; } }}voidyanzheng() //验证密码是否正确{ if(wanbi) //只有当六位密码均输入完毕后方进行验证 { if((new1==old1)&(new2==old2)&(new3==old3)&(new4==old4)&(new5==old5)&(new6==old6)) allow=1; //当输入的密码正确,会得到allowe置1 }}voidserial_init(){SCON=0X50;TMOD=0X20;TH1=0XFD;TL1=0XFD;TR1=1;EA=1;ES=1;}voidmain(){ init();//初始化24C02 old1=read24c02(110); old2=read24c02(111); old3=read24c02(112); old4=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会被置1 { if(allow) //若已经把锁打开,才有更改密码的权限 { while(!wanbi) //当新的六位密码没有设
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东财经大学燕山学院《书籍设计》2024-2025学年第二学期期末试卷
- 内蒙古丰州职业学院《汽车检测技术》2024-2025学年第二学期期末试卷
- 天津外国语大学滨海外事学院《大数据平台及应用》2024-2025学年第二学期期末试卷
- 陇南师范高等专科学校《飞行程序设计》2024-2025学年第二学期期末试卷
- 河南质量工程职业学院《中华礼乐文明》2024-2025学年第二学期期末试卷
- 四川商务职业学院《预防医学专业技能与创新(一)》2024-2025学年第二学期期末试卷
- 北京协和医学院《大数据开发技术》2024-2025学年第二学期期末试卷
- 中医门诊护理人员的护理健康教育
- 2026年天津机电职业技术学院单招职业适应性测试题库及答案解析
- 2026年朝阳师范高等专科学校单招职业技能考试题库含答案解析
- 高渗盐水治疗脑水肿及颅内高压专家共识解读 3
- GB/T 45860.1-2025光纤激光束焊机的验收试验第1部分:光纤输送机的激光组件
- 多学科围手术期气道管理国际专家共识2025年版
- 《幼儿园班级管理 》课件-第一章 幼儿园中的班级
- GB/T 4447-2025船舶与海洋技术海船起锚机和起锚绞盘
- 维保工作管理制度
- TSG21-2025固定式压力容器安全技术(送审稿)
- 尼康S8100数码相机使用说明书
- 国家基本比例尺地图编绘规范 第4部分 15000 110000地形图编绘规范 征求意见稿
- iFlash3000化学发光免疫分析仪操作程序
- 1.4 化学实验基本操作(练习)【中职专用】(高教版2021通用类)(原卷版)
评论
0/150
提交评论