对于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);
}
}
此帖出自
小平头技术问答
0 闪几次然后 1正常 2 闪几次然后 3正常 4 闪几次然后 5正常 6 闪几次然后 7正常 8 闪几次然后 9正常
数字都很清楚,没有异常。
我并不是动态显示的数码管,而是静态显示的。就像先送0延时1秒再送1延时1秒再送2........一直到9后回0。
一周热门 更多>