• 大小: 97KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-07-11
  • 语言: 其他
  • 标签:

资源简介

基于51单片机的带记忆功能的电子密码锁设计。 设计要求:1、利用51系列单片机为核心,矩阵键盘与LCD1602液晶显示屏组成硬件系统,设计一款电子密码锁; 2、该密码锁具有设置、修改六位用户密码、超次报警、超次锁定、密码错误报警等功能; 3、通过串行存储器AT24C02来实现密码的修改和存储,掉电后密码不丢失; 4、当输入密码与存储密码一致时,开锁并响音乐,若三次输入错误,则报警自动锁定。

资源截图

代码片段和文件信息

#include“i2c.h“
/*******************************************************************************
* 函数名         : Delay10us()
* 函数功能    : 延时
* 输入           : 无
* 输出           : 无
*******************************************************************************/

void Delay10us()
{
unsigned char ab;
for(b=1;b>0;b--)
for(a=2;a>0;a--);

}
/*******************************************************************************
* 函数名         : I2cStart()
* 函数功能    : 起始信号:在SCL时钟信号在高电平期间SDA信号产生一个下降沿
* 输入           : 无
* 输出           : 无
* 备注           : 起始之后SDA和SCL都为0
*******************************************************************************/

void I2cStart()
{
SDA=1;
Delay10us();
SCL=1;
Delay10us();//建立时间是SDA保持时间>4.7us
SDA=0;
Delay10us();//保持时间是>4us
SCL=0;
Delay10us();
}
/*******************************************************************************
* 函数名         : I2cStop()
* 函数功能    : 终止信号:在SCL时钟信号高电平期间SDA信号产生一个上升沿
* 输入           : 无
* 输出           : 无
* 备注           : 结束之后保持SDA和SCL都为1;表示总线空闲
*******************************************************************************/

void I2cStop()
{
SDA=0;
Delay10us();
SCL=1;
Delay10us();//建立时间大于4.7us
SDA=1;
Delay10us();
}
/*******************************************************************************
* 函数名         : I2cSendByte(unsigned char num)
* 函数功能    : 通过I2C发送一个字节。在SCL时钟信号高电平期间,保持发送信号SDA保持稳定
* 输入           : num
* 输出           : 0或1。发送成功返回1,发送失败返回0
* 备注           : 发送完一个字节SCL=0SDA=1
*******************************************************************************/

unsigned char I2cSendByte(unsigned char dat)
{
unsigned char a=0b=0;//最大255,一个机器周期为1us,最大延时255us。
for(a=0;a<8;a++)//要发送8位,从最高位开始
{
SDA=dat>>7;  //起始信号之后SCL=0,所以可以直接改变SDA信号
dat=dat<<1;
Delay10us();
SCL=1;
Delay10us();//建立时间>4.7us
SCL=0;
Delay10us();//时间大于4us
}
SDA=1;
Delay10us();
SCL=1;
while(SDA)//等待应答,也就是等待从设备把SDA拉低
{
b++;
if(b>200)  //如果超过2000us没有应答发送失败,或者为非应答,表示接收结束
{
SCL=0;
Delay10us();
return 0;
}
}
SCL=0;
Delay10us();
  return 1;
}
/*******************************************************************************
* 函数名         : I2cReadByte()
* 函数功能    : 使用I2c读取一个字节
* 输入           : 无
* 输出           : dat
* 备注           : 接收完一个字节SCL=0SDA=1.
*******************************************************************************/

unsigned char I2cReadByte()
{
unsigned char a=0dat=0;
SDA=1; //起始和发送一个字节之后SCL都是0
Delay10us();
for(a=0;a<8;a++)//接收8个字节
{
SCL=1;
Delay10us();
dat<<=1;
dat|=SDA;
Delay10us();
SCL=0;
Delay10us();
}
return dat;
}
/*******************************************************************************
* 函数名         : I2cReadRespon()
* 函数功能    : 接收完一个字节之后产生应答,以便接着接收下一个字节
* 输入           : 无
* 输出           : 无
* 备注           : 接收完一个字节SCL=0
*******************************************************************************

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

    .CA....       831  2019-12-17 10:58  基于51单片机的的电子锁设计\ChengXu_51\a.lst

    .CA....     12970  2019-12-17 10:58  基于51单片机的的电子锁设计\ChengXu_51\a.obj

    .CA....      3483  2019-12-10 11:51  基于51单片机的的电子锁设计\ChengXu_51\i2c.c

    .CA....       236  2019-12-08 17:41  基于51单片机的的电子锁设计\ChengXu_51\i2c.h

    .CA....      7011  2019-12-22 11:26  基于51单片机的的电子锁设计\ChengXu_51\i2c.LST

    .CA....      4141  2019-12-22 11:26  基于51单片机的的电子锁设计\ChengXu_51\i2c.OBJ

    .CA....     25273  2019-12-22 11:26  基于51单片机的的电子锁设计\ChengXu_51\laozhen

    .CA....      5333  2019-12-22 11:26  基于51单片机的的电子锁设计\ChengXu_51\laozhen.hex

    .CA....        72  2019-12-22 11:26  基于51单片机的的电子锁设计\ChengXu_51\laozhen.lnp

    .CA....     32412  2019-12-22 11:26  基于51单片机的的电子锁设计\ChengXu_51\laozhen.M51

    .CA....      2920  2019-12-22 11:26  基于51单片机的的电子锁设计\ChengXu_51\laozhen.plg

    .CA....     74045  2019-12-08 11:12  基于51单片机的的电子锁设计\ChengXu_51\laozhen.uvgui.lenovo

    .CA....     65061  2019-12-24 18:15  基于51单片机的的电子锁设计\ChengXu_51\laozhen.uvopt

    .CA....     13727  2019-12-08 20:31  基于51单片机的的电子锁设计\ChengXu_51\laozhen.uvproj

    .CA....     64552  2019-12-17 22:48  基于51单片机的的电子锁设计\ChengXu_51\laozhen_uvopt.bak

    .CA....     12541  2019-12-08 11:12  基于51单片机的的电子锁设计\ChengXu_51\laozhen_uvproj.bak

    .CA....      4090  2019-12-08 20:24  基于51单片机的的电子锁设计\ChengXu_51\lcd1602.c

    .CA....       965  2019-12-08 20:23  基于51单片机的的电子锁设计\ChengXu_51\lcd1602.h

    .CA....      7934  2019-12-22 11:26  基于51单片机的的电子锁设计\ChengXu_51\lcd1602.LST

    .CA....      4258  2019-12-22 11:26  基于51单片机的的电子锁设计\ChengXu_51\lcd1602.OBJ

    .CA....     11772  2019-12-24 18:15  基于51单片机的的电子锁设计\ChengXu_51\main.c

    .CA....     30427  2019-12-22 11:26  基于51单片机的的电子锁设计\ChengXu_51\main.LST

    .CA....     21294  2019-12-22 11:26  基于51单片机的的电子锁设计\ChengXu_51\main.OBJ

    .CA....      8446  2019-12-17 10:53  基于51单片机的的电子锁设计\ChengXu_51\music.h

    .CA....      5485  2019-12-17 10:54  基于51单片机的的电子锁设计\ChengXu_51\soundplay.h

    .CA....      6376  2009-05-07 14:37  基于51单片机的的电子锁设计\ChengXu_51\STARTUP.A51

    .CA....     14046  2019-12-22 11:26  基于51单片机的的电子锁设计\ChengXu_51\STARTUP.LST

    .CA....       758  2019-12-22 11:26  基于51单片机的的电子锁设计\ChengXu_51\STARTUP.OBJ

    .CA....     23691  2020-04-26 16:14  基于51单片机的的电子锁设计\laozhen1.pdsprj

    .C.D...         0  2020-04-26 16:13  基于51单片机的的电子锁设计\ChengXu_51

............此处省略4个文件信息

评论

共有 条评论

相关资源