已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数字开发与实践课程设计 题目: 用LCD1602与AT24C02 设计可调式电子密码锁 班级: 姓名: 学号: 201027010140 学院: 中州大学信息工程学院 二一二年 六 月 五 日 目录 一、 总体设计2 1. 设计目标2 2. 密码选择方式3 3. 主控部分选择3二、 硬件电路4 1. 复位电路4 2. 晶振电路4 3. 电源输入电路5 4. 密码存储电路5 5. 液晶显示电路6 6. 声电路7 7. 按键电路8 8. 开锁电路9三、 软件设计9 1. 主程序流程图9 2. 按键功能程序流程图10 3. 密码设置程序流程图11 4. 开锁程序流程图12四、 系统仿真13 1. 电子密码锁系统主模块单片机13 2. 电子密码锁系统的键盘模块14 3. 电子密码锁系统的显示模块14 4. 电子密码锁系统的掉电存储模块14 5. 电子密码锁系统的开锁电路15 6. 系统整体仿真图15五、 程序代码16 C语言源程序16六、 实验心得24用LCD1602与AT24C02 设计可调式电子密码锁一、 总体设计1. 设计目标 本设计采用AT89C51单片机为主控芯片,结合外围电路矩阵键盘、液晶显示器LCD1602和密码存储AT24C04等部分组成。其中矩阵键盘用于输入数字密码和进行各种功能的实现。由用户通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自己保存的密码进行对比,从而判断密码是否正确,然后控制引脚的高低电平传到开锁电路、led发光还是熄灭、报警电路控制开锁还是报警,组成的电子密码锁系统,能够实现:1. 密码输入正确后锁打开 ,具有显示字符、声和光的提示; 2. 可以多次修改密码,掉电后密码不丢失;3. 六次密码输入错误密码锁定并声光报警;系统整体设计框图如图1-1所示:输入电路存储模块晶振电路主控芯片显示电路输出电路图1-1系统整体框图 2. 密码选择方式方案一:指纹输入识别 指纹识别技术主要涉及四个功能:读取指纹图像、提取特征、保存数据和比对。通过指纹读取设备读取到人体指纹的图像,然后要对原始图像进行初步的处理,使之更清晰,再通过指纹辨识软件建立指纹的特征数据。软件从指纹上找到被称为“节点”(minutiae)的数据点,即指纹纹路的分叉、终止或打圈处的坐标位置,这些点同时具有七种以上的唯一性特征。通常手指上平均具有70个节点,所以这种方法会产生大约490个数据。这些数据,通常称为模板。通过计算机模糊比较的方法,把两个指纹的模板进行比较,计算出它们的相似程度,最终得到两个指纹的匹配结果,从而判断输入结果的正确与否。考虑到本方案软硬件太过复杂,而且成本也高,故不采用。方案二:矩阵键盘输入识别 由各按键组成的矩阵键盘每条行线和列线都对应一条I/O口线,键位设在行线和列线的交叉点,当一个键按下就会有某一条行线与某一条列线接触,只要确定接触的是哪两条线,即哪两个I/O口线,就可以确定哪一个键被触动。 行线设计成上拉口线,初始时被置高电位,列线悬空,初始置低。通过不断读行线口线,或者中断方式触发键位扫描。当发现有键按下,将列线逐一置低,其他列线置高,读行线口线。当某条列线置低时,某条行线也被拉低,则确定这两条线的交点处的按钮被按下。每个按键都可通过程序赋予功能,从而完成密码识别本方案简单易行,故采用。3. 主控部分选择方案一:采用数字电路控制用以74LS112双JK触发器构成的数字逻辑电路作为密码锁的核心控制,将密码保存在JK触发器中,与输入密码通过比较器比较,判断结果是否相符合。采用数字电路设计的方案好处就是设计简单,但控制的准确性和灵活性差,故不采用。 方案二:采用以单片机为核心的控制方案选用单片机作为系统的核心部件,实现控制与处理的功能。单片机具有资源丰富、速度快、编程容易等优点。利用单片机内部的随机存储器(RAM)和只读存储器(ROM)及其引脚资源,外接液晶显示(LCD),键盘输入等实现数据的处理传输和显示功能,基本上能实现设计指标。因此综合考虑,本系统采用方案二。二、 硬件电路1. 复位电路 单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作,例如复位后PC0000H,使单片机从第个单元取指令。无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位。在复位期间(即RST为高电平期间),P0口为高组态,P1P3口输出高电平;外部程序存储器读选通信号PSEN无效。地址锁存信号ALE也为高电平。根据实际情况选择如图2-1所示的复位电路。该电路在最简单的复位电路下增加了手动复位按键,在接通电源瞬间,电容C1上的电压很小,复位下拉电阻上的电压接近电源电压,即RST为高电平,在电容充电的过程中RST端电压逐渐下降,当RST端的电压小于某一数值后,CPU脱离复位状态,由于电容C1足够大,可以保证RST高电平有效时间大于24个振荡周期,CPU能够可靠复位。增加手动复位按键是为了避免死机时无法可靠复位。当复位按键按下后电容C1通过R5放电。当电容C1放电结束后,RST端的电位由R1与R2分压比决定。由于R116?报警程序修改程序YNNY开始返回图3-1主程序流程图2. 按键功能程序流程图如图3-2为按键功能流程图,在按键当中,有与输入、开锁、清除、设置、确认的程序相对应的按键,并按顺序与输入的数相比较,当输入正确时,进入密码程序,错误时进行清除,输入两次新密码正确时,可进行重新设置密码,最后确认程序。开开始始键值输入?键值开锁?键值清除?键值设置?键值确认?密码输入程序设置程序清除程序开锁程序确认程序YYYYYNNNN返回N开始返回图3-2按键功能程序流程图3. 密码设置程序流程图如图3-3为密码设置流程图,开始按下设置键,输入旧密码,如果错误累计六次,进行报警程序。如输入正确,可以修改密码,确认后再次输入新密码,如两次输入一样,则更改成功。如果两次输入的新密码不一样,则修改密码失败,重新返回设置新密码。输入旧密码N按下设置键开始开始所输入旧密码正确?输入次数加1报警程序N返返回回次数6?输新密码Y再次输新密码Y设设置置成功NY两次新密码输入相同?开始返回设置成功图3-3密码设置程序流程图4. 开锁程序流程图如图4-4为开锁流程图,开始时按开锁键,输入密码,如果输入正确,则开锁成功。如果输入错误累计达到六次,则执行报警程序。222初始化按开锁键输入密码按确认键所输入密码正确?Y开锁开锁开始输入次数加1次数6?报警程序返回返NYN开始开锁返回图4-4开锁程序流程图四、 系统仿真1. 电子密码锁系统主模块单片机电子密码锁系统主模块在软件中的图如图4-1所示:图4-1主模块2. 电子密码锁系统的键盘模块 电子密码锁系统的键盘模块在软件中的图如图4-2所示:图4-2键盘模块3. 电子密码锁系统的显示模块 电子密码锁系统的显示模块在软件中如图4-3所示:图4-3显示模块4. 电子密码锁系统的掉电存储模块 电子密码锁系统的掉电存储及报警电路在软件中的图如图4-4所示: 图4-4掉电存储模块5. 电子密码锁系统的开锁电路电子密码锁系统的开锁电路在软件中的图如图4-5所示:图4-5开锁电路6. 系统整体仿真图 图4-6系统仿真五、 程序代码C语言源程序/-/名称:用1602LCD与24C04设计的电子密码锁/-/说明:初始密码由24C04,BIN设定为123456。/ 当输入09中的数字是可以输入密码,不超过6位,当输入完成按下A/ 键开锁,密码正确时LED点亮,液晶屏显示开锁成功。/ 其他键功能是:B上锁 C 重新输入 D 保存新密码 E 清除/ 重设密码时要求先输入正确的密码成功开锁/-#include#include#define uchar unsigned char#define uint unsigned int/上次按键和当前按键序号,该矩阵列中序列范围为015,16表示无按键uchar Pre_KeyNo=16,KeyNo=16;uchar code Title_Text=Your Password.; /标题字符串uchar DSY_BUFFER16=; /显示缓冲uchar UserPassword16=; /用户输入的密码void LCD_Init(); /液晶初始化void Display_String(uchar *str,uchar LineNo); /在液晶指定行显示字符串void IIC_24C04_Init(); /IIC初始化void Beep(); /蜂鸣器uchar RecString(uchar Slave,uchar Subaddr,uchar *Buffer,uchar N); /从IIC读取数据uchar SendString(uchar Slave,uchar Subaddr,uchar *Buffer,uchar N); /向IIC写入数据uchar Keys_Scan(); /键盘扫描,返回键盘号015sbit LED_OPEN=P27;/开锁亮灯sbit BEEP=P37; /蜂鸣器/-/延时/-void DelayMS(uint x) uchar i;while(x-) for(i=0;i120;i+);/延时void delay(uchar t)uchar j,i;for(j=0;it;i+)for(j=0;j50;j+);/蜂鸣器子程序void Beep()uchar i;for(i=0;i100;i+) DelayMS(1);BEEP=BEEP;BEEP=0;/清除密码void Clear_Password() UserPassword0=0;DSY_BUFFER0=0;/LCD1602液晶显示程序#include #include sbit rs=P20;sbit rw=P21;sbit ep=P22;bit lcd_bz() bit result; rs = 0; rw = 1; ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); result = (bit)(P0 & 0x80); ep = 0; return result; void lcd_wcmd(uchar cmd) while(lcd_bz(); rs = 0; rw = 0; ep = 0; _nop_(); _nop_(); P0 = cmd; _nop_(); _nop_(); _nop_(); _nop_(); ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); ep= 0; void lcd_wdat(uchar dat) while(lcd_bz(); rs = 1; rw = 0; ep = 0; P0 = dat; _nop_(); _nop_(); _nop_(); _nop_(); ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); ep = 0; void lcd_init() lcd_wcmd(0x38); delay(1); lcd_wcmd(0x0c); delay(1); lcd_wcmd(0x06); delay(1); lcd_wcmd(0x01); delay(1); void Display_String(uchar *str,uchar LineNo) uchar i; lcd_wcmd(LineNo); for(i=0;i16;i+) lcd_wdat(stri); /主程序void main()uchar i=0;uchar IIC_Password=123456;uchar IS_Valid_User=0;P0=P1=P2=0xFF;TMOD=0x02; /T0设置为8位自动重装模式TH0=175;TL0=175;TR0=1;DelayMS(10); /启动T0LCD_Init();/初始化LCD/IIC_24C04_Init();/初始化24C04Display_String(Title_Text,0x80); /在第1行显示标题SendString(0xa0,0,IIC_Password,6);/24c04的内容以由初始化bin文件导入/24c04中预先写入的密码读入IIC-PasswordRecString(0xa0,0,IIC_Password,6);/IIC_Password6=0;while(1) P1=0xF0;if(P1!=0xF0) KeyNo=Keys_Scan();/扫描键盘获取键盘号KeyNoif(Pre_KeyNo!=KeyNo) if(i7) switch(KeyNo) case 0:case 1: case 2: case 3: case 4: case 5:case 6: case 7: case 8: case 9: if(i=0) Display_String( ,0xc0); UserPasswordi=KeyNo+0;UserPasswordi+1=0;DSY_BUFFERi=*;DSY_BUFFERi+1=0;Display_String(DSY_BUFFER,0xc0);i+;break;case 10: /按A键开锁 if(strcmp(UserPassword,IIC_Password)=0) LED_OPEN=0; Clear_Password(); Display_String(Unlock OK! ,0xc0); IS_Valid_User=1; else LED_OPEN=1; Clear_Password(); Display_String(ERROR! ,0xc0); IS_Valid_User=0; i=0; break;case 11: /按B键上锁 LED_OPEN=1; Clear_Password(); Display_String(Title_Text,0x80 ); Display_String( ,0xc0); i=0;IS_Valid_User=0;break;case 12: /按C键设置新密码 /如果合法用户则提示输入新密码 if(!IS_Valid_User) Display_String(NO rights! ,0xc0); else i=0; Display_String(New Password: ,0x80 ); Display_String( ,0xc0); break;case 13: /按D键保存新密码 if(!IS_Valid_User) Display_String(NO rights! ,0xc0); else SendString(0xa0,0,UserPassword,6); /重新输入密码 RecString(0xa0,0,IIC_Password,6); IIC_Password6=0; i=0; Display_String(Title_Text,0x00 ); Display_String(Password Saved! ,0xc0); break;case 14:/按E键消除所有输入 i=0; Clear_Password(); Display_String( ,0xc0); Beep(); Pre_KeyNo=KeyNo;DelayMS(100);/24c04 IIC读/写程序/#include#include#define uchar unsigned char#define uint unsigned int#define Delay4us(); _nop_();_nop_();_nop_();_nop_();sbit SCL=P32;/串行时钟sbit SDA=P33;/串行数据/起始位/void Start() SDA=1;SCL=1;Delay4us();SDA=0;Delay4us();SCL=0;/ 停止位/void Stop() SDA=0;SCL=1;Delay4us();SDA=1;Delay4us();SCL=0;/ IIC总线初始化/void IIC_24C04_Init() SCL=0;Stop(); / 发送应答信号/void ACK() SDA=0;SCL=1;Delay4us();SCL=0;SDA=1;/ 发送非应答信号/void NO_ACK() SDA=1;SCL=1;Delay4us();SCL=0;SDA=0;/ 从芯片读取一字节/uchar RecByte() uchar i,rd; rd=0x00; SDA=1;/置数据线为主输入方式 for(i=0;i8;i+) SCL=1;rd|=SDA;rd=1;Delay4us();SCL=0;Delay4us();SCL=0;Delay4us();return rd;/ 向芯片发送1字节/ uchar SendByte(uchar wd) uchar i; bit ack0; for(i=0;i8;i+) /循环移入8位 SDA=(bit)(wd&0x80); _nop_();_nop_();SCL=1;Delay4us();SCL=0;wd=1; Delay4us();SDA=1;/释放总线并准备读取数据SCL=1;Delay4us();ack0=!SDA;/0表示无应答SCL=0;Delay4us();return ack0; /返回应答 / 发送多字节数据函数/uchar SendString(uchar Slave,uchar Subaddr,uchar *Buffer,uchar N) uchar i; Start(); if( !SendByte(Slave) return 0;/发送器件地址 if( !SendByte(Subaddr) return 0;/发送器件子地址for(i=0;iN;i+) if( !SendByte(Bufferi) return 0;/发送数据Stop();return 1;/ 接收多字节数据函数/uchar RecString(uchar Slave,uchar Subaddr,uchar *Buffer,uchar N) uchar i; Start(); if( !SendByte(Slave) return 0;/器件地址 if( !SendByte(Subaddr) return 0;/器件子地址 Start(); if( !S
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年康复辅助技术咨询师康复设备选购模拟卷及答案
- 广东省深圳市平湖中学2026届化学高一上期中教学质量检测模拟试题含解析
- 法学类银行面试题及答案
- 消防岗位的面试题及答案
- 栖霞康复面试题及答案
- 上海市卢湾高中2026届化学高三上期中监测试题含解析
- 南航物流面试题及答案
- 2026届山西省化学高一上期中达标检测模拟试题含解析
- 面试题及答案解答题
- 2025化工产品短途运输合同
- 2025年船舶租赁合同协议书模板
- 2025年注册兽医《兽医临床诊疗学》备考题库及答案解析
- 2025年小学五年级数学上学期单元测试专项训练(含答案)
- 2025宁夏交通建设投资集团有限公司校园招聘和社会招聘230人(1号)考试笔试备考试题及答案解析
- 2025汉中市级机关遴选公务员及选聘事业单位人员(54人)笔试考试备考试题及答案解析
- 2025广东广州市海珠区教育系统高校“优才计划”招聘68人笔试考试参考试题及答案解析
- 甘肃省陇南市西和县2025-2026学年八年级上学期周期学业能力评鉴数学试卷(含解析)
- 2025年中小学课外读物进校园落实情况自查报告
- 防爆弹课件教学课件
- 2025年护理专业单招试题及答案
- 电梯基础知识培训教程课件
评论
0/150
提交评论