简易频率计数器设计Word格式文档下载.docx

上传人:b****1 文档编号:14358936 上传时间:2022-10-22 格式:DOCX 页数:11 大小:314.08KB
下载 相关 举报
简易频率计数器设计Word格式文档下载.docx_第1页
第1页 / 共11页
简易频率计数器设计Word格式文档下载.docx_第2页
第2页 / 共11页
简易频率计数器设计Word格式文档下载.docx_第3页
第3页 / 共11页
简易频率计数器设计Word格式文档下载.docx_第4页
第4页 / 共11页
简易频率计数器设计Word格式文档下载.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

简易频率计数器设计Word格式文档下载.docx

《简易频率计数器设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《简易频率计数器设计Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。

简易频率计数器设计Word格式文档下载.docx

设计是以MCS-51系列单片机为核心的最小系统,主要由复位电路、晶振电路、数码管显示电路组成。

1.单片机最小系统简介

单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统.对MCS-51系列单片机来说,最小系统一般应该包括:

单片机、晶振电路、复位电路。

结构图如图所示:

 

各部分的功能介绍如下:

复位电路:

由电容串联电阻构成,由图并结合"

电容电压不能突变"

的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定.典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位.一般这个电阻和电容的典型值为10K和10uF。

按键复位就是在复位电容上并联一个开关,当开关按下时电容被放电、RST也被拉到高电平,而且由于电容的充电,会保持一段时间的高电平来使单片机复位。

使用6MHz的晶体振荡器作为振荡源,由于单片机内部带有振荡电路,所以外部只要连接一个晶振和两个电容即可,电容容量一般在15pF至50pF之间。

晶振电路:

典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)/12MHz(产生精确的us级时歇,方便定时操作)

2、计数器工作原理

利用单片机的计数器和定时器的功能对被测信号进行计数。

编写相应的程序可以使单片机自动调节测量的量程,并把测出的频率数据送到显示电路显示。

本频率计的设计以AT89C51单片机为核心,利用其内部的定时/计数器完成对待测信号的频率的测量。

AT89C51单片机内部有2个16位定时/计数器,定时/计数器的工作可以由编程实现定时、计数和产生计数溢出时中断要求的功能。

设计定时/计数器0设置工作在定时方式,定时/计数器1设置在计数方式。

在定时器工作方式下,在被测时间间隔内,每一个机器周期,计数器自动加1,这样以机器周期为基准可以进行对时间间隔的测量。

在计数器工作方式下,加至外部引脚的待测信号发生从1到0的跳变时计数器加1,这样在计数器的控制下可以用来测量待测信号的频率。

外部输入在每个机器周期被采样一次,这样检测一次从1到0的跳变至少需要2个机器周期(24个震荡周期),所以最大计数速率为时钟频率的1/24(使用12MHz时钟时,最大计数速率为500KHz)。

由于定时器T0工作在定时方式时最大的定时时间大约为50ms,若要定时1S,可以采用定时20ms,中断50次来完成1s的定时。

对于定时20ms来说,用定时器方式1可实现。

信号频率的计算:

T1工作在计数方式时最大的计数值为216,若假设1S内溢出C1次,最后未溢出的计数值为C2,则F=C1*216+C2=TC1*65536+(TH1*256+TL1)。

四、程序设计

根据设计项目所需功能,我们先进行初始化,在待机状态下,采集频率。

然后检测是否有按钮按下,若按钮按下,则数码管显示所采集的频率,再按下键0时则不显示。

系统实现所有功能,其程序框图如图所示:

编写的源程序如下:

#include<

reg51.h>

bitint_flag;

unsignedcharvolatileTC1;

unsignedcharvolatileTC2;

unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

//共阴极数码管0~9编码

unsignedcharcodetemp[]={0xfe,0xfd,0xfb,0xf7};

//四位数依次为0,从右至左依次点亮数码管

unsignedlongsum;

unsignedcharLed[4];

voiddelay(unsignedchary)//延时

{

unsignedchari;

while(y--)

for(i=100;

i>

0;

i--);

}

voidinit(void)//中断初始化

{

TMOD=0x51;

//T1计数,T0定时

TH0=(65536-50000)/256;

//定时50ms

TL0=(65536-50000)%256;

TH1=0x00;

TL1=0x00;

//计时器清零

voiddisplay(void)//显示函数

for(i=0;

i<

4;

i++)

{

P2=temp[i];

//片选

P0=table[Led[i]];

//取数据显示

delay

(1);

//延时1毫秒(有差显示,依次显示四位,只是时间差很小,一般难以肉眼识别)

}

voidmain(void)

EA=1;

//开中断

init();

//函数初始化

TR0=1;

TR1=1;

ET1=1;

ET0=1;

//启动定时、计数器

while

(1)

if(int_flag==1)

int_flag=0;

sum=TL1+TH1*256+TC1*65536;

//计算脉冲个数,TC1为计数器计数溢出次数,TL1,TH1为当前计数器值

Led[3]=sum%10000/1000;

//显示千位

Led[2]=sum%1000/100;

//显示百位

Led[1]=sum%100/10;

//显示十位

Led[0]=sum%10;

//显示个位

TC1=0x00;

TC2=0;

TH1=0x00;

TL1=0x00;

TR1=1;

}

display();

//调用显示函数,1s更新一次

voidint_t0(void)interrupt1//执行开总中断时同时执行中断计时,定时器0中断

TH0=(65535-50000)/256;

//定时器赋值

TC1++;

if(TC1==20)//定时1s

TR1=0;

//关定时器

int_flag=1;

voidint_T1(void)interrupt3//计数器中断1

TC2++;

五、Proteus仿真

Proteus仿真全图如下:

(输入信号频率为800Hz,计数存在一些误差)

六、组装及调试部分

在软件仿真成功交老师检查后,就可以去领取器件开始做硬件设计了。

硬件设计采用自制PCB印刷板。

自制PCB板使用的软件工具为:

AltiumDesigner08summer,设计制作过程如下:

1、使用AltiumDesigner软件的原理图设计工具,根据Proteus设计原理图,并检查电气连接;

2、给原理图中的各个元件添加PCB封装,若没有的需要自己画封装图;

3、导入PCB设计界面,对元器件布局及连线,由于实验室条件不宜作双面板,皆地面布线,且存在四根飞线;

4、改变元件封装的图中元器件的焊孔、焊盘的大小及线的宽度以适宜实验室条件,制造输出,再打印。

5、转印将设计的PCB图印制到PCB板上;

6、腐蚀PCB板,约耗时15min左右;

7、钻孔,需要根据元器件的引脚大小选择合适的针头。

8、找齐器件并焊接;

焊接时注意引脚的焊锡一定要充足,避免接触不良,注意晶振电路应尽量靠近单片机芯片;

9、检查电路的连接是否正确及各个电路是否连通的;

10、使用单片机开发板把设计的程序烧写到单片机里面;

11、给电路上电进行检测测试,查看结果;

12、根据上电后的情况进行电路检测及修改使达到设计效果。

调试步骤及技巧:

第一:

用万用表检测电源是否接通,主要是看看40脚和20脚之间是否有5V电压。

第二步:

检测第31引脚,是否有5V电源,目的是确保使用了片内存储器。

第三步:

检测P3口或P2口的空闲电压是否有5V电压,如果没有,说明单片机系统没有工作。

第四步:

用万用表检测复位电路,通过复位按键,检测第9脚的电压是会变化。

如果按键没有按下,电压为0V,按键按下后,电压立刻变为5V,之后很快的降为0V,则表示复位电路正常。

第五步:

用示波器检测振荡电路,主要是检测第18、19脚。

检测是否有振荡波产生。

如果有,表示振荡电路正常。

最后,检测每条PCB板上的焊接走线是否有短路、断路、虚焊等焊接故障。

调试问题分析:

1、电路焊接完毕后,上电电源显示灯亮,并且40脚和20脚之间是否有5V电压。

2、检测第18、19脚引脚时发现,两个电容错接为电源端,并且由于PCB走线不够漂亮,有点影响电路的导通性,修改后问题得以解决,有振荡波产生。

3、复位电路经检测正常。

4、检查显示电路,上电后数码管不能显示,但是若加高电平到数码管的位选端(6、8、9、12端),数码管能够逐位显示,即数码管电路无问题。

5、最后的问题就是单片机的外围电路均无问题,且程序均无问题,但是不能驱动数码管使其显示,由于时间比较的紧迫,没有再进行仔细的研究。

后面仔细思考觉得应该是以下原因:

单片机存在问题,其系统没有正常工作,以至于端口没有输出信号。

由于要上交材料及实验检查没有进行进一步的测试。

PCB原理图:

PCB图

七、心得体会

课程设计的目的在于能够使我们同实验增强自己的实际操作动手能力,而两周的时间下来我们也确实是受益匪浅。

首先,此次课程设计需要使用到Proteus仿真、Keil软件进行程序编写及编译,另外使用AltiumDesigner软件画PCB,都使自己对于这些软件更加的熟悉。

其次,上单片机课程的时候一直觉得单片机的定时与中断很抽象也不知道怎么运用,学得不是很清楚,通过此次实验使我对于单片机内部定时/计数器的作用及工作原理有了深入的了解与认识,也知道如何在程序中使用定时/计数器。

另外,在电路的调试过程中也使自己收获很多,只是调试了很久没有得到理想的结果,有点遗憾。

这说明自己在实际实验的时候还需要加深理论基础与分析问题的能力。

同时在焊接电路的时候需要仔细,在设计电路的时候需要注意布线要尽量使用锐角而不是钝角,以免信号接触传递受到影响。

总之,通过此次课

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

当前位置:首页 > 高等教育 > 艺术

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

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