前几天用STC89C52单片机制作了一个电子时钟,经过一段时间的实验,发现时间精度存在误差,一分钟慢4秒左右。
这可了不得,十分钟就要慢40秒,一天下来不得慢半96分钟!!!
这个单片机晶振频率为11.0592mhz,和大部分时钟的晶振频率相同,应该没有问题。
后天考虑到源代码:
在定时器中断函数里:
void t0(void) interrupt 1 using 0
{
tcount++;
if(tcount==4000)
{tcount=0;
second++;
if(second==60)
{second=0;
minute++;
if(minute==60)
{minute=0;
hour++;
if(hour==24)
{hour=0;
}
}
}
P1=~P1;
}
}
interrupt 后面的数字简单的说就是中断服务函数的代号
0代表外中断0
1代表定时计数器0中断
2代表外中断1
3代表定时计数器1中断
4代表串行口中断
所以interrupt 1代表定时计数器产生中断后就转到这个函数里面执行。
代码其实还挺简单,每中断4000下将产生1秒。
等等...
每4000下的中断为1秒,那么原因很有可能在这里。
试着将tcount==3600,和秒表对比发现竟然每一分钟快了1秒左右。
bingo!问题的确出在tcount的取值上面,将tcount的数值改为3700,和秒表对比发现,秒数没有误差,有误差的应该就是毫秒级吧。
void t0(void) interrupt 1 using 0
{
tcount++;
if(tcount==3700)
{tcount=0;
second++;
if(second==60)
{second=0;
minute++;
if(minute==60)
{minute=0;
hour++;
if(hour==24)
{hour=0;
}
}
}
P1=~P1;
}
}
这样就解决了时钟精度的问题。
关键字:51单片机 电子时钟 精度
引用地址:
关于51单片机电子时钟精度的问题
推荐阅读最新更新时间:2024-03-16 14:55
RICOH低功耗高精度汽车级电源管理IC 可在世强免费申请
世强元件电商,RICOH(理光微电子)电源管理IC样品申请活动,正在火热进行中,点击活动网站:https://www.sekorm.com/doing/enroll/74418534.html 注册成为世强元件电商VIP会员,即可参与活动。此次可以申请的样品包括,R1524x 系列、RP130x 系列、RP170x 系列、R1513x 系列、R1517x 系列、R1245x系列、RP550x系列、R5110x 系列等,可以应用在汽车配件的电源、汽车音响设备、导航系统、车身控制、电源管理系统、电动汽车ECU等领域... 关于Ricoh RICOH(理光微电子)是隶属世界五百强之一理光集团的全资子公司,总部位于日本大阪
[汽车电子]
61-基于51单片机心率脉搏测量及蓝牙APP上传设计
具体实现功能 系统由STC89C52单片机电路+LCD1602液晶显示电路+脉搏/心率传感器电路+LM393比较器模块电路+DS18B20温度传感器电路+电源电路组成。 (1)通过脉搏/心率传感器检测脉搏/心率。 (2)通过温度传感器DS18B20检测体温。 (3)将脉搏/心率和体温实时显示在液晶上。 (4)增加蓝牙模块,将心率和体温实时上传到手机蓝牙APP。 设计背景 随着科学技术的发展和应用,测量脉搏、心率的技术、测量的精度逐渐趋于先进和精准,国内外都有不同类型的测量仪器,其中最重要的就是研究测量传感器。首先对运动测量进行了研究,重点研究了接触式传感器,研制了利用这种传感器测量的对脉搏、心率、血压等测量仪器
[单片机]
51单片机利用锁存器控制数码管显示年月日时分秒
数码管模块中的两片74hc573,一片锁存段码,一片锁存位码,这样才能驱动8位数码管。74hc573是锁存器,用于数码管显示时通常是采用段选、片选共用同一组并口的驱动方式。 驱动数码管需要两个信号,一个是段选信号,另一个是片选信号。段选信号是固定的8个(对于普通7段数码管),而片选信号数量是与数码管位数相同的。 对于8位数码管的动态扫描来说,片选信号要8根线,这样仅仅驱动数码管就占用了16个IO口,非常浪费。 原理 使用573锁存器后,只占用10个IO口,其中2个用于控制锁存器使能,另外8个用于输出信号。先关闭控制片选信号的573芯片的锁存功能,然后单片机输出片选信号。随后再开启锁存,此时无论573的输入端如何变化,输
[单片机]
PXI总线实现高精度恒流源
在航天设备测试中,陀螺和加速度计测试是不可缺少的重要组成部分。随着陀螺与加速度计精度水平的提高,测试过程中对其激励源-恒流源的精度要求越来越高。本文给出了一种基于PXI总线的高精度恒流源设计,并已成功应用于很多航天型号的陀螺和加速度计测试中。
1 系统设计
如图1所示,系统通过PXI总线与上位机进行通信,本地总线与PXI总线通过PXI接口电路连接。PXI接口电路将PXI总线指令翻译成本地局部总线传给FPGA,通过FPGA将PXI总线传输给D/A进行转换,D/A转换后的电压经V/I转换为高精度电流输出给用户。
2 系统电路设计
2.1 PXI接口电路
面向仪器系统的P
[电源管理]
51单片机汇编语言子程序调用指令RET RETI
控制转移 指令 用于控制程序的流向,所控制的范围即为程序存储器区间,MCS-51系列单片机的控制转移 指令 相对丰富,有可对64kB程序空间地址单元进行访问的长调用、长转移指令,也有可对2kB字节进行访问的绝对调用和绝对转移指令,还有在一页范围内短相对转移及其它无条件转移指令,这些指令的执行一般都不会对标志位有影响。 . 子程序调用指令(1条) 子程序是为了便于程序编写,减少那些需反复执行的程序占用多余的地址空间而引入的程序分支,从而有了主程序和子程序的概念,需要反复执行的一些程序,我们在编程时一般都把它们编写成子程序,当需要用它们时,就用一个调用命令使程序按调用的地址去执行,这就需要子程序的调用指令和返回指令。 LCALL
[单片机]
51单片机超声波测距报警系统
要想做超声波测距系统的仿真,核心是怎么解决这个问题:实物系统实际存在的超声波并利用它测距如何在仿真图中实现。我也下载过很多别人的仿真图,可是自己一运行就是没显示,全部都不能用,其实问题就是出在仿真图中超声波发射接收模块。经过修改的仿真图如下(亲测可用) 这个仿真图还包含按键设置模块和报警模块(前者用于设置报警值,后者在测得距离小于设置报警值时候蜂鸣器报警),由上图中标注的按键模块和报警模块实现, 按键设置模块 用法如下: 按下一次KEY1,显示屏显示当前设置的报警值,按下KEY2最小值加1CM,按下KEY2减1CM,设置完成后按下KEY1保存,显示屏返回显示距离,如此往复循环。 KEIL程序框架图 单片机
[单片机]
Proteus仿真51单片机的SPI通信程序
仿真原理图如下 实验现象 会有数码管1到8的显示 从机跟随主机 单片机源程序如下: #include reg52.h //头文件 #include intrins.h //头文件 #define uchar unsigned char #define uint unsigned int sbit SCK = P1^0;//位定义时钟 //sbit CS = P1^1;//位定义片选(使能) 此项目可以不使用 sbit SDI = P1^2;//位定义Input sbit SDO = P1^3;//位定义Output /*-----函数声明-----*/ void delay5us(); void delay(); void
[单片机]
8051单片机的历史_8051单片机的应用领域
目前,有关8051单片机的说法很多:8051单片机是Intel发明的,可与8位系列处理器一起使用。现在,8051单片机已广泛应用于各个行业以及家庭的各种家用电器上。 一、8051单片机的历史 如果我们回顾历史,8051单片机是由微处理器巨头Intel于1980年首次发明的,并且逐渐被全世界所接受,并且随着未来的每一天,8051单片机的重要性正在不断提高。当它由英特尔发明时,它是通过NMOS技术开发的,但作为NMOS技术却不是很有效。 为了提高效率和生产率,英特尔通过实施CMOS技术对它进行了改型,并出现了一个新版本,名称中带有字母“C”,比如:“80C51”。新版8051单片机具有两条总线,一条总线用于程序
[单片机]