单片机电子密码锁(可以修改设置密码)——基于51单片机AT24C02LCD1602显示 下载本文

内容发布更新时间 : 2024/7/3 14:16:55星期一 下面是文章的全部内容请认真阅读。

单片机电子密码锁 <可以修改设置密码)——基于51单片机与AT24C02与LCD1602显示

其电路图连接如下:本人已经用硬件实验,程序可用。正确~~ 本程序特点:装载后读者可以自改密码,然后需要再次载入程序时:

可以把主程序aa=Sendstring(0xa0,1,table2,6>。这一句去掉。然后程序的电子锁密码就是你个人设置的密码。

程序代码为:

#include #include #include

#define uchar unsigned char #define uint unsigned int #define LCDIO P2

#define delay4us(> _nop_(>。_nop_(>。_nop_(>。_nop_(>。 uchar buffer[6]={0}。 sbit sda=P3^7。 sbit scl=P3^6。 sbit beep=P3^5。

bit flag=0,aa。 //用户蹲渊义定时溢出标志位 uchar DSY_BUFFER[16]=\。 uchar DSY_BUFFER1[16]=\。 uchar Userpassword[6]={0}。 sbit rs=P0^4。 sbit rd=P0^3。 sbit lcden=P0^2。 sbit led=P3^0。

uchar code table2[]=\。

uchar code table[]=\。 void delayms(uint z> { uint x,y。 for(x=z。x>0。x--> for(y=110。y>0。y-->。 }

void delay(> //短延时,两个机器周期,做总线的延时用 {。。}

void write_com(uchar com> { rs=0。 rd=0。 lcden=0。 P2=com。 delayms(3>。 lcden=1。 delayms(3>。 lcden=0。 }

void write_date(uchar date> { rs=1。 rd=0。 lcden=0。 P2=date。 delayms(3>。 lcden=1。 delayms(3>。 lcden=0。 }

void Display_String(uchar *p,uchar com> { uchar i。

write_com(com>。 for(i=0。i<16。i++>

{

write_date(p[i]>。 } }

void init_lcd(> { lcden=0。 write_com(0x38>。 write_com(0x0c>。 write_com(0x06>。 write_com(0x01>。 write_com(0x80>。 Display_String(table,0x80>。 Display_String(\}

void start(> { sda=1。 scl=1。 delay4us(>。 sda=0。 delay4us(>。 scl=0。 }

void stop(> { sda=0。 scl=1。 delay4us(>。 sda=1。 delay4us(>。 scl=0。 }

void init(> {

sda=1。 delay(>。 scl=1。 delay(>。 }

void ack(> { sda=0。 scl=1。

。 //初始化