为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

数字频率计

2014-01-09 48页 doc 724KB 39阅读

用户头像

is_503952

暂无简介

举报
数字频率计第一章 绪论 摘 要 数字频率计是直接用十进制数字来显示被测信号频率的一种测量装置。本设计是采用AT89S51单片机为控制核心部件来设计系统,实现用单片机内部计数器T1对外部信号脉冲计数。利用汇编语言在keil c51开发环境中编制系统的功能程序。同时用单片机仿真系统,对本系统的软、硬件进行了调试。 本文主要研究了本频率计的工作原理和工作过程。通过对单片机内部的定时/计数器进行设置,使单片机内部计数器T1能够精确地测出加到T1引脚的正脉冲个数,并对测量的频率进行处理显示。本频率计可以测量方波,正弦波和三角波等波形的频率。它...
数字频率计
第一章 绪论 摘 要 数字频率计是直接用十进制数字来显示被测信号频率的一种测量装置。本是采用AT89S51单片机为控制核心部件来设计系统,实现用单片机内部计数器T1对外部信号脉冲计数。利用汇编语言在keil c51开发环境中编制系统的功能程序。同时用单片机仿真系统,对本系统的软、硬件进行了调试。 本文主要研究了本频率计的工作原理和工作过程。通过对单片机内部的定时/计数器进行设置,使单片机内部计数器T1能够精确地测出加到T1引脚的正脉冲个数,并对测量的频率进行处理显示。本频率计可以测量方波,正弦波和三角波等波形的频率。它具有硬件电路简单,扩展容易,测量准确度高,有很好的开发前景等优点,适用于频率不是很高的测量。 关键词:单片机;频率计;测频 Abstract Digital Cymometer is a kind of measuring devices which uses derectly show the measured signal frequency. This design uses AT89S51 single-chip computer to design the system as the control core part, to achieve that the single-chip computer’s internal counter T1 to count the pulse of external signal. We use assembly language in the development environment of keil c51 to workout the system’s function program. Simultaneously we use the monolithic integrated circuit to emulate system, debugging this system’s software and the hardware. This article major research Cymometer’s operating principles and process. The single-chip computer’s internal counter T1 can accurately measure the numbers of the pulse of external signal and get rid of the measured frequency by installing the single-chip computer’s internal timing/counter. The Cymometer can measure the waveform frequency of rectangle wave, sine wave and triangular wave. This design has a simple hardware circuit, easy to expand, high-accuracy measurements and very good development prospects advantage and so on. It apply to the detection of not high frequency. Key words:single-chip computer; Cymometer; frequency measure 前 言 随着微处理器和微计算机技术的不断发展,越来越多的、功能更加完善的智能仪器仪将应用于各行各业,尤其是在工业控制方面的应用,前景将更广大。单片机的使用还将进一步降低智能仪器仪表的成本,使智能仪器仪表有更大的发展,反过来也可以说,智能仪器仪表是单片机的广阔应用领域,将推动单片机技术向更高、更新的方向发展。电子测量仪器就是其中一种,它也是实现信息的获取、转换、存贮、处理和揭示物质运动的必备工具,它的智能化水平在很大程度上反映出一个国家的生产力发展和现代化水平。信号频率测量是电子测量的重要领域。频率的测量越来越受到重视,长度、电压等参数也可以转化为与频率测量有关的技术来确定。因此频率计在电路实验和设备检测中具有十分广泛的用途。本设计通过对传统的周期测量法进行探讨,采用计算脉冲个数来实现频率的测量。以AT89S51单片机为控制核心,应用单片机的算术运算和控制功能实现定时和计算脉冲个数,并采用并行输出将测得的频率实时地显示出来。本设计主要研究了被测信号的放大、整形和变换;单片机的定时/计数器功能的应用和单片机的其他控制功能。设计所需的外围元件较少,扩展性能强,操作简单,测试准确度高,有很好的开发前景。但由于本人水平有限,本设计有很多地方还需改善,请各位老师多批评指正。 目 录 TOC \o "1-2" \h \z \u 第1章 概 述 1 1.1 智能仪器的发展概况 1 1.2 单片机在智能仪器中的应用 1 1.3 基于单片机的数字频率计 3 第2章 系统硬件分析与设计 5 2.1 频率计工作原理 5 2.2 硬件电路设计 6 2.3 主要元件介绍 9 2.4 定时/计数器 17 第3章 系统软件分析和设计 22 3.1 主程序设计 22 3.2 中断服务程序设计 24 3.3 子程序设计 25 第1章 概 述 1.1 智能仪器的发展概况 综观科学上的重大发现,往往是由于新的观测手段的发明而开展起来的。以物理学诺贝尔奖金获得者为例,百分之五十的工作是得益于新的仪器或测试手段的发明创造。仪器仪表也是实现信息的获取、转换、存贮、处理和揭示物质运动的必备工具,仪器仪表装备水平在很大程度上反映出一个国家的生产力发展和现代化水平。 50年代初期,仪器仪表取得了重大突破,数字技术的出现使各种数字仪器得以问世,把模拟仪器的精度、分辨力与测量速度提高了几个量级,为实现测试自动化打下了良好的基础。 60年代中期,测量技术又一次取得了进展,计算机的引入,使仪器的功能发生了质的变化,从个别电量的测量转变成测量整个系统的特征参数,从单纯的接收、显示转变为控制、分析、处理、计算与显示输出,从用单个仪器进行测量转变成用测量系统进行测量。 70年代,计算机技术在仪器仪表中的进一步渗透,使电子仪器在传统的时域与频域之外,又出现了数据域(Data domain)测试。 80年代,由于微处理器被用到仪器中,仪器前面板开始朝键盘化方向发展,过去直观的用于调节时基或幅度的旋转度盘,选择电压电流等量程或功能的滑动开关,通、断开关键已经消失。测量系统的主要模式,是采用机柜形式,全部通过IEEE-488总线送到一个控制器上。测试时,可用丰富的BASIC语言程序来高速测试。不同于传统独立仪器模式的个人仪器(Personal instrument)已经得到了发展。 90年代,仪器仪表与测量科学进一步取得重大的突破性进展。这个进展的主要标志是仪器仪表智能化程度的提高。突出表现在以下几个方面: 1. 微电子技术的进步将更深刻地影响仪器仪表的设计; 2. DSP芯片的大量问世,使仪器仪表数字信号处理功能大大加强; 3. 微型机的发展,使仪器仪表具有更强的数据处理能力; 4. 图像处理功能的增加十分普遍; 5. VXI总线得到广泛的应用。 1.2 单片机在智能仪器中的应用 随着微处理器或微计算机技术的不断发展,越来越多的、功能更加完善的智能仪器仪表将应用于各行各业,尤其是在工业控制方面的应用,前景将更广大。单片机的使用还将进一步降低智能仪器仪表的成本,使智能仪器仪表有更大的发展,反过来也可以说,智能仪器仪表是单片机的广阔应用领域,将推动单片机技术向更高、更新的方向发展。因为它具有功能强、体积小、结构紧凑、功耗低、性能价格比高等优点,因此很适合用于智能仪器仪表中。单片机的作用主要包括以下几个方面。 1.2.1 系统控制与原理 一台完整的智能仪器仪表就是一个独立的测试装置,整个系统的测试工作均由它来完成,而整个系统的控制与管理工作是靠其内部的微处理器或单片机来进行的。这就要求微处理器或单片机配备一套监控程序,使仪器能够命令、启动仪器进行测量。在测量过程中,能自动与测试现场联机,启动信号采样、A/D转换,转换结束自动读取结果并根据需要,决定是否与测试现场脱机。而且,对于测量结果,可由打印机打印或由显示器进行显示。对于模拟输出,则要启动A/D转换,使数字信号按照人们的要求变为模拟信号输出。如果配有通讯线路,则还要控制通讯设备的工作,将测量结果传送到远程或主控机。对于变化范围较大的信号要分档测量,量程的切换由计算机控制,自动进行。对于多参数多回路的巡回检测,也要由计算机定时控制巡回的选择和切换。 1.2.2 数据分析与处理 计算机最独特的功能就是进行数据处理,它有人类无法比拟的运算速度,利用计算机的这一特点,在用微处理器或单片机设计成智能仪器仪表之后,这些智能仪器仪表也就具备了数据处理能力。为了得到准确的测量结果,往往需要对大量数据进行综合分析、统计、归纳、计算和判断。计算机在智能仪器仪表中承担了全部的计算和数据处理任务。有的需要进行平方、立方、开方、三角函数、级数和对数运算,有的需要进行微分、积分、导数和求解高次方程、高阶微分方程的运算,有的还需要建立资料库,配置专家系统,以对数据进行综合分析和处理,得出正确的结论。例如,在测量电力线路中的电压、电流、功率与功率因数等参数时,为了提高测量精度,可取若干次(譬如128 或256) 测量结果的平均值。这就需要进行数据处理和计算。在根据电压和电流之间的相位差求功率因数时,需要进行余弦函数的计算,在气压测量时,要按一定的公式计算标准气压高度等。还有在用智能医疗仪器对人体进行检查时,经常需要测量出大量数据,然后对这些数据进行综合分析和计算,从而得出正确的结论,制定出有效的治疗。 1.2.3 误差分析与修正 任何测量仪器仪表都存在误差问题,即使是精度很高的数字式仪器仪表也必然存在有一定的误差。这些误差一方面来源于传感器、A/D转换器,另一方面来源于仪器内的电子线路。其中,传感器误差所占的比重最大,这里所指的误差类型有:非线性误差、温度误差、零位漂移误差和迟滞误差等。以上误差一般有一定规律,有的可用数学曲线进行描述或者逼近,有的即使找不到描述曲线,但也会有统计规律。在常规仪器仪表中,这些误差多采用补偿电路来克服,这种称为硬件修正法。用硬件电路来逼近某一曲线往往是非常困难的,因为补偿电路复杂以后,补偿电路本身又会带来误差,而且还会提高仪器仪表的成本。而在以计算机为核心的智能仪器仪表中,用软件的方法来逼近某一数学曲线,或者按统计规律来消除某一误差,则是比较容易的事情。因此,在一般智能仪器仪表的计算程序中都配置有相应的误差修正程序,这些程序可以用汇编语言编写,也可以用高级语言编写。对于要求速度较快的实时测量,多采用汇编语言编写。由此可见,智能仪器仪表中计算机的计算与数据处理功能为减小和消除误差提供了极大的方便。 1.2.4 自检与故障监控 为了使智能仪器仪表可靠地工作,一般都配有自检程序或故障监控程序,这也是智能仪器仪表所具有的独特功能之一。自检通常是在仪器仪表开机或非正常工作状态下进行,用来对仪器仪表的性能进行检查,以判断仪器仪表是否正常工作。若仪器仪表处于非正常状态,则发出报警信号,并作出诊断,确定故障部位,以便维修。对仪器仪表的自检与故障监控功能随设备的可靠性要求和复杂程度的不同而有很大的区别。有的要求有完善的自检与故障监控系统,有的对自检没有过高的要求,而有的甚至不配自检与故障监控系统。通常自检与故障监控系统除了对自身进行检查之外,还能对信号源进行检查。如对输入信号进行超量检查。如果某一被检测的信号为零或超出某一范围,则认为出故障。在一些高档智能仪器仪表中,可能还配有容错系统。当自检与故障监控系统发现设备出现了故障,自检与故障监控系统便将故障部件“隔离”,对系统进行重构,组成一个新的检测系统,继续对被测信号进行测量。在智能仪器仪表中,计算机承担了全部控制、管理、计算和数据处理任务,组成了一个完整的计算机控制系统。这个系统一般可分为3大部分:一是现场信号或数据采集及输入通道;二是计算机系统;三是控制信号输出通道和执行机构[1]。 1.3 基于单片机的数字频率计 基于单片机的一系列的优点,在实时控制、自动测试、智能仪表、计算机终端、遥测通讯、家用电器等许多方面得到了广泛的应用。它的应用正在不断地走向深入,带动了传统控制检测日新月异的更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用。在设计单片机和数字电路时经常需要测量脉冲数量、脉冲宽度、脉冲周期、脉冲频率等参数,虽然使用逻辑分析仪可以很好的测量这些参数,但其价格昂贵。实现频率测量的方法较多,可使用专用芯片,其电路简单,调试容易,但一般造价也较高,使用时灵活性欠佳。且实现测量的数字化、自动化、智能化已成为各类仪器仪表设计的方向。这里研究以单片机AT89S51为核心的数字频率计的设计与制作。设计要求所需外围元件较少,扩展性能强,操作简单,测试准确度高,有很好的开发前景。  第2章 系统硬件分析与设计 2.1 频率计工作原理 2.1.1 系统组成 频率计由信号预处理电路、AT89S51芯片、并行口显示电路和系统软件所组成。其中信号预处理电路包含信号放大、波形变换和波形整形。系统硬件框图如图2.1所示。信号预处理电路中的放大器实现对待测信号的放大,降低对待测信号幅度的要求;波形变换和波形整形电路将放大的信号转变成可与单片机接口的TTL信号;单片机通过设置使T1引脚控制内部计数器T1工作,这样能精确地测出加到T1引脚的正脉冲的个数;频率显示部分采用并行LED显示模块,精简了外围器件[2]。系统软件在第三章介绍。 图2.1系统硬件框图 关于TTL信号的点滴介绍:TTL电平信号被利用的最多是因为通常数据表示采用二进制,+5V等价于逻辑"1",0V等价于逻辑"0",这被称做TTL(晶体管-晶体管逻辑电平)信号系统,这是计算机处理器控制的设备内部各部分之间通信的标准技术。 TTL电平信号对于计算机处理器控制的设备内部的数据传输是很理想的,首先计算机处理器控制的设备内部的数据传输对于电源的要求不高以及热损耗也较低,另外TTL电平信号直接与集成电路连接而不需要价格昂贵的线路驱动器以及接收器电路;再者,计算机处理器控制的设备内部的数据传输是在高速下进行的,而TTL接口的操作恰能满足这个要求。TTL型通信大多数情况下,是采用并行数据传输方式,而并行数据传输对于超过10英尺的距离就不适合了。这是由于可靠性和成本两面的原因。因为在并行接口中存在着偏相和不对称的问题,这些问题对可靠性均有影响;另外对于并行数据传输,电缆以及连接器的费用比起串行通信方式来也要高一些。 2.1.2 系统工作原理 频率的测量实际上就是在1s时间内对信号进行计数,计数值就是信号频率。用单片机计频率通常采用两种办法,1)单片机外部使用计数器对脉冲信号进行计数,计数值再由单片机读取;2)使用单片机自带的计数器对输入脉冲进行计数,或者测量信号的周期。由于第二种方法电路简洁易懂,功能容易实现,调试简单,所以这里选用这种方法。 单片机AT89S51有两个16位定时/计数器,其中T0用作定时器,每次定时100ms,利用中断使它实现10次定时,得到1s定时;T1用作计数器,对输入脉冲进行计数。计数器和定时器同时启动,当定时满1s时,计数器同时停止计数,此时计数值为N,如图2.2所示,T=1s。单片机读取T1的计数值N,存于两个存储器中,这是个16位二进制数,经十进制BCD码转换后,分别取数据的千,百,十,个位,把它们分别存放在数据缓冲区40H—43H中,然后用软件将数据分别送P2口并行输出显示。 图2.2计数器计数原理 2.2 硬件电路设计 数字频率计硬件电路图见附图Ⅰ,该电路可分为:(1)信号预处理电路,(2)单片机电路,(3)数字显示电路。 2.2.1 信号预处理电路 频率计的信号预处理电路如图2.3所示,它由两级电路构成,第一级为由开关三极管组成的零偏置放大器,三极管采用开关三极管,以保证放大器具有良好的高 图2.3信号预处理电路图 频响应。当输入信号为零或负电压时,三极管截止,输出高电平。当输入信号为正电压时,三极管导通,输出电压随着输入电压的上升而下降,这使得频率计既可测量任意方波信号的频率,也可以测量正弦波信号的频率。放大器的放大功能降低了对待测信号幅度的要求,实现了系统能对任意大于0.5V的正弦波和脉冲信号进行测量。第二级采用NE555构成的施密特触发器,把放大放大器生成的单相脉冲转换成单片机能检测到的TTL信号[3]。 2.2.2 单片机电路 (一)电源电路设计 随着微电子技术的不断进步,系统电源的设计在单片机应用系统设计中显得越来越重要。它对单片机系统是否正常工作起着至关重要的作用。在这个设计中,用了一个能把220V的交流电压转换成9V直流电压的变压器,所以根据系统的要求,选择7805稳压管将9V电压转成5V输出。7805直流稳压电路图见图2.4这里所有芯片都是用5V电压供电。 图2.4电源电路 (二)复位电路设计 单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作,例如复位后PC=0000H,使单片机从第—个单元取指令。无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位,所以我们必须弄清楚MCS-51型单片机复位的条件、复位电路和复位后状态。单片机复位的条件是:必须使RST/Vpd或RST引脚(9)加上持续两个机器周期(即24个振荡周期)的高电平。例如,若时钟频率为12MHz,每机器周期为1μs,则只需2μs以上时间的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。单片机常见的复位电路如图2.5(a),(b)所示。 图2.5(a)为上电复位电路,它是利用电容充电来实现的。在接电瞬间,RESET端的电位与VCC相同,随着充电电流的减少,RESET的电位逐渐下降。只要保证RESET为高电平的时间大于两个机器周期,便能正常复位。 (a) (b) 图2.5 复位电路 图2.5(b)为按键复位电路。该电路除具有上电复位功能外,若要复位,只需按图(b)的RESET键,此时电源VCC经电阻R1、R2分压,RESET端产生复位高电平。单片机复位期间不产生ALE信号,即ALE=1。表明单片机复位期间不会有任何取指操作。 2.2.3 数字显示电路 如图2.6所示,位控制码从P0口输出,外加10k的上拉电阻,当某一位为1其他位为0时,该路的三极管导通,使得对应位的LED亮。段控制从P2口输出,用74LS244作驱动器来驱动显示管。显示管采用的是KD5641AH四位连体LED显示器[4]。 图2.6 显示电路 2.3 主要元件介绍 2.3.1 AT89S51单片机 AT89S51的内部结构图如图2.7所示,它是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4kbytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。兼容了89C51的所有功能。89C51受到了PIC单片机阵营的挑战,89C51最致命的缺陷在于不支持ISP(在线更新程序)功能,必须加上ISP功能等新功能才能更好延续MCS-51的传奇。89S51就是在这样的背景下取代89C51的,现在,89S51目前已经成为了实际应用市场上新的宠儿,它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器与单片芯片中,ATMEL公司的功能强大,低价位AT89S51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。 一、主要性能参数: 与MCS-51产品指令系统完全兼容 4k字节在系统编程(ISP)Flash闪速存储器 1000次擦写周期 4.0-5.5V的工作电压范围 全静态工作模式:0Hz-33MHz 三级程序加密锁 128×8字节内部RAM 32个可编程I/O口线 2个16位定时/计数器 6个中断源 全双工串行UART通道 低功耗空闲和掉电模式 中断可从空闲模唤醒系统 看门(WDT)及双数据指针 掉电标识和快速编程特性 灵活的在系统编程(ISP-字节或页写模式) 二、功能特性概述: AT89S51提供以下标准功能:4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,看门狗(WDT),两个数据指针,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89S51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。 图2.7 AT89S51内部结构方框图 三、引脚功能说明(图2.8): Vcc:电源电压 GND:地 图2.8 AT89S51引脚图 P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。 在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。 在Flash编程时,P0口接受指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。 P1口:P1口是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,做输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流( )。 Flash编程和程序校验期间,P1接收低8位地址。 表2-1是对P1口的一个补充说明。 表2-1 P1口第二功能表 端口引脚 第二功能 P1.5 MOSI(用于ISP编程) P1.6 MISO(用于ISP编程) P1.7 SCK(用于ISP编程) P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路,对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流( )。 在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX @DPTR指令)时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器(如执行MOVX @Ri指令)时,P2口线上的内容(也即特殊功能寄存器(SFR)区中P2寄存器的内容),在整个访问期间不改变。 Flash编程或校验时,P2亦接收高位地址和其他控制信号。 P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。作输入端时,被外部拉低的P3口将用上拉电阻输出电流( )。 P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如(表2-2)所示。此外,P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。 RST:复位输入,当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。WDT溢出将使该引脚输出高电平,设置SFR AUXR的DISRTO位(地址8EH)可打开或关闭该功能。DISRTO位缺省为RESET输出高电平打开状态。 表2-2 P3口第二功能表 引脚 第二功能 备选功能 P3.0 RXD 串行输入口 P3.1 TXD 串行输出口 P3.2 外部中断0 P3.3 外部中断1 P3.4 T0 定时器0外部输入 P3.5 T1 定时器1外部输入 P3.6 外部数据存储器写选通 P3.7 外部数据存储器读选通 ALE/ :当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。 对Flash存储器编程期间,该引脚还用于输入编成脉冲( )。 如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令ALE才会被激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。 :程序储存允许( )输出是外部程序存储器的读选通信号,当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次 有效,即输出两个脉冲。当访问外部数据存储器,没有两次有效的 信号。 EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000H—FFFFH),EA端必须保持低电平(接地)。需要注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。Flash存储器编程时,该引脚加上+12V的编程电压Vpp。 XTAL1:振荡器反相放大器及内部时钟发生器的输入端。 XTAL2:振荡器反相放大器的输出端。 四.晶体振荡器特性 AT89S51中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端,这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路见图2.9(a)。 外接石英晶体(或陶瓷谐振器)及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性。如果使用石英晶体,我们推荐电容使用30pF±10pF,而如使用陶瓷谐振器建议选择40pF±10pF。 用户也可以采用外部时钟。采用外部时钟的电路如图2.9(b)所示。这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。 由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。 (a)内部振荡电路 (b)外部振荡电路 图2.9晶体连接和外接时钟电路图 五.芯片擦除 整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。 此外,AT89S51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。 89S51相对于89C51新增加很多功能,性能有了较大提升,价格基本不变,甚至比89C51更低.增加的新功能包括: 1、ISP在线编程功能,这个功能的优势在于改写单片机存储器内的程序不需要把芯片从工作环境中剥离,是一个强大易用的功能。 2、最高工作频率为33MHz,大家都知道89C51的极限工作频率是24M,就是说S51具有更高工作频率,从而具有了更快的计算速度。 3、具有双工UART串行通道。 4、内部集成看门狗计时器,不再需要像89C51那样外接看门狗计时器单元电路。 5、双数据指示器。 6、电源关闭标识。 7、全新的加密算法,这使得对于89S51的解密变为不可能,程序的保密性大大加强,这样就可以有效的保护知识产权不被侵犯[5]。 2.3.2 555构成的施密特触发器 施密特触发器是一种能够把输入波形整形成为适合于数字电路需要的矩形脉冲的电路。而且由于具有滞回特性,所以抗干扰能力也很强。 施密特触发器可以由分立元件构成,也可以由门电路及555定时器构成。它在脉冲的产生和整形电路中应用很广。 (一)555的结构及工作原理(图2.10) 引脚1:地线; 引脚2:低电平触发端 引脚3:输出端 引脚4:复位端低电平有效 引脚5:电压控制段 引脚6:高电平触发端 引脚7:放电端 引脚8:电源(4.5-16V) 图2.10 555定时器结构图 ①R=0时,Q=1,uo=0,T导通。 ②R=1、UTH>2VCC/3、UTR>VCC/3时,C1=0、C2=1,Q=1、Q=0,uo=0,T 饱和导通。 ③R=1、UTH<2VCC/3、UTR>VCC/3时,C1=1、C2=1,Q、Q不变,uo不变, T状态不变。 ④R=1、UTH<2VCC/3、UTR<VCC/3时,C1=1、C2=0,Q=0、Q=1,uo=1,T截止。 (二)555定时器构成的施密特触发器。 只要将555定时器的2号脚和6号脚接到一起,就可以构成施密特触发器(图2.11),我们简记为“二六一搭”。 (1)当ui=0时,由于比较器C1=1、C2=0,触发器置1,即Q=1、 ,uo1=uo=1。ui升高时,在未到达2VCC/3以前,uo1=uo=1的状态不会改变。 (2)ui升高到2VCC/3时,比较器C1输出为0、C2输出为1,触发器置0,即Q=0、 ,uo1=uo=0。此后,ui上升到VCC,然后再降低,但在未到达VCC/3以前,uo1=uo=0的状态不会改变。 图2.11 555定时器构成的施密特触发器 (3)ui下降到VCC/3时,比较器C1输出为1、C2输出为0,触发器置1,即Q=1、 ,uo1=uo=1。此后,ui继续下降到0,但uo1=uo=1的状态不会改变。 应用举例:图2.12 图2.12 波形变换图例 2.3.3 74LS244 74LS244是三态八缓冲器/线驱动器/线接收器(3S,两组控制),其逻辑图图2.13所示。简要说明: 244为三态输出的八组缓冲器和总线驱动器,其主要电器特性的典型值如表2-3所示(不同厂家具体值有差别)。 表2-3 244缓冲器的典型值 型号 TPLH TPHL PD 54LS244/74LS244 12ns 12ns 110mW 图2.13 74LS244逻辑图 引出端符号: 1A1~1A4,2A1~2A4 输入端 、 三态允许端(低电平有效) 1Y1~1Y4,2Y1~2Y4 输出端 极限值: 电源电压: 7V 输入电压: 5.5V 输出高阻态时高电平电压: 5.5V 工作环境温度: 0~70℃ 存储温度: -65~150℃ 功能表(表2-4)。 表2-4 74LS244功能表 Input Output A Y L L H L H X L H Z 2.3.4 KD5641AH显示器 这里采用的是KD5641AH四位连体LED显示器引脚图如下图2.14所示。 图2.14 KD5641AH引脚图 2.4 定时/计数器 AT89S5151单片机内部设有两个16位的可编程定时器/计数器。可编程的意思是指其功能(如工作方式、定时时间、量程、启动方式等)均可由指令来确定和改变。在定时/计数器中除了有两个16位的计数器之外,还有两个特殊功能寄存器(控制寄存器和方式寄存器)。 2.4.1 定时/计数器的结构 图2.15所示,从图中我们可以看出,16位的定时/计数器分别由两个8位专用寄存器组成,即:T0由TH0和TL0构成;T1由TH1和TL1构成。其访问地址依次为8AH-8DH。每个寄存器均可单独访问。这些寄存器是用于存放定时或计数初值的。此外,其内部还有一个8位的定时器方式寄存器TMOD和一个8位的定时控制寄存器TCON。这些寄存器之间是通过内部总线和控制逻辑电路连接起来的。TMOD主要是用于选定定时器的工作方式;TCON主要是用于控制定时器的启动停止,此外TCON还可以保存T0、T1的溢出和中断标志。当定时器工作在计数器方式时,外部事件通过引脚T0(P3.4)和T1(P3.5)输入。 2.4.2 定时/计数器的工作原理 16位的定时/计数器实质上就是一个加1计数器,其控制电路受软件控制、切换。当定时/计数器为定时工作方式时,计数器的加1信号由振荡器的12分频信号产生,即每过一个机器周期,计数器加1,直至计满溢出为止。显然,定时器的定时时间与系统的振荡频率有关。如果晶振为12MHz,则计数周期为: T=1/(12×106)Hz×1/12=1μs 这是最短的定时周期。若要延长定时时间,则需要改变定时器的初值,并要适当选择定时器的长度(如8位、13位、16位等)。 图2.15 定时/计数器结构原理图 当定时/计数器为计数工作方式时,通过引脚T0和T1对外部信号计数,外部脉冲的下降沿将触发计数。计数器在每个机器周期的S5P2期间采样引脚输入电平。若一个机器周期采样值为1,下一个机器周期采样值为0,则计数器加1。此后的机器周期S3P1期间,新的计数值装入计数器。所以检测一个由1至0的跳变需要两个机器周期,故外部事年的最高计数频率为振荡频率的1/24。例如,如果选用12MHz晶振,则最高计数频率为0.5MHz。虽然对外部输入信号的占空比无特殊要求,但为了确保某给定电平在变化前至少被采样一次,外部计数脉冲的高电平与低电平保持时间均需在一个机器周期以上。 当CPU用软件给定时器设置了某种工作方式之后,定时器就会按设定的工作方式独立运行,不再占用CPU的操作时间,除非定时器计满溢出,才可能中断CPU当前操作。CPU也可以重新设置定时器工作方式,以改变定时器的操作。由此可见,定时器是单片机中效率高而且工作灵活的部件。 综上所述,我们已知定时/计数器是一种可编程部件,所以在定时/计数器开始工作之前,CPU必须将一些命令(称为控制字)写入定时/计数器。将控制字写入定时/计数器的过程叫定时/计数器初始化。在初始化过程中,要将工作方式控制字写入方式寄存器,工作状态字(或相关位)写入控制寄存器,赋定时/计数初值。下面我们就提出的控制字的格式及各位的主要功能与大家详细的讲解。 定时/计数器T0和T1有2个控制寄存器TMOD和TCON,它们分别用来设置各个定时器/计数器的工作方式,选择定时或计数功能,控制启动运行,以及作为运行状态的标志等。其中,TCON寄存器中另有4位用于中断系统。 2.4.3 定时/计数器方式寄存器TMOD 定时器方式控制寄存器TMOD在特殊功能寄存器中,字节地址为89H,无位地址。TMOD的格式图2.16所示。 图2.16 TMOD各位定义图 由图可见,TMOD的高4位用于T1,低4使用于T0,4种符号的含义如下: GATE:门控制位。GATE和软件控制位TR、外部引脚信号INT的状态,共同控制定时/计数器的打开或关闭。 表2-5 TMOD工作方式表 M1 M0 工作方式 功能描述 0 0 工作方式0 13位计数器 0 1 工作方式0 16位计数器 1 0 工作方式0 自动重装入8位计数器 1 1 工作方式0 T0分成两个8计数器,T1停止计数 C/T:定时/计数器选择位。C/T=1,为计数器方式;C/T=0,为定时器方式。 M1M0:工作方式选择位,定时/计数器的4种工作方式由M1M0设定(表2-5所示)。 定时器/计数器方式控制寄存器TMOD不能进行位寻址,只能用字节传送指令设置定时器工作方式,低半字节定义为定时器0,高半字节定义为定时器1。复位时,TMOD所有位均为0。 2.4.4 定时/计数器控制寄存器TCON TCON在特殊功能寄存器中,字节地址为88H,位地址(由低位到高位)为88H一8FH,由于有位地址,十分便于进行位操作。TCON的作用是控制定时器的启、停,标志定时器溢出和中断情况。 TCON的格式如下图所示。其中,TFl,TRl,TF0和TR0位用于定时/计数器;IEl,ITl,IE0和IT0位用于中断系统。图2.17所示。 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 图2.17 TCON各位定义图 各位定义如下: TF1:定时器1溢出标志位。当字时器1计满溢出时,由硬件使TF1置“1”,并且申请中断。进入中断服务程序后,由硬件自动清“0”,在查询方式下用软件清“0”。 TR1:定时器1运行控制位。由软件清“0”关闭定时器1。当GATE=1,且INT1为高电平时,TR1置“1”启动定时器1;当GATE=0,TR1置“1”启动定时器1。 TF0:定时器0溢出标志。其功能及操作情况同TF1。 TR0:定时器0运行控制位。其功能及操作情况同TR1。 IE1:外部中断1请求标志。 IT1:外部中断1触发方式选择位。 IE0:外部中断0请求标志。 IT0:外部中断0触发方式选择位。 由于TCON是可以位寻址的,因而如果只清溢出标志位或启动定时器工作,可以用位操作命令。例如:执行“CLR TF0”后则清定时器0的溢出;执行“SETB TR1”后可启动定时器1开始工作(当然前面还要设置工作方式)。 2.4.5 定时器/计数器的初始化 由于定时器/计数器的功能是由软件编程确定的,所以一般在使用定时/计数器前都要对其进行初始化,使其按设定的功能工作。初始化的步骤一般如下: 1、确定工作方式(即对TMOD赋值); 2、预置定时或计数的初值(可直接将初值写入TH0、TL0或TH1、TL1);3、根据需要开放定时器/计数器的中断(直接对IE位赋值); 4、启动定时器/计数器(若已规定用软件启动,则可把TR0或TR1置“1”。若已规定由外中断引脚电平启动,则需给外引脚步加启动电平。当实现了启动要求后,定时器即按规定的工作方式和初值开始计数或定时)。 下面研究确定定时/计数器初值的具体方法。 因为在不同工作方式下计数器位数不同,因而最大计数值也不同。 现假设最大计数值为M,那么各方式下的最大值M值如下: 方式0:M=213=8192 方式1:M=216=65536 方式2:M=28=256 方式3:定时器0分成两个8位计数器,所以两个M均为256。 因为定时/计数器是作“加1”计数,并在计数满溢出时产生中断,因此初值X可以这样计算: X=M-计数值[6]。 第3章 系统软件分析和设计 系统完整的程序设计在附录Ⅰ,整个系统的软件设计可分为三部分:主程序设计、中断服务程序设计、子程序设计,下面就各个部分分别介绍。 3.1 主程序设计 根据单片机AT89S51定时器/计数器T1方式1结构图(如图3.1)可知T1计数脉冲控制电路中,有一个方式电子开关,当C/T=0时,方式电子开关打在上面,以振荡器的十二分频信号作为T1的计数信号,此时作为定时器用,C/T=1时,方式电子开关打在下面,此时以T1(P3.5)引脚上的输入脉冲作为T1的计数脉冲,实现对外界脉冲进行计数。C/T的状态可由T1的方式寄存器TMOD进行设置。 图3.1定时/计数器T1方式1结构图 用定时/计数器实现频率测量有两种方法。1、计数一定门限时间内的频率信号脉冲数。此法以时基信号为基准,去测被测频率信号,时间值(即时基脉冲数)没有误差,而所计被测频率信号脉冲个数存在±1的误差。T0定时器/计数器用来设置闸门时间Tg,T1定时器/计数器采用16位计数工作方式(初值为0),内部控制启停,若此时读取TL1、TH1的数据为N。则待测信号的频率值为:fx=N/Tg。2、计一定数量的被测脉冲所经历的时间。此法以被测频率信号为基准,去卡时间(即时基脉冲信号),被测频率信号脉冲个数没有误差,而所计时间数值存在±1的误差。T1定时器/计数器采用16位计时工作方式(初值为0),内部控制启停。根据测量原理,在两次中断期间对Fosc/6计数。设T1计数器的计数值为M,则待测信号的频率值为:fx=Fosc/(6M)[7]。 本设计用的是方法2。根据16位定时/计数器的工作原理,由T0作定时器,T1对外部脉冲进行计数。当定时器T0产生溢出时,发出中断请求,利用中断服务程序读取计数器T1的计数值,并对计数值进行处理,然后中断返回。程序框图3.2如下: 图3.2主程序流程框图 相应的程序如下: ORG 0000H LJMP START ORG 000BH LJMP TX0 ORG 0030H START: MOV R0,#40H ;40H~43H为显示数据存放单元 MOV R7,#8 ;(40H为最高位) MOV R2,#10 ;1s=100ms*10 STR1: MOV @R0,#00H ;把R0~R7都清零 INC R0 DJNZ R7,STR1 MOV TMOD,#41H ;设定时/计数器的工作方式 MOV TH0,#3CH ;定时/计数器0赋初值 MOV TL0,#0B0H MOV TH1,#00 ;定时/计数器1赋初值 MOV TL1,#00 SETB EA ;开总中断 SETB ET0 ;开T0中断 MOV TCON ,#50H ;开定时/计数器 LOOP0: LCALL DISPLAY LJMP LOOP0 3.2 中断服务程序设计 中断服务程序完成的功能:读取计数器的计数值N,调用BCD码转换子程序,将要显示的数分别存放在显示缓冲区里。程序框图如图3.3。 图3.3中断程序流程框图 相应程序如下: TX0: MOV TL0,#0B0H ;定时/计数器0重置值 MOV TH0,#3CH DJNZ R2, NEXT MOV R4,TL1 ;读取计数值 MOV R5,TH1 MOV TL1,#00H ;定时/计数器1重置值 MOV TH1,#00H LCALL PROCESS ;调用BCD码转换程序 MOV R2,#10 NEXT: NOP RETI 3.3 子程序设计 3.3.1 BCD码转换子程序 BCD码转换子程序是本系统对数据进行处理的核心程序。要在显示器上显示4位十进制数,就得要把16位的二进制数转换成十进制BCD码。这里设R5R4的内容为16位二进制数,要求转换结果存入18H 19H 1AH,转换流程图如图3.4所示。 图3.4 BCD码转换程序 相应程序如下: PROCESS[8]:MOV R6,#16 ;设置计数值 CLR A MOV 1AH,A ;存放结果寄存器清零 MOV 19H,A MOV 18H,A LOOP1: CLR C MOV A,R4 ;取被转换二进制数乘2 RLC A MOV R4,A MOV A,R5 RLC A MOV R5,A MOV A,1AH ;十进制调整后转换成BCD码 ADDC A,1AH ;存入18H 19H 1AH DA A MOV 1AH,A MOV A,19H ADDC A,19H DA A MOV 19H,A MOV A,18H ADDC A,18H DA A MOV 18H,A DJNZ R6,LOOP1 MOV A,1AH ANL A,#00001111B ;取1AH的低四位作为个位 MOV 43H,A MOV A,1AH ANL A,#11110000B ;取1AH的高四位作为十位 SWAP A MOV 42H,A MOV A,19H ANL A,#00001111B ;取19H的低四位作为百位 MOV 41H,A MOV A,19H ANL A,#11110000B ;取19H的高四位作为千位 SWAP A MOV 40H,A MOV A,18H ANL A,#00001111B MOV 3FH,A MOV A,18H ANL A,#11110000B SWAP A MOV 3EH,A RET[9] 3.3.2 显示子程序设计 (一)LED显示设计 先简单介绍一下LED的工作原理。七段发光二极管LED(light emitting diode)是一种应用很普遍的显示器件。从单板微型机、袖珍计算器到许多微型机控制系统及数字化仪器中都用LED作为输出显示。 LED的主要部分是七段发光管,,这七段发光段分别称为a、b、c、d、e、f、g,又的产品还附带有一个小数点Dp,七段式发光管名称就是由此而来。 通过7个发光段的不同组合,可以显示0~9和A~F共16个字母数字,从而实现十六进制数的显示。 LED可以分为共阳极和共阴极两种结构。如为共阳极结构,则数码显示端输入低电平有效,当某一段得到低电平时,便发光。比如,当a、b、g、e、d为低电平,而其他段为高电平时,则显示数字“2”;如为共阴极结构,则数码显示端输入高电平有效,当某段处于高电平时便发光。 (二)多位LED显示原理 实际使用时,往往要用几个显示管实现多位显示。这时,如果每一个LED占用一个独立的输出端口,那么,所占用的输出管道就太多了,而且驱动电路的数目也很多。所以,要从硬件和软件两方面想办法来节省硬件电路。 下面,我们就来介绍一种常用的方法。在这方案中,硬件上用公用的驱动电路来驱动个显示管,在软件上用扫描方法来实现数码显示。 用两个8位的并行输出通道就可以实现4个LED的显示。其中一个通道作为位控制,如果使用共阴极LED,那么,当控制端口输出的控制码某一位为高电平时,此位对应的LED便显示数据。另一个通道输出七段译码值,通过一个8位驱动器组将译码值同时送到各显示管。此通道和8位驱动器组是由4个显示管分时使用的,因为当CPU送出一个代码时,尽管各显示管的阴极都收到了此代码,但是,位码中只有1位为高电平,所以,只有一个管子的相应段得到导通而显示数字,其他管子并不发光。我们将此通道和8位驱动器组称为段控制通道。 如果CPU往段控制通道连续送8个数字,并且依次往位控制通道发出8个位扫描代码,每个扫描码中,对应于要显示的位为1,其余各位为0,这样,便可以在4个LED显示出4位十进制数字。利用眼睛的视觉惯性,当采用一定的频率不断地往4个LED输送显示码和扫描代码时,从显示管上便可见到相当稳定的数字显示。可见,采用这种方案时,硬件上很节省,不过,CPU要用较多的时间去输出扫描代码和段显示码。 为了节省硬件,在多位显示时,往往用软件来完成段译码,即CPU往LED直接输出段码。图3.5为显示程序框图。 采用这个流程框图编制程序时,需要在内存中开辟一个缓冲区,用来存放要显示的十六进制数。缓冲区的第一个数据送往最左边的LED,下一个数据送到左边第二个LED……,最后一个数据送到最右边的LED。 另外还需要建立一个表,此表中,从上到下依次存放十进制数0-9对应的七段代码。七段代码的编码格式和硬件连接有关。在这个设计中,P2.0对应LED的b段,P2.1对应LED的f段,P2.2对应LED的a段,P2.3对应LED的g段,P2.4对应LED的c段,P2.5对应LED的Dp段,P2.6对应LED的d段,P2.7对应LED的e段。这样得到0-9所对应的代码为0D7H,11H,0CDH,5DH,1BH,5EH, 0DEH, 15H,0DFH,1FH[10]。 图3.5 显示子程序 相应的程序如下: 设40H为最高位,43H为最低位,先扫描高位 DISPLAY: MOV R0,#40H MOV R1,#08H ;数码管位控制 MOV P2,#0FFH PLAY: MOV A,R1 MOV P0,A MOV A,@R0 MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P2,A LCALL DELAY ;显示1ms INC R0 MOV A,R1 JB ACC.0,ENDOUT ;位控制最低位为0则返回 RR A MOV R1,A LJMP PLAY ENDOUT: RET DELAY: MOV R7,#250 ;延时子程序 DL: DJNZ R7,DL RET TABLE: DB 0D7H,11H,0CDH,5DH,1BH,5EH,0DEH,15H,0DFH,1FH 第4章 调试过程 调试仪器:编辑器,示波器,传感器实验台,信号发生器,万用表等。 4.1 硬件调试 4.1.1信号预处理调试 预期成果:把输入信号经波形变换整形得到单片机
/
本文档为【数字频率计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索