标题: 总是觉得STC15F104W单片机内置的时钟偏慢 [打印本页]

作者: lmn2005    时间: 2019-2-18 11:19
标题: 总是觉得STC15F104W单片机内置的时钟偏慢
STC15F104W是一种8引脚的单片机,只需要两个引脚用于电源输入,其余均可做IO口使用,我们可以无限地利用有限的资源,在此赞一下设计者!但在使用过程中,总觉得利用内置的时钟,采用定时器作定时时,好像比正常的时钟慢,大家是否有共同的发现?

001.jpg (9.75 KB, 下载次数: 119)

001.jpg

作者: 刘铁民    时间: 2019-2-18 21:19
我不懂编程。可是我知道这个都是可以设置的,你是不是可以把时间设置的快一点呢。做一个出来你感觉慢还可以改你定时器设置吧。104加个SPI的1602在加二个按键调整时间。我看104有二个定时器。应该出个1Hz信号没问题吧因为晶振原因有点误差也正常。呵呵1加60就是分,在+60就是小时。可惜我不懂编程。就是想了。你做个出来给我源文件,我也照猫画虎做个玩吧。如果按键就调整小时。就一个按键剩下一个脚还可以显示温度。就这8脚单片机不做时钟做个电压电流双显示表也好
作者: Y_G_G    时间: 2019-2-18 22:25
用单片机的定时器来检测或者波形输出可以很准确,但做时间却不怎么好,要么快,要么慢,而且这个是慢慢累加起来的,所以,几天慢个一分钟也算是正常的,你稍微的调一下,它又快了.
作者: static    时间: 2019-2-19 00:06
如果不行用一下外部时钟
作者: 笨笨兔    时间: 2019-2-19 08:24
内部时钟会有误差的,要准确计时需要补偿,但也是不能解决根本问题。
要准确计时,用外部时钟吧。做好是恒温的晶振,,,,,,
作者: wulin    时间: 2019-2-19 09:33
本帖最后由 wulin 于 2019-2-19 10:28 编辑

采用STC15F104W单片机做时钟因其只能使用内部RC振荡精度有限,积累误差很大。当然不是没有解决方案。
1.设置较高的振荡频率(24M)
2.设置定时器1T16位自动重载模式
3.根据±误差加减重载值
4.再根据±误差加减中断计数值
5.再根据±误差在23:59'59"加减最后1秒的中断计数值
6.修正值变量可以保存在EEPROM中,可以随时调用和修改以解决季节温度补偿
7.端口不够用可以采用端口复用技术解决
通过上述措施使走时精度轻松控制在日误差1秒内。


作者: lmn2005    时间: 2019-2-19 11:06
Y_G_G 发表于 2019-2-18 22:25
用单片机的定时器来检测或者波形输出可以很准确,但做时间却不怎么好,要么快,要么慢,而且这个是慢慢累加起来 ...

如果几天下来快慢一分钟,那可以接受。而这104按厂家烧录工具提供的定时器设置例程编写的程序,感觉一小时下来还要出现很大的时间差,如果用于日常时钟根本不能用,如果用于相对严格的定时器也不行。
作者: lmn2005    时间: 2019-2-19 11:11
刘铁民 发表于 2019-2-18 21:19
我不懂编程。可是我知道这个都是可以设置的,你是不是可以把时间设置的快一点呢。做一个出来你感觉慢还可以 ...

加一片转换板可以实现LCD1602的IIC通信,我还没有遇到SPI接口的1602。104可以做成电压电流表?它有AD脚?
作者: zrwd01    时间: 2019-2-19 11:17
精度取决于使用条件,实在需要加温度补偿吧。
作者: iofree    时间: 2019-2-19 11:40
STC单片机的内部RC震荡频率误差是相当大的,而且随着运行还要受温度影响,估计跟它们的生产工艺和检测机制有关,我曾碰到有好几片甚至因为波特率误差太大而导致无法进行正常的串口通讯,有精确定时和时钟需求的还是建议采用外部晶振作时钟源
作者: iofree    时间: 2019-2-19 11:58
新新科技 发表于 2019-2-19 11:11
加一片转换板可以实现LCD1602的IIC通信,我还没有遇到SPI接口的1602。104可以做成电压电流表?它有AD脚?

可以利用用外部RC充放电积分电路用软件模拟AD,当然精度比较差些,聊胜于无……
作者: 大鹏很正常    时间: 2019-2-19 16:37
内部时钟会有误差,如果想要准确计时,用外部时钟比较好。
作者: 刘铁民    时间: 2019-2-19 17:38
要求精度高可以外加个4060产生1Hz秒信号呀。这样不就解决了精度问题。104虽然没有ad脚。但是外部电路可以加个ad转换吧。8脚IC。!4个脚用于1602SPI显示。剩下二个脚用于电压电流数据输入。不知道用TM7711怎么样。我看他20-40MV精度好像是3%。可惜我不会编程。淘宝TM711电子秤ad转换IC。双路的0.7元一个。用在电压电流显示上不知道行不行
作者: Y_G_G    时间: 2019-2-19 19:36
新新科技 发表于 2019-2-19 11:06
如果几天下来快慢一分钟,那可以接受。而这104按厂家烧录工具提供的定时器设置例程编写的程序,感觉一小 ...

因为是使用了内部的时钟了,误差大是正常的,如果你用的是C来写,误差可能还会再大一点
片上的时钟能有5%的精度就不错了,而你做时钟的话,它是累加的,所以,想做时候,最好还是用有源时钟IC好一点
作者: tigerzq    时间: 2019-2-19 22:59
设计一个带自动校时的功能,每天自动校时
作者: lmn2005    时间: 2019-2-20 08:26
tigerzq 发表于 2019-2-19 22:59
设计一个带自动校时的功能,每天自动校时

这种构思已使用过,用外部的时钟电路也难免会有些小误差,我就是用这种方法来进行自动校正的。
作者: heyanrong1    时间: 2020-1-5 12:38
那个宝上有有LCD1602的IIC模块
作者: my_qianhe    时间: 2020-1-5 20:56
内置时钟的稳定性很不好 像这种建议做精度不太高的执行控制器,不建议用作高精度运算部件
作者: f556    时间: 2020-1-7 09:58
任何厂家芯片内的RC振荡精度都不高,包括TI大厂的。这由它的本质决定,所以有了晶振这东西,要想精度高只有用晶振。如要求更高,还得用温补晶振。
STC11F04E(20脚)内部RC标称5Mhz,实测4.6~4.8Mhz。
作者: jizhongbiao    时间: 2020-1-8 11:43
首先确定一下,你的时钟模式。在一个是不是定时器的初始设置太小了。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1