毕业设计密码锁电路程序.doc
文本预览下载声明
密码锁
本设计以STC89C52RC单片机为核心,利用AT24C02存储密码,做到掉电存储密码的电子密码锁。
电路:
程序:
#includereg52.h
#includeintrins.h
#define uint unsigned int
#define uchar unsigned char
#define N 7
#define OP_READ 0xa1 // 器件地址以及读取操作
#define OP_WRITE 0xa0 // 器件地址以及写入操作
#define MAX_ADDR 0x7f // AT24C02最大地址
sbit SCL=P2^0;
sbit SDA=P2^1;
sbit CSH=P3^0;
sbit e=P3^4;
sbit rs=P3^5;
sbit sp=P3^6;
sbit lock=P3^1;
sfr duan=0x80;
sfr key=0x90;
uint ci;
uchar kc,sc,sc2;
int shu1,shu2,jh,jg;
uchar code table[] = LOCK ;
uchar code table2[]=WELLCOME TO USE!;
uchar code table3[]=PASS WORD:;
uchar code table4[]=ERRO!;
uchar code table5[]=OPEN!;
uchar code table6[]=NEW PASS WORD;
uchar code table7[]=SUCCESSFUL!;
uchar code table8[]=FAIL!;
uchar code cmm[6]={1,2,3,3,2,1};
uchar mm[6];
uchar tablesuan[N];
void init();
void writec(uint com);
void writed(uint dat);
void delay(uint shu);
uchar keyscan();
void xieshuzu(uchar a[],uchar add);
void shuru();
void kaiji();
void bijiao();
void xies(uchar a,uchar add);
void delayms(unsigned char ms);
void gmm();
/***********************/
/***********************/
/***********************/
void start()
// 开始位
{
SDA = 1;
SCL = 1;
_nop_();
_nop_();
SDA = 0;
_nop_();
_nop_();
_nop_();
_nop_();
SCL = 0;
}
void stop()
// 停止位
{
SDA = 0;
_nop_();
_nop_();
SCL = 1;
_nop_();
_nop_();
_nop_();
_nop_();
SDA = 1;
}
unsigned char shin()
// 从AT24Cxx移入数据到MCU
{
unsigned char i,read_data;
for(i = 0; i 8; i++)
{
SCL = 1;
read_data = 1;
read_data |= (unsigned char)SDA;
SCL = 0;
}
return(read_data);
}
bit shout(unsigned char write_data)
// 从MCU移出数据到AT24Cxx
{
unsigned char i;
bit ack_bit;
for(i = 0; i 8; i++) // 循环移入8个位
{
SDA = (bit)(write_data 0x80);
_nop_();
SCL = 1;
_nop_();
_nop_();
SCL = 0;
write_data = 1;
}
SDA = 1; // 读取应答
_nop_();
_nop_();
SCL = 1;
_nop_();
_nop_();
_nop_();
_nop_();
ack_bit = SDA;
SCL = 0;
return ack_bit; // 返回AT24Cxx应答位
}
void write_byte(unsigned char addr, unsign
显示全部