基于51单片机的数字频率计

本文介绍了如何使用STC89C52单片机设计一个1Hz到100kHz频率范围的数字频率计,精度达到0.00单位。该计数器配有1602显示模块,并具备与PC串口通信及休眠功能。文中还提到了通过分频技术优化计数,并分享了源码供读者参考。
摘要由CSDN通过智能技术生成
这是去年电子设计大赛的参赛题目!

 

详细要求记不得了。

对信号做整形、滤波、放大(硬件这块不是我做的,就不说了。)

单片机的功能要求:

芯片用stc89c52,官方提供恩智浦的1769,cortex-m3的芯片,使用该芯片有加分。 我没用过,临时学是学不过来了!

1hz到100khz之间

误差精确到0.00个单位

有显示模块,我们用的1602

能与PC串口通信

能休眠

为了计数方便做了分频计数处理

 

源码就分享出来吧,需要的朋友可以拿去参考。。

 

#include<reg51.h>  
#include<stdio.h>
#define uchar unsigned char  
#define uint unsigned int  
#define LCD P0

sbit EN = P2^7;
sbit RS = P2^6;
sbit RW = P2^5;
sbit CON = P2^1;//通道选择
sbit Key = P2^0;

double f_data,s_data;
int over,flag,count,a,comsend;//定时结束标志位,信号处理位, ,sbuf
uchar buffer[16];
char ComBuf[16];
unsigned long t,f,s;//1s定时计数,,取值

/*-------------函数声明--------*/
void Delay(uchar x);//延时
void Write_Codee(uchar date); //液晶写命令
void Write_Data(uchar date);//液晶写数据
void Get_XY(uchar x,uchar y);//写数据位置
void Write_Str(uchar x,uchar y,uchar *p);//写字符
void Lcd_Init(void);//液晶初始化
void Survey_Init();//频率采集 初始化
void High_Init(void);//32分频 频率采集 初始化 >= 400k
void Lows_Process(void);//未分频 频率处理
void High_Process(void);//32分频 通道频率处理
void mode(void);
void First_Data();//通道选择
void Busy(void);

/*------
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值