24c02采用IIC与单片机通信,其详细通信时序参考24C02数据手册。我们只需使用At24c02Read(unsigned char addr)和At24c02Write(unsigned char addr,unsigned char dat)即可。
一、实验现象
将线连接好并将程序下载后,可以看到1602上显示:
此时可以按下任意键继续
在这里我们可以“1”或“9”选择开锁或者是修改密码。如果这里选择的开锁,按下确定键,此时会提示输入密码,初始密码默认为888888,输入密码
然后按下确定键,如果密码正确则会显示:
并且可以看到继电器模块指示灯亮并可以听到继电器闭合的声音。
如果密码错误则会提示:Error.
如果需要修改密码,则选择Change password
这里会提示输入密码:
输入原密码
按下确认键,如果密码正确会提示输入新密码,
输入密码后按下确认键,会提示OK并返回到待机画面。
单片机源程序如下:
/**************************************************************************************
* 电子密码锁 *
实现现象:下载程序输入正确密码,会听到继电器吸合的声音
硬件连接:
P1 -->矩阵键盘
P20--> EEPROM模块SDA
P21--> EEPROM模块SCL
P22-->继电器模块J15
矩阵键盘:
0 1 2 3
4 5 6 7
8 9 返回 确定
[ DISCUZ_CODE_22 ]nbsp; [ DISCUZ_CODE_22 ]nbsp; [ DISCUZ_CODE_22 ]nbsp; $
注意事项:无
***************************************************************************************/
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
#include "lcd.h"
#include "key.h"
#include "i2c.h"
#define u16 unsigned int //对数据类型进行声明定义
#define u8 unsigned char
sbit AS=P2^2; //继电器
/*****************************************************************************/
/*****************************************************************************/
u8 pw_num,Error_Num,PassWord_Length=6;
u8 PASSWORD[]={8,8,8,8,8,8,0,0,0,0};
u8 INPUT_PW_Tab[10];
u8 key_num,Step,Step5,Load_first_flag=0;
/*****************************************************************************/
/*******************************************************************************/
bit result_flag,Input_suc_flag;
bit List1=0;
/*****************************************************************************/
/*******************************************************************************/
void Step_0();
void Step_1();
void Step_2();
void Step_3();
void Step_4();
void Step_5();
void Step5_0();
void Step5_1();
void Step5_2();
void Step5_3();
void Step5_4();
void Step5_5();
void Step_6();
/********************************************************************************/
/*******************************************************************************/
void CipherComparison();
void input_password(bit m);
void Read_Password();
/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void main()
{
u8 data1,a;
// ShowString(0x00," Pechin Science ");
// At24c02Write(0,0); //开机显示密码
LcdWriteCom(0x01); //清屏
for(data1=0;data1
{
a=At24c02Read(data1)+0x30;
LcdWriteData(a);
delay(1000);
}
delay(1000);
LcdInit();
delay(1000);
Step=0;
Step5=0;
Error_Num=0x00;
Read_Password();
//保存 密码长度
// for(j=0;j<10;j++)
// {
// At24c02Write(j,j);
// delay(100);
// }
//
while(1)
{
key_num=KeyDown(); //读取输入值
switch(Step)
{
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』