矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
楼主: 6AJ8

数字式频率计的制作(翻译)

  [复制链接]
     
发表于 2018-7-2 11:09:42 | 显示全部楼层
还没洗呢。
回复 支持 反对

使用道具 举报

     
发表于 2018-7-6 11:19:13 | 显示全部楼层
6AJ8 发表于 2009-5-17 18:13
一、在程序注释中,有一句话:소비 전류가 일정하&#4417 ...

为了让电流达到一定的水平
回复 支持 反对

使用道具 举报

     
发表于 2018-8-22 17:26:20 | 显示全部楼层

辛苦了,感谢!
回复 支持 反对

使用道具 举报

     
发表于 2018-8-23 00:18:50 | 显示全部楼层
jiangjieke 发表于 2018-4-14 17:18
外壳锯成啥样了?发个图看看。

忘了回帖。该打。
(, 下载次数: 11)
(, 下载次数: 7)
(, 下载次数: 7)
(, 下载次数: 8)

仅仅是为了面板的安装和机箱的厚度进行的外科手术。
回复 支持 反对

使用道具 举报

     
发表于 2018-8-23 10:03:52 | 显示全部楼层
2549608436 发表于 2018-8-23 00:18
忘了回帖。该打。

不错!机箱的厚度减少近一半,便于放置。
回复 支持 反对

使用道具 举报

     
发表于 2018-10-23 21:37:18 | 显示全部楼层
高手啊,学习了。
回复 支持 反对

使用道具 举报

     
发表于 2019-7-5 17:09:37 | 显示全部楼层
谢谢,不知道那有空板,和原帖里的一样就好
回复 支持 反对

使用道具 举报

     
发表于 2019-7-5 21:17:05 | 显示全部楼层
谢谢楼主的艰辛翻译
回复 支持 反对

使用道具 举报

     
发表于 2020-9-28 12:53:54 | 显示全部楼层
这个频率计最主要的问题是:输入放大整形部分,有些不太合理,需要被测信号足够强,才能测出正确结果。
这个需要改进。

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
发表于 2020-9-28 15:50:53 | 显示全部楼层
淡容生老师仿制改进的好几款,比这个简单一些,特别是用pic16f628那款,简洁。
回复 支持 反对

使用道具 举报

     
发表于 2020-9-28 21:14:28 | 显示全部楼层
很好的资料,赞!
回复 支持 反对

使用道具 举报

     
发表于 2020-10-6 13:52:30 | 显示全部楼层
最新版程序
//STC89C52RC 24.00M晶振
#include <STC89C5xRC.H>
#include <stdlib.h>
#include <stdio.h>
typedef unsigned char u8;
typedef unsigned int u16;
typedef unsigned long int u32;
sbit P36_o_74f161_clr_n = P3^6;//外部计数器F161复位
sbit P35_o_74f161_enp = P3^5;//外部计数器F161有效(Enable)
sbit P30_io_74hc393_clr_hold = P3^0;//外部计数器HC393复位/HOLD输入
sbit P37_i_prescaler = P3^7;//64分频的预分频器
u8 dula[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90},
   wela[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f},
         fnd[8],mfnd[8],fnd_state,boat;
u16 trimer,int_state;
u32 trailer,task;
bit hold;                                                                                               
                                                                                                                       
void TIMER1() interrupt 1
{
TL1 = 0x60;// 4000 2 M Sec 500 Times
TH1 = 0xF0;// 4000 2 M Sec 500 Times
P0 = 0xff;
P2 = wela[fnd_state];
P0 = fnd[fnd_state++];
fnd_state &= 0x07;
if(int_state == 0)
{
  P35_o_74f161_enp = 0;//外部计数器F161计数禁止
  P30_io_74hc393_clr_hold = 1;//外部计数器HC393复位
  P36_o_74f161_clr_n = 0;//外部计数器F161复位
  TL0 = 0x00;//内部计数器复位
  TH0 = 0x00;//内部计数器复位
  hold = P30_io_74hc393_clr_hold;//HOLD(保持)键状态输入
  P36_o_74f161_clr_n = 1;//外部计数器F161有效(Enable)
  P30_io_74hc393_clr_hold = 0;//外部计数器HC393有效(Enable)
  P35_o_74f161_enp = 1;//外部计数器F161进行计数
}
if(int_state == 316)//10GHz状态(64分频的预分频器)
{
  if(!P37_i_prescaler)//门控时间为0.64秒
  {
   for (trimer = 0; trimer<202; trimer++);//15个机器周期单位
   // 测试信号24MHz输入
   boat++; // 15360000 用于显示,需调整
   boat++; //  延迟1个机器周期(12个时钟周期)
   boat++; // 15359988
   boat++; // 15360000
   // boat++; // 15360012
   P35_o_74f161_enp = 0;//外部计数器停止
   trailer = TH0;
   trailer = (trailer << 20) & 0x0ff00000;
   task = TL0;
   task = (task << 12) & 0x000ff000;
   trailer |= task;
   task = P3;
   task = (task << 7) & 0x00000f00;
   trailer |= task;
   task = P1 & 0x000000ff;
   trailer |= task;
   P35_o_74f161_enp = 1; // ?? ??? ???? ?????
// 电流消耗,
// 外部计数器将重新开始。
  }
}

if(int_state == 494)//100 MHz Mode 1 Sec Gate Time
{
  if (P37_i_prescaler)//1 Sec Gate Time
  {
   for (trimer = 0; trimer<248; trimer++);//15个机器周期单位
   // 测试24MHz信号源输入
   boat++;//24000000 用于显示,需调整
   boat++;//
   boat++;//
   boat++;//
   boat++;//延迟1个机器周期(12个时钟周期)
   boat++;//23999988
   boat++;//24000000
   //boat++;//24000012
   P35_o_74f161_enp = 0;//外部计数器停止
   trailer = TH0;
   trailer = (trailer << 20) & 0x0ff00000;
   task = TL0;
   task = (task << 12) & 0x000ff000;
   trailer |= task;
   task = P3;
   task = (task << 7) & 0x00000f00;
   trailer |= task;
   task = P1 & 0x000000ff;
   trailer |= task;
   P35_o_74f161_enp = 1; // ?? ??? ???? ?????
// 电流消耗,以时间表
// 外部计数器重新开始。
  }
}

if(int_state == 506)//1Hz数字显示
{
  boat = trailer % 10;
  mfnd[7] =dula[boat & 0xf];
  trailer /= 10;
}

if(int_state == 507)//10Hz数字显示
{
  boat = trailer % 10;
  mfnd[6] =dula[boat & 0xf];
  trailer /= 10;
}

if(int_state == 508)//100Hz数字显示
{
  boat = trailer % 10;
  mfnd[5] =dula[boat & 0xf];
  trailer /= 10;
}

if(int_state == 509)//1KHz数字显示
{
  boat = trailer % 10;
  mfnd[4] =dula[boat & 0xf];
  trailer /= 10;
}

if(int_state == 510)//10KHz数字显示
{
  boat = trailer % 10;
  mfnd[3] =dula[boat & 0xf];
  trailer /= 10;
}

if(int_state == 511)//100KHz数字显示
{
  boat = trailer % 10;
  mfnd[2] =dula[boat & 0xf];
  trailer /= 10;
}

if(int_state == 512)//1MHz数字显示
{
  boat = trailer % 10;
  mfnd[1] =dula[boat & 0xf];
  trailer /= 10;
}

if(int_state == 513)//10MHz数字显示
{
  boat = trailer % 10;
  mfnd[0] =dula[boat & 0xf];
  trailer /= 10;
}
int_state++;
if(int_state >= 514)
{
  int_state = 0;
  if (hold)
  {
   fnd[0] = mfnd[0];
   fnd[1] = mfnd[1];
   fnd[2] = mfnd[2];
   fnd[3] = mfnd[3];
   fnd[4] = mfnd[4];
   fnd[5] = mfnd[5];
   fnd[6] = mfnd[6];
   fnd[7] = mfnd[7];
   if(P37_i_prescaler) fnd[1] &= 0x7F;//MHz点
   else fnd[0] &= 0x7F;//GHz点
  }
}
}

void main()
{
TMOD=0x15;//0b00010101 Timer0 = Mode1, Counter, use TR0;Timer1 = Mode1, Timer, use TR1
TL0=0X00;
TH0=0X00;
TL1=0X00;
TH1=0X00;
TR0=1;//Timer 0 计数开始
TR1=1;//Timer 1 计数开始
ET1=1;//设置定时器1中断状态
EA=1; //设置全局中断状态
while(1);
}

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
发表于 2020-10-6 15:22:27 | 显示全部楼层
正直电子 发表于 2020-10-6 13:52
最新版程序
//STC89C52RC 24.00M晶振
#include

和旧版有什么区别啊? 大师您能给编译好固件上传一下么?
100吗4M 002.JPG
回复 支持 反对

使用道具 举报

     
发表于 2020-10-7 17:07:21 | 显示全部楼层
不错不错,受教了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2024-4-25 02:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表