自适应数字频率计.docx

上传人:b****5 文档编号:2836394 上传时间:2022-11-15 格式:DOCX 页数:13 大小:346.63KB
下载 相关 举报
自适应数字频率计.docx_第1页
第1页 / 共13页
自适应数字频率计.docx_第2页
第2页 / 共13页
自适应数字频率计.docx_第3页
第3页 / 共13页
自适应数字频率计.docx_第4页
第4页 / 共13页
自适应数字频率计.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

自适应数字频率计.docx

《自适应数字频率计.docx》由会员分享,可在线阅读,更多相关《自适应数字频率计.docx(13页珍藏版)》请在冰豆网上搜索。

自适应数字频率计.docx

自适应数字频率计

成都信息工程学院电子工程学院

 

[电子综合设计]

总结报告

题目:

基于单片机的自适应数字频率计

专业:

电子信息工程

班级:

姓名:

指导教师:

评分:

2012年11月27日

目录

一、项目计划2

(一)项目分析2

(二)方案设计4

(三)可行性分析5

(四)项目执行计划6

1.项目的整体规划6

2.项目具体流程安排7

二、设计说明7

(一)各模块硬件电路设计7

1.分频和选频电路7

2.单片机控制系统8

3.数码管显示电路9

4.系统总原理图9

5.系统PCB图10

(二)各模块软件设计11

一、项目计划

(一)项目分析

1.数字频率计的定义

数字频率计是采用数字电路制成的实现对周期性变化信号的频率的测量。

2.优点及用途

数字频率计是计算机、通信设备、音频视频等科研生产领域不可缺少的测量仪器。

它是一种十进制数字,显示被测量信号频率的数字测量仪器。

它的基本功能是测量正弦信号,方波信号以及其他各种单位时间内变化的物理量。

在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精度高,显示直观,所以经常要用到数字频率计。

(二)方案设计

3.设计要求

设计一个计频器,该计频器基本能:

完成测试输入信号的频率,量程范围1~10MHZ;

自动选择最佳分频频段,提高测量精度和范围。

4.设计思路

频率测量就是在1S时间内对信号进行计数,计数值就是信号频率的信号频率;用单片机设计数字频率计可以使用单片机的计数器对信号脉冲进行计数,再由单片机取出读数并显示。

因为单片机能够直接采集的信号频率有限,所以要先对信号进行分频,分频后的信号进入单片机采集,再由单片机计算得出信号频率后在自行选出合适的分配数以得到更精确的频率值。

(三)可行性分析

5.项目预算

品名

数量

PC机

1台

电烙铁

1个

焊锡丝

若干

万用表

一只

电阻

若干

电容

若干

74LS393

1个

STC12C5A60S2

1个

CD4051

1个

4位共阴数码管

1个

12M晶振

1个

排针

若干

1)材料需求:

6.

技术支持:

Protel99se

Keil4

(四)项目执行计划

7.项目的整体规划

●首先,进行产品整体及实现过程的构思;

●然后,分享产品特性,进行资料查阅,设计出产品的基本架构;

●绘制出原理图,并根据原理图编写出程序和制作出硬件;

●对产品进行调试,校正,确定产品精度,完成产品操作说明书及注意事项。

8.项目具体流程安排

第1-3天:

软件负责人负责针对自适应数字频率计的性能需求进行软件思路设计并与小组所有成员讨论交流获得完整思路;

第4-6天:

硬件负责人通过软件负责人的思路完成自适应数字频率计电路板设计,其中包括硬件原理图和PCB。

第7-9天:

小组成员在硬件负责人的带领下做出硬件初步雏形,并完成整个安装过程;此过程中软件负责人负责编写出软件代码;

第10天:

软件与硬件联合调试,小组成员联合讨论提出修改意见并记录;

第11-13天:

根据联合调试结果,试验出最适合的产品尺寸,硬件环境以及工作环境,并记录下最优条件,对硬件做出一定的改善;

第14-15天:

联合调试优化,完成产品并编写说明书。

(注:

整个过程全组参与,并由文档撰写负责人记录所有调试过程及结果)

二、设计说明

(五)各模块硬件电路设计

9.分频和选频电路

采用74HC393芯片进行分频,信号送入芯片中,使用74HC393分出8路信号、分别是2、4、8、16、32、64、128、256分频,因为信号最高频率为10M,256分频可以不使用。

采用CD4051进行选频,分别接受不分频、2、4、8、16、32、64、128分频,由单片机控制,选择输出的分频数。

10.单片机控制系统

一个单片机的最小系统,由STC12C5A60S2为核心组成。

外围电路有复位和晶振电路,以及一些必要管脚。

11.数码管显示电路

单片机将处理好的信号频率数发生到数码管上,数码管上显示出频率。

单位为KHZ。

12.系统总原理图

13.系统PCB图

(六)各模块软件设计

2)

开始

计算频率选择分频

选择分频

初始化

初始化

总流程图

 

数码管显示

3)初始化

voidInit(void)

{

P1=0x01;//打开CD4051X1口

num_div=1;//CD4051X1口分频为2的1次方

TMOD=0x51;//T0计时16位,T1计数16位

TL0=-50000;//定时50ms赋初值

TH0=(-50000)>>8;

TH1=0;//计数

TL1=0;

ET0=1;//溢出中断允许

ET1=1;

TR0=1;//T0定时运行

TR1=1;//T1计数运行

EA=1;//总中断使能

}

4)计算频率、选择分频

voidHextoBCD(unsignedcharx,unsignedchary)

{

longintz;

z=(x<<8)+y;//提取出计数器的值

if(dispflag==3)

{

z=(overflow_num*65536+z)*128;

}

else

{

z=(overflow_num*65536+z)*2;

}

overflow_num=0;

 

if(z>1000000)//选择分频

{

z=z/1000;

dispflag=3;

P1=0x07;//打开CD4051X7口

num_div=7;//CD4051X7口分频为2的7次方

}

elseif(z>100000)

{

z=z/100;

dispflag=2;

P1=0x01;//打开CD4051X1口

num_div=1;//CD4051X1口77[[

}

elseif(z>10000)

{

z=z/10;

dispflag=1;

P1=0x01;//打开CD4051X1口

num_div=1;//CD4051X1口

}

else

{

z=z+z;

z=z/2;

dispflag=0;

P1=0x01;//打开CD4051X1口

num_div=1;//CD4051X1口分频为2的1次方

}

z=(int)z;

DispBuf[3]=z/1000;

z%=1000;

DispBuf[2]=z/100;

z%=100;

DispBuf[1]=z/10;

z%=10;

DispBuf[0]=z;

}

voidtimer0(void)interrupt1

{

unsignedcharx,y;

TF0=0;//清除TF0溢出标志位

TL0=-50000;//定时50ms赋初值

TH0=(-50000)>>8;

count++;

if(count==20)//20次为1s

{

count=0;

TF0=0;//清除TF0溢出标志位

TR0=0;//T0定时停止

TR1=0;//T1计数停止

x=TH1;//高位

y=TL1;//低位

HextoBCD(x,y);

Init_Reset();

}

}

voidtimer1(void)interrupt3

{

TF1=0;//清除T1计数溢出标志

TR1=0;//T1计数停止

overflow_num++;//溢出,计数超过T1计数范围256//1s没到溢出了就分频

TR1=1;//T1计数开始

}

5)数码管显示程序

voiddisplay()//显示

{

for(i=0;i<4;i++)

{

P2=LedPosit[i];

m=DispBuf[i];

P0=acLedSegCode[m];

P0=0X00;//影消

}

switch(dispflag)

{

case0:

for(i=0;i<4;i++)

{

P2=LedPosit[i];

m=DispBuf[i];

P0=acLedSegCode[m];

if(i==3)

{

P0|=0X80;//显示小数点

}

P0=0X00;

};break;

case1:

for(i=0;i<4;i++)

{

P2=LedPosit[i];

m=DispBuf[i];

P0=acLedSegCode[m];

if(i==2)

{

P0|=0X80;

}

P0=0X00;

};break;

case2:

for(i=0;i<4;i++)

{

P2=LedPosit[i];

m=DispBuf[i];

P0=acLedSegCode[m];

if(i==1)

{

P0|=0X80;

}

P0=0X00;

};break;

case3:

for(i=0;i<4;i++)

{

P2=LedPosit[i];

m=DispBuf[i];

P0=acLedSegCode[m];

if(i==0)

{

P0|=0X80;

}

P0=0X00;

};break;

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 设计艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1