密码锁课程设计.docx

上传人:b****5 文档编号:5234174 上传时间:2022-12-14 格式:DOCX 页数:14 大小:179.55KB
下载 相关 举报
密码锁课程设计.docx_第1页
第1页 / 共14页
密码锁课程设计.docx_第2页
第2页 / 共14页
密码锁课程设计.docx_第3页
第3页 / 共14页
密码锁课程设计.docx_第4页
第4页 / 共14页
密码锁课程设计.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

密码锁课程设计.docx

《密码锁课程设计.docx》由会员分享,可在线阅读,更多相关《密码锁课程设计.docx(14页珍藏版)》请在冰豆网上搜索。

密码锁课程设计.docx

密码锁课程设计

 

单片机技术课程设计说明书

密码锁

系、部:

电气与信息工程

学生姓名:

彭锟

指导教师:

王韧职称副教授

专业:

自动化

班级:

自本0801

完成时刻:

2020-12-27

 

摘要

 

随着科技的日趋进展,电子密码操纵系统已愈来愈符合人们的要求。

本文介绍了基于单片机和串行EEPROM的智能密码操纵系统,对系统硬件设计和软件实现进行了详细的描述。

该系统采纳AT89S52单片机和AT24C02串行EEPROM,通过AT89S52模拟I2C总线和AT24C02通信,实现密码操纵的功能。

本文从经济有效的角度动身,采纳美国Atmel公司的单片机AT89S52作为主控芯片与数据存储器单元,结合外围的矩阵键盘输入、LCD液晶显示、开锁等,用C语言编写主控芯片的操纵程序与EEPROM读写程序相结合,设计了一款能够多次更改密码功能的电子密码操纵系统。

这种电路设计具有防试探按键输入、开锁、修改密码等多种功能。

密码长度可变、保密性强、灵活性高。

经实验证明,该密码操纵系统具有设计方式合理,简单易行,本钱低,平安利用等特点,符合车辆、办公室用锁要求,具有推行价值。

关键词密码操纵;单片机;24C02

 

 

ABSTRACT

Asthedevelopmentofscienceandtechnologydaybyday,thekeycontrolsystemismoreinlinewiththerequirementsofpeople.ThepaperpresentsacryptographicsmartpasswordcontrolbasedonMCUandserialEEPROM,describeshardwarestructureandsoftwaredesignofthesystem.ItadoptsAT89S52andAT24C02,realizesthefunctionofcryptographicsmartpasswordcontrol.AT89S52communicateswithAT24C02byI2Cbustoachievethepasswordcontrolfunction.

Thisarticlefromtheeconomicalandpracticalpointofview,theuseoftheUnitedStatesAtmelCorporationAT89S52microcontrollerasamasterchipandthedatamemoryunit,combinedwiththeexternalmatrixkeyboardinput,LEDdigitaldisplay,unlockandsoon,dominatedbytheCprogramminglanguagechipEEPROMofthecontrolproceduresandthecombinationofreadingandwritingprogramdesignedtochangeapasswordmanytimes,thepolicefunctionwiththeelectronicthepasswordcontrol.Thiscircuitdesignwithanti-testbuttoninput,intelligentcontrollock,unlock,alarm,multiplefunctions,suchasChangePassword.Passwordlengthcanbechanged,evenmoresecretandflexiblethanothers.

Experimentsshowthatthepasswordcontrolsystemischaracterizedbyitsreasonabledesigningmethods,simpleoperation,lowcostandpropertyofsafetyandpracticality.Besides,thepasswordcontrolcanbeusedintheofficeandhasgreatpotentialforcommercialdevelopment.

KeyWordsPasswordcontrol;Single-chip;24C02

 

1设计课题任务、功能要求说明及整体方案介绍……………………………………4

设计课题任务………………………………………………………………4

功能要求说明………………………………………………………………4

整体方案介绍………………………………………………………………4

2设计课题硬件系统的设计…………………………………………………………5

设计课题硬件系统各模块功能简要介绍……………………………………5

设计课题电路原理图、PCB图、元器件布局图各1份……………………6

设计课题元器件清单…………………………………………………………6

3设计课题软件系统的设计…………………………………………………………7

设计课题利用单片机资源的情形……………………………………………7

设计课题软件系统各模块功能简要介绍……………………………………7

设计课题软件系统程序流程框图……………………………………………8

设计课题软件系统程序清单…………………………………………………11

4设计结论、仿真结果、误差分析、教学建议……………………………………34

设计课题的设计结论及利用说明……………………………………………34

设计课题的仿真结果…………………………………………………………34

设计课题的误差分析…………………………………………………………34

设计体会………………………………………………………………………35

教学建议………………………………………………………………………36

参考文献………………………………………………………………………………37

致谢………………………………………………………………………………………38

附录………………………………………………………………………………………39

 

1设计课题任务、功能要求说明及整体方案介绍

 

设计课题任务

设计一个具有特定功能的密码锁。

该密码锁上电或按键复位后能自动显示菜单系统界面,依照菜单界面的数字进入对应的进入工作状态。

该密码锁具有系统原始密码,用户能够设定并存储用户密码,密码输入时应处于保密显示状态,密码输入正确时应显示密码输入正确提示信息,不然,显示密码输入错误提示信息。

功能要求说明

设计一个利用AT89S52单片机操纵的电子密码锁,该电子密码功能包括10个密码输入,密码输入进程中有清除输入,密码正确和错误等提示,还有密码修改,12864LCD显示菜单实现多功能等等。

方案介绍

电子密码锁系统核心用AT89S52单片机操纵,密码输入按键为4*4矩阵键盘16个按键实现密码输入,有0—9能够做为密码输入,E、F别离是退出和确信键,D键是清除输入时输错时的密码,设计比较人性化。

密码存储电路利用AT24C02芯片,该芯片能够实现掉电存储,而且数据可保留时刻长,与单片机连接简单,当断电时能够将用户修改的密码保留到24C02实现断电了密码仍是正确的,LCD用12864字符型液晶显示,能有更好的视觉成效,也能更好的明白你输的密码是正确仍是错误。

电子密码锁系统如下图:

 

AT89s52

键盘输入

复位电路

晶振电路

电源输入

显示电路

24c02电路

图电子密码锁系统方框图

2设计课题硬件系统的设计

 

设计课题硬件系统各模块功能简要介绍

2单片机最小系统

单片机采纳AT89S52单片机,AT89S52是一种低功耗、高性能CMOS8位微操纵器,具有8K在系统可编程Flash存储器,与工业80C51产品指令各引脚完全兼容。

单片机最小系统要紧有两块组成,其一为晶振起振电路,其二为复位电路。

在此,咱们采纳按键手动复位,相对来讲,这种复位方式加倍方便人性化,没必要要切断电源即可对系统进行复位。

按键密码输入电路设计

由于本设计中要求利用0-910个密码数值按键输入,数量较多,故利用矩阵键盘,因此本设计就采纳行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O线的数量,在按键比较多的时候,通常采纳如此方式。

本设计中采纳矩阵键盘行线和单片机~相连,列线与单片机~相连。

键盘扫描采纳行扫描法,即依次置行线中的每一行为低电平,其余均为高电平,扫描列线电平状态,为低电平即表示该键按下。

键盘消抖采纳软件延时消抖,能够减小硬件电路复杂程度,操纵简单。

密码存储电路设计

密码存储采纳24C02存储,它能都掉电存储数据。

掉电存储单元的作用是在系统电源断开的时候,存储当前设定的密码数据。

24C02是ATMEL公司的2KB字节的电可擦除\是模拟的IIC总线式EEPROM,采纳两线串行的总线和单片机通信,电压最低能够到,额定电流为1mA,静态电流10Ua,芯片内的资料能够在断电的情形下保留40年以上,而且采纳8脚的DIP封装,利用方便。

本实验中,AT24C02的SCLK和SDA引脚(SDA为数据线,SCLK为时钟信号线)接上拉电阻后与单片机的和脚相连。

显示模块设计

显示电路采纳12864字符型LCD显示。

中文字符型12864中文液晶显示模块能够显示字母、数字符号、中文字型及图形,具有画图及文书画面混合显示功能。

提供三种操纵接口,别离是8位微处置器接口,4位微处置器接口及串行接口。

所有的功能,包括显示RAM,字型产生器,都包括在一个芯片里面,只要一个最小的微处置系统,就能够够方便操作模块。

内置2M-位中文字型ROM(CGROM)总共提供8192个中文字型(16x16点阵),16K-位半宽字型ROM(HCGROM)总共提供126个符号字型(16x8点阵),64x16-位字型产生RAM(CGRAM),另外画图显示画面提供一个64x256点的画图区域(GDRAM),能够和文书画面混和显示,使显示功能加倍壮大。

本设计中咱们采纳的字符型12864LCD,自带中文字库,使咱们的程序操纵显示加倍简单,设计的时候能够灵活依照咱们的要求显示汉字,简单明了,而且利用该LCD如单片机操纵器的串行接口模式,LCD显示模块与单片机的连接仅仅只需要5根线,比图像型LCD显示模块要少了7根线,大大节约了单片机的I/O口!

另外该类液晶还支持反白显示,如此咱们能够利用该功能将显示做成单行反白式菜单,能够让液晶现实更多的内容使设计加倍切近人们的生活利用习惯,使设计加倍人性化!

在设计中,咱们将密码修改,做成二级菜单项选择项,通过按键操作,功能更壮大,操作简单方便明了。

另外依照功能扩展需要,咱们乃至能够添加多级菜单,是电子密码锁功能加倍壮大!

本设计中液晶串口一共用到5根线与单片机相连其中RS引脚,R/W引脚,PSB引脚,EN引脚,RESET引脚别离对应与单片机的,,,,相连接。

设计课题电路原理图、PCB图、元器件布局图

设计课题电路原理图附录一

设计电路的PCB图附录二

设计电路的元器件布局图附录三

设计课程元器件清单(附录四)

3设计课题软件系统的设计

 

设计课题利用单片机资源的情形

单片机的P0口是显示器LCD12864的传送口D0-D7,P1口是矩阵键盘的接口,接的是LCD的RS引脚,接的是LCD的RW引脚,接的是LCD的PSB引脚,接的是24C02的SCL引脚,接的是24C02的SDA,接的是LCD的E信号引脚,接的是74LS373的LE引脚,接的是RST引脚。

3.2设计课题软件系统各模块功能简要介绍

单片机最小系统

这部份软件主若是对其他各部份的工作做预备,包括对LCD的初始化、清屏。

和对24C02的初始化,键扫(等待键按下从而进入对应的功能)等。

功能按键输入处置

这部份程序设计主若是对键盘输入的键值做出处置,让单片机和LCD显示器能识别按下的键和进入到相应的功能的界面中。

3.2.3密码存储程序设计

这部份程序会把密码送到24C02里,即便在单片机供电不正常了,当再次来电了还能正常利用。

这就保证了密码的利历时刻。

这部份包括把密码写到24C02,和从24C02中读数到单片机,让修改的密码在断电时也能报密码保留起来。

显示模块

LCD12864能显示8912个汉字和128个字符。

只需在LCD不忙的时候就能够够对LCD12864写指令或数据。

题软件系统程序流程框图

电子密码锁主程序流程图如图

.2键功能程序流程图如图

密码设置流程图如图

开锁程序流程图如图

电子密码锁主程序流程图

 

开始

初始化24c02

LCD初始化

开机界面显示

菜单界面

按键处理

结束

键功能程序

确认按下

Y

N

图主程序流程图

.2键功能程序流程图

 

键功能程序

键值=‘输入’?

键值=‘确认’?

键值=‘清除’?

键值=‘修改’

键值=‘确认’?

密码输入程序

修改程序

清除程序

开锁程序

确认程序

Y

Y

Y

Y

Y

N

N

N

N

返回

N

图按键功能程序流程图

密码设置流程图

 

按下修改键

输密码

所输入密码正确?

输新密码

修改成功

Y

确认程序

修改程序

N

图密码修改程序流程图

开锁程序流程图

 

初始化

输入密码

确认程序

所输入密码正确?

Y

开锁成功

开锁程序

N

图开锁程序流程图

系统程序清单

#include<>

#include<>

#defineucharunsignedchar

#defineuintunsignedint

#defineOP_READ0xa1/*对24C02进行器件地址和读取操作的函数*/

#defineOP_WRITE0xa0/*对24C02进行器件地址和写入操作的函数*/

#defineMAX_ADDR0xff/*需要用到的24C02最大地址*/

#defineLCD_dataP0/*数据口*/

sbitLCD_RS=P3^0;/*寄放器选择输入*/

sbitLCD_RW=P3^1;/*液晶读/写操纵*/

sbitLCD_EN=P3^5;/*液晶使能操纵*/

sbitLCD_PSB=P3^2;/*串/并方式操纵*/

sbitLCD_RST=P3^7;/*液晶复位引脚*/

sbitLE=P3^6;/*373引脚*/

sbitSDA=P3^4;/*24C02引脚*/

sbitSCL=P3^3;/*24C02引脚*/

ucharkey,key,i;

ucharkeyx=0,q=0;

ucharj,cc;

uchardd,run;

ucharat,att;

ucharv,f_50ms,f_x=0;

uchartmp,tmp2,p;

ucharar;

uinte;

bitReadRTC_Flag;

bittimer;

/*********************************************************/

#definedelayNOP();{_nop_();_nop_();_nop_();_nop_();};

/**********开机界面显示字符***********/

ucharcodeDIS1[]={"☆★湖南工学院☆★"};

ucharcodeDIS2[]={"★☆★☆★☆★☆"};

ucharcodeDIS3[]={"QQ号码:

7"};

ucharcodeDIS4[]={"TEL:

"};

/**************菜单显示字符**************/

ucharcodeDIS5[]={"1.万年历2.点阵屏"};

ucharcodeDIS6[]={"3.频率计4.密码锁"};

ucharcodeDIS7[]={"5.信号源6.电压表"};

ucharcodeDIS8[]={"7.温度计8.计算器"};

/**********密码锁显示字符*************/

ucharcodeDIS24[]={"退出确信"};

ucharcodeDIS411[]=("请输入密码或超级");

ucharcodeDIS412[]=("密码:

");

ucharcodeDIS413[]=("*");

ucharcodeDIS414[]=("");

ucharcodeDIS421[]=("1.修改密码");

ucharcodeDIS422[]=("密码错误");

ucharcodeDIS423[]={"退出"};

ucharcodeDIS424[]=("密码正确");

ucharcodeDIS431[]=("请输入新密码:

");

ucharcodeDIS432[]=("09");

ucharcodeDIS433[]=("密码修改成功");

ucharmimatable[8];

ucharcodechaoji[8]={8,8,8,8,8,8,8,8};

ucharATtable[8];

ucharATTtable[8];

/******************************************************************/

ucharcodeTable_OF_Digits[]=

{/*--文字:

0--*/

/*--宋体9;此字体下对应的点阵为:

宽x高=6x12--*/

/*--宽度不是8的倍数,现调整为:

宽度x高度=8x12--*/

0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00,

/*--文字:

1--*/

0x00,0x00,0x20,0x60,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x00,

/*--文字:

2--*/

0x00,0x00,0x70,0x88,0x88,0x10,0x20,0x40,0x80,0xF8,0x00,0x00,

/*--文字:

3--*/

0x00,0x00,0x70,0x88,0x08,0x30,0x08,0x08,0x88,0x70,0x00,0x00,

/*--文字:

4--*/

0x00,0x00,0x10,0x30,0x50,0x50,0x90,0x78,0x10,0x18,0x00,0x00,

/*--文字:

5--*/

0x00,0x00,0xF8,0x80,0x80,0xF0,0x08,0x08,0x88,0x70,0x00,0x00,

/*--文字:

6--*/

0x00,0x00,0x70,0x90,0x80,0xF0,0x88,0x88,0x88,0x70,0x00,0x00,

/*--文字:

7--*/

0x00,0x00,0xF8,0x90,0x10,0x20,0x20,0x20,0x20,0x20,0x00,0x00,

/*--文字:

8--*/

0x00,0x00,0x70,0x88,0x88,0x70,0x88,0x88,0x88,0x70,0x00,0x00,

/*--文字:

9--*/

0x00,0x00,0x70,0x88,0x88,0x88,0x78,0x08,0x48,0x70,0x00,0x00};

UcharcodeTable[]={0xff,0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xff};

/*******************延时函数************************************/

voiddelay(intms)

{

while(ms--)

{

uchari;

for(i=0;i<150;i++)

{

_nop_();

_nop_();

_nop_();

_nop_();

}

}

}

/***************************************************************/

/*延时函数2*/

voiddelay1(intms)

{

{while(--ms);

}

}

/************检查LCD忙状态********************************/

/*lcd_busy为1时,忙,等待。

lcd-busy为0时,闲,可写指令与数据*/

bitlcd_busy()

{

bitresult=0;

LCD_RS=0;

LCD_RW=1;

LCD_EN=1;

delayNOP();

result=(bit)(P0&0x80);

LCD_EN=0;

return(result);

}

/*写指令数据到LCDRS=L,RW=L,E=高脉冲,D0-D7=指令码*/

oidlcd_wcmd(ucharcmd)/*写指令数据到LCD*/

{

while(lcd_busy());/*只有不忙的时候才能写指令*/

LCD_RS=0;

LCD_RW=0;

LCD_EN=0;

_nop_();

_nop_();

P0=cmd;/*cmd代表指令*/

delayNOP();

LCD_EN=1;

delayNOP();

LCD_EN=0;

}

/*写显示数据到LCDRS=H,RW=L,E=高脉冲,D0-D7=数据************************/

voidlcd_wdat(uintdat)/*写显示数据到LCD*/

{

while(lcd_busy());/*只有不忙的时候才能写显示数据*/

LCD_RS=1;

LCD_RW=0;

LCD_EN=1;

_nop_();

_nop_();

P0=dat;/*dat代表显示数据,是8位的二进制数*/

_nop_();

_nop_();

LCD_EN=0;

}

/*************LCD初始化设定****

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1