首先谢谢版主耐心的指导,关于DS1302,新的问题出现了。

2019-03-24 17:46发布

对于1302的秒寄存器的读取和显示已经实现了。
但新的问题出现了,当秒为奇数时,显示正常,当秒为偶数时就会闪烁。
有没有人知道是哪里的问题呢?

/*****1302写入一字节*****/
void writebyte(u8 dat)
{
u8 i;
for(i=0;i<8;i++)
{
  IO=dat&0x01;
  delay(1);
  SCLK=1;
  delay(1);
  SCLK=0;
  dat>>=1;
}
}
/*****1302读出一字节*****/
u8 readbyte()
{
u8 i,dat;
for(i=0;i<8;i++)
{
  dat>>=1;
  if(IO==1)
  dat|=0x80;
  SCLK=1;
  delay(1);
  SCLK=0;
  delay(1);
}
return dat;
}
/*****读1302数据*****/
u8 read(u8 num)
{
u8 dat,i;
for(i=0;i<1;i++)
{
  CE=0;
  SCLK=0;
  CE=1;
  writebyte(num);
  dat=readbyte();
  CE=0;
  delay(1);
}
return dat;
}
/*****定义BCD转换*****/
u8 BCD(u8 num)
{
u8 dat;
dat=read(num);
delay(1);
dat=dat&0x0f;
delay(1);
return dat;
}
/*****主函数*****/
void main()
{
P1=0;
while(1)
{
  P2=0x00;
  P1=table[BCD(0x81)];
  delay(100);
}
}

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
流氓小哥
1楼-- · 2019-03-25 01:09
 精彩回答 2  元偷偷看……
jishuaihu
2楼-- · 2019-03-25 05:42
闪烁是什么情况?字变暗了还是变成别的数了?
流氓小哥
3楼-- · 2019-03-25 05:48
jishuaihu 发表于 2016-1-22 10:08
闪烁是什么情况?字变暗了还是变成别的数了?

0 闪几次然后  1正常 2 闪几次然后  3正常 4 闪几次然后  5正常 6 闪几次然后  7正常 8 闪几次然后  9正常

数字都很清楚,没有异常。
jishuaihu
4楼-- · 2019-03-25 06:07
 精彩回答 2  元偷偷看……
白丁
5楼-- · 2019-03-25 08:26
问完问题还能回来的就是好坛友
流氓小哥
6楼-- · 2019-03-25 10:54
jishuaihu 发表于 2016-1-22 17:14
那种就是你的显示函数的问题了。建议多看看如何驱动数码管程序之类的东西。闪烁就是你在不知道的情况下把那 ...

我并不是动态显示的数码管,而是静态显示的。就像先送0延时1秒再送1延时1秒再送2........一直到9后回0。

一周热门 更多>