一、资料内容
- (1)、基于51单片机的频率计proteus仿真设计一份;
- (2)、基于51单片机的频率计设计keli源代码一份;
- (3)、基于51单片机的频率计设计Altium designer 原理图一份;
- (4)、基于51单片机的频率计设计Altium designer PCB一份;
- (5)、基于51单片机的频率计proteus仿真与实物设计视频讲解一份;
二、设计要求
- (1)、本次设计要求以51系列单片机为核心,设计一款频率计装置;
- (2)、系统要求可以通过数码管模块显示相关数据;
- (3)、能够检测频率范围为0-999HZ(需要更高频率范围请留言);
三、相关资料截图
图一、系统proteus仿真界面截图
图二、系统Keil源程序界面截图
图三、 系统Altium designer原理图工程文件
图四、 系统Altium designer PCB工程文件
四、视频讲解
部分代码:
#include <reg52.h>
#define Segment P2
#define sl P0
sbit addr0=P1^0; //定义数据端口地址,000时16分频,100不分频
sbit addr1=P1^1;
sbit addr2=P1^2;
sbit clear=P1^3; //计数器清零
sbit ledM=P1^4; //档位led显示
sbit ledK=P1^5;
sbit ledB=P1^6;
unsigned char cnt; //定时1s计数
unsigned char d[4]; //对应数码管的各位
unsigned char level; //档位
unsigned int tN; //不同档位计时值
unsigned int fCnt; //脉冲下降沿次数
unsigned int regCnt; //脉冲次数暂存
unsigned int pCnt; //频率显示
unsigned char code Num[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e
};
void Delay(unsigned int DelayTime)
{
while(DelayTime--);
}
void disp()
{
if(level==0) //B位档
{
d[3]=0;
d[2]=pCnt/100;
d[1]=(pCnt%100)/10;
d[0]=pCnt%10;
sl=0xf8;Delay(1);Segment=Num[d[0]];Delay(300);//个
sl=0xf4;Delay(1);Segment=Num[d[1]];Delay(300);//
sl=0xf2;Delay(1);Segment=Num[d[2]];Delay(300);
sl=0xf1;Delay(1);Segment=Num[d[3]];Delay(300);
}