矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
楼主: ygnlhxyzj

自制10hz到2.4G频率计

  [复制链接]
     
发表于 2017-9-23 18:03:04 | 显示全部楼层
mzvv 发表于 2015-7-29 16:59
闲着无聊,按照作者提供的资料仿制了一个,使用的是25M的电路及程序,制作完成后,通电发现与青年佬显示的一 ...

mzvv大师:我按照你这个版本把程序写进STC89C52RC,  能显示,但是显示不正常,想请教下这是什么问题。还有就是想问问你使用的单片机是STC89C52RC吗?还是其他型号?AT89C52可不可以以用这个程序
回复 支持 反对

使用道具 举报

     
发表于 2017-9-23 21:12:14 | 显示全部楼层
ygnlhxyzj 发表于 2017-9-23 08:55
关于显示00000M000K00HZZG问题,我的原程序设计是显示0000M000K000HZ G的,我也不知道为什么你的这样显示 ...

void Displayunlong(unsigned long long1)
  {
      char pp1,i ;
                   P1_1=1;
             if( P1_1==0) //高频
            {   
               long1=long1*128;
               DisplayOneChar(15, 0, 'G');
            }
            else
            {
              DisplayOneChar(15, 0, 'D');      
            }
            P3_7=1;
            if( P3_7==0) //1秒  0.1秒闸门
            {   long1=long1*10;
                    cc=12;
                                        pp=0x50;
                                         pph=0x79;
                                        pd=1;
                                //        we=131;
                                        DisplayOneChar(15, 1, 'k');
            }
            else
            {
                  cc=114;
                                  pp=0x4c;
                                  pph=0x71;
                                 // we=136;
                                  pd=0;
                                  DisplayOneChar(15, 1, 'm');
            }

                                jishu=long1;                                         
    // WriteCommandLCM(0x01,1); //显示清屏
  for (i=11;i>=0;i--)
    {  
      pp1=long1 % 10;
                if(i==8)
                {
                  DisplayListChar(8, 0, uctechK); //显示K
                }
                else
                {
                        if(i==4)
                   {
                    DisplayListChar(4, 0, uctechM);//显示M
                   }
                        else
                        {
           DisplayOneChar(i ,0,uctech[pp1]);//显示数字
           long1=long1/10;
                   }
                }
    }
         DisplayListChar(12, 0, uctech1);

       
         long1=1000000000/jishu ; //显示周期
         if (jishu==0)
     long1=0;
           for (i=11;i>=0;i--)
    {  
      pp1=long1 % 10;
                if(i==8)
                {
                  DisplayOneChar(8, 1, 'u'); //显示u
                }
                else
                {
                        if(i==4)
                   {
                    DisplayOneChar(4, 1, 'm');//显示m
                   }
                        else
                        {
           DisplayOneChar(i ,1,uctech[pp1]);//显示数字
           long1=long1/10;
                   }
                }
                 DisplayOneChar(12, 1, 'n'); //显示u
                  DisplayOneChar(13, 1, 's'); //显示u
    }
回复 支持 反对

使用道具 举报

     
发表于 2017-9-23 21:13:09 | 显示全部楼层
cuijl1881840 发表于 2017-9-23 21:12
void Displayunlong(unsigned long long1)
  {
      char pp1,i ;

请帮忙看看源程序有没有出错的地方,谢谢!
回复 支持 反对

使用道具 举报

     
发表于 2017-9-23 21:27:38 | 显示全部楼层
EN = 0; //若晶振速度太高可以在这后加小的延时  
Delay5Ms();
EN = 1;
EN = 1;
EN = 1;
Delay5Ms();
  EN = 0;
回复 支持 反对

使用道具 举报

     
发表于 2017-9-23 21:39:10 | 显示全部楼层
//按指定位置显示一串字符
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)
{
unsigned char ListLength;

  ListLength = 0;
Y &= 0x1;
X &= 0xF; //限制X不能大于15,Y不能大于1
while (DData[ListLength]>0x19) //若到达字串尾则退出
  {
   if (X <= 0xF) //X坐标应小于0xF
    {
     DisplayOneChar(X, Y, DData[ListLength]); //显示单个字符
     ListLength++;
     X++;
    }
  }
}

//5ms延时
void Delay5Ms(void)
{
unsigned int TempCyc = 8;
while(TempCyc--);
}

//400ms延时
void Delay400Ms(void)
{
unsigned char TempCycA = 5;
unsigned int TempCycB;
while(TempCycA--)
{
  TempCycB=7269;
  while(TempCycB--);
};
}


回复 支持 反对

使用道具 举报

     
发表于 2017-9-23 21:58:34 | 显示全部楼层
ygnlhxyzj 发表于 2017-9-23 08:49
关于低频不能测量的问题,不知道你的电路是否使用74hc14施密特电路整形,我买了两种74hc14,一种是贴片的 ...

//按指定位置显示一个字符
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
{
Y &= 0x1;
X &= 0xF; //限制X不能大于15,Y不能大于1
if (Y) X |= 0x40; //当要显示第二行时地址码+0x40;
X |= 0x80; // 算出指令码
WriteCommandLCM(X, 1); //这里不检测忙信号,发送地址码
WriteDataLCM(DData);
}
回复 支持 反对

使用道具 举报

     
发表于 2017-9-24 00:08:25 | 显示全部楼层
再试试能不能发图片,我觉得1602屏的上下两行数字再往左移一位就可以了,但是应该怎样去调呢?看来是要努力学习好单片机C语言才能更进一步了!
回复 支持 反对

使用道具 举报

     
发表于 2017-9-24 17:15:58 | 显示全部楼层
cuijl1881840 发表于 2017-9-23 18:03
mzvv大师:我按照你这个版本把程序写进STC89C52RC,  能显示,但是显示不正常,想请教下这是什么问题。还 ...

拍个图片上来看看
回复 支持 反对

使用道具 举报

     
发表于 2017-9-24 18:09:44 来自手机 | 显示全部楼层
我试了几次发照片发不上来,不知道是否权限的问题,你有邮箱吗?我发你邮箱好吧,谢谢指点!
回复 支持 反对

使用道具 举报

     
发表于 2017-9-24 18:37:05 来自手机 | 显示全部楼层
发照片上来...
IMG_20170920_134017.jpg
IMG_20170920_151249.jpg
IMG_20170920_134021.jpg
IMG_20170920_151357.jpg
回复 支持 反对

使用道具 举报

     
发表于 2017-9-24 23:49:29 来自手机 | 显示全部楼层
szkssyj 发表于 2015-9-14 22:35
我的初始成功,发个图

和117楼;120楼szkssyj的显示是一样的,不知道他的频率计后来有没有调整准确。
回复 支持 反对

使用道具 举报

     
发表于 2017-9-25 16:30:26 | 显示全部楼层
szkssyj 发表于 2015-9-14 22:35
我的初始成功,发个图

szkssyjz版主你好!想问问你这个频率计是按照那个版本的资料制作的?后来的使用情况怎样了?
回复 支持 反对

使用道具 举报

     
发表于 2017-9-25 20:48:11 | 显示全部楼层
好长时间不用了,有点模糊,使用不是很稳定。
回复 支持 反对

使用道具 举报

     
发表于 2017-10-4 22:03:14 | 显示全部楼层
国庆假期这几天,到处人山人海,干脆在家闭关修炼,又来折腾这频率计,经过几天的努力,终于有所收获,高频档,低频档的准确度都算可以了,在楼主的提议下增加了一块贴片的74HC14D施密特触发器,结果在低档位可以测量到10HZ到28MHZ的信号了,后来又参考了其他频率计的前置放大电路,采用了一个2SK241GR场效应管做前级,C2347三极管做后级的两级放大电路,提高了仪器的灵敏度,很多数字万用表测量不到的电脑主板上的32768时钟,也可以准确测出来。低频档搞好后,高频档还是不稳定,MHZ位基本正确,但是KHZ和HZ位数字不停跳动,根本无法读数,怀疑是高频部分供电不良,给前置放大电路和MB506都串联个33微亨的电感和0.01微法电容来滤波,但是没有改善。再想想会不会是输入到MB506的信号因为阻抗匹配问题或者信号幅度太小造成的呢,试试用一个2SD241GR场管组一个前级放大电路,输入耦合电容用10P的,结果测量几个晶振,结果都很准确,测量无绳电话的48MHZ发射信号也正常,因为现在手头上没有对讲机,不能确定在几百MHZ的频段是否正常。



回复 支持 反对

使用道具 举报

     
发表于 2017-10-5 08:44:25 | 显示全部楼层
厉害。。。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

蒙公网安备 15040402000005号

GMT+8, 2024-5-17 12:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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