danpian_12345 2017-03-04 11:17 采纳率: 0%
浏览 1532

51单片机时钟系统+DS1302

#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老是出现乱码呢

  • 写回答

1条回答 默认 最新

报告相同问题?

悬赏问题

  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 关于#python#的问题:自动化测试