基于89C51的数字频率计课程设计.docx
《基于89C51的数字频率计课程设计.docx》由会员分享,可在线阅读,更多相关《基于89C51的数字频率计课程设计.docx(29页珍藏版)》请在冰豆网上搜索。
基于89C51的数字频率计课程设计
单片机系统课程设计任务书
学生姓名
XX
专业班级
XX
学号
XX
题目
基于89C51的数字频率计
课题性质
工程设计
课题来源
自拟
指导教师
XXXXX
主要内容
(参数)
利用89C51单片机设计一个数字频率计,实现功能如下:
1、通过定时器计数方式产生频率信号。
2、有足够宽的测量范围,测试结果通过LED数码管显示。
3、能够测量正弦信号,方波信号以及其他各种单元时间内变化的物理量。
任务要求
(进度)
第1-2天:
熟悉课程设计任务及要求,查阅技术资料,确定设计方案。
第3-4天:
按照确定的方案设计单元电路。
要求画出单元电路图,元件及元件参数选择要有依据,各单元电路的设计要有详细论述。
第5-6天:
软件设计,编写程序。
第7-8天:
实验室调试。
第9-10天:
撰写课程设计报告。
要求内容完整、图表清晰、文理流畅、格式规范、方案合理、设计正确,篇幅合理。
主要参考
资料
[1]张毅刚.单片机原理及应用(第2版)北京:
高等教育出版社,2010
[2]伟福LAB6000系列单片机仿真实验系统使用说明书
[3]阎石.数字电路技术基础(第五版).北京:
高等教育出版社,2006
审查意见
系(教研室)主任签字:
年月日
目录
1引言4
2系统概述4
2.1频率测量原理4
2.2方案比较4
2.3方案选择5
3系统硬件设计5
3.1系统硬件总述5
3.2信号输入电路6
3.3开关电路8
3.4计数电路8
3.5AT89C51介绍9
3.6数字频率计显示电路10
3.7时钟控制电路11
4.系统软件设计12
4.1系统软件总述12
4.2显示器初始化设计13
4.3计数子程序14
4.4数制转换子程序设计15
4.5显示子程序设计16
5系统的功能调试17
6结论19
参考文献19
附录A20
附录B20
1引言
单片机是20世纪中期发展起来的一种面向控制的大规模集成电路模块,具有功能强、体积小、可靠性高、价格低廉等特点,在工业控制、数据采集、智能仪表、机电一体化、家用电器等领域得到了广泛的应用,极大的提高了这些领域的技术水平和自动化程度。
51系列单片机是国内目前应用最广泛的一种8位单片机之一,随着嵌入式系统、片上系统等概念的提出和皮鞭接受及应用,51系列单片机还会在今后很长一段时间占据嵌入式系统产品的低端市场,因此,作为新世纪的大学生,在信息产业高速发展的今天,掌握单片机的基本结构、原理和使用时非常重要的。
数字频率计是数字电路中的一个典型应用,实际的硬件设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。
随着复杂可编程逻辑器件(CPLD)的广泛应用,以EDA工具作为开发手段,运用汇编语言。
将使整个系统大大简化。
提高整体的性能和可靠性。
2系统概述
2.1频率测量原理
频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。
通常情况下,计算每秒内待测信号的脉冲个数,此时称闸门时间为1秒。
闸门时间也可以大于或小于一秒。
闸门时间越长,得到的频率值就越准确,但闸门时间越长则每测一次频率的间隔就越长。
闸门时间越短,测的频率值刷新就越快,但测得的频率精度就受影响。
数字频率计是用数字显示被测信号频率的仪器,被测信号可以是正弦波,方波或其它周期性变化的信号。
2.2方案比较
数字频率计是直接用十进制数字显示被测信号频率的一种测量装置。
方案
(一):
采用分立式元器件,运用数字电路技术,可以设计出数字频率计,原理框图如图2-1所示。
传统的数字频率计大多采用74LS系列数字集成电路直接测频,在使用过程中存在电路结构复杂,测量精度低、故障率高、维护不易等问题。
图2-1方案
(一)原理框图
方案
(二)采用51单片机作为控制器,运用较少的外围器件就可以设计出数字频率计。
原理框图如图2-2所示。
本设计是以单片机为主再附加一些外围电路来设计数字频率计,通过单片机的软件设计,采用适当的算法,取代很多以前用硬件实现的电路,这不仅能弥补以往频率计测量精度低、故障率高、维护不易等不足,而且性能也得到了很大的提高。
图2-2方案
(二)原理框图
2.3方案选择
对于生活上的简单用用而言,方案二完全符合应用要求,况且性价比更高一些,有实际的研究价值,故选择方案
(二)。
3系统硬件设计
3.1系统硬件总述
本课题设计的频率计由单片机AT89C51、计数器74HC393、分频器MB501以及时钟晶振等构成。
利用外扩的计数器74HC393和单片机AT89C51内含的16位计数器来构成多位计数器对待测信号计数。
采用的双四位二进制计数器74HC393最高计数频率可达39MHz。
若先对外部信号进行分频计数,再利用AT89C51对所测信号进行相对应的扩频,这样可使频率计的最高测量频率达GHz数量级范围,由此达到频率计测量的范围的要求。
该频率计测量范围为10Hz,2.0GHz,分2个频段实现。
(1)1Hz,60MHz
(2)50MHz,2.0GHz。
如图3-1所示,为频率计的原理
(1)信号输入电路:
此部分包括两个小部分,第一部分是信号保护电路,是有两个反向并联的二极管组成。
第二部分是由三极管、电容、电阻、电感组成的放大电路,用来提高输入阻抗和放大前级提供的微弱信号。
(2)分频电路:
这部分只用于信号>50MHz的电路,实现对高频信号的分频。
(3)闸门选择电路:
该频率计有两个信号输入端口,工作时先根据被测频率的大小来判断闸门电路应该与哪个端口电路接通,这样测出的频率比较精确
(4)计数器:
由四块双四位二进制计数器74HC393、单片机AT89C51内部计数器T0共同构成,其中AT98C51内的计数器被设置成16位计数器。
(5)时钟提供:
单片机频率计的关键在于时基信号的准确性和稳定性,它决定频率计的技术精度。
(6)显示:
当待测信号的频率被测量出后由显示模块1602LCD显示出来。
图3-1频率计原理方框图
3.2信号输入电路
本频率计的输入电路分两个量程,分别对应两个频段。
图3-2为信号输入1通道的电路图,其测量范围是1Hz,60MHz,图3-3为信号输入2通道的电路图,其测量范围是50MHz,2.0GHz。
输入电路主要完成对被测信号的限幅、放大、整形与转换作用。
(1)信号输入1通道电路
信号输入1通道电路中,首先采用两个二极管对幅度较大的输入信号进行限幅。
输入端采用R高通电路,下限频率可达1Hz。
C,R,Q,R组成放大电路的射极输出器,用来提高输入阻抗。
C,R,R,C,Q组成共射放大器,用来放大前级提供的微弱信号。
在图3-2中,输入端接低频交流电压信号v(如音频i信号,频率为20Hz,20KHz)。
输出端接负载电阻R,输出电压用v表示。
图3-2信号输入1通道的电路图
(2)信号输入2通道电路
在频率计信号输入2通道的电路中,信号经过前两级的放大,被送到MB501分频电路中,通过改变MB501引脚的接法,可以改变分频比,有256、128、64三种分频比。
本电路接法是64分频,由3脚控制其是否接入电路,当MB501的8脚为+5V时,分频器工作。
AT89C51的10脚可以判断信号输入2通道电路的工作情况,从而来分辨信号输入端输入的是否是>50MHz的信号。
图3-3信号输入2通道的电路图
3.3开关电路
图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开关电路图
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清除现有的数据信号,进行下一次数据采集。
图3-5计数电路图
3.5AT89C51介绍
如图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-6AT89C51外部引脚图
3.6数字频率计显示电路
数字频率计的显示电路如图3-7所示,在CON16后面接1602LCD液晶显示器来显示频率值。
74HC393的计数结果被单片机的P0、P2口读入,与单片机内部计数值合到一起。
再通过乘以16(2.0G档用到)、二进制到十进制转换处等处理后送入图形液晶显示模块1602LCD中显示出来。
由于1602液晶显示模块可以直接和51系列单片机进行接口,所以在设计该数字频率计时就直接将1602LCD接到了单片机的后面。
在图3-8中,CON16的3脚上接了一个10k电位器PR,是用来调节液晶显示器的对比度的。
当该电位器的旋钮1直接和电源端相连时,显示器屏幕的对比度最弱,当其旋钮直接和地端相连时,显示器屏幕的对比度最高。
液晶显示器的数据来源是单片机的P1口,当单片机的T1端口由高电平跳变成低电平时,液晶显示器开始执行命令,并最终显示出频率的数值。
图3-7频率计显示电路图
3.7时钟控制电路
时钟控制电路如图3-9所示。
制作频率计的关键点在于时基信号的准确性和稳定性,它决定频率计的计数精度。
这里选用11.0592的晶振组成的电路来作为单片机AT89C51的时钟电路,由单片机用软件方法得到所需的门控信号。
图3-8时钟控制电路图
4.系统软件设计
4.1系统软件总述
系统软件的设计主要是保证软件和硬件电路相结合,控制硬件正常的工作。
对于频率计来说,就是控制频率计的硬件系统使其最终能较为准确的测出待测信号的频率。
本课题频率计的系统软件的设计采用了模块化的结构方式,将各个功能分成独立模块,由系统的监控程序统一管理执行。
本系统软件的设计主要分两部分:
一部分是执行软件,主要完成各种实质性的功能,如测量、计算、显示、定时中断服务等;另一部分是监控软件,主要来协调各执行模块和操作者的关系,在系统软件中充当组织调度的角色。
该频率计中主要元器件是单片机AT89C51,由它完成对待测信号频率的计数和结果传输等功能,外部还要有分频器、显示器等器件。
被测信号首先要经过放大、整形,如果是高频信号还要由分频器进行分频,然后送入单片机的P0端口和P2端口并开始计数,分频器的分频系数由单片机来控制;计数、分频达到规定的精度后结束计数,然后调用显示子程序,显示结果。
该频率计的总体程序流程图如图4-1所示
图4-1程序总体流程图
4.2显示器初始化设计
显示器初始化程序流程图如图4-2所示。
在测量频率之前,首先要清屏,之后将单片机的读写端同时设置为低电平,因为单片机的读写端控制着液晶显示器的4脚和5脚,当液晶显示器的4脚和5脚同时为低电平时,液晶显示器可以写入指令或显示地址。
其后就要判断频率计显示器是否处于“忙”状态。
如果显示器处于“忙”状态,则要循环等待;如果显示器处于“闲”状态,则可以对显示器进行操作。
另外,在每次单片机的P1口写入控制字后,都要判断显示器是否
课程设计处于“忙”状态。
在判断液晶显示器的状态后,要将其使能端设置为高电平,为后面的程序做铺垫。
因为只有当该使能端由高电平跳变到低电平时,液晶模块才可以执行命令。
图4-2显示初始化流程图
4.3计数子程序
如图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”。
图4-3计数子程序流程图
4.4数制转换子程序设计
二进制转换为十进制流程图如图4-4所示。
在计算机中,任何数据都以二进制形式出现,并在计算机中处理的。
但是通过外部设备与计算机交换数据采用的是其他形式的数据,由于频率计的显示部分是用的1602LCD液晶显示器,它不可以直接显示二进制数据,所以单片机要把P0、P2口读入的二进制数据转换为可以被显示器识别并显示的十进制数据。
图4-4二进制数转换为十进制数流程图
4.5显示子程序设计
显示子程序流程图如图4-5所示。
数据由单片机的P0、P2口读入,由单片机的P1口送出,被液晶显示器接收,显示器工作状态由单片机的P3口控制,P3.7口控晶显示器的4脚,4脚为RS,是寄存器选择,高电平时选择数据寄存器,低
电平时间选择指令寄存器。
P3.6脚控制显示器的5脚,5脚为RW,是读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和RW共同为低电平时间可以写入指令或者显示地址,RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
P3.5脚控制显示器的6脚,6脚为E端,是使能端,当E端高电平跳变成低电平时,液晶模块执行命令。
在液晶显示器开始工作之前要先初始化系统时钟,再初始化I/O端口,最后初始化1602LCD模块。
在数据从单片机读入后,先将数据显示在液晶模块的第一行,随后切换到第二行显示。
图4-51602LCD显示程序流程图
5系统的功能调试
先将电路图在仿真软件进行仿真,在仿真没有问题的情况下,将元器件焊接在电路板上,然后进行硬件调试。
硬件调试的主要任务是排除硬件故障,其中包括设计错误和工艺性故障。
首先进行脱机调试,用万用表逐步检查各个引脚,尤其是电源是否连接正确,单片机芯片是否正确插入底座。
其次运用软件编辑程序,要生成目标代码文件,不断地调试程序。
加载目标代码文件 打开元器件单片机属性窗口,在“Program File”栏中添加上面编译好的目标代码文件“.ASM”;在“Clock Frequency”栏中输入晶振频率为12MHZ。
每一小块程序编写过后都进行联调,这样可以及时观察到自己所编的程序是否符合自己的目的,当出现问题时及时处理,可以避免当有大量问题后无法找出错误的地方,可以提高编程的效率,也有利于最终将程序编写出来。
调试过程:
(1)首先将所写的汇编程序拷入到89C51单片机中
(2)将所焊接的硬件接通+5V的电源,保证数字频率计能够正常运行。
(3)估算一下所要测量信号的频率是在(1Hz,60MHz),(50MHz,2.0GHz)的那个频率段,然后将开关电路的开关打向对应的位置。
(4)观察并记录液晶显示1602LCD的实数。
(5)将记录的实际值与输入信号的理论值作比较。
检测该数字频率计的实际效果怎么样。
调试现象说明:
(1)实验出现最多的现象就是液晶显示屏1602LCD老是出现乱码。
在确保电路硬件没有问题的情况下,检查系统的程序发现是程序中的数制转换子程序有点问题,找到问题后我到网上查找了一个数制转换程序,经过我的修改后,替代原程序后,调试后发现液晶显示屏没有出现乱码,系统能够正常运行。
(2)系统正常运行,记录1602液晶显示屏显示的实数。
如表5-1
理论值(HZ)
50
5k
500k
5M
500M
5G
测量值(HZ)
46
4.82K
512K
5,05M
503M
5,08G
表5-1理论值与测量值比较
由实验数据不难看出测量值与理论值比较接近,说明本数字频率计的性能很好,没有什么大问题。
6结论
本课题设计的频率计采用单片机AT89C51智能化控制,充分利用单片机内部硬件资源和软件功能,大大减少了硬件电路的复杂性,使电路结构更加简洁,有利于提高频率计的工作可靠性。
另外,用AT89C51单片机替换传统的频率计,硬件结构简单,便于升级,能充分改善原有设备的性能,提高测试精度。
通过本次课程设计,我对单片机这门课程有了进一步的理解,在本次设计数字频率计的过程中,学会了很多知识,此外,通过在网上查找相关内容,也学会了设计系统软硬件的一些方法。
参考文献
[1]阎石,数字电子技术基础(第五版),清华大学电子学教研组2005
[2]张毅刚.单片机原理及应用(第2版)北京:
高等教育出版社,2010
[3]胡汉才,单片机原理及其接口技术[M].清华大学出版社,1997
[4]毛谦敏,单片机原理及应用系统设计.北京:
国防工业出版社,2005
[5]涂时亮.单片微机MCS-51用户手册。
上海:
复旦大学出版社,1990
附录
附录A
频率计总电路图
附录B
频率计总程序
Q0000:
MOVSP,#60H;堆栈设置
Q0003:
SETBP3.3;打开定时器开关
SETBP3.5;启动定时器
MOVP1,#01H;清屏,PI口接1602的DB7-DB0,P1写入控制字
ACALLQ01DC;等代LCD不忙
MOVP1,#0CH;显示器开、光标开、闪烁开,即为P1写入控制字
ACALLQ01DC
MOVR0,#EFH
Q0013:
NOP;延时
DJNZR0,Q0013;延时R0个周期
MOVTMOD,#05H;定时器方式一,启动了T0Q0019:
MOVP0,#FFH;P0置高电平
MOVP2,#FFH;P0\P2端口赋值,P2置高电平
MOVTL0,#00H;清计数器
MOVTH0,#00H
CLRP3.3;INT1=0有效
SETBTR0;启动计数器0
SETBP3.2;开计数开关
MOVR0,#0AH
MOVR1,#32H
MOVR2,#50H
MOVR3,#02H
NOP;延时
NOP
NOP
NOP
NOP
Q0038:
MOVR1,#32H;延时R0*32H*50H*02H
NOP
NOP
NOP
NOP
NOP
NOP
Q0040:
MOVR2,#50HQ0042:
MOVR3,#02H
Q0044:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZR3,Q0044
DJNZR2,Q0042
DJNZR1,Q0040
DJNZR0,Q0038
CLRP3.2;INT0=0,关闭计数器开关,停止计数值更新
NOP
NOP
NOP
CLRTR0;关闭计数器,在R0*32H*50H*02H延时内计数
;读入计数值
MOV20H,P0;读P0口数值
MOV21H,P2;读P2口数值
MOV22H,TL0;取计数值低位
MOV23H,TH0;取计数值高位
SETBP3.3;INT1=1,打开定时器开关
;多(四)字节二转十,入口R0为二进制低位字节地址指针,R7为字节数,出口R1为BCD码结果低位字节地址指针
MOVR0,#20H
MOVR1,#30H
MOVR7,#04H
MOVA,R0
MOVR5,A
MOVA,R1
MOVR6,A
MOVA,R7
MOVR3,A
INCR3
CLRA;累加器清零
Q0077:
MOV@R1,A
INCR1
DJNZR3,Q0077
MOVA,R7
MOVB,#08H;将立即数8送入B中
MULAB;A、B相乘,结果送入A中,A=32
MOVR3,A
Q0081:
MOVA,R5
MOVR0,A
MOVA,R7
MOVR2,A
CLRC
Q0086:
MOVA,@R0
RLCA
MOV@R0,A
INCR0
DJNZR2,Q0086
MOVA,R6
MOVR1,A
MOVA,R7
MOVR2,A
INCR2
Q0091:
MOVA,@R1;得到低位数据
ADDCA,@R1;累加
DAA;十进制调整
MOV@R1,A;保存数据
INCR1;进一步循环得到第二位、第三位、第四位数据等
DJNZR2,Q0091
DJNZR3,Q0081
MOVR0,#30H
MOVR1,#24H
Q009E:
MOVA,@R0
ANLA,#0FH
ORLA,#30H
MOV@R1,A
MOVA,@R0
ANLA,#F0H
RLA
RLA
RLA
RLA
ORLA,#30H
INCR1
MOV@R1,A
INCR0
INCR1
CJNER0,#36H,Q009E
;从高往低判断,不是0就开始显示
MOV2EH,#20H
MOVR1,#2DH
CJNE@R1,#30H,Q00F4
MOV@R1,#20H
DECR1
CJNE@R1,#30H,Q00F4
MOV@R1,#20H
DECR1
CJNE@R1,#30H,Q00F4
MOV@R1,#20H
DECR1
CJNE@R1,#30H,Q00F4
MOV@R1,#20H
DECR1
CJNE@R1,#30H,Q0112
MOV@R1,#20H
DECR1
CJNE@R1,#30