嵌入式课程设计报告-电子密码锁xWord格式.docx
- 文档编号:13072830
- 上传时间:2022-10-04
- 格式:DOCX
- 页数:28
- 大小:504.45KB
嵌入式课程设计报告-电子密码锁xWord格式.docx
《嵌入式课程设计报告-电子密码锁xWord格式.docx》由会员分享,可在线阅读,更多相关《嵌入式课程设计报告-电子密码锁xWord格式.docx(28页珍藏版)》请在冰豆网上搜索。
1、选题意义及功能描述
1、选题意义
电子密码锁是通过密码输入来控制电路或是芯片工作,从而控制机械的开关闭合、开锁的电子产品。
随着科技提高和人们生活水平的提高,对电子密码锁的需求增加。
电子密码做较传统的机械锁安全性能更高。
特点如下:
(1)保密性好,编程量大,随机开锁的成功率几乎为零。
(2)密码可变,用户可以随时改变密码,防止密码被盗,同时也可以避免人员的更替而使锁的密级下降。
(3)误码输入保护,输入密码多次错误是,系统进行自锁。
(4)无活动零件,不会磨损,寿命长。
(5)使用灵活性好,无需佩戴钥匙,操作简单。
2、功能描述基本功能:
(1)从键盘输入任意6位数字作为密码,将这六位数字经过USI总线存储到
Flash芯片中,设置密码完成。
(2)从键盘输入密码,比较键盘输入的密码与Flash中存储的密码是否相同。
(3)如果密码正确,则LED灯点亮;
如果密码不正确,则LED灯闪烁,而且如果连续三次输入密码错误则系统锁定,不允许再次输入密码。
扩展功能:
(1)首先显示“请输入密码:
”,显示密码锁背景图片1。
(2)如果密码正确则显示“密码正确”,显示成功进入系统的背景图片2。
(3)如果密码不正确则显示“密码不正确,请重新输入:
”
(4)如果连续三次输入密码错误则显示“对不起,您已经连续三次输入密码错误,系统锁定”,显示图片1。
3、个人开发流程
(1)了解开发板的硬件结构编写适应其硬件结构的程序。
(2)掌握并编写LCD显示文本和图片程序。
(3)通过EBI对外部LED灯进行控制。
(4)键盘键值读取,及密码锁密码比对,密码锁状态转换的程序编写。
2、硬件设计及描述
1、LED灯模块
CPU的数据总线低8位连接到锁存器74HC273的信号输入端,CPU外部总线接口(EBI)的nECS0片选信号连接到锁存器的锁存控制信号,当CPU 访问
BANK0的任一地址空间是,数据总线的低八位的数据被锁存输出,作为控制8个LED等的发光状态的控制信号,当写入0xff是,8个LED灯都灭,写0x00,8个LED灯都亮。
硬件连接图如下。
2、KPI工作模块
行列式键盘以矩阵形式排列,每个键有一常开触点,其两端分别于输出扫描线和输入状态线相连,键盘中有无键按下,是由列线扫描输出、读入行线状态来判断。
每个键都有一个键值和键号,通常将行、列按二进制顺序组合成酱汁,经过查表获得键号。
硬件连接图如下
3、LCD工作模块
该模块由40个引脚与外界电路相连,由于本身没有寄存器,需要W90P710提供的LCD控制寄存器来控制选择对应的液晶类型及显示形式,FIFO的使用,颜色的显示模式和时序的设置,并通过配置相应的寄存器就可实现。
4、软件设计及描述
1、KPI模块设计
实验中的GPIO为键盘模式,使用的是GPIO_CFG2,查找相应的寄存器进行
设置,打开键盘中断,设定中断触发方式和优先级,扫描功能打开,时间约为
100ms。
2、LCD显示模块
初始化呢控制寄存器,设定lcd控制器和中断服务程序,并写到AIC中断向量表中。
关闭FIFO1和FIFO0,关闭绿的控制器,重置控制器,再讲显示的数据发送到缓存区中,根据时序的配置,从缓冲区中将数据读入液晶。
3、整体模块设计及程序流程图
在主程序中进行按键初始化,在中断程序中实现,按键值的读取和存储,通过设定状态标志位,数组。
对存储的密码和输入的密码进行比较,判断对错从而改变状态标志位,在中短结束,回到主程序后通过识别状态标志位,显示相应的图形和文字。
5、程序代码(主要程序,函数部分见附录)
1、main.c#include<
stdio.h>
#include"
710defs.h"
/*头文件声明*/#include"
HB_it.h"
main.h"
#include"
lcd_pattern.h"
externU8a[6];
externintp;
externU32KeyValue;
intmain(void)
{
U32FLL;
intcnt,i;
U8wchar[]="
设置密码"
;
U8wchar1[]="
请输密码"
U8wchar2[]="
密码正确"
U8wchar3[]="
密码错误"
U8wchar4[]="
对不起,您已经连续三次输入密码错误,系统锁定"
LCD_IMAGE_TLCD_Size;
/*声明结构体,结构体的具体定义在头文LCD_LOCATION_TLCD_Location;
件中*/
LCDShowParameterLSP;
LCD_Size.width=480;
/*定义lcd的显示的长宽像素值*/LCD_Size.height=240;
LCD_Location.StartX=0;
/*设定显示的起始坐标*/LCD_Location.StartY=0;
LCD_Location.EndX=960;
LCD_Location.EndY=240;
便显示*/
LCDInit();
/*初始化*/
LCDShow(LCD_Size,LCD_Location);
LCDFIFOBufferSet(BlackBoard);
/*将要显示的图片存入缓存中,以LCDDisplayOn();
/*显示图片*/
KPIInit();
/*按键初始化*/
printf("
Pleasepresskeys.\n"
);
/*并通过串口输出此时的键值*/USIInit();
//读器件ID /*初始化flash芯片*/
读器件ID:
"
USIRead_ID();
//擦除扇区0
写使能:
\n"
USIWriteEnable();
while(USICheckBusy());
USISectorErease(0x0);
EBILedInit(0x0);
LSP.StartX=8;
LSP.StartY=7;
LSP.LibPlace=0x400000;
LSP.Color=0x07ff;
LSP.LetterChar=wchar1;
LSP.LCDBuffer=BlackBoard;
LCDOutputShow(LSP,4);
EBILedSet(0x00);
while
(1)
if(p==6)
LCDInit();
LCDFIFOBufferSet(BlackBoard);
LCDDisplayOn();
LSP.StartX=8;
LSP.LetterChar=wchar1;
/*正确密码*/LSP.LCDBuffer=BlackBoard;
Delay(10000000);
}
if(p==1)
{LCDInit();
LSP.StartX=5;
LSP.StartY=5;
LSP.LetterChar=wchar2;
LCDOutputShow(LSP,22);
if(p==2)
{LCDInit();
LSP.LetterChar=wchar3;
/*密码错误*/LSP.LCDBuffer=BlackBoard;
if(p==3)
LSP.LetterChar=wchar4;
/*请输密码*/LSP.LCDBuffer=BlackBoard;
return0;
2、中断服务程序
voidKPI_Handler(void)
// U32KeyValue,tmp;
intcnt,sum=0;
//intshuru;
//inti;
tmp=REG_KPISTATUS;
//取按键值
tmp&
=0x0000000f;
//因为硬件连接关系,需要对按键进行处理if((tmp>
0x7)&
&
(tmp<
0xC))
KeyValue=tmp-4;
elseif((tmp>
0x3)&
0x8))
KeyValue=tmp+4;
else
KeyValue=tmp;
KPIinterrupts.%x\n"
KeyValue);
if(c<
6)
{a[c]=KeyValue;
} /*将设置的密码放在数组中*/elseif(c==6)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 课程设计 报告 电子 密码锁