测频计Word文档下载推荐.docx

上传人:b****6 文档编号:21085865 上传时间:2023-01-27 格式:DOCX 页数:14 大小:118.71KB
下载 相关 举报
测频计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

结合了AT89C51单片机,给出了一种小规模的频率计设计方案,即:

利用单片机的T0口定时(1秒),T1口对外面输入的脉冲进行计数,定时1秒之后,再结合进制间的转换关系,利用数码管将T1寄存器中值显示出来,即为所测的频率值,我们可以测量频率的范围在0-65535。

考虑到利用定时和外部中断的方法中,在执行外部中断程序的同时会有定时中断产生,这样会对测量结果造成意想不到的误差,所以在最后我们给出了利用定时和计数的方法来实现频率的测量。

关键字:

频率计AT89C51外部中断定时器仿真

一:

设计原理

通常频率的测量方法有两种:

一种是频率测量法,即在某一选定的时间间隔内对被测信号进行计数,然后将计数值除以时间间隔就得到所测的频率;

另一种是周期测量法,即通过测量被测信号的周期并求其倒数即可得到被测信号的频率。

由于在汇编程序中,使用周期测量法比较的麻烦,所以这里我们选取频率测量法,为了简便,我们把选定的时间间隔设为1秒,这样在1秒内所测量的脉冲次数即为频率值。

在电路板上设置一个开始计数按键和清零按键,以上按键与AT89C51的p3口连接,通过查询按键是否按下来判断进行计数或者清零。

如果开始计数按键被按下之后,则T1口开始计数,T0口开始定时1秒,1秒之后数码管显示脉冲频率。

清零之后数码管则全部显示0。

二:

硬件与软件设计

2.1硬件系统设计

在PCB板中,通过p0口来驱动6位数码管,p2口实现对数码管的片选,实现动态显示,按键接到p3口上。

基本框架如下图2.1:

开始按键

数码管显示

89C51单片机

控制

清零按键

图2.1基本框架

晶振电路

单片机内部实质上是种时序电路,所以必须在时钟的驱动下才能工作。

在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。

晶振电路如图2.2

图2.2

显示电路

在显示电路中,共有6个数码管,理论上能显示0-65535。

每个数码管都接在p0口上,使用p2口进行片选控制,采用动态显示。

如图2.3为脉冲计数的结构原理图,图2.4为测频计的PCB设计图。

图2.3脉冲计数器的结构原理图

2.4频率计的PCB设计图

2.2软件设计

这里我们将软件编程的程序框图画出来了,如下图2.5。

程序见附录1。

开始

开T0、INT0、CPU中断允许并设置INT0为边沿触发

YES

将数码管全部清零

将数码管清零

3结果分析和检验部分

在频率计设计中,理论上可以记录的频率值的范围是0-65535,这里为了验证我们的设计,可以利用Keil与proteus软件来仿真,仿真的结果如图3.1。

图3.1仿真结果图

考虑到利用定时和外部中断的方法中,在执行外部中断程序的同时会有定时中断产生,这样会对测量结果可能会造成意想不到的误差,所以在最后我们给出了利用定时和计数的方法来实现频率的测量。

这样只要利用T0定时1秒的同时在利用T1进行计数,这样T0在中断来临的同时就不会可能与外部中断产生重叠中断的情况,进而造成的误差也很小。

最后在定时1秒结束的时候,直接将程序转向显示程序即可(利用进制之间的转化)。

代码见附录2。

参考文献

李全利主编:

《单片机原理与接口技术》,高等教育出版社,2004年

附录一:

ORG0000H

LJMPSTART

ORG0003H

LJMPINTT0;

跳转到外部INT0中断程序

ORG000BH

LJMPTT0;

跳到T0中断程序

ORG0100H

START:

CLRA;

初始化R0-R4

MOVR0,A

MOVR1,A

MOVR2,A

MOVR3,A

MOVR4,A

LOOP:

SETBP1.0

SETBP1.1

JNBP1.1,REL;

P1.1接的开关用于清零

JNBP1.0,SE;

P1.0接的开关用于启动计数

LJMPLOOP

REL:

MOVP2,#0C1H

MOVP0,#0BFH

SE:

SETBEA;

CPU中断允许

SETBIT0;

设置INT0为边沿触发中断

SETBEX0;

INT0中断允许

SETBET0;

T0中断允许

SETBTR0;

启动T0定时

MOVR5,#20;

T0中断次数

MOVTMOD,#01H

MOVTH0,#(65536-50000)/256

MOVTL0,#(65536-50000)MOD256

LL2:

LCALLDISPLAY

JNBP1.1,START

LJMPLL2

INTT0:

INCR0;

检测到外部下降沿,自增一次,R0计满向R1进位,R1计满向R2进位,R2计满向R3进位,R3计满向R4进位

MOVA,R0

CJNEA,#10,NEXT

MOVR0,#0

INCR1

MOVA,R1

MOVR1,#0

INCR2

MOVA,R2

CJNER2,#10,NEXT

MOVR2,#0

INCR3

MOVA,R3

CJNER3,#10,NEXT

MOVR3,#0

INCR4

NEXT:

RETI

TT0:

MOVTH0,#(65536-50000)/256;

T0中断程序,重装TL0、TH0,并判断是否中断次数是否到20次

DJNZR5,LL1

CLREX0;

计时已到,关闭中断

CLRTR0

CLREA

LL1:

RETI

DISPLAY:

MOVDPTR,#TAB;

利用动态显示将频率值显示出来

MOVCA,@A+DPTR

MOVP2,#11011111B

MOVP0,A

LCALLDELAY

MOVP2,#11101111B

MOVP2,#11110111B

MOVP2,#11111011B

MOVA,R4

MOVP2,#11111101B

RET

DELAY:

MOVR7,#20;

延时程序

L1:

MOVR6,#25

DJNZR6,$

DJNZR7,L1

TAB:

DB3FH,06H,5BH,4FH,66H,7DH,07H,7FH,6FH

END

附录二:

CISHUEQU20H;

T0定时中断的次数

MOVDPTR,#TAB

MOVCISHU,#0

MOVTMOD,#51H;

选择T0为定时功能,T1为计数功能,工作方式都为1.

MOVTH1,#00;

T1计数器清零

MOVTL1,#00

开启T1和T0

SETBTR1

JNBTF0,$

CLRTF0

INCCISHU

MOVA,CISHU

CJNEA,#20,NEXT;

循环20次,定时为1秒

CLRTR0;

定时时间已到,关闭T0和T1

CLRTR1

MOV30H,TL1

MOV31H,TH1

MOVR0,TL1;

将TH1和TL1里面的值通过数码管显示出来,五位十进制数值分别放在R0-R4寄存器中

MOVR1,TH1

CLRA

MOVR2,A;

R2-R4清零

MOVR3,A

MOVR4,A

MOVR5,#16;

循环的次数,共转化16位

CLRC

MOVA,R0

RLCA;

从待转换数的高端移出一位到Cy

MOVR0,A

MOVA,R1

RLCA

MOVR1,A

MOVA,R4;

送到BCD码的低端

ADDCA,R4;

带进位加。

自身相加,相当于左移一位

DAA;

十进制调整,变成BCD码

MOVR4,A

MOVA,R3

ADDCA,R3

DAA

MOVR3,A

MOVA,R2

ADDCA,R2

MOVR2,A

DJNZR5,LOOP

至此,已经把TH1TL1中的数字,转换成BCD码,送到了R2R3R4。

下面,分别存入R4R3R2R1R0。

MOVB,#16

DIVAB

MOVR1,A

MOVR0,B

MOVA,R2

MOVR4,A

MOVA,R3

MOVB,#16

DIVAB

MOVR3,A

MOVR2,B

MOVp2,#11110111B

MOVP2,#11111101B

MOVA,R5

MOVP2,#11111110B

LJMPDISPLAY

DB3FH,06H,5BH,4FH,66H,7DH,07H,7FH,6FH

MOVR7,#20

MOVR6,#25

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

当前位置:首页 > 工程科技 > 电力水利

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

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