基于89C51的数字频率计

更新时间:2023-04-05 14:08:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

百度文库- 好好学习,天天向上

-1 单片机系统课程设计任务书

百度文库- 好好学习,天天向上

-2 目录

1 引言 (2)

2 系统概述 (3)

频率测量原理 (3)

方案比较 (3)

方案选择 (4)

3 系统硬件设计 (4)

系统硬件总述 (4)

信号输入电路 (5)

开关电路 (6)

计数电路 (7)

AT89C51介绍 (8)

数字频率计显示电路 (9)

时钟控制电路 (10)

4.系统软件设计 (10)

系统软件总述 (11)

显示器初始化设计 (12)

计数子程序 (13)

数制转换子程序设计 (14)

显示子程序设计 (15)

5系统的功能调试 (16)

6 结论 (17)

参考文献 (18)

附录A (18)

附录B (19)

1 引言

单片机是20世纪中期发展起来的一种面向控制的大规模集成电路模块,具有功能强、体积小、可靠性高、价格低廉等特点,在工业控制、数据采集、智能仪表、机电一体化、家用电器等领域得到了广泛的应用,极大的提高了这些领域的技术水平和自动化程度。

51系列单片机是国内目前应用最广泛的一种8位单片机之一,随着嵌入式系统、片上系统等概念的提出和皮鞭接受及应用,51系列单片机还会在今后很长一段时间占据嵌入式系统产品的低端市场,因此,作为新世纪的大学生,在信息产业高速发展的今天,掌握单片机的基本结构、原理和使用时非常重要的。

数字频率计是数字电路中的一个典型应用,实际的硬件设计用到的器件较

百度文库- 好好学习,天天向上

多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。随着复杂可编程逻辑器件(CPLD)的广泛应用,以EDA工具作为开发手段,运用汇编语言。将使整个系统大大简化。提高整体的性能和可靠性。

2 系统概述

频率测量原理

频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。通常情况下,计算每秒内待测信号的脉冲个数,此时称闸门时间为1秒。闸门时间也可以大于或小于一秒。闸门时间越长,得到的频率值就越准确,但闸门时间越长则每测一次频率的间隔就越长。闸门时间越短,测的频率值刷新就越快,但测得的频率精度就受影响。数字频率计是用数字显示被测信号频率的仪器,被测信号可以是正弦波,方波或其它周期性变化的信号。

方案比较

数字频率计是直接用十进制数字显示被测信号频率的一种测量装置。

方案(一):采用分立式元器件,运用数字电路技术,可以设计出数字频率计,原理框图如图2-1所示。

传统的数字频率计大多采用74LS系列数字集成电路直接测频,在使用过程中存在电路结构复杂,测量精度低、故障率高、维护不易等问题。

图2-1方案(一)原理框图

方案(二)采用51单片机作为控制器,运用较少的外围器件就可以设计出数字频率计。原理框图如图2-2所示。

本设计是以单片机为主再附加一些外围电路来设计数字频率计,通过单片机的软件设计,采用适当的算法,取代很多以前用硬件实现的电路,这不仅能-3

百度文库- 好好学习,天天向上

弥补以往频率计测量精度低、故障率高、维护不易等不足,而且性能也得到了很大的提高。

图2-2 方案(二)原理框图

方案选择

对于生活上的简单用用而言,方案二完全符合应用要求,况且性价比更高一些,有实际的研究价值,故选择方案(二)。

3 系统硬件设计

系统硬件总述

本课题设计的频率计由单片机AT89C51 、计数器74HC393 、分频器MB501以及时钟晶振等构成。利用外扩的计数器74HC393和单片机AT89C51 内含的16 位计数器来构成多位计数器对待测信号计数。采用的双四位二进制计数器74HC393最高计数频率可达39MHz。若先对外部信号进行分频计数,再利用AT89C51对所测信号进行相对应的扩频,这样可使频率计的最高测量频率达GHz 数量级范围,由此达到频率计测量的范围的要求。该频率计测量范围为10Hz, ,分2 个频段实现。(1) 1Hz,60MHz (2) 50MHz,。

如图3-1所示,为频率计的原理

(1)信号输入电路:此部分包括两个小部分,第一部分是信号保护电路,是有两个反向并联的二极管组成。第二部分是由三极管、电容、电阻、电感组成的放大电路,用来提高输入阻抗和放大前级提供的微弱信号。

(2)分频电路:这部分只用于信号>50MHz的电路,实现对高频信号的分频。

(3)闸门选择电路:该频率计有两个信号输入端口,工作时先根据被测频率的大小来判断闸门电路应该与哪个端口电路接通,这样测出的频率比较精确

(4)计数器:由四块双四位二进制计数器74HC393、单片机AT89C51内部计数-4

百度文库- 好好学习,天天向上

器T0共同构成,其中AT98C51内的计数器被设置成16位计数器。

(5)时钟提供:单片机频率计的关键在于时基信号的准确性和稳定性,它决定频率计的技术精度。

(6)显示:当待测信号的频率被测量出后由显示模块1602LCD显示出来。

图3-1 频率计原理方框图

信号输入电路

本频率计的输入电路分两个量程,分别对应两个频段。图3-2为信号输入1通道的电路图,其测量范围是1Hz,60MHz,图3-3为信号输入2通道的电路图,其测量范围是50MHz,。输入电路主要完成对被测信号的限幅、放大、整形与转换作用。

(1)信号输入1通道电路

信号输入1通道电路中,首先采用两个二极管对幅度较大的输入信号进行限幅。输入端采用R高通电路,下限频率可达1Hz。C,R,Q,R组成放大电路的射极输出器,用来提高输入阻抗。C,R,R,C,Q组成共射放大器,用来放大前级提供的微弱信号。在图3-2中,输入端接低频交流电压信号v(如音频i信号,频率为20Hz,20KHz)。输出端接负载电阻R,输出电压用v表示。

-5

百度文库- 好好学习,天天向上

-6

图3-2 信号输入1通道的电路图

(2) 信号输入2通道电路

在频率计信号输入2通道的电路中,信号经过前两级的放大,被送到MB501

分频电路中,通过改变MB501引脚的接法,可以改变分频比,有256、128、64三种分频比。本电路接法是64分频,由3脚控制其是否接入电路,当MB501的

8脚为+5V时,分频器工作。AT89C51

的10脚可以判断信号输入2通道电路的工

作情况,从而来分辨信号输入端输入的是否是>50MHz的信号。

图3-3 信号输入2通道的电路图

开关电路

图3-4为开关电路,分频后的信号从MB501(4脚)输出。经过C隔直后送14到与非门74HC00的10脚,也就是U4C。当J2接通其1脚的时候,这时门U4C 打开,信号便能从10脚输入到8脚。信号从U4D的11脚输出,到达电子开关U4A的2脚,再从U4A的3脚输出送到分频 74HC393;经过74HC393的256分频,

百度文库- 好好学习,天天向上

最后送到AT89C51的INT0口。

图3-4 开关电路图

计数电路

该频率计的计数电路是利用外扩的计数器74HC393和单片机AT89C51 内含的16 位计数器来构成多位计数器分别对待测信号计数的。在这里,将对待测信号计数的外部扩展的计数器74HC393的8脚引到AT89C51 的T0端,再利用AT89C51 的内部计数器即可构成多位计数器。图3-6为本频率计的计数电路。

数字频率计的计数电路的工作原理如下:计数一般是有时间的,取一段时间内脉冲的个数。比如1s,第一步先把AT89C51的12脚置0,再把12脚置1,打开电子开关。然后数据被送到74HC393分频,分频后的信号送到14脚T0口进行内部计数。时间到了1s就关闭电子开关,也就是把12脚 INT0置0,13脚INT1置0 单片机内部的计数器停止计数,继而对这段时间内脉冲个数进行保存。再读取,P0、P2口的状态,再把这数据和以前计数的数据相加,得到很精确的频率,再把这频率数据转换,送到LCD显示,然后89C51的13脚置1清除现有的数据信号,进行下一次数据采集。

-7

百度文库- 好好学习,天天向上

-8 图3-5 计数电路图

AT89C51介绍

如图3-6所示,是AT89C51的外部引脚图,其功能如下。

(1)Vcc(40):电源+5V。

(2)Vss(20):接地,也就是GND。

(3)XTL1(19)和XTL2(18):振荡电路。

(4)PSEN(29):片外ROM 选通信号,低电平有效。

(5)ALE/PROG(30):地址锁存信号输出端/EPROM 编程脉冲输入端。

(6)RST/VPD(9):复位信号输入端/备用电源输入端。

(7)EA/VPP(31):内/外部ROM 选择端。

(8)P0 口(39-32):双向I/O 口。

(9)P1 口(1-8):准双向通用I/0 口。

(10)P2 口(21-28):准双向I/0 口。

(11)P3 口(10-17):多用途口。

在频率计电路当中,单片机AT89C51是核心元件,它控制着整个电路的运

百度文库- 好好学习,天天向上

行,包括计数器的开启与关闭、定时器的开启与关闭、外部计数器的开启与关闭、高频信号分频、数据读入、数值转换以及数据显示都是由单片机来控制的。

图3-6 AT89C51外部引脚图

数字频率计显示电路

数字频率计的显示电路如图3-7所示,在CON16后面接1602LCD液晶显示器来显示频率值。74HC393的计数结果被单片机的P0、P2口读入,与单片机内部计数值合到一起。再通过乘以16档用到)、二进制到十进制转换处等处理后送入图形液晶显示模块1602LCD中显示出来。

由于1602液晶显示模块可以直接和51系列单片机进行接口,所以在设计该数字频率计时就直接将1602LCD接到了单片机的后面。在图3-8中,CON16的3脚上接了一个10k电位器PR,是用来调节液晶显示器的对比度的。当该电位器的旋钮1直接和电源端相连时,显示器屏幕的对比度最弱,当其旋钮直接和地端相连时,显示器屏幕的对比度最高。液晶显示器的数据来源是单片机的P1口,当单片机的T1端口由高电平跳变成低电平时,液晶显示器开始执行命令,并最终显示出频率的数值。

-9

百度文库- 好好学习,天天向上

-10 图3-7 频率计显示电路图

时钟控制电路

时钟控制电路如图3-9所示。制作频率计的关键点在于时基信号的准确性和稳定性,它决定频率计的计数精度。这里选用的晶振组成的电路来作为单片机AT89C51的时钟电路,由单片机用软件方法得到所需的门控信号。

图3-8时钟控制电路图

4.系统软件设计

百度文库- 好好学习,天天向上

系统软件总述

系统软件的设计主要是保证软件和硬件电路相结合,控制硬件正常的工作。对于频率计来说,就是控制频率计的硬件系统使其最终能较为准确的测出待测信号的频率。本课题频率计的系统软件的设计采用了模块化的结构方式,将各个功能分成独立模块,由系统的监控程序统一管理执行。本系统软件的设计主要分两部分:一部分是执行软件,主要完成各种实质性的功能,如测量、计算、显示、定时中断服务等;另一部分是监控软件,主要来协调各执行模块和操作者的关系,在系统软件中充当组织调度的角色。

该频率计中主要元器件是单片机AT89C51 ,由它完成对待测信号频率的计数和结果传输等功能,外部还要有分频器、显示器等器件。被测信号首先要经过放大、整形,如果是高频信号还要由分频器进行分频,然后送入单片机的P0 端口和P2端口并开始计数,分频器的分频系数由单片机来控制;计数、分频达到规定的精度后结束计数,然后调用显示子程序,显示结果。该频率计的总体程序流程图如图4-1所示

-11

百度文库- 好好学习,天天向上

-12

图4-1 程序总体流程图

显示器初始化设计

显示器初始化程序流程图如图4-2所示。在测量频率之前,首先要清屏,

之后将单片机的读写端同时设置为低电平,因为单片机的读写端控制着液晶显示器的4脚和5脚,当液晶显示器的4脚和5脚同时为低电平时,液晶显示器可以写入指令或显示地址。其后就要判断频率计显示器是否处于“忙”状态。如果显示器处于“忙”状态,则要循环等待;如果显示器处于“闲”状态,则可以对显示器进行操作。另外,在每次单片机的P1口写入控制字后,都要判断显

百度文库- 好好学习,天天向上

示器是否

课程设计处于“忙”状态。在判断液晶显示器的状态后,要将其使能端设置为高电平,为后面的程序做铺垫。因为只有当该使能端由高电平跳变到低电平时,液晶模块才可以执行命令。

图4-2 显示初始化流程图

计数子程序

如图4-3所示,输入信号经过整形输入到74HC393中,采用矩形波下降沿开始计数,上升沿停止计数的方来计数,刚好对应于正弦波一个完整周期,再输入到AT89C51单片机的P0、P2口。其程序流程图如图4-3所示。该频率计利用定时器T0来完成计数功能,其参数选定原则是:(1)初值:TL0=00H,TH0=00H,50Hz左右的信号,大约相当于104个机器周期,用16位计数器即可满足,不会产生溢出。(2)TMOD的选择:定时器T0采用方式1,由于后面要用到T1作为定时器,也采用方式1,故TMOD选取为11H。(3)TCON的选择:这里不需要考虑中断,故只选择控制TR0就可以了,开始计数时,TR0置“1”,停止计数时清“0”。

-13

百度文库- 好好学习,天天向上

-14

图4-3 计数子程序流程图

数制转换子程序设计

二进制转换为十进制流程图如图4-4所示。在计算机中,任何数据都以二

进制形式出现,并在计算机中处理的。但是通过外部设备与计算机交换数据采用的是其他形式的数据,由于频率计的显示部分是用的1602LCD液晶显示器,它不可以直接显示二进制数据,所以单片机要把P0、P2口读入的二进制数据转换为可以被显示器识别并显示的十进制数据。

百度文库- 好好学习,天天向上

-15

图4-4 二进制数转换为十进制数流程图

显示子程序设计

显示子程序流程图如图4-5所示。数据由单片机的P0、P2口读入,由单片

机的P1口送出,被液晶显示器接收,显示器工作状态由单片机的P3口控制,口控晶显示器的4脚,4脚为RS,是寄存器选择,高电平时选择数据寄存器,低

电平时间选择指令寄存器。脚控制显示器的5脚,5脚为RW,是读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时间可以写入指令或者显示地址,RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。脚控制显示器的6脚,6脚为E端,是使能端,当E端高电平跳变成低电平时,液晶模块执行命令。

在液晶显示器开始工作之前要先初始化系统时钟,再初始化I/O端口,最

百度文库- 好好学习,天天向上

后初始化1602LCD模块。在数据从单片机读入后,先将数据显示在液晶模块的第一行,随后切换到第二行显示。

图4-5 1602LCD显示程序流程图

5系统的功能调试

先将电路图在仿真软件进行仿真,在仿真没有问题的情况下,将元器件焊接在电路板上,然后进行硬件调试。

硬件调试的主要任务是排除硬件故障,其中包括设计错误和工艺性故障。首先进行脱机调试,用万用表逐步检查各个引脚,尤其是电源是否连接正确,单片机芯片是否正确插入底座。

其次运用软件编辑程序,要生成目标代码文件,不断地调试程序。加载目标代码文件打开元器件单片机属性窗口,在“Program File”栏中添加上面编译好的目标代码文件“.ASM”;在“Clock Frequency”栏中输入晶振频率为12MHZ。每一小块程序编写过后都进行联调,这样可以及时观察到自己所编的程序是否符合自己的目的,当出现问题时及时处理,可以避免当有大量问题后

-16

百度文库- 好好学习,天天向上

无法找出错误的地方,可以提高编程的效率,也有利于最终将程序编写出来。

调试过程:

(1)首先将所写的汇编程序拷入到89C51单片机中

(2)将所焊接的硬件接通+5V的电源,保证数字频率计能够正常运行。

(3)估算一下所要测量信号的频率是在( 1Hz,60MHz ),( 50MHz,的那个频率段,然后将开关电路的开关打向对应的位置。

(4)观察并记录液晶显示1602LCD的实数。

(5)将记录的实际值与输入信号的理论值作比较。检测该数字频率计的实际效果怎么样。

调试现象说明:

(1)实验出现最多的现象就是液晶显示屏1602LCD老是出现乱码。

在确保电路硬件没有问题的情况下,检查系统的程序发现是程序中的数制转换子程序有点问题,找到问题后我到网上查找了一个数制转换程序,经过我的修改后,替代原程序后,调试后发现液晶显示屏没有出现乱码,系统能够正常运行。

(2)系统正常运行,记录1602液晶显示屏显示的实数。如表5-1

表5-1 理论值与测量值比较

由实验数据不难看出测量值与理论值比较接近,说明本数字频率计的性能很好,没有什么大问题。

6 结论

-17

百度文库- 好好学习,天天向上

-18 本课题设计的频率计采用单片机AT89C51智能化控制,充分利用单片机内

部硬件资源和软件功能,大大减少了硬件电路的复杂性,使电路结构更加简洁,有利于提高频率计的工作可靠性。另外,用AT89C51 单片机替换传统的频率计,硬件结构简单,便于升级,能充分改善原有设备的性能,提高测试精度。

通过本次课程设计,我对单片机这门课程有了进一步的理解,在本次设计数字频率计的过程中,学会了很多知识,此外,通过在网上查找相关内容,也学会了设计系统软硬件的一些方法。

参考文献

[1] 阎石,数字电子技术基础(第五版),清华大学电子学教研组2005

[2] 张毅刚.单片机原理及应用(第2版)北京:高等教育出版社,2010

[3] 胡汉才, 单片机原理及其接口技术[M]. 清华大学出版社, 1997

[4] 毛谦敏,单片机原理及应用系统设计.北京:国防工业出版社,2005

[5]涂时亮.单片微机MCS-51用户手册。上海:复旦大学出版社,1990

附录

附录A

频率计总电路图

百度文库- 好好学习,天天向上

-19 附录B

频率计总程序

Q0000: MOV SP,#60H ;堆栈设置

Q0003: SETB ;打开定时器开关

SETB ;启动定时器

MOV P1,#01H ;清屏,PI口接1602的DB7-DB0,P1写入控制字

ACALL Q01DC ;等代LCD不忙

MOV P1,#0CH ;显示器开、光标开、闪烁开,即为P1写入控制字

ACALL Q01DC

MOV R0,#EFH

Q0013: NOP ;延时

DJNZ R0,Q0013 ;延时R0个周期

MOV TMOD,#05H ;定时器方式一,启动了T0 Q0019: MOV P0,#FFH ;P0

置高电平

MOV P2,#FFH ;P0\P2端口赋值,P2置高电平

MOV TL0,#00H ;清计数器

MOV TH0,#00H

CLR ;INT1=0有效

SETB TR0 ;启动计数器0

SETB ;开计数开关

MOV R0,#0AH

MOV R1,#32H

MOV R2,#50H

MOV R3,#02H

NOP ;延时

NOP

NOP

NOP

NOP

百度文库- 好好学习,天天向上

-20 Q0038: MOV R1,#32H ;延时R0*32H*50H*02H

NOP

NOP

NOP

NOP

NOP

NOP

Q0040: MOV R2,#50H Q0042: MOV R3,#02H

Q0044: NOP

NOP

NOP

NOP

NOP

NOP

NOP

DJNZ R3,Q0044

DJNZ R2,Q0042

DJNZ R1,Q0040

DJNZ R0,Q0038

CLR ;INT0=0,关闭计数器开关,停止计数值更新

NOP

NOP

NOP

CLR TR0 ;关闭计数器,在R0*32H*50H*02H延时内计数

;读入计数值

MOV 20H,P0 ;读P0口数值

MOV 21H,P2 ;读P2口数值

MOV 22H,TL0 ;取计数值低位

MOV 23H,TH0 ;取计数值高位

SETB ;INT1=1,打开定时器开关

;多(四)字节二转十,入口R0为二进制低位字节地址指

针,R7为字节数,出口R1为BCD码结果低位字节地址指针MOV R0,#20H

MOV R1,#30H

MOV R7,#04H

MOV A,R0

MOV R5,A

MOV A,R1

MOV R6,A

MOV A,R7

MOV R3,A

INC R3

CLR A ;累加器清零

Q0077: MOV @R1,A

百度文库- 好好学习,天天向上

-21

INC R1

DJNZ R3,Q0077

MOV A,R7

MOV B,#08H ;将立即数8送入B中

MUL AB ;A、B相乘,结果送入A中,A=32

MOV R3,A

Q0081: MOV A,R5

MOV R0,A

MOV A,R7

MOV R2,A

CLR C

Q0086: MOV A,@R0

RLC A

MOV @R0,A

INC R0

DJNZ R2,Q0086

MOV A,R6

MOV R1,A

MOV A,R7

MOV R2,A

INC R2

Q0091: MOV A,@R1 ;得到低位数据

ADDC A,@R1 ;累加

DA A ;十进制调整

MOV @R1,A ;保存数据

INC R1 ;进一步循环得到第二位、第三位、第四位数据等

DJNZ R2,Q0091

DJNZ R3,Q0081

MOV R0,#30H

MOV R1,#24H

Q009E: MOV A,@R0

ANL A,#0FH

ORL A,#30H

MOV @R1,A

MOV A,@R0

ANL A,#F0H

RL A

RL A

RL A

RL A

ORL A,#30H

INC R1

MOV @R1,A

INC R0

本文来源:https://www.bwwdw.com/article/hedl.html

Top