- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
四位密码锁
#include reg51.h
#includeintrins.h
#define uint unsigned int
#define uchar unsigned char
#define ulint unsigned long int
/*P1口接8个按键*/
sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;
sbit key4=P1^3;
sbit key5=P1^4;
sbit key6=P1^5;
sbit key7=P1^6;
sbit key8=P1^7;
sbit key_start=P2^6;
sbit key_stop=P2^7;
sbit sda=P2^0; //24C02引脚位
sbit scl=P2^1;
//sbit aa=P2^2;
//sbit bb=P2^3;
//sbit cc=P2^4;
sbit rck=P3^4;
sbit sck=P3^5;
sbit dio=P3^6;
sbit jdq=P3^3;
sbit led=P3^7;
uchar code wela[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
uchar code dula[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};
//uchar code p[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar sum1,sum2,sum3,sum4,sum5,sum6,sum7,sum8;
uchar key_count;
uchar sum_1,eeprom_1,sum_2,eeprom_2,eeprom_3,eeprom_4,sum_22;
void delay()
{
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
}
void delay1us(uint i)
{
while(i--);
}
void delay1()
{
uint i=30000;
while(i--);
}
void delay1ms(uint i)
{
uchar j;
for(j=199;j0;j--)
for(;i0;i--);
}
void start() //起始位
{
sda=1;
delay();
scl=1;
delay();
sda=0;
delay();
}
void stop() //终止位
{
sda=0;
delay();
scl=1;
delay();
sda=1;
delay();
}
void ack() //应答
{
uchar i;
scl=1;
delay();
while((sda==1)i200) i++;
scl=0;
delay();
}
void noack() //非应答
{
sda=1;
delay();
scl=1;
delay();
scl=0;
delay();
}
void init() //初始化
{
sda=1;
scl=1;
}
void ii2wr_byte(uchar dat) //向24C02写字节
{
uchar i;
scl=0;
for(i=0;i8;i++)
{
if(dat0x80)
sda=1;
else
sda=0;
dat=dat1;
delay();
scl=1;
delay();
scl=0;
delay();
}
sda=1;
delay();
}
uchar ii2re_byte() //向24C02读字节
{
uchar i;
uchar dat;
scl=0;
delay();
sda=1;
delay();
for(i=0;i8;i++)
{
scl=1;
delay();
dat=dat1;
if(sda)
dat++;
scl=0;
delay();
}
return dat;
}
void c_wr(uchar add,uchar da
文档评论(0)