单片机课程设计报告-基于单片机的电子密码锁设计内容摘要:

- P3 口输出高电平;外部程序存储器读选通信号 PSEN 无效。 地址锁存信号 ALE 也为高电平。 根据实际情况选择如图 46 所示的复位电路。 该电路在最简单的复位电路下增加了手动复位按键,在接通电源瞬间,电容 C1 上的电压很小,复位下拉电阻 上的电压接近电源电压,即 RST 为高电平,在电容充电的过程中 RST 端电压逐渐下降,当 RST 端的电压小于某一数值后, CPU 脱离复位状态,由于电容 C1 足够大,可以保证 RST 高电平有效时间大于 24 个振荡周期, CPU 能够可靠复位。 增加手动复位按键是为了避免死机时无法可 单片机密码锁课程设计报告 —— 湖南师大本科生课程设计 11 靠复位。 当复位按键按下后电容 C1 通过 R 放电。 当电容 C1 放电结束后, RST 端的电位 为高电平。 由于 RST 为高电平, CPU 处于复位状态,松手后,电容 C1 充电, RST 端电位下降, CPU脱离复位状态。 R5 的作用在于限制按键按下瞬间电容 C1 的放电电流,避免产生火花,以保护按键触电。 复位电路原理图 晶振部分 STC89C52引脚 XTAL1和 XTAL2与晶体振荡器及电容 C按下图 所示方式连接。 晶振、电容 C1/ C2及片内与非门(作为反馈、放大元件)构成了电容三点式振荡器,振荡信号频率与晶振频率及电容 C C2的容量有关,但主要由晶振频率决定,范围在 0~ 33MHz之间,电容 C C2取值范围在 5~ 30pF之间。 根据实际情况,本设计中采用 12MHZ做为 系统的外部晶振。 电容取值为 30pF。 晶振电路原理图 单片机密码锁课程设计报告 —— 湖南师大本科生课程设计 12 显示部分 为了提高密码锁的密码显示效果能力。 本设计的显示部分由液晶显示器 LCD1602 取代普通的数码管来完成。 只有 接通电源 后,显示器才处于开启状态。 否则显示器将一直处于初始状态,当需要对密码锁进行开锁时,按下键盘上的 OPEN 按键后利用键盘上的数字键 0- 9输入密码,每按下一个数字键后在显示器上显示一个 *,输入多少位就显示多少个 *。 当密码输入完成时,按下确认 OK 键, 然后用 LCD 显示相关的提示信息。 以下是显示部分接线图。 显示电路 原理图 受控 开锁部分 此处利用声光模拟密码锁电路得控制效果,当密码输入正确时,绿灯亮,反之则红灯亮,连续输入错误则蜂鸣器鸣叫报警。 在实际应用中可将绿灯换成电磁阀来实现电能向动能的转换来实现实际的问题。 声光指示电路 单片机密码锁课程设计报告 —— 湖南师大本科生课程设计 13 程序设计 本系统软件设计由主程序、初始化程序、 LCD显示程序、键盘扫描程序、 键 功能程序、密码设置程序、 EEPROM读写程序和延时程序等组成。 主要 程序设计流程图如下所示: 主程序流程图 开始 初始化 键盘扫描 启动程序 键盘扫描 键功能程序 结束 关闭程序 单片机密码锁课程设计报告 —— 湖南师大本科生课程设计 14 密码操作流程图 密码设置流程 图 开锁 操作 流程 图 按键功能流程图 设置程序 初始化 按下设置键 输入密码 确认程序 设置成功 初始化 按开锁键 输入密码 确认程序 输入正确。 Y 开锁成功 开锁程序 输入次数加 1 次数 3? 报警程序 返回 N Y N Y 键功能程序 键值=‘ 0- 9’。 键值=‘开锁’。 键值=‘设置 ’。 键值=‘确认’。 密码输入程序 设置程序 开锁程序 确认程序 Y Y Y Y N N N 返回 N 单片机密码锁课程设计报告 —— 湖南师大本科生课程设计 15 总结 本设计从经济实用的角度出发,采用 宏基公司生产的 STC89系列 STC89C52单片机 与 低功耗 CMOS型 E2PROM AT24C02作为主控芯片与数据存储器单元, 结合外围的键盘输入、显示、报警、开锁等电路并用 C语言编写主控芯片的控制程序,设计了一款可以多次更改密码具有报警功能的电子 密码锁。 设计 基本 可行可以达到设计目地。 使用单片机制作的电子密码锁具有软硬件设计简单,易于开发,成本较低,安全可靠,操作方便等特点,可应 用于住宅、办公室的保险箱及档案柜等需要防盗的场所,有一定的实用性。 该电路 设计还具有按键有效提示,输入错误提示,控制开锁电平,控制报警电路,修改密码等多种功能。 由于设计此电路的时间较仓促,其中还有些许未考虑周全的因素,还需要继续的改进和完善。 单片机密码锁课程设计报告 —— 湖南师大本科生课程设计 16 参考文献 [1] 石文轩 ,宋薇 .基于单片机 MCS 一 51 的智能密码锁设计 [M].武汉工程职业技术学院学报 ,2020,(01)。 [2] 祖龙起 ,刘仁杰 .一种新型可编程密码锁 [J].大连轻工业学院学报 ,2020,(01)。 [3] 叶启明 .单片机制作的新型安全密码锁 [J].家庭电子 ,2020,(10)。 [4] 郭海英 .基于单片机的电子 安全密码锁的设计 [M].现代电子技术 ,2020,(13)。 [5] 李明喜 .新型电子密码锁的设计 [J].机电产品开发与创新 ,2020,(03)。 [6] 董继成 .一种新型安全的单片机密码锁 [J].电子技术 ,2020,(03)。 [7] 祖龙起 ,刘仁杰 ,孙乃凌 .一种新颖的电子密码锁 [J].电子世界 ,2020,(10)。 [8] 李明喜 .新型电子密码锁的设计 [J].机电产品开发与创新 ,2020,(03)。 [9] 杨茂涛 .一种电子密码锁的实现 [J].福建电脑 ,2020,(08)。 [10] 瞿贵荣 .实用电子密码 锁 [J].家庭电子 ,2020,(07)。 [11] ,2020,(01)。 [12] Wireless World, 1998, vol、 84, No、 1509, p69。 [13] 王千 .实用电子电路大全 [M],电子工业出版社, 2020, p101。 [14] 何立民 .单片机应用技术选编 [M],北京:北京航空大学出版社, 1998。 [15] 李华 .MCS51 系列单片机使用接口技术 [M],北京航空航天大学出版社, 1993。 [16] 彭为 .单片机 典型系统设计实例精讲 [M],北京:电子工业出版社, 2020。 [17] 潘永雄 .新编单片机原理与应用 [M],西安:西安电子科技大学出版社, 2020。 [18] 童诗白 ,华成英,模拟电子技术基础 [M],北京:高等教育出版社, 2020。 [19] 阎石主 .数字电子技术基础 [M],北京:高等教育出版社, 1998。 [20] 樊昌信 ,曹丽娜 .通信原理 [M],北京:国防工业出版社, 2020。 [21] 李瀚荪 .电路分析基础 [M],北京:高等教育出版社 1991。 单片机密码锁课程设计报告 —— 湖南师大本科生课程设计 17 附件一:电路原理图 作品 实物图 电路原理图 作品实物图 单片机密码锁课程设计报告 —— 湖南师大本科生课程设计 18 附件 三 :程序清单 主程序 //**********家庭电子锁 ************/ //**********C 语言 版 ***************/ //**********2020 年 1 月 ************/ include include include include include include uchar code a0[]={Password Setting}。 uchar code a1[]={wele to here}。 uchar code a2[]={input password:}。 uchar code a4[]={input length:}。 uchar code a5[]={wait for ......}。 uchar code a6[]={secret is saving}。 uchar code a7[]={wait for ......}。 uchar code a8[]={secret is OK}。 uchar code a9[] ={Setting pleted}。 uchar code a10[] ={secret is ERROR}。 uchar code a11[] ={setting serect}。 uchar code b1[]={Families lock}。 uchar code b2[]={Password}。 uchar code c1[]={Open the door }。 uchar code c2[]={Wele host }。 uchar code c3[]={who are you ? }。 uchar code c4[]={I don39。 t know you}。 uchar code c5[]={Password ERROR!}。 bit FLAG1,FLAG2,FLAG3,FALG4。 uchar idata set1[11]={0,0,0,0,0,0,0,0,0,0,0}。 uchar idata set2[11]={0,0,0,0,0,0,0,0,0,0,0}。 enum jian{enter=10,cancel,open,setserect}。 ///////////////////////////////////////// // 用户密码设置 user()。 // 密码输入 inputserect() // 开锁显示 OPENLOCK() //密码读入 readserect() //*******************密码读入 void readserect() { int i。 for(i=0。 iread_random(20)。 i++) { set1[i]= read_random(i)。 } } void yanzh1() { clear()。 write1602(0,0,a8)。 write1602(0,1,a5)。 delay(。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。