📄 at24.c
字号:
#include"AT24.h"
#include "LCM_162.h"
unchar AT_date ;
unchar AT_display[3];
unsigned char code display_ATnumber[10]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
void Setting(void)
{
Lcd_initialize();
Writecmd(0x80);
Lcd_string("Capacitance Text");
Writecmd(0xA8);
Lcd_string(" Current Value");
AT_date=read_AT(0x00);
tunbcd(AT_date);
Writecmd(0xA8);
Write_date(display_ATnumber[AT_display[0]]);
Write_date(display_ATnumber[AT_display[1]]);
Write_date(display_ATnumber[AT_display[2]]);
while(1)
{
if(Key_read()==2)
{
AT_date++;
write_AT(0x00,AT_date);
tunbcd(AT_date);
Writecmd(0xA8);
Write_date(display_ATnumber[AT_display[0]]);
Write_date(display_ATnumber[AT_display[1]]);
Write_date(display_ATnumber[AT_display[2]]);
}
if(Key_read()==3)
{
AT_date--;
write_AT(0x00,AT_date);
tunbcd(AT_date);
Writecmd(0xA8);
Write_date(display_ATnumber[AT_display[0]]);
Write_date(display_ATnumber[AT_display[1]]);
Write_date(display_ATnumber[AT_display[2]]);
}
if(Key_read()==1)
break;
}
}
/*读AT24C02*/
unchar read_AT (unchar address)
{
unchar i;
start24();
senddate(write24);
clock();
senddate(address);
clock();
start24();
senddate(read24);
clock();
i=readx();
stop();
delay(50);
return(i);
}
/*写AT24C02*/
void write_AT(unchar address,unchar ATdate)
{ start24();
senddate(write24);
clock();
senddate(address);
clock();
senddate(ATdate);
clock();
stop();
delay(50);
}
/*24开始信号函数*/
void start24(void)
{
AT_sda=low;
delay(0);
AT_scl=high;
delay(0);
AT_sda=high;
delay(0);
AT_sda=low;
delay(0);
AT_scl=low;
delay(0);
}
/*24停止信号函数*/
void stop (void)
{
AT_sda=low;
delay(0);
AT_scl=high;
delay(0);
AT_sda=high;
delay(0);
}
/*24发送数据*/
void senddate(unchar j)
{
unchar i,temp;
temp=j;
for (i=0;i<8;i++)
{
temp=temp<<1;
AT_scl=0;
AT_sda=CY;
AT_scl=1;
}
AT_scl=0;
AT_sda=1;
}
/*24时钟*/
void clock(void)
{
unchar i=0;
AT_scl=1;
while ((AT_sda==1)&&(i<255))i++;
AT_scl=0;
}
/*读一个字节的数据*/
unchar readx(void)
{
unchar i,j,k=0;
AT_scl=0;
AT_sda=1;
for (i=0;i<8;i++)
{
AT_scl=1;
if (AT_sda==1) j=1;
else j=0;
k=(k<<1)|j;
AT_scl=0;
}
return(k);
}
void tunbcd(unchar date2)
{
AT_display[0]=date2/100;
date2=date2%100;
AT_display[1]=date2/10;
AT_display[2]=date2%10;
}
void delay(unsigned int um100)
{
unchar usn;
while(um100!=0)
{usn=97;
while(usn!=0)
{
usn--;
}
um100--;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -