基于单片机控制电子密码锁报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机原理与应用技术
课程设计报告(论文)
基于单片机控制的电子密码锁
专业班级:应用电子技术教育151班
(1)状态显示功能:
锁定状态时系统用3位数码管显示OFF,用3位数码管显示成功开锁次数;
成功开锁时用3位数码管显示888,用3位数码管显示成功开锁次数。
(2)密码设定功能:
通过一个4×4的矩阵式键盘可以任意设置用户密码(1-16位长度),同时系统掉电后能自动记忆和存储密码在系统中。
(3)报警和加锁功能:
密码的输入时间超过12秒或者连续3次输入失败,声音报警同时锁定系
(5)硬件及程序综合调试;
3.编写设计报告
写出设计的全过程,附上有关资料和图纸,有心得体会
4.答辩
在规定时间内,完成叙述并回答问题。
目录
3.2 显示电路的设计
3.3 矩阵按键的设计......................................................
3.3.1矩阵按键电路图.....................................................
3.3.2矩阵按键说明.......................................................
3.3.3矩阵按键原理.......................................................
3.4 I2C电路的设计.......................................................
4 结束语................................................................ 参考文献................................................................
基于单片机控制的电子密码锁
应教151班黄永进
摘要:设计是采用STC89C52芯片控制一个三位一体的数码管,通过4x4矩阵按键来控制密码输入以及不同的系统指令来完成密码锁的密码输入和修改等,同时使用
C语
该
2.1.1 方案确立
(1)方案内容
该设计方案采用STC89C52芯片作为核心,配合数码管、矩阵按键、蜂鸣器等外围电路进行组合,组成电子密码锁系统。其中矩阵按键用来设置系统的密码和输入密
码,数码管用于显示开锁状态和成功开锁的次数,最后用C语言程序控制其逻辑功能。
2.2 设计方框图
(1)设计框图如图1.1
时间由电路的RC值来决定。典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以适当组合RC的取值就可以保证可靠的复位。
3.1.2 晶振电路
每个单片机系统里都有晶振(如图1.2中器件Y1),全称是叫晶体震荡器,在单
片机系统里晶振的作用非常大,他结合单片机内部的电路,产生单片机所必须的时钟频率,单片机的一切指令的执行都是建立在这个基础上的,晶振的提供的时钟频率越高,那单片机的运行速度也就越快。本设计中晶振取12MHz,因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合,12MHz产生精确的uS级时歇,方便定时操作。
DG1、
数据。
图6 I2C电路图3.5 报警电路的设计
图7 报警电路
设计中报警电路如图1.7所示,蜂鸣器使用三极管驱动,通过一个限流电阻之后与单片机P3.0连接。因此,我们可以通过程序控制P3.0脚的电平来使蜂鸣器发出声音和关闭,从而实现系统报警。
4 结束语
在这次实习的过程中,从选题到定稿,从理论到实践,可以说得是苦多于甜,但附录4程序代码
#include
#define uint unsigned int #define uchar unsigned char #define KeyPort P1
uchar DD_F=0,DM_F=0;
uchar R[16]; //用户密码
uchar M[16]; //芯片密码
uchar G[6]={6,6,6,6,6,6};
uchar code
DIS_SEG7[]={0xc0,0xf9,0xa4,0xb0,0x 99,0x92,0x82,0xf8,0x80,0x90,0x88,0
sbit LED=P3^7;
char dis[3]={0};
unsigned char num=1,num1=0,num2=0;char Time_temp=0; char DIG_C1=0;
char DIG_C2=0;
char DIG_C3=0;
{
unsigned char a, b; for (;c>0;c--)
{
for (b=15;b>0;b--)
{
for (a=130;a>0;a--);
unsigned char KeyScan(void) {
unsigned char cord_h,cord_l; KeyPort=0x0f;cord_h=KeyPort&0x0f;
if(cord_h!=0x0f)
{
Delay10ms(1);
}
unsigned char KeyPro(void) {
switch(KeyScan())