ImageVerifierCode 换一换
格式:DOC , 页数:20 ,大小:4.62MB ,
资源ID:4744106      下载积分:8 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

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

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     留言反馈    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(单片机密码锁实验报告.doc)为本站上传会员【快乐****生活】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

单片机密码锁实验报告.doc

1、二一六二一七学年第 一 学期电子信息工程系 电子综合设计II报告书班 级: 电信(产业)1401班 设计时间: 2016/12/29 学生姓名: 曹子龙 学 号: 201404135024 指导教师: 赵敏 二一六年 十二 月 一、 设计要求.题目内容:设计一个基于51单片机的电子密码锁:1. 可以使用4*4的矩阵键盘与红外遥控器输入密码。2. 可以通过按特殊组合键重设开锁密码。3. 显示通过1602液晶屏显示电子密码锁界面,输入密码时显示输入个数显示为*,如果密码正确,进入欢迎界面。4. 密码连续输入3次错误报警,LCD显示报警,倒计时十秒后重新进入密码输入界面。5. 可以通过特殊的按键组合

2、跳过输入界面直接进入欢迎界面。实现方法:1. 通过红外接收头,连接单片机的P3.2外部中断INT0口,可以实现单片机接收遥控器的信号输入。2. 通过矩阵键盘扫描函数,可以实现对键盘输入的响应。3. 通过引脚的高低电平变化频率,控制蜂鸣器的输入占空比和频率(低电平时间固定,通过输入给函数值的不同改变高电平时间,固定响300个周期),对不同按键实现不同声音响应。4. 1602显示屏有16*2个单元格,每个单元格由5*8个像素点组成,可以很好的显示数字,符号,英文字符。功能需求分析: 液晶屏显示:根据题意,需要设计并显示输入密码界面、修改密码界面、欢迎界面、错误警告界面密码输入:根据题意,每次输入一

3、个数字,则显示一个*符号代替,只能看出输入的位数,若输入密码位数达到六位,则与正确密码比较,若正确,进入系统。根据日常的手机使用习惯,默认长度为6位,且第六位输入之后立即判断,正确则进入,错误则清空重输。组合键实现密码修改:密码修改必须通过不易被他人发现的特殊方法改变,所以设计为,若同时按住矩阵键盘的5,10 或6,9两个键,则进入密码修改函数。输入密码错误三次则报错:一般的密码系统对密码输入错误次数过多的情况进行了限制,所以在密码锁里设置,若密码输入错误三次,则进入警报界面,显示10s倒计时,必须在倒计时结束后才能再次输入密码。组合键实现跳过密码:如果系统主人临时忘记了密码,则需要一些补救的

4、备用措施,所以在电子锁里设计了,如果同时按下0,15或3,12键,则跳过密码输入阶段,直接进入欢迎界面。红外控制:在很多时候,需要通过远程通信输入密码,进入某个远程服务器系统。所以,通过红外设备模拟远程通信就显得很有必要。再此系统中,通过把红外接收引脚接到外部中断INT0口,实现接收红外遥控器的数据。重新输入:如果密码输入的过程中,发现输错了一位数,方便起见,要设置重新输入的功能,即矩阵按键为11,或红外遥控键值为12时,重新输入密码,并且不计入输错次数。二、 系统总体设计框架系统模块分布图:详细流程框图:三、 运行结果 密码输入:每次输入一个数字,则显示一个*符号。密码修改:通过特殊组合按键

5、,进入密码修改函数。三次报错:若密码输入错误三次,则进入警报界面。 特殊键清除:通过特殊组合按键,进入密码修改函数。红外控制:通过红外遥控器输入密码。重新输入:通过红外遥控器的12号按键或矩阵键盘的11号按键可以重新输入密码。四、 实验小结本次实验,用51单片机实现了电子密码锁系统,虽然内容较基础,但是还是新学到了一些新知识,如红外线的数据传输方式,外部中断的合理使用。同时也遇到了一些问题: 用红外遥控器输入密码的时候,总会在短时间内把一个键值发给单片机发送两次,但是原因不是太清楚,可能是红外遥控器的抬起也算一个命令,然后我再判断主函数的红外线标志位判断的地方,加了0.5秒的延迟,解决了问题。

6、以后有时间再把红外接收器的数据手册详细看看,研究问题出在哪里。总体来说,这一次的动手设计还是让自身能力提高了不少,但其实我学习的东西还远远不够,在以后的学习里,我会抓紧课外时间多学习知识,才能将自身解决实际问题的能力快速提高。五、 参考文献1 谭浩强,C语言程序设计,清华大学出版社,20052 张毅刚,单片机原理及接口技术,人民邮电出版社,2011六、 附录:源程序/* 电子密码锁系统 Designed By 曹子龙 2016/12/29*/#include#includelcd.h/包含控制1602的初始化程序及写入命令的程序#define GPIO_KEY P1/矩阵键盘接口sbit IR

7、IN=P32;/红外线接口sbit Beep = P20; /蜂鸣器接口unsigned char code CDIS016= Set Code: ;/用来初始化1602屏幕显示内容的字符串数组unsigned char code CDIS116= Enter Code: ;unsigned char code CDIS216= Code: ;unsigned char code CDIS316= Welcome to ;unsigned char code CDIS416= My System!;unsigned char code CDIS516= Warning: ;unsigned c

8、har code CDIS616= Please Wait s!;unsigned int RIGHTCODE6=9,7,0,2,2,9;/初始正确密码unsigned int Code6;/用来存放输入密码unsigned int KeyValue;/用来储存键值unsigned int Key_Flag=0;/有按键按下时置为1unsigned int HongwaiValue;/用来储存键值unsigned int Hongwai_Flag=0;/有红外信号时置为1unsigned int Annum=0; /用来储存按键次数unsigned int Wrongnum=0; /用来储存错

9、误次数unsigned int CodeFlag=0;/用来标识密码是否输入正确unsigned int CodeDel=0;/特殊组合键可以清除密码unsigned char IrValue6;/暂存接收到的红外信号unsigned char Time;unsigned char WrongTime;/用来储存错误等待时间void SetCode();/重置密码函数void hongwai(); /将红外接收的值变为对应的按键值void IrInit();/红外初始化void DelayMs(unsigned int );void beep(unsigned int);/可让蜂鸣器实现不同频

10、率声音的函数void KeyScan();/键盘扫描函数/* 函数名 : main* 函数功能 : 主函数*/void main()unsigned char i;IrInit();LcdInit();LcdWriteCom(0x80);/初始化LCD1602显示,展示密码输入界面for(i=0;i16;i+)LcdWriteData(CDIS1i);LcdWriteCom(0x80+0x40);for(i=0;i16;i+)LcdWriteData(CDIS2i);while(1)KeyScan();/扫描键盘if(CodeDel=4)/若输入正确的组合按键,可重设密码SetCode();e

11、lse if(CodeDel=2)/若输入正确的组合按键,则清除密码,直接进入系统Wrongnum=0;/若输入正确,错误次数清零Annum=0;/密码计数器清零CodeDel=0;/组合键标志位清0Key_Flag=0;/按键标志位清0Hongwai_Flag=0;/红外标志位清0LcdWriteCom(0x80);/进入欢迎界面 5sfor(i=0;i16;i+)LcdWriteData(CDIS3i);LcdWriteCom(0x80+0x40);for(i=0;i16;i+)LcdWriteData(CDIS4i);DelayMs(50000);LcdWriteCom(0x80);fo

12、r(i=0;i16;i+)/等待结束后,次数清零,显示输入密码界面LcdWriteData(CDIS1i);LcdWriteCom(0x80+0x40);for(i=0;i=6)/6位密码输入完毕或检测到特殊组合按键CodeFlag=1;/暂时令标志位为1,若密码有错误,则再置0for(i=0;i6;i+)if(Codei!=RIGHTCODEi)/若密码与正确密码不相等CodeFlag=0;if(CodeFlag=0)/若输入错误,清零重新输入,并将错误输入次数加一Wrongnum+;if(Wrongnum=3)/若错误次数达到三次beep(100);/警报LcdWriteCom(0x80)

13、;/显示错误信息,等待10sfor(i=0;i16;i+)LcdWriteData(CDIS5i);LcdWriteCom(0x80+0x40);for(i=0;i16;i+)LcdWriteData(CDIS6i);WrongTime=9;/等待时间while(WrongTime!=0)LcdWriteCom(0x80+0x40+13);LcdWriteData(WrongTime);DelayMs(10000);WrongTime-;Wrongnum=0;Annum=0;Key_Flag=0;/按键标志位清0Hongwai_Flag=0;/红外标志位清0LcdWriteCom(0x80);

14、for(i=0;i16;i+)/等待结束后,次数清零,显示输入密码界面LcdWriteData(CDIS1i);LcdWriteCom(0x80+0x40);for(i=0;i16;i+)LcdWriteData(CDIS2i);if(CodeFlag=1)/密码输入正确Wrongnum=0;/若输入正确,错误次数清零Annum=0;/密码计数器清零LcdWriteCom(0x80);/进入欢迎界面 5sfor(i=0;i16;i+)LcdWriteData(CDIS3i);LcdWriteCom(0x80+0x40);for(i=0;i16;i+)LcdWriteData(CDIS4i);D

15、elayMs(50000);LcdWriteCom(0x80);for(i=0;i16;i+)/等待结束后,次数清零,显示输入密码界面LcdWriteData(CDIS1i);LcdWriteCom(0x80+0x40);for(i=0;i16;i+)LcdWriteData(CDIS2i);/*标志清零需放在后面,因为在密码输入正确后的显示时间内,外部中断或按键都会使标志位为1,进而在再次显示密码时弹出一位密码值*/Key_Flag=0;/按键标志位清0Hongwai_Flag=0;/红外标志位清0/* 函数名 : SetCode()* 函数功能 : 设置密码*/void SetCode()

16、int i,j=0;Wrongnum=0;/错误次数清零Annum=0;/密码计数器清零CodeDel=0;/组合键标志位清0Key_Flag=0;/按键标志位清0Hongwai_Flag=0;/红外标志位清0LcdWriteCom(0x80);for(i=0;i16;i+)/初始化LCD1602显示,显示设置密码界面LcdWriteData(CDIS0i);LcdWriteCom(0x80+0x40);for(i=0;i16;i+)LcdWriteData(CDIS2i);DelayMs(1000);while(j6)KeyScan();/扫描键盘if(Key_Flag=1)Key_Flag

17、=0;RIGHTCODEj=KeyValue;beep(KeyValue * 30);LcdWriteCom(0xc0+7+j);LcdWriteData(42);j+;DelayMs(1000);if(Hongwai_Flag=1)/若接受到了红外数据DelayMs(500);if(Hongwai_Flag=1)/不知道因为什么原因,红外接收的中断会开启两次,为了防止数据重复,写了此次延时判断Hongwai_Flag=0;RIGHTCODEj=HongwaiValue;beep(HongwaiValue * 40);LcdWriteCom(0xc0+7+j);LcdWriteData(42)

18、;j+;DelayMs(1000);LcdWriteCom(0x80);for(i=0;i16;i+)/初始化LCD1602显示,展示密码输入界面LcdWriteData(CDIS1i);LcdWriteCom(0x80+0x40);for(i=0;i16;i+)LcdWriteData(CDIS2i);Wrongnum=0;/错误次数清零Annum=0;/密码计数器清零Key_Flag=0;/按键标志位清0Hongwai_Flag=0;/红外标志位清0/* 函数名 : DelayMs()* 函数功能 : 延时*/void DelayMs(unsigned int x) /0.14ms误差 0

19、usunsigned char i;while(x-)for (i = 0; i0)/等待前面9ms的低电平过去 DelayMs(1);err-; if(IRIN=1)/如果正确等到9ms低电平Hongwai_Flag=1;/正确收到信号,标志位置1err=500;while(IRIN=1)&(err0) /等待4.5ms的起始高电平过去DelayMs(1);err-;for(k=0;k4;k+)/共有4组数据for(j=0;j0)/等待信号前面的560us低电平过去DelayMs(1);err-;err=500;while(IRIN=1)&(err0) /计算高电平的时间长度。DelayMs

20、(1);/0.14msTime+;err-;if(Time30)EX0=1;return;IrValuek=1; /k表示第几组数据if(Time=8)/如果高电平出现大于565us,那么是1IrValuek|=0x80;Time=0;/用完时间要重新赋值hongwai();if(IrValue2!=IrValue3)return;/* 函数名 : KeyScan* 函数功能: 扫描矩阵键盘*/void KeyScan(void) /读取按键值char a = 0;int j;GPIO_KEY=0x0f;if(GPIO_KEY!=0x0f)/读取按键是否按下DelayMs(10);/延时10m

21、s进行消抖if(GPIO_KEY!=0x0f)/再次检测键盘是否按下Key_Flag=1;Annum+;/按键次数加1/测试行GPIO_KEY=0X0F;switch(GPIO_KEY)case(0X07):KeyValue=12;break;case(0X0b):KeyValue=8;break;case(0X0d): KeyValue=4;break;case(0X0e):KeyValue=0;break;case(0X06):CodeDel=1;break;/特殊按键组合可以清除密码case(0X09):CodeDel=3;break;/特殊按键组合可以重设密码/测试列GPIO_KEY=

22、0XF0;switch(GPIO_KEY)case(0X70):KeyValue=KeyValue+3;break;case(0Xb0):KeyValue=KeyValue+2;break;case(0Xd0): KeyValue=KeyValue+1;break;case(0Xe0):KeyValue=KeyValue;break;case(0X60):if(CodeDel=1) CodeDel=2;break; /按键0和15组合可以清除密码case(0X90):if(CodeDel=3) CodeDel=4;break; /按键5和6组合可以重设密码while(a50) & (GPIO_

23、KEY!=0xf0) /检测按键松手检测DelayMs(10);a+;if(KeyValue=11)/11按键可以重新输入密码Annum=0;/密码计数器清零Key_Flag=0;/按键标志位清0Hongwai_Flag=0;/红外标志位清0LcdWriteCom(0x80+0x40);/清除密码输入的*符号for(j=0;j4; /高位IrValue5=IrValue2&0x0f;/低位if(IrValue4=1&IrValue5=6)HongwaiValue=0;else if(IrValue4=0&IrValue5=12)HongwaiValue=1;else if(IrValue4=1

24、&IrValue5=8)HongwaiValue=2;else if(IrValue4=5&IrValue5=14)HongwaiValue=3;else if(IrValue4=0&IrValue5=8)HongwaiValue=4;else if(IrValue4=1&IrValue5=12)HongwaiValue=5;else if(IrValue4=5&IrValue5=10)HongwaiValue=6;else if(IrValue4=4&IrValue5=2)HongwaiValue=7;else if(IrValue4=5&IrValue5=2)HongwaiValue=8;

25、else if(IrValue4=4&IrValue5=10)HongwaiValue=9;else if(IrValue4=1&IrValue5=9)HongwaiValue=10;else if(IrValue4=0&IrValue5=13)HongwaiValue=11; else HongwaiValue=12; if(HongwaiValue=11)/按键可以重新输入密码Annum=0;/密码计数器清零Key_Flag=0;/按键标志位清0Hongwai_Flag=0;/红外标志位清0LcdWriteCom(0x80+0x40);/清除密码输入的*符号for(j=0;j 0; i-) for(j = 200; j 0; j-);/* 函数名 : beep* 函数功能: 可以实现不同频率和占空比的蜂鸣器鸣叫程序*/void beep(unsigned int type)/按键值不同,对应蜂鸣器不同的声音unsigned int n = 300;while(n!=0) Beep= 1; delay(25); Beep= 0; delay(type/20);n-;

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服