郁闷了,做了一个月连和万年历都做不出来!好烦躁。现在把程序烧进自己制作的板子的
单片机里,LCD显示时间部分有问号出现,我用的是DS1302的时钟
芯片。要死了,不知道该怎么调试啊~~现在就是不能确定是程序问题还是板子问题。各位大神知道该怎么调试吗?附上时钟芯片的部分程序,各位看下有不有错~~求助。
sbit bit7=ACC^7;
sbit bit0=ACC^0;
sbit rst=P1^5;
sbit sclk=P1^6;
//sbit rst=P1^6;
//sbit sclk=P1^5;
sbit IO=P1^7;
void input(uchar);
uchar output(void);
void wr1302(uchar, uchar);
uchar re1302(uchar);
void set1302(uchar *p);
void get1302(uchar cur
time[]);
uchar time[7];
void input(uchar date)
{
uchar i;
rst=1;
ACC=date;
for(i=8;i>0;i--)
{
IO=bit0;
sclk=0;
sclk=1;
ACC=ACC>>=1;
}
}
uchar output(void)
{
uchar i;
rst=1;
for(i=8;i>0;i--)
{
ACC=ACC>>=1;
IO=1;
sclk=1;
sclk=0;
bit7=IO;
}
return(ACC);
}
void wr1302(uchar add, uchar date)
{
rst=0;
sclk=0;
rst=1;
input(add);
input(date);
sclk=1;
rst=0;
}
uchar re1302(uchar add)
{
uchar date;
rst=0;
sclk=0;
rst=1;
input(add);
date=output();
sclk=1;
rst=0;
return(date);
}
void set1302(uchar *p)
{
uchar i;
uchar add=0x80;
wr1302(0x8e,0x00);
for(i=7;i>0;i--)
{
wr1302(add,*p);
p++;
add+=2;
}
wr1302(0x8e,0x00);
}
void get1302(uchar curtime[])
{
uchar i;
uchar add=0x81;
for(i=0;i<7;i++)
{
curtime[i]=re1302(add);
add+=2;
}
}
你程序的可读性真不是一般的差,看到我头都晕了。我排版了一下,管脚有修改,你改回来。亲测能正常显示时间和温度。如果还不能显示你就检查一下硬件。发修改过的程序给你。另外附一份我自己写的程序供你参考一下。引脚引脚定义不一样。写程序的时候注意一下格式啊。我看到都头晕了都不知你怎么受到了。
修改 (3).rar 下载积分: 积分 -1 分
72.73 KB, 下载次数: 27, 下载积分: 积分 -1 分
DS1302 LCD.rar 下载积分: 积分 -1 分
57.93 KB, 下载次数: 28, 下载积分: 积分 -1 分
一周热门 更多>