#include
#include"lcd12864.h"
#define uchar unsigned char
#define uint unsigned int
sbit scl=P1^0;
sbit sda=P1^1;
sbit rst=P1^2;
#define ds1302_y_add 0x8c //年
#define ds1302_m_add 0x88 //月
#define ds1302_d_add 0x86//日
#define ds1302_h_add 0x84 //时
#define ds1302_M_add 0x82 //分
#define ds1302_s_add 0x80 //秒
#define ds1302_w_add 0x8a //周
#define ds1302_concron_add 0x8e
#define DS1302_charger_add 0x90 //涓流充电地址
#define DS1302_clkburst_add 0xbe
uchar tablebuf1[8]={20,17, 3, 2,23,42,55, 4};
uchar tablebuf[8];
void write(uchar add,uchar date)
{
uchar i;
rst=1;
add=add&0xfe;
for(i=0;i
{
if(add&0x01)
sda=1;
else
sda=0;
scl=1;
scl=0;
add=add>>1;
}
for(i=0;i
{
if(date&0x01)
sda=1;
else
sda=0;
scl=1;
scl=0;
date=date>>1;
}
rst=0;
}
uchar read(uchar add)
{
uchar i,date;
rst=1;
add=add|0x01;
for(i=0;i
{
if(add&0x01)
sda=1;
else
sda=0;
scl=1;
scl=0;
add=add>>1;
}
for(i=0;i
{
date=date>>1;
if(sda==1)
date|=0x80;
else
date&=0x7f;
scl=1;
scl=0;
}
rst=0;
return date;
}
void write_time()
{
uchar i,tmp1,tmp2;
for(i=0;i<8;i++)
{
tmp1=tablebuf1[i]/10;
tmp2=tablebuf1[i]%10;
tablebuf[i]=tmp2+tmp1*16;
}
write(ds1302_concron_add,0x00) ;
write(ds1302_s_add,0x80) ;
write(ds1302_y_add,tablebuf[1]) ;
write(ds1302_m_add,tablebuf[2]) ;
write(ds1302_d_add,tablebuf[3]) ;
write(ds1302_h_add,tablebuf[4]) ;
write(ds1302_M_add,tablebuf[5]) ;
write(ds1302_s_add,tablebuf[6]) ;
write(ds1302_w_add,tablebuf[7]) ;
write(ds1302_concron_add,0x80) ;
}
void read_time()
{
uchar i,tmp1,tmp2;
tablebuf[1]= read(ds1302_y_add);
tablebuf[2]= read(ds1302_m_add);
tablebuf[3]= read(ds1302_d_add);
tablebuf[4]= read(ds1302_h_add);
tablebuf[5]= read(ds1302_M_add);
tablebuf[6]= read(ds1302_s_add);
tablebuf[7]= read(ds1302_w_add);
for(i=0;i<8;i++)
{
tmp1= tablebuf[i]/16;
tmp2=tablebuf[i]%16;
tablebuf1[i]=tmp2+tmp1*10;
}
}
void main()
{
init();
gotoxy (1,1);
write_string("时钟");
gotoxy (2,1);
write_string("20 年 月 日");
gotoxy (3,1);
write_string(" 时 分 秒");
gotoxy (4,1);
write_string("星期");
write_time();
while(1)
{
read_time();
gotoxy (2,2);
write_date(tablebuf1[1]/10);
write_date(tablebuf1[1]%10);
gotoxy (2,4);
write_date(tablebuf1[2]/10);
write_date(tablebuf1[2]%10);
gotoxy (2,6);
write_date(tablebuf1[3]/10);
write_date(tablebuf1[3]%10);
gotoxy (3,1);
write_date(tablebuf1[4]/10);
write_date(tablebuf1[4]%10);
gotoxy (3,3);
write_date(tablebuf1[5]/10);
write_date(tablebuf1[5]%10);
gotoxy (3,5);
write_date(tablebuf1[6]/10);
write_date(tablebuf1[6]%10);
gotoxy (4,3);
write_date(tablebuf1[7]/10);
write_date(tablebuf1[7]%10);
}
}
求哪路大神帮我看看我写的时钟系统程序哪里有错,为什么我烧录进单片机,lcd12864老是出现乱码呢