一、系统功能
基于51单片机的多功能密码锁仿真设计,主要实现功能如下: (1)能够从键盘中输入密码,并相应地在显示器上显示‘*’; (2)能够判断密码是否正确,正确则开锁,错误则输出相应信息; (3)能够实现密码的修改; (4)断电或者单片机复位后能够保存之前的操作,比如密码的修改; (5)在操作错误达到一定次数后能够报警。
二、硬件设计
本设计主要由单片机最小系统、矩阵键盘、LCD显示模块、掉电存储模块、报警机构和开锁机构组成。
三、仿真
四、代码
附上AT24C02代码,可以移植参考
/*******************************************************************************
* 函数名 : void At24c02Write(unsigned char addr,unsigned char dat)
* 函数功能 : 往24c02的一个地址写入一个数据
* 输入 : 无
* 输出 : 无
*******************************************************************************/
void At24c02Write(unsigned char addr,unsigned char dat)
{
I2cStart();
I2cSendByte(0xa0);//发送写器件地址
I2cSendByte(addr);//发送要写入内存地址
I2cSendByte(dat); //发送数据
I2cStop();
}
/*******************************************************************************
* 函数名 : unsigned char At24c02Read(unsigned char addr)
* 函数功能 : 读取24c02的一个地址的一个数据
* 输入 : 无
* 输出 : 无
*******************************************************************************/
unsigned char At24c02Read(unsigned char addr)
{
unsigned char num;
I2cStart();
I2cSendByte(0xa0); //发送写器件地址
I2cSendByte(addr); //发送要读取的地址
I2cStart();
I2cSendByte(0xa1); //发送读器件地址
num=I2cReadByte(); //读取数据
I2cStop();
return num;
}
/*******************************************************************************
* 函数名 : TimerConfiguration()
* 函数功能 : 配置定时器值
* 输入 : 无
* 输出 : 无
*******************************************************************************/
void TimerConfiguration()
{
TMOD = 0x01; //选择工作方式1
TH0 = 0x3C; //设置初始值,定时50MS
TL0 = 0xB0;
EA = 1; //打开总中断
ET0 = 1; //打开定时器0中断
TR0 = 1; //启动定时器0
}
五、资料下载
|