本帖最后由 haroldharold 于 2015-5-16 08:40 编辑
最近买了个电波表,型号西铁城AT8020-54L,本来开开心心的,以为永远不用对时也不会有误差了。用了几天后发现不对,每天睡觉时都无法自动对时,对时需要到窗户边手动对时,这个就不爽了,对强迫症的我来说是不可以接受的。不过再想,既然窗台上有信号,为什么不引进室内呢?淘宝买了电波接收模块,玩了几天,已经把电波接收下来,并用51单片机解析出来,但是没用啊,我的表收不到信号。没事,自有办法。单片机可以发出方波型号,可以把接收的电平信号重新以方波信号发出来。刚开始用51单片机尝试发出方波,不过51的频率太低,无法精确发出68.5K的方波,不是大了就是小了,后来选了STM32单片机,终于可以了,室外电波模块电平为低的时候不发方波,电平为高的时候发送方波,方波信号68.49KHz,误差0.01KHz。电波表放在单片机附近,几分钟后自动对时就成功了,以前在室内是绝对无法对时成功的。
68.5KHz高精度方波
需要对时的西铁城AT8020-54L光动能电波表
室内接收单片机电波的测试模块,测试单片机发出的频率是否正确。
主要代码如下
while (1)
{
gpio_b_data = GPIO_ReadInputData(GPIOB);//输入电波电平信号,室外模块输入到单片机
if((gpio_b_data&0x0001) == 0)//如果是低电平,发出68.5K方波
{
gpio_a_data++;
GPIO_Write(GPIOA , gpio_a_data);//68.5K方波
for(i = 0; i < 50; i++)//精确延时,使用keil C优化级别需要调到0,否则无法精确到68.5KHz
{
j++;
j++;
}
j++;
j++;
j++;
j++;
j++;
j++;
j++;
j++;
j++;
j++;
j++;
j++;
j++;
j++;
}
else
{
GPIO_Write(GPIOA,0x0000); //初始化PA端口让 LED处于熄灭状?
}
}
|