




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
广州学院微机原理课程设计 基于STC89C51芯片的电子密码锁设计 院(系) 机械工程学院 专 业 机械电子工程 班 级2011级机械电子工程2班学生姓名 周俊明 指导老师 2014年 1 月 6 日 任 务 书兹发给 2011级机械电子工程2 班学生 周俊明 课程设计任务书,内容如下:1 设计题目: 基于STC89C51芯片的电子密码锁设计 2 应完成的项目:(1)收集相关芯片资料及应用电路; (2)根据芯片设计要完成的功能绘制相关电路原理图; (3)实现其功能绘制PCB板; (4)编写其相应功能的程序。 3 参考资料以及说明:(1)电子线路CAD与实训电子工业出版社; (2)51单片机C语言及汇编语言实用程序设计中国电力出版社; (3)lcd1602中文资料百度文库; (4)STC89C51数据手册百度文库; (5)工业自动化技术强化训练(嵌入式部分)华南理工大学广州学院机械工程学院机械实验中心; (6)单片机原理及其接口技术清华大学出版社。 4 本设计任务书于2013年 12 月 9 日发出,应于2014年 1 月 6 日前完成,然后进行答辩。指导教师 签发 年 月 日评语:总评成绩:指导教师签字:年 月 日目录摘 要1第一章 绪论21.1 STC89C51主芯片简介21.2电子密码锁简介2第二章 总方案设计3第三章 硬件电路设计63.1 USB供电模块63.2单片机最小系统模块63.3 LCD显示模块73.4 44矩阵键盘模块83.5室内一键开门模块93.6蜂鸣器报警电路模块93.7 LED灯提示及模拟开锁模块103.8整体电路PCB设计10第四章 程序设计及仿真、硬件调试124.1程序设计124.2仿真、硬件调试23第五章 设计总结28摘 要随着我国科技实力的日益提升,人民生活水平显著提高,财富也逐渐增多,随即而来的安全问题也受到了人们万分重视。现代化社会的门锁也偏向了电子化,电子密码锁也应运而生,其保密性高,使用灵活性好,方便且安全系数高,更符合时代的发展。因此,我要设计一个电子密码锁。本课程设计以STC89C51单片机为核心,介绍了以它为基础的电子密码锁的设计和开发过程。成品为一个以LCD显示的密码锁,用在需要密码输入的应用场合中,例如,当门禁使用时,需要实际配合门锁来改装;也可以设计在保险柜中做密码锁控制。其综合了44按键扫描输入、LCD显示、密码输入、密码比较处理、密码修改、室内一键开门、LED显示提醒等功能的设计方法。关键词: STC89C51单片机、单片机最小系统、44矩阵键盘、蜂鸣器报警、USB供电、LED灯显示、功能仿真、总结设计心得。第一章 绪论1.1 STC89C51主芯片简介 STC系列单片机是美国STC公司最新推出的一种新型51内核的单片机。片内含有Flash程序存储器、SRAM、UART、SPI、AD、PWM等模块。该器件的基本功能与普通的51单片机完全兼容。主要功能、性能参数1.内置标准51内核,机器周期:增强型为6时钟,普通型为12时钟;2.工作频率范围:040MHZ,相当于普通8051的080MHZ;3.STC89C5xRC对应Flash空间:4KB8KB15KB;4.内部存储器(RAM):512B;5.定时器计数器:3个16位;6.通用异步通信口(UART)1个;7.中断源:8个;8.有ISP(在系统可编程)IAP(在应用可编程),无需专用编程器仿真器;9.通用IO口:3236个;10.工作电压:3.85.5V;11.外形封装:40脚PDIP 1.2电子密码锁简介本电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的。其性能和安全性已大大超过了机械锁。其特点如下:(1) 保密性好,编码量多,远远大于弹子锁。随机开锁成功率几乎为零。(2) 密码可变,用户可以随时更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的保密性下降,且降低了换锁成本。(3) 误码输入保护,当输入密码多次错误时,报警系统自动启动。(4) 无活动零件,不会磨损,寿命长。(5) 使用灵活性好,不像机械锁必须佩带钥匙才能开锁。(6) 电子密码锁操作简单易行,一学即会。第二章 总方案设计打开电源显示操作提示按A或B按B修改密码按A输入密码提醒输入旧密码提醒输入开锁密码按09输入密码,按重新输入按09输入密码,按重新输入 正确 错误 正确 错误屏幕显示苦脸及红灯亮,表示密码错误屏幕显示笑脸及黄灯亮,表示密码正确屏幕显示笑脸及绿灯亮,表示开锁成功屏幕显示苦脸及红灯亮,表示开锁失败屏幕显示笑脸及绿灯亮,表示开锁成功提醒输入新密码错误3次?错误3次? 否 否 是密码锁锁死,红灯常亮,蜂鸣器常鸣按09输入密码,按重新输入 是提醒再次输入新密码有电情况下,按室内开门键按09输入密码,按重新输入绿灯亮,表示开锁成功屏幕显示苦脸及红灯亮,表示密码错误屏幕显示笑脸及黄灯闪3下,表示密码正确按09输入密码,按重新输入错误3次? 否 是密码锁锁死,红灯常亮,蜂鸣器常鸣图1 电子密码锁功能流程图本电子密码锁内置了直接输入密码开锁和修改密码功能。初始密码为:777777。按A进入直接输入密码开锁,如果密码正确,则开门成功;如果密码错误,则开门失败,且密码错误3次自动锁死密码锁并蜂鸣器报警。按B进入修改密码,先输入旧密码,如果密码错误,则返回输旧密码界面,且密码错误3次自动锁死密码锁并蜂鸣器报警。如果正确则闪一下黄灯,进入输入新密码,且有二次确认功能,防止误按,如果两次输入相同,则闪3下黄灯表示成功。在通电情况下,在室内按开门键能立即开锁,大大方便了室内开门的流程。电子密码锁电路模块包含:USB供电模块、单片机最小系统模块(包括复位电路和11.0592HMZ晶振电路)、LCD显示模块、44矩阵键盘模块、室内一键开门模块、蜂鸣器报警电路模块、LED灯提示及模拟开锁模块。说明:本电子密码锁以绿灯亮模拟成功开锁。第三章 硬件电路设计3.1 USB供电模块 图2 USB供电模块用USB供电线连接电脑或者其它适配器,由USB-B型输入口供+5V的稳压直流电给整个系统正常工作。如果有电,则电源灯亮。3.2单片机最小系统模块图3 单片机最小系统模块 51单片机STC89C51要正常运行必须满足一定的工作条件,也就是51单片机最小系统,包括了,复位电路(按Reset键可以重新运行系统)、晶振电路。3.3 LCD显示模块图4 LCD显示模块1602LCD采用标准的16脚(带背光)接口,各引脚接口说明如表编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极初次接触LCD真不知道怎么入手,向实验室的老师请教了好几次,自己上网看了好多视频和资料,最后才能做到和键盘有较好的配合。LCD1602显示屏实质就是两行点阵排成,而每个点对应有个地址,要控制LCD显示实质就是控制点阵的点。第一行,从左向右,地址为0x800x8f;第二行,从左向右,地址为0xc00xcf。比如要在第一行第一个点写字符“A”,那么要先写地址命令0x80,再送数据。在指定的位置显示指定的字符步骤:(1) 初始化液晶屏;(2) 写入要显示的字符的地址命令;(3) 写入要显示的字符或ASCII码。3.4 44矩阵键盘模块图5 44矩阵键盘模块键盘的端口是行连接到P1口的低4位,列连接到P1口的高4位。按键的确认:按键的确认就是判别按键是否闭合,反映在电压上就是和按键相连的引脚呈现出高电平或低电平。如果用高电平表示断开的话,低电平就是闭合;反之亦然。所以通过检测电平的高低状态可以确认按键是否被按下(此电子密码锁键盘高电平表示断开)。但是也有些情况是按键的误动,而造成错误的,所以在确认键按下的时候还要进行按键的去抖动操作。使用延时的操作时间为10ms。3.5室内一键开门模块图6室内一键开门模块为方便室内有人在室内时开门的简易性,在本电子密码锁中,加入了室内一键开门功能。将开门电路接到P32/INT0端口,在开中断后,电平触发中断,通电的任何时候均能在室内实现一键开门。3.6蜂鸣器报警电路模块图7蜂鸣器报警电路模块 在三极管的基极给一个低电平的时候,三极管将导通,再将电平输出为1,蜂鸣器则工作一次,打出滴答声音。不断改变基极的电平,就能产生报警声,根据脉冲周期的不同,能发出不同的声音。3.7 LED灯提示及模拟开锁模块图8 LED灯提示及模拟开锁模块本电路模块绿灯、黄灯、红灯各自接到P34、P35、P36端口,均以低电平触发电路工作。考虑到此电子密码锁课程设计主要说明功能及绘制主要控制电路,所以未作出开锁电路模块,所以用绿灯代表开锁成功。黄灯在修改密码时用以提示,在不同的结果时,P35输出不同电平方案,黄灯产生不同的闪烁效果。在密码错误时,P36输出一下低电平,以作提示,在错误次数达3次,P36将一直输出低电平,以示报警提示。3.8整体电路PCB设计按钮、开关、LCD1602、USBB型接口、STC89C51、蜂鸣器、排阻均在查阅资料及实物测量的前提下绘制封装,保证焊盘间距及PCB板的正确性。整体电路PCB板使用焊盘、过孔滴泪,PCB板按功能布局,左下角为USB供电模块,往右有44矩阵键盘模块、室内一键开门键(考虑课程设计的PCB板整体性,把此键放在了PCB板上,实际使用时可将其用导线接到室内),复位电路模块、中间从左向右分别为蜂鸣器报警电路模块、STC89C51单片机、LED灯提示及模拟开锁模块、晶振电路模块,最上部分为LCD显示屏及其调节对比度的变位器。此PCB板考虑其电路复杂性,采用双层布线,又考虑有较好的导电性能,线宽设置在0.51.0mm,最佳宽度设为0.8mm。先调整个元器件的位置,尽可能地减少导线的交叉,拐角设为圆形,然后采用自动布线,再进行手动调整布线,减少拐角过大,增大线与线、线与焊盘之间的距离,最后对焊盘、过孔滴泪,保障较好的电气性能,在此没有覆铜(考虑课程设计能看清导线及元器件布局)。图9整体电路PCB设计图第四章 程序设计及仿真、硬件调试4.1程序设计部分程序说明:1.密码设置为6位,初始密码存在mm06数组中,为777777、其它还定义了mm6、Xmm16、Xmm26数组用以在输入程序、密码修改、密码对比过程中作为参数。2.室内开门采用外部中断、中断程序中含有按键防抖功能、启动绿灯表示开锁成功。3.选用了11.0592HMZ晶振,延时程序的输入实参如果为1,则延时0.001000474秒,约为1毫秒。4.在密码输入时,只有09、返回键有效,其它键无效。5.flag为密码正确或错误标志,1为正确(初值),0为错误(一旦错误就为0)。6.蜂鸣器报警程序设为长鸣,不断给蜂鸣器所接三极管基极输出脉冲,使其长鸣报警。7.在主程序中定义i变量标记错误次数,凡是正确输入一次i清零,否则错3次后程序锁死,除复位按键、其余全部锁死,红灯长亮、蜂鸣器报警长鸣。8.LCD程序包括初始化(默认显示下横线光标、不闪动、光标自加)、判忙、写指令、写数据、显示开始位置、选择性单行显示、双行显示子程序。9.44矩阵键盘含有防抖功能(延时10毫秒确认实现),扫描方法为先给列全赋值为0,然后检测行的值,记录此时P1的值为X,在将行全赋值为0,检测列的值,记录此时P1的值Y,将X、Y逐位相或产生值Z,最后用选择语句选择键盘的返回值,完成键盘功能。程序整体及详细注释如下:#include #include#define uchar unsigned char#define uint unsigned intidata uchar firsth1= JuM_PASSWORD;/开始画面1,修改密码时的输入旧密码提示idata uchar firsth2=Press A or B; /开始画面2idata uchar secondA=Please Input;/密码输入提示idata uchar error=Error-_-!;/密码错误 idata uchar right=Right|_|;/密码正确 idata uchar thirdB=New Password Is:;/新密码输入提示idata uchar mm06=7,7,7,7,7,7;/初始密码idata uchar mm6;/输入密码idata uchar Xmm16;/新密码1idata uchar Xmm26;/新密码2uchar flag; /密码配对正确标志sbit key=P32;/室内开门键sbit rs=P26; /指令或数据口sbit rw=P25; /读或写状态口sbit e=P27; /LCD使能口sbit GLed=P34;/定义绿灯sbit YLed=P35;/定义黄灯sbit RLed=P36;/定义红灯sbit buzzer=P30;/定义蜂鸣器void delay(uint xms);void lcd_init();void write_com(uchar com);void write_data(uchar dat);void alarm();void lcd_display1(uchar tab,uchar l);void lcd_display2(uchar tab1,uchar tab2);uchar keyscan();uchar KeyPro(void);void zhijie(void) interrupt 0 /外部中断,用以室内开锁delay(20);if(key=0)delay(20);while(1)if(key=1)delay(10); /防抖if(key=1)GLed=0;/绿灯亮1秒,表示开门delay(1000);GLed=1;break;void delay(uint xms)/延时程序 x msuint i,j;for(i=xms;i0;i-)for(j=112;j0;j-);bit lcd_busy() /判断是否忙P0= 0xff; rs=0; /写指令 rw=1; /表示读状态e=0; _nop_(); e=1;return (bit)(P0 & 0x80); void write_data(uchar dat)/LCD写数据程序lcd_busy();/判断LCD是否忙碌rs=1;rw=0;P0=dat;delay(10);e=1;delay(10);e=0;void write_com(uchar com)/LCD写指令程序lcd_busy();/判断LCD是否忙碌rs=0;rw=0;P0=com;delay(10);e=1;delay(10);e=0;void lcd_pos(uchar pos)/显示位置程序write_com(pos|0x80);void lcd_init() /LCD初始化程序write_com(0x38); /开显示write_com(0x0e); /开显示不显示光标write_com(0x06); /写一个指针加1write_com(0x01); /清屏write_com(0x80); /设置数据指针起点void lcd_display1(uchar tab,uchar h)/选择性单行显示子程序uchar i;lcd_init();/初始化LCDdelay(10);if(h=1) /第一行显示lcd_pos(0x01);if(h=2) /第二行显示 lcd_pos(0x42); i=0;while(tabi != 0)write_data(tabi);/显示字符i+;void lcd_display2(uchar tab1,uchar tab2)/双行显示子程序uchar i,j;lcd_init();/初始化LCDdelay(10);lcd_pos(0x01); /从第一行显示i=0;while(tab1i != 0)write_data(tab1i);/显示字符i+;lcd_pos(0x42);/从第二行显示j=0;while(tab2j != 0)write_data(tab2j);/显示字符j+;void alarm()/蜂鸣器报警程序while(1)buzzer=1;delay(2);buzzer=0;delay(2);void pass_cmp(uchar mm16,uchar mm26)/密码比较子程序uchar i;flag=1; /初始化密码对比标志for(i=0;i6;i+)/比较6位密码if(mm1i!=mm2i)flag=0;if(flag=0)/密码错误lcd_display1(error,1);RLed=0;delay(2000);RLed=1;else/密码正确lcd_display1(right,1);delay(1500);void pass_input(uchar mm16)/输入密码子程序uchar i,j;loop5:lcd_pos(0x42);/从第二行开始显示for(i=0;i9)if(j=15)/按下键光标返回到第二行开始goto loop5;elsegoto loop2; if(j=0&j=9)/输入值要在09的数字 mm1i=j;/输入值到数组mm1write_data(*);/显示*代表密码 uchar keyscan()/键盘扫描子程序 uchar X,Y,Z;P1=0x0f; /先对P14P17置零,行扫描if(P1!=0x0f) /判断是否有键按下delay(10); /防抖if(P1!=0x0f) /确认按键按下;X=P1; /保存行扫描时有键按下时状态P1=0xf0; /列扫描Y=P1; /保存列扫描时有键按下时状态Z=X|Y; /取出键值while(P1&0xf0)!=0xf0);/等待松开并输出 return (Z); return(0xff);uchar KeyPro(void)/按键值处理函数,返回扫键值switch(keyscan() case 0xee: return 7; break; /对键值赋值case 0xde: return 8; break; case 0xbe: return 9; break; case 0x7e: return 13; break; case 0xed: return 4; break; case 0xdd: return 5; break; case 0xbd: return 6; break; case 0x7d: return 12; break; case 0xeb: return 1; break; case 0xdb: return 2; break; case 0xbb: return 3;break; case 0x7b: return 11;break; case 0xe7: return 0;break; case 0xd7: return 14;break; case 0xb7: return 15;break; case 0x77: return 10;break; default:return 0xff;break; void main()/主函数 uchar k,i=0;EX0=1; /开外部中断IT0=0; /低电平触发EA=1; /开总中断while(1)loop3:lcd_display2(firsth1,firsth2);/显示开始界面loop1:k=KeyPro();if(k=0xff)goto loop1; delay(500);if(k=10)/按A键进入输入密码界面lcd_display1(secondA,1);/显示输入提示lcd_pos(0x42);pass_input(mm); /输入密码pass_cmp(mm,mm0); /密码对比if(flag=1) /密码正确 i=0;/3次输入以内有一次正确i自动清零GLed=0;/开锁成功绿灯亮,表示开门delay(1000);GLed=1;else /密码不正确i+; /计算输入次数if(i3)goto loop3;else /如果输入3次错误密码锁死,红灯常亮,蜂鸣器响RLed=0;alarm();while(1); else if(k=11)/按B键进入修改密码界面 loop4:lcd_display1(firsth1,1);/输入旧密码lcd_pos(0x42);pass_input(mm);pass_cmp(mm,mm0);if(flag=1)/如果密码正确,可进入输新密码界面i=0;/3次输入以内有一次正确i自动清零YLed=0;/密码正确黄灯闪1下delay(500);YLed=1;lcd_display1(thirdB,1);/第一次输入新密码lcd_pos(0x42);pass_input(Xmm1);lcd_display1(thirdB,1);/第二次输入新密码lcd_pos(0x42);pass_input(Xmm2);pass_cmp(Xmm1,Xmm2);/新密码确认 if(flag=1)uchar i; for(i=0;i6;i+) mm0i=Xmm1i;delay(255);YLed=0;/新密码设置成功黄灯闪3下delay(500);YLed=1;delay(500);YLed=0;delay(500);YLed=1;delay(500);YLed=0;delay(500);YLed=1;else i+; /计算输入次数if(i3)goto loop4;else /如果输入3次错误密码锁死,红灯常亮,蜂鸣器长鸣RLed=0;alarm();while(1); 4.2仿真、硬件调试仿真电路及硬件电路设计图10 仿真电路设计图图11 开发板搭建硬件电路图12 按键部分图13 LED发光二极管图14 蜂鸣器报警及复位仿真功能展示1.待机状态,等待选择A直接输入密码开锁,B修改密码。图15 待机界面2.按A,提示输入
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年康复医疗服务体系在康复医疗市场中的投资机会与风险评估报告
- 中考数学总复习《 圆》经典例题含答案详解(夺分金卷)
- 弹性伸缩架构-洞察及研究
- 中级银行从业资格之中级银行业法律法规与综合能力强化训练题型汇编(名校卷)附答案详解
- 自考专业(建筑工程)考前冲刺试卷及参考答案详解(黄金题型)
- 农业保险行业风险评估与赔付方案
- 中级银行从业资格之中级银行业法律法规与综合能力综合检测题型汇编附参考答案详解【黄金题型】
- 个人电脑硬件故障排除手册
- 自考专业(护理)考试彩蛋押题标准卷附答案详解
- 中级银行从业资格之中级银行业法律法规与综合能力强化训练题型汇编附参考答案详解【满分必刷】
- 工作交接表模板
- 《义务教育数学课程标准(2022年版)》初中内容解读
- 人教版PEP四年级英语上册全册课件
- 数据治理与数据中台建设方案
- 全册(教案)人教精通版英语六年级上册
- DL-T5455-2012火力发电厂热工电源及气源系统设计技术规程
- 穴位贴敷治疗过敏性鼻炎技术
- 公司自行车管理制度
- 《剧院魅影:25周年纪念演出》完整中英文对照剧本
- 蒋诗萌小品《谁杀死了周日》台词完整版
- 6G网络中的垂直通信和切片技术
评论
0/150
提交评论