DS1302是一款实时时钟芯片,它是由日本电子公司梅克尔(MEKL)出品的一款低功耗时钟芯片,并且是数字时钟的常用芯片之一。在DS1302中,它的时间单位是秒,而秒在十进制中是没有60这个数字的,因此,ds1302秒为什么出现60多的问题就引起了大家的关注和思考。
DS1302的单元时间计数是BCD码,它可以分成十进制数的每一位,而在十进制中,秒的取值范围为0~59,秒钟某一位数达到9后必须进位,0到5分钟时,不同的十位与个位之间并不需要进位,单位时间为BCD码的十秒位和个位都能正常显示0~9。而在秒钟处,60的表示方法是由BCD码中的秒的十进制采用6位(即00000110B)来代表60的状态。简单来说,就是在ds1302芯片中采用了BCD码来存储时间,其中用了一个BCD码代表了60秒的状态,因此才会出现ds1302秒为什么出现60多的疑惑。
除了BCD码的缘故外,DS1302的时钟误差还来源于中断。在DS1302芯片中,通过设置定时器周期性地产生中断,当中断发生时,芯片的时间计数器会将秒数增加1,而当中断未发生时,芯片的时间计数器也是在不断地计数,因此这样就会导致时间误差的产生。
在DS1302时钟电路中,由于电容器在充电和放电的过程中,电压并不是呈线性变化的,因此,在DS1302的时钟电路中工作时,由于电容器电压与时间的非线性关系,会导致时间误差的不稳定性,从而间接导致了ds1302秒为什么出现60多的情况。