基于89C51的数字频率计_第1页
基于89C51的数字频率计_第2页
基于89C51的数字频率计_第3页
基于89C51的数字频率计_第4页
基于89C51的数字频率计_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

..单片机系统课程设计任务书学生姓名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引言42系统概述42.1频率测量原理42.2方案比较42.3方案选择53系统硬件设计53.1系统硬件总述53.2信号输入电路63.3开关电路83.4计数电路83.5AT89C51介绍93.6数字频率计显示电路103.7时钟控制电路114.系统软件设计124.1系统软件总述124.2显示器初始化设计134.3计数子程序144.4数制转换子程序设计154.5显示子程序设计165系统的功能调试176结论19参考文献19附录A20附录B201引言单片机是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理论值〔HZ505k500k5M500M5G测量值<HZ>464.82K512K5,05M503M5,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写入控制字ACALLQ01DCMOVR0,#EFHQ0013:NOP;延时DJNZR0,Q0013;延时R0个周期MOVTMOD,#05H;定时器方式一,启动了T0Q0019:MOVP0,#FFH;P0置高电平MOVP2,#FFH;P0\P2端口赋值,P2置高电平MOVTL0,#00H;清计数器MOVTH0,#00HCLRP3.3;INT1=0有效SETBTR0;启动计数器0SETBP3.2;开计数开关MOVR0,#0AHMOVR1,#32HMOVR2,#50HMOVR3,#02HNOP;延时NOPNOPNOPNOPQ0038:MOVR1,#32H;延时R0*32H*50H*02HNOPNOPNOPNOPNOPNOPQ0040:MOVR2,#50HQ0042:MOVR3,#02HQ0044:NOPNOPNOPNOPNOPNOPNOPDJNZR3,Q0044DJNZR2,Q0042DJNZR1,Q0040DJNZR0,Q0038CLRP3.2;INT0=0,关闭计数器开关,停止计数值更新NOPNOPNOPCLRTR0;关闭计数器,在R0*32H*50H*02H延时内计数;读入计数值MOV20H,P0;读P0口数值MOV21H,P2;读P2口数值MOV22H,TL0;取计数值低位MOV23H,TH0;取计数值高位SETBP3.3;INT1=1,打开定时器开关;多<四>字节二转十,入口R0为二进制低位字节地址指针,R7为字节数,出口R1为BCD码结果低位字节地址指针MOVR0,#20HMOVR1,#30HMOVR7,#04HMOVA,R0MOVR5,AMOVA,R1MOVR6,AMOVA,R7MOVR3,AINCR3CLRA;累加器清零Q0077:MOVR1,AINCR1DJNZR3,Q0077MOVA,R7MOVB,#08H;将立即数8送入B中MULAB;A、B相乘,结果送入A中,A=32MOVR3,AQ0081:MOVA,R5MOVR0,AMOVA,R7MOVR2,ACLRCQ0086:MOVA,R0RLCAMOVR0,AINCR0DJNZR2,Q0086MOVA,R6MOVR1,AMOVA,R7MOVR2,AINCR2Q0091:MOVA,R1;得到低位数据ADDCA,R1;累加DAA;十进制调整MOVR1,A;保存数据INCR1;进一步循环得到第二位、第三位、第四位数据等DJNZR2,Q0091DJNZR3,Q0081MOVR0,#30HMOVR1,#24HQ009E:MOVA,R0ANLA,#0FHORLA,#30HMOVR1,AMOVA,R0ANLA,#F0HRLARLARLARLAORLA,#30HINCR1MOVR1,AINCR0INCR1CJNER0,#36H,Q009E;从高往低判断,不是0就开始显示MOV2EH,#20HMOVR1,#2DHCJNER1,#30H,Q00F4MOVR1,#20HDECR1CJNER1,#30H,Q00F4MOVR1,#20HDECR1CJNER1,#30H,Q00F4MOVR1,#20HDECR1CJNER1,#30H,Q00F4MOVR1,#20HDECR1CJNER1,#30H,Q0112MOVR1,#20HDECR1CJNER1,#30H,Q0112MOVR1,#20HDECR1CJNER1,#30H,Q0112MOVR1,#20HDECR1CJNER1,#30H,Q0130MOVR1,#20HDECR1CJNER1,#30H,Q0130MOVR1,#20HDECR1CJNER1,#30H,Q0130AJMPQ016FQ00F4:MOVR0,#23HMOVR0,#4DHDECR0MOVR0,#48HDECR0MOVR0,#7AHDECR0MOVR0,#20HMOVA,2CHMOV2DH,AMOVA,2BHMOV2CH,AMOVA,2AHMOV2BH,AMOV2AH,#2EHAJMPQ013DQ0112:MOVR0,#23MOVR0,#4BHDECR0MOVR0,#48HDECR0MOVR0,#7AHDECR0MOVR0,#20HMOVA,29HMOV2AH,AMOVA,28HMOV29H,AMOVA,27HMOV28H,AMOV27H,#2EHAJMPQ013DQ0130:MOVR0,#23HMOVR0,#48HDECR0MOVR0,#7AHDECR0MOVR0,#20HDECR0MOVR0,#20HQ013D:MOV10H,#53HMOV11H,#49HMOV12H,#47HMOV13H,#4EHMOV14H,#41HMOV15H,#4CHMOV16H,#20HMOV17H,#46HMOV18H,#52HMOV19H,#45HMOV1AH,#51HMOV1BH,#55HMOV1CH,#45HMOV1DH,#4EHMOV1EH,#43HMOV1FH,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论