你的问题是小数点不受控制吧,这应该是你程序的问题,dp位如果不需要显示你可以断开这一位的接线,如果需要显示,那么定义显示数据时需要将该位加入,比如显示1,共阳数据是b、c为1,如果显示1.那么就需要b、c、dp三位为1.
请问,你的数码管有几个?88:88:88 还是 88:88 ?
如果都亮,说明你给的显示时间太短了!
以50Hz为例,显示88:88:88,共显示8个字,50Hz->T=20ms;
显示时间为:20ms/8=2.5ms;
先显示 8_-__-__, 过2.5ms后,再显示_8-__-__,再过2.5ms显示 __:__-__。以此类推就行了!
用一个定时器,设时间周期为2.5ms,然后在中断里面输出显示内容即可。
//--------Coding--------
char dispBuf[8];
char code DIG[8]={
0x80,0x40,0x20,0x10,
0x08,0x04,0x02,0x01};
};
void ShowTime() interrupt x using n
{
static dPos;
//----
TnL=Tn_2p5ms; //先置低位时间值
TnH=Tn_2p5ms>>8; //再置高位时间值
dPos&=0x07; //不超过8
dispPort=disBuf[dPos]; //段码
dispSeat=DIG[dPos]; //位码
dPos++; //准备下次
}
// 这样就行了!
这1302,很麻烦!