找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3089|回复: 3
收起左侧

51单片机+1602液晶实现频率计设计资料(仿真+源码+电路图)

[复制链接]
ID:587757 发表于 2019-7-25 15:26 | 显示全部楼层 |阅读模式
设计的目的
     频率计作为测量仪器的一种,它的基本功能是测量信号的频率和周期频率计的应用范围很广,但是目前,市场上有各种多功能、高精度、高频率的数字频率计,但价格不菲。为适应工作的需要,可以用一种较小规模和单片机(AT89C51)相结合的频率计的设计方案,不但切实可行,而且体积小、设计简单、成本低、精度高、可测频带宽,大大降低了设计成本和实现复杂度。                                                                     
设计的内容及要求
    本设计以AT89C51单片机为控制核心,将外部的频率脉冲信号通过单片机计数端输入,由定时器/计数器T0负责定时,定时器/计数器T1负责对被测信号计数,该频率计的测量范围为1Hz~65534Hz,被测脉冲信号的频率可以随时进行调整,通过LCD液晶显示模块对被测信号的频率进行实时显示。该系统包括被测频率脉冲信号、单片机晶振电路、以AT89C51单片机为核心的频率测量模块、LCD液晶显示模块。

电路原理图:
原理图.png
proteus仿真图:

W(NOUIHSEKK3KXS5R@7D18Y.png

51单片机部分程序源代码:
  1. #include<reg51.h>
  2.       #include<intrins.h>
  3.        #define uchar unsignedchar
  4.        #define uint unsignedint
  5.        void init_lcd(void);
  6.        void disp_str(ucharx,uchar y,uchar *p);
  7.        sbit FS=P3^5;  //被测信号FS输入端
  8.        bit RDY=0;    //测量完成标志
  9.        uint msn;  //定时中断计数
  10.        uint count(void)   //测量FS的频率
  11.        {RDY=0;
  12.         TMOD=0x52;    //T0:定时方式2,T1:计数方式1
  13.         TH0=TL0=6;//T0定时时间为250us                                         
  14.            msn=4000;   //4000次中断正好1s
  15.            TH1=TL1=0x00; //T1工作于计数方式,初值为0
  16.            ET0=1;  //允许T0中断
  17.            EA=1;   //开中断
  18.            while(FS==1);     //等待被测信号变低
  19.            while(FS==0);    //等待被测信号变高
  20.            TR0=1;         //T0开始定时
  21.            TR1=1;  //T1开始计数
  22.            while(RDY==0); //等待1s
  23.            TR1=0;         //关闭T1、T0
  24.            TR0=0;
  25.            return(TH1*256+TL1); //返回计数值
  26.        }
  27.       
  28.        void timer0(void)interrupt 1 using 1
  29.        {msn--;
  30.         if(msn==0) //如果1s已到
  31.           RDY=1;   //设置测量完成标志位
  32.        }
  33.       void main()
  34.        {uint f;
  35.         ucharstr[9]="f=     Hz";                                 
  36.            uchar i;
  37.            init_lcd();     //液晶屏初始化
  38.            while(1)
  39.             {f=count();  //测量频率
  40.              _nop_();
  41.             for(i=6;i>=2;i--)    //测量结果转换为5位ASCII码
  42.              {str=f%10+0x30;
  43.               f=f/10;
  44.              }
  45.              disp_str(0,3,str);//显示测量结果
  46.             }                                         
  47.        }

复制代码

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:377803 发表于 2019-9-19 17:27 | 显示全部楼层
下载的文件不完整啊。没有C文件
回复

使用道具 举报

ID:63090 发表于 2020-5-21 20:38 | 显示全部楼层
下载的文件和截图完全不一致,而且下载的不能用,浪费分数啊

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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