门禁电子密码锁说明书(8)

2020-02-22 12:09

//“e_lock.h”头文件

#ifndef __e_lock_H_ #define __e_lock_H_

sbit LSA=P2^5; sbit LSB=P2^6; sbit LSC=P2^7; sbit OP=P2^4;

#define seg P0 //数码管段码接口 #define key P1 //按键接口

void c_led(); //开机自检led子函数 void check(); //开机自检函数 void sys_start(); //初始化函数 void sm_key(); //按键检测 void cz(); //拆字函数

void disp(); //显示数码管函数 void open_lock(); //核对密码函数 void Delay1ms(int c); //1ms延时函数 void control(); void k0(); void k1(); void k2(); void k3(); void k4(); void k5(); void k6(); void k7(); void k8(); void k9(); void k10(); //void k11(); void k12(); void k13(); void k14(); void k15();

void At24c02Write(unsigned char addr,unsigned char dat); //24c02写数据函数 unsigned char At24c02Read(unsigned char addr); //24c02读数据函数

36

#endif

//I2C.c文件

#include #include\

void I2C_Delay10us() { uchar a, b; for(b=1; b>0; b--) { for(a=2; a>0; a--); } }

void I2C_Start() { I2C_SDA = 1; I2C_Delay10us(); I2C_SCL = 1;

I2C_Delay10us();//建立时间是I2C_SDA保持时间>4.7us I2C_SDA = 0; I2C_Delay10us();//保持时间是>4us I2C_SCL = 0; I2C_Delay10us(); }

void I2C_Stop() { I2C_SDA = 0; I2C_Delay10us(); I2C_SCL = 1;

I2C_Delay10us();//建立时间大于4.7us I2C_SDA = 1; I2C_Delay10us(); }

uchar I2C_SendByte(uchar dat, uchar ack) { uchar a = 0,b = 0;//最大255,一个机器周期为1us,最大延时255us。

37

for(a=0; a<8; a++)//要发送8位,从最高位开始 { I2C_SDA = dat >> 7; //起始信号之后I2C_SCL=0,所以可以直接改变I2C_SDA信号 dat = dat << 1; I2C_Delay10us(); I2C_SCL = 1; }

I2C_Delay10us();//建立时间>4.7us I2C_SCL = 0;

I2C_Delay10us();//时间大于4us

I2C_SDA = 1; I2C_Delay10us(); I2C_SCL = 1;

while(I2C_SDA && (ack == 1))//等待应答,也就是等待从设备把I2C_SDA拉低 { b++; if(b > 200) //如果超过200us没有应答发送失败,或者为非应答,表示接收结束 { I2C_SCL = 0; I2C_Delay10us(); return 0; } } I2C_SCL = 0; I2C_Delay10us(); return 1; }

uchar I2C_ReadByte() { uchar a = 0,dat = 0; I2C_SDA = 1; //起始和发送一个字节之后I2C_SCL都是0 I2C_Delay10us(); for(a=0; a<8; a++)//接收8个字节 { I2C_SCL = 1; I2C_Delay10us(); dat <<= 1; dat |= I2C_SDA; I2C_Delay10us(); I2C_SCL = 0;

38

I2C_Delay10us(); } return dat; }

//”I2C.h”头文件

#ifndef __I2C_H_ #define __I2C_H_

#ifndef uchar

#define uchar unsigned char #endif

#ifndef uint

#define uint unsigned int #endif

sbit I2C_SCL = P2^1; sbit I2C_SDA = P2^0;

void I2C_Delay10us(); void I2C_Start(); void I2C_Stop();

uchar I2C_SendByte(uchar dat, uchar ack); uchar I2C_ReadByte();

#endif

39

系统原理图:

40


门禁电子密码锁说明书(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:洛阳牡丹通讯股份有限公司生产实习方案2015

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: