简易频率计数器的设计Word格式.docx

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

简易频率计数器的设计Word格式.docx

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

简易频率计数器的设计Word格式.docx

在计数器工作方式下,加至外部引脚的待测信号发生从1到0的跳变时计数器加1。

外部输入在每个机器周期被采样一次,这样检测一次从1到0的跳变至少需要2个机器周期(24个振荡周期),所以最大计数速率为时钟频率的1/24(使用12MHz时钟时,最大计数速率为500kHz),也就是说使用12MHz时钟的AT89S51单片机设计的频率计数器系统,所测的信号的频率不能大于500kHz,若大于则必须通过分频器分频才能测试,而本次任务的要求是对0~300KHz的信号进行测量,所以可以直接进行。

利用AT89S51单片机的T0、T1的定时计数器功能,来完成对输入的信号进行频率计数。

设置定时器 

工作在定时方式1,定时1S,并产生方波信号从P1.1引脚输出。

工作在计数方式1,对输入脉冲进行计数,溢出产生中断。

将定时器 

1中断定义为优先。

由于16位二进制加法计数器的最大计数值为 

65535,1S之内可能会产生多次溢出,所以需要在中断处理程序里对中断次数进行计数。

1S到后,将中断次数和计数器里的计数值取出进行综合数据处理,处理后的数据送显示。

定时器T0的计数初值:

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

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

机器周期为:

Tp=12/晶振频率=12/12MHz=1μS

计数初值为:

X=2n-TC=216-20000=45536=B1E0H

故TH0=B1H,TL0=E0H。

信号频率的计算:

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

编写的源程序如下:

//plj.c

#include<

reg51.h>

#include<

stdio.h>

#defineucharunsignedchar

uchardisplay_code[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};

//定义数组存放显示数据的编码

uchardisplay_data[8]={0,0,0,0,0,0,0,0};

//定义数组存放显示数据的各位

ucharc1,b1;

sbitP1_1=P1^1;

voiddelay(void)//延时

{

uchari;

for(i=500;

i>

0;

i--);

}

voiddisplay()//显示程序

uchari,k;

k=0x01;

for(i=0;

i<

8;

i++)

{

P2=0;

P0=display_code[display_data[i]];

P2=k;

k=k<

<

1;

delay();

voidconvert()//转换程序

uchari,f2;

longf,f1,k;

f=c1*65536+TH1*256+TL1;

f1=f-f%10;

//此变量是为了让八位LED的高位为0时不显示而设置

for(i=7;

i--)//此循环将计数值转换为显示数组,从高位到低位依次存放在

//display_data[0]至display_data[7]

{display_data[i]=f%10;

f=f/10;

}

display_data[0]=f;

k=1e7;

//从这开始到本子程序结束的语句完成让八位LED的高位为0时不显示

for(i=0;

7;

{f2=f1/k;

if(f2==0)

display_data[i]=10;

k=k/10;

voidtimer1(void)interrupt3//定时器1中断服务程序

c1++;

voidtimer0(void)interrupt1//定时器0中断服务程序

TH0=0xb1;

//装入时间常数

TL0=0xe0;

P1_1=!

P1_1;

//P1.1取反,从P1.1引脚输出25Hz的方波信号,通过导线连接

//到P3.5引脚输入,以方便调试程序。

若使用其它信号源,则去掉即可。

if(b1==49)

convert();

c1=0;

//将计数值清零

b1=0;

TH1=0;

TL1=0;

elseb1++;

voidmain(void)//主函数

P0_1=0;

TMOD=0x51;

TH0=0Xb1;

TL0=0Xe0;

IE=0x8a;

TCON=0x50;

while

(1)

display();

4.程序调试与电路仿真

将KeilC51程序编译过程中建立的plj.hex文件添加进Proteus中的单片机芯片,如图2,点击模拟调试按钮的运行按钮,进入调试状态。

此时可看到数码管显示25。

图2添加plj.hex文件进单片机芯片

 

源程序编译软件keilC51的使用

KeilC51软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编、PLM语言和C语言的程序设计,界面友好,易学易用。

在51系列单片机的学习与开发过程中,keilC51软件的使用为程序设计开发提供了一个高效率的平台。

本设计通过一个C语言程序的实现,来学习KeilC51软件的基本使用方法和基本的调试技巧。

运行keilC51编辑软件,软件界面如图3所示:

图3keilC51启动界面

1.建立一个新的工程项目

单击Project菜单,在弹出的下拉菜单中选中NewProject选项,如图4所示。

图4“建立新工程项目”操作框

2.保存工程项目

选择要保存的文件路径,输入工程项目文件的名称,如保存的路径为C51文件夹,工程项目的名称为C51,如图5所示,单击保存:

图5

3.为工程项目选择单片机型号

在弹出的对话框中选择你需要的单片机型号,如图6所示,这里我们选择51核单片机中使用较多的89S51,选定型号后,单击确定,出现如图7所示的开发平台界面:

图6“CPU选择”对话框

图7新工程项目建好后的对话框

4.新建源程序文件

在下图中单击“File”菜单,选择下拉菜单中的New选项,新建文件后得到如图8的界面:

图8新建文件后屏幕图

5.保存源程序文件

单击“File”菜单,选择下拉菜单中的Save选项,在弹出的对话框中选择保存的路径及源程序的名称,如图9所示。

图9“保存源程序文件”对话框

6.为工程项目添加源程序文件

在编辑界面中,单击“Target”前面的“+”,再在“SourceGroup”上单击右键,得到如图10所示的对话框,选择“AddFiletoGroup’SourceGroup1’”,弹出如图11所示的对话框,选中要添加的源程序文件,单击“Add”,得到如图12所示的界面,同时,在“SourceGroup1”文件夹中多了一个我们添加的“Text1.c”文件。

图10“为工程项目添加源程序文件”操作框

图11“为工程项目添加源程序文件”对话框

图12“输入源程序文件”对话框

7.输入源程序文件

源程序输入完成后,保存,得到如图13所示的界面。

程序中的关键字以不同的颜色提示用户加以注意,这就是事先保存待编辑的文件的好处,即Keilc51会自动识别关键字。

图13“源程序输入完成后”对话框

8.编译调试源程序

在上图中,单击Project菜单,在弹出的下拉菜单中选中BuiltTarget选项,再单击Debug菜单,在弹出的下拉菜单中选中Start/StopDebugSession选项,编译成功后,再单击Debug菜单,在弹出的下拉菜单中选中Go选项,进行源程序调试。

如图14所示。

图14“编译调试程序”对话框

9.查看分析结果

单击Debug菜单,在弹出的下拉菜单中选中StopRunning选项,单击View菜单,在弹出的下拉菜单中选中SerialWindows#1选项,可以看到程序运行的结果,如图15所示:

图15“查看分析结果”对话框

10.生成Hex代码文件

将编译调试成功的源程序生成可供单片机加载的Hex代码文件,单击Project菜单,在弹出的下拉菜单中选中OptionsforTarget’Target1’选项,在弹出的对话框中单击Output选项,选中其中的“CreateHEXFile”项。

如图16所示:

图16“设置生成Hex代码文件”操作框

则一个完整的工程项目就在KeilC51软件上就编译完成了。

参考文献

[1]杨恢先,黄辉先.《单片机原理及应用》.北京:

人民邮电出版社.2006

[2]张永革,何乃味.《单片机C语言应用技术与实践》.北京:

北京交通大学出版社.2009

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

当前位置:首页 > 表格模板 > 合同协议

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

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