打印
[国产单片机]

STC单片机遇到的问题,请大家帮忙分析下~~!

[复制链接]
12297|102
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

本人新手,刚做了一款报警灯的产品,要求闪烁的频率一样(10个产品放在一起同时上电 用肉眼在5个小时内不能看出来一个慢一个快)。选用的STC11F01单片机,核心器件是PT4115做的恒流驱动,STC产生一个高低电平控制PT4115的开关,实现闪烁。但在测试的时候发现闪烁了半个小时后 10个产品中就有的会慢一点,用肉眼就能区分出来了,不同步闪烁了。开始用12M晶振,后面换了6M的也没有改善。
#include <STC11F.h>
#define uchar unsigned char
#define uint  unsigned int
sbit LED=P1^7;
sbit buz=P1^5;
uint m ; //计数中断次数

void Init_Timer0(void)
{
   TMOD|=0X01;
   TH0=0X9E;
   TL0=0X58;
   TR0=1;
   ET0=1;
   EA=1;
}

void main(void)
{
  P1M0=0X80;//输出模式推免
  P1M1=0X00;//
  Init_Timer0();
while(1);
}

void timer0()interrupt 1
{

  TH0=0X9E;
  TL0=0X58;
  m++;
  if(m==12)
   {
  LED=~LED;
  m=0;
   }
  }

QQ图片20140707135014.jpg (45.73 KB )

QQ图片20140707135014.jpg

QQ图片20140707135019.jpg (109.73 KB )

QQ图片20140707135019.jpg

相关帖子

沙发
ayb_ice| | 2014-7-7 14:34 | 只看该作者
只能提高晶掁精度了

难度不小,

毕竟5个小时时间,慢个100MS正常的,那么24小时也就慢约500MS,半秒钟

使用特权

评论回复
板凳
ayb_ice| | 2014-7-7 14:36 | 只看该作者
如果10个产品之间可以通信同步那就好办了

使用特权

评论回复
地板
3654532|  楼主 | 2014-7-7 14:57 | 只看该作者
ayb_ice 发表于 2014-7-7 14:34
只能提高晶掁精度了

难度不小,

晶振的精度也很难控制的 (你推荐那下那个牌子的晶振好些啊 可以试下的)~!最低要求两个钟也要做到啊~~!
这个是独立的东西 通信同步不现实了

使用特权

评论回复
5
3654532|  楼主 | 2014-7-7 15:01 | 只看该作者
ayb_ice 发表于 2014-7-7 14:36
如果10个产品之间可以通信同步那就好办了

程序也试了补偿的,T0的方式2 自动重装的,分频的,都没啥改善 ~~!

使用特权

评论回复
6
ayb_ice| | 2014-7-7 15:54 | 只看该作者
既然是独立工作的,没有必要这么严吧

使用特权

评论回复
7
xybcja| | 2014-7-7 16:51 | 只看该作者
3654532 发表于 2014-7-7 14:57
晶振的精度也很难控制的 (你推荐那下那个牌子的晶振好些啊 可以试下的)~!最低要求两个钟也要做到啊~~ ...

精度高的,你完全可以选择STC15的替代这个STC11系列的产品STC15W201S这款,自带内部高精度时钟跟复位的,SOP16的价格才1.5元

使用特权

评论回复
8
autopccopy| | 2014-7-7 20:19 | 只看该作者
3654532 发表于 2014-7-7 14:57
晶振的精度也很难控制的 (你推荐那下那个牌子的晶振好些啊 可以试下的)~!最低要求两个钟也要做到啊~~ ...

该案例依赖晶振的精度,试使用恒温晶振,有高稳读的,比常见晶振高2个数量级。但价格不菲啊而且体积大。

使用特权

评论回复
9
gxl117| | 2014-7-7 20:20 | 只看该作者
如果仅是这么个闪灯、报警的功能8脚的stc15f100w都够了

使用特权

评论回复
10
autopccopy| | 2014-7-7 20:20 | 只看该作者
xybcja 发表于 2014-7-7 16:51
精度高的,你完全可以选择STC15的替代这个STC11系列的产品STC15W201S这款,自带内部高精度时钟跟复位的, ...

如果你使用过STC15系列,或者认真看过数据手册,你就知道内置RC不可能比普通晶振精度高,不在一个数量级啊。:)

使用特权

评论回复
11
华丽生活| | 2014-7-7 22:00 | 只看该作者
单靠晶振觉得挺难得,在各个模块间建立通信来同步这样了?

使用特权

评论回复
12
Ketose| | 2014-7-8 09:18 | 只看该作者
楼主是十个LED用一个单片机控制出的问题?还是分别用十个MCU控制出了问题?

使用特权

评论回复
13
3654532|  楼主 | 2014-7-8 09:22 | 只看该作者
Ketose 发表于 2014-7-8 09:18
楼主是十个LED用一个单片机控制出的问题?还是分别用十个MCU控制出了问题? ...

上面图的10个产品放在一起做测试的时候,闪了三十多分钟就不一致了 有的会慢一点肉眼已经能分辨快慢了,10个产品当然是10个MCU控制的 独立的东西

使用特权

评论回复
14
gx_huang| | 2014-7-8 09:26 | 只看该作者
变态的要求。
只能采取温补有源晶振了。

使用特权

评论回复
15
3654532|  楼主 | 2014-7-8 09:31 | 只看该作者
gx_huang 发表于 2014-7-8 09:26
变态的要求。
只能采取温补有源晶振了。

两个小时能做到也勉强过关了~~!但是30来分钟就出现不一致了  有点说不过去 ,有什么地方可以改善一下,或者说程序上面的办法?

使用特权

评论回复
16
gx_huang| | 2014-7-8 09:49 | 只看该作者
3654532 发表于 2014-7-8 09:31
两个小时能做到也勉强过关了~~!但是30来分钟就出现不一致了  有点说不过去 ,有什么地方可以改善一下, ...

每个板子都单独校准一下,修正计时误差。
或者晶体的匹配电容改为可变电容,调可变电容,使频率尽量一致。
前提是晶体一致性要好,晶体太差,就没有办法了。

使用特权

评论回复
17
jekey| | 2014-7-8 10:20 | 只看该作者
同时上电,也不可能mcu同时开始运行程序。

使用特权

评论回复
18
gmgmgm| | 2014-7-8 10:43 | 只看该作者
这个难度大了,要想实现全部同步方式工作只有全部产品通过串口方式连接进行相互较准了,到了一定时间进行一次较准,再精准的时钟运行时间长了也会变得差距越来越大,总不可能全部时钟较准得一模一样吧

使用特权

评论回复
19
3654532|  楼主 | 2014-7-8 10:49 | 只看该作者
gmgmgm 发表于 2014-7-8 10:43
这个难度大了,要想实现全部同步方式工作只有全部产品通过串口方式连接进行相互较准了,到了一定时间进行一 ...

看了这么多回复好像单片机依靠外部普通晶振很难做到产品的一致性了啊~~!
总会出现不同步的现象了哟·~!要求两个钟也是没办法做到了对吧?

使用特权

评论回复
20
gmgmgm| | 2014-7-8 11:00 | 只看该作者
3654532 发表于 2014-7-8 10:49
看了这么多回复好像单片机依靠外部普通晶振很难做到产品的一致性了啊~~!
总会出现不同步的现象了哟·~! ...

对的,也许你听过这句话吧“两个钟的时间是不准的”

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

27

帖子

0

粉丝