接触51
单片机有一个月左右时间了,准备做一个
电子钟,用了ds1302
芯片,程序写好了,在
proteus上模拟没有问题,但用实物搭建在面包板上就没法正常读取时间。找了很长时间没找到原因。
这是在proteus上模拟时的画面
在面包板上调试时却是这个样子
1302的局部接线图
这是1302部分的程序
void DS1302Write(uchar addr,dat) //地址、数据发送子程序
{
uchar i,temp;
CE=0; //CE引脚为低,数据传送中止
SCLK=0; //清零时钟总线
CE=1; //CE引脚为高,逻辑控制有效
for(i=8;i>0;i--) //发送地址
{
SCLK=0;
temp=addr;
DIO=(bit)(temp&0x01);
addr>>=1;
SCLK=1;
}
for (i=8;i>0;i--) //发送数据
{
SCLK=0;
temp=dat;
DIO=(bit)(temp&0x01);
dat>>=1;
SCLK=1;
}
CE=0;
}
uchar DS1302Read(uchar addr) //数据读取子程序
{
uchar i,temp;
CE=0;
SCLK=0;
CE=1;
for(i=8;i>0;i--) //发送地址
{
SCLK=0;
temp=addr;
DIO=(bit)(temp&0x01);
addr>>=1;
SCLK=1;
}
for(i=8;i>0;i--) //读取数据
{
ACC_7=DIO;
SCLK=1;
ACC>>=1;
SCLK=0;
}
CE=0;
return(ACC);
}
就这些了,还要什么我可以给你发过去。。。求学长学姐帮帮忙。先去上课了,回来看。
可能是重新上电的时候单片机又给1302重新初始化了一次,你得想办法让单片机只能给1302初始化一次。
一周热门 更多>