接口技术课程设计报告
- 格式:doc
- 大小:514.50 KB
- 文档页数:35
接口技术课程设计报告
学号:
接口技术课程设计报告 题 目:基于单片机的电子密码锁设计
学院(系): 机械与电子工程学院 专业年级: 电信082 学生姓名: 指导教师: 完成日期: 2011年7月7日 成 绩: 目 录 一、设计目的与要求 ................................................................. 0 二、硬件电路设计 ................................................................... 0 2.1 键盘电路设计 ............................................... 0 2.2 LED显示电路 ................................................ 1 2.3 开锁电路 ....................................................... 1 2.4 晶振电路与复位电路 ................................... 2 2.5 24C02缓存器电路 ........................................ 2 2.6 报警电路 ....................................................... 3
三、软件流程及程序设计 ............................................................ 3 3.1 软件设计思路 ............................................... 3 3.2软件流程 ........................................................ 3 3.3主程序............................................................ 4 3.4 各子程序 ....................................................... 7 1.键盘扫描子程序 ........................................ 7 2. LED显示子程序 ..................................... 8 3.晶振与报警电路子程序 ............................ 9 4.定时器0初始化程序 .............................. 10 5.定时器中断子程序 .................................. 10 6.AT24c02缓存器 ....................................... 11
四、系统调试及仿真 ............................................................... 13 五、总结 ........................................................................... 16 附 录 ............................................................................. 16 源程序清单 ......................................................... 16 仿真图................................................................. 30 0 一、设计目的与要求 1、采用二个按键实现密码的输入功能,密码长度为6位。 2、当密码输入正确之后,锁就打开,如果输入的三次的密码不正确,就锁定按键3秒钟,同时发现报警声,3种后,才打开按键锁定功能。
3、开锁信号可用发光二极管指示。 二、硬件电路设计 2.1 键盘电路设计 使用矩阵键盘,所以本设计就采用行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O线的数目,在按键比较多的时候,通常采用这样方法。其原理如图2.1
图2.1 键盘电路 每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有N×M个按键的键盘。 按键功能见表2.1 按 键 键 名 功 能 说 明
1-9键 数 字 键 输 入 密 码 确 定 键 比 较 密 码 返 回 键 退 出 开 锁 重 置 键 密 码 重 置 存 储 键 保 存 密 码 1
表2.1 按键功能 2.2 LED显示电路 系统的显示采用串行显示的方式,只使用单片机的一个串行口,利用两个74HC573(U1、U2)分别驱动数码管发光显示数码和控制位选信号,就可以完成单片机的显示功能,显示电路的电路原理图如图2.2所示。 AT89C51的P0.0—P0.7分别接两个74HC573的D0—D7口,P2.0接U1的LE口,P2.1U2的LE口。U1的Q0—Q7接LED的七段显示,U2的Q0—Q5接LED的位显示。通过软件实现数字和位控制。 原理如图2.2
图2.2 LED显示电路 2.3 开锁电路 基于节省材料的原则,暂时用发光二极管代替电磁锁,绿色发光管亮,表示开锁;红色发光管亮,表示没有开锁。蓝色发光管亮,表示开始密码重置功能。黄色发光管亮,表示密码重置成功。电路图如3.3所示。 2
图2.3 开锁电路 2.4 晶振电路与复位电路
图2.4 晶振电路 2.5 24C02缓存器电路
图2.5 复位电路 3
2.6 报警电路
图2.6 报警电路 三、软件流程及程序设计 3.1 软件设计思路 电子密码锁工作的主要过程是LED数码管提示开始输入密码,通过键盘输入密码,同时LED显示密码输入情况,按下确认键后判断密码的正确性,作出开锁或报警处理。当输入密码连续输入错误3次时,系统报警。 密码的设定,在此程序中密码是固定40H—45H 中,假设预设的密码为"123456"共6位密码。 由于采用两个按键来完成密码的输入,那么其中一个按键为功能键,另一个按键为数字键。在输入过程中,首先输入密码的长度,接着根据密码的长度输入密码的位数,直到所有长度的密码都已经输入完毕;或者输入确认功能键之后,才能完成密码的输入过程。进入密码的判断比较处理状态并给出相应的处理过程。 3.2软件流程 开始 ↓ 系统初始化 ↓ 得到键按值keyval ↓ 与存储器中密码对比 ↓ 错误3次 密码正确显示0,绿灯亮,如果错误红灯亮→ 报警 ↓ 正确 ↓ 4
可以重置密码,蓝灯亮 ↓ 保存密码,黄灯亮,返回,重新登录 3.3主程序 void main() { uchar i,keyval,k,times=0; bit Flag=1,RUN=1,flag1=1,flag2=1; //标志位参数 LED_YELLOW=0;//黄灯 LED_BLUE=0; SystemInit(); for(k=0;k<6;k++) WriteSet(k,password[k]); //在24c08的地址2中写入数据sec k=0; while(RUN) { SDA = 1; // SDA=1,SCL=1,使主从设备处于空闲状态 SCL = 1; keyval=keyscan();//扫描键盘
if(keyval==CANCEL) //取消键功能区,返回初始状态 { k=0; for(i=0;i<6;i++) DisTemp[i]=0x7f; //初始化显示全8 flag1=1; //改密码按键标志位 flag2=1; times=0; }
if(keyval==OK) //确认键按键功能区 {
5
Flag=1;//先把比较标志位 置1 for(i=0;i<6;i++)//把存储器中密码取出来,循环比较6个数值,如果有一个不等 则最终Flag值为0 { mima[i]=ReadSet(i); //在24c08的地址0-5中取出初始密码 Flag=Flag&&(keypassword[i]==mima[i]); //比较密码是否相等 } if(Flag==0) //密码错误 { LED_RED=1; times++; //错误次数 for(i=0;i<10;i++) DelayMs(50);//大致一秒 LED_RED=0; for(i=0;i<6;i++) //密码错误延时1秒,继续显示6个8 DisTemp[i]=0x7f; k=0; } if(Flag==1)//密码正确 { LED_GREEN=1; //绿灯亮1秒 for(i=0;i<10;i++) DelayMs(50);//大致一秒 LED_GREEN=0; for(i=0;i<6;i++) DisTemp[i]=0x3f; //密码正确显示000000 flag1=1; while(flag1) //密码正确 可以进行更改密码 { keyval=keyscan();//扫描键盘 if(keyval==GAIMI) { LED_BLUE=1; for(i=0;i<10;i++) DelayMs(50);//大致一秒