1、基于单片机的数字频率计设计 摘要 频率信号具有抗干扰能力强、易于传输、测量精度高等优点,因此在实际测量系统中,经常通过测量待测信号频率达到测量其他参量的目的。本文简要介绍了几种数字频率计的设计方案,其中基于单片机的数字频率计设计方案,具有硬件简单、易于调试、扩展能力强等优点。 本文设计的数字频率计采用脉冲数定时测频法测量频率。数字频率计以单片机为核心,主要分为放大电路、波形变换和整形电路、分频电路、单片机和数据显示电路组成,设计以单片机为核心,被测信号先进入信号放大电路进行放大,再被送到波形整形电路整形,把被测的正弦波或者三角波整形为方波。利用单片机的计数器和定时器的功能对被测信
2、号进行计数。编写相应的程序可以使单片机自动调节测量的量程,并把测出的频率数据送到显示电路显示。 关键词 数字频率计,单片机,测量频率 Abstract Frequency signal has a strong anti-jamming capability, easy to transport and the advantages of high measurement precision, so in the actual measuring system, often through measuring for the signal frequency achiev
3、e the purpose of measuring other parameters.This paper presents the design of digital frequency meter, focusing on many alternatives to microcontroller as control core,Realize the digital frequency for frequency measurement project design,its hardware design is simple and easily debugging,and has ex
4、pansion ability. Selected design ideas which directly measuring frequency law in the high-band and testing cycle law in the low-band.The hardware partially is composed by enlarged circuit ,the profile transformation and the reshaping circuit ,the gate at the base control circuits ,sub-frequency c
5、ircuits,the microcontroller and the date display electrice cricuit; The software design is achieved by many functional modules,such as the signal frequency measurement module,the signal cycle survey module,timer interruption of service module,the data display module and so-on. Achieving counting fun
6、ction and conversion between cycle and frequency by using control functions and mathematics operation ability of microcontroller.Like these the survey scope can achieve 1HZ--10MHZ. Key Words digital frequency meter, microcontroller, frequency measurements
7、 目录 摘要 I Abstract I 目录 III 1 绪论 1 1.1课题研究背景及意义 1 1.2市场频率计厂商介绍 3 1.3数字频率计设计的任务与要求 4 2 测频方法选择 5 2.1测频方法设计的几种方案 5 2.2几种方案的优劣讨论 6 2.3本次设计采用的方案 6 3 数字频率计的硬件电路设计 7 3.1数字频率计的硬件系统框架 7 3.2单片机电路设计 8 3.3放大整形电路 17 3.4显示电路的设计 26 3.5数字频率计的分频电路的设计 30 3.6数字频率计电源模块的设计 33 4 数字
8、频率计软件程序设计 35 4.1软件设计规划 35 4.2定时器设计 36 4.3程序流程图设计 37 4.4主程序 38 5 结论 41 致 谢 42 参考文献 43 附录一 翻译 44 附录二 程序 51 附录三 数字频率计原理图 54 - 53 - 1 绪论 1.1课题研究背景及意义 数字频率计是一种基础测量仪器,到目前为止已有30多年的发展史。早期,设计师们追求的目标主要是扩展测量范围,再加上提高测量精度、稳定度等,这些也是人们衡量数字频率计的技术水平,决定数字频率计价格高低的主要依据。目前这些基本技术日臻完善,成熟。应用现代技术可以轻
9、松地将数字频率计的测频上限扩展到微波频段。 纵观国内外研究现状,目前国外市场上的频率计数器,都是基于脉冲计数的原理,其功能除了直接测量频率值外,还可以测量信号周期、多周期、时间间隔、脉冲宽度、频率比、占空比、统计计数等,有的甚至可以测量频率参数以外的参数,如电压、相位、功率等。这种以频率测量为主体的多功能数字式测量仪器,也称电子计时器。如单片机频率计CM7216D是美国intersil公司首先研制的专用测频大规模集成芯片。它是标准的28引脚的双列直插式集成电路,采用单一的+5V稳压电源工作它内含高频振荡器、10进制计数器、7段译码器、位多路复位器、能直接驱动LED显示器的8段段码驱动器、8
10、位位码驱动器。其基本的测频范围为DC至10MHZ,若加预置的分频电路则上限频率可达40MHZ至100MHZ。 从80年代单片机引入我国至今,单片机已广泛地应用于电子设计中,使频率计智能化水平在广度和深度上产生了质的飞跃,数字化也成为了电子设计的必由之路。运用51系列单片机和高速计数器的组合设计频率计,并采用适当的算法取代传统电路,不仅能克服传统频率计结构复杂、稳定性差、精度不高的弊端,而且频率计性能也将大幅提高,可实现精度较高、等精度和宽范围频率计的要求。随着单片机技术的不断发展,单片机能实现更加灵活的逻辑控制功能,具有很强的数据处理能力,可以用单片机通过软件设计直接用十进制数字显示被测信号
11、频率。我国研制的中国虚拟测振仪,其包含的DASP系统可同时运行多个虚拟仪器软件,具有数百项分析测试功能,其测频范围为DC-200MHz超低频测量达到0.0001HZ主要技术指标居国内领先水平,达国际先进水平。我国利用相检宽带技术设计的高精度频率计也非常具有突破性和实用性。该项新技术及仪器是对已有测频技术的特点及存在问题推出完全新颖的检测精度高、便于实施且设备构成又比较经济的一种新技术及仪器。其测量精度高于一般机器1000倍以上而其价格只相当于国外同档价格的1/2和1/8。 科学技术发展越快,产品的更新周期就越短,数字化电子产品更是如此。数字频率计作为一种电子测量仪器,其发展趋势主要有以下三个
12、方向。 发展趋势之一:从以前的模拟器件设计数字频率计逐步转变为数字芯片设计数字频率计。这样的转变使得频率计的设计更趋于自动化、智能化。现在的电子产品主要是采用EDA技术和单片机技术作为核心控制系统,辅以外围电路,制成高端数字化产品。频率计正是朝着这个方向发展。 EDA技术是以计算机为工具,在EDA软件平台上,根据硬件语言VHDL完成设计文件,自动地完成逻辑编译、化简、分割、综合及优化布局线、仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。FPGA/CPLD是高密度现场可编程逻辑芯片,能够将大量的逻辑功能集成于一个单个器件中,它提供的门数从几百门到上百万门,可以满足不同的需
13、要。数字频率计借助于EDA工具FPGA/CPLD进行开发有很大的优越性:(1)编程方式简便、先进。(2)高速。(3)高可靠性。(4)开发工具和设计语言标准化,开发周期短。(5)功能强大,应用广阔。这样的优点使得数字频率计的设计变得简单。但同时采用EDA技术开发频率计存在一个缺点:对电路进行逻辑综合优化时,最终设计和原始设计在逻辑实现和时延方面有一定的误差,这样使得频率计的测量精度受到很大影响。因此EDA计数还需要不断的改进,以解决在测量时存在的问题,适应电子产品测量的要求。但肯定的是,用EDA技术进行电子产品的设计、开发是有很大发展前景的。 单片机数字频率计是现阶段电子产品开发时采用的主要技
14、术,它在今后的一段时间内仍然占据着主导地位。单片机是单片微型计算机的简称,将把微型计算机的三大组成部分(CPU+存储器+I/O接口)和一些实时控制所需要的功能器件集成在该芯片上,来实现计算机的功能部分。在实际应用中大都嵌入到控制系统中,所以单片机系统也叫嵌入式系统。现在国内单片机应用中最常见的有Intel公司的MCS系列,Microchip公司的PIC16系列,台湾凌阳公司的SPCE016X系列。单片机设计数字频率计有很多的优点:(1)集成度高。(2)系统结构简单,性价比高。(3)系统扩展方便。(4)抗干扰性强,可靠性高。(5)处理能力强,速度快。(6)开发方便。(7)兼容性好。另外,单片机内
15、部强大的运算能力和控制能力,使得开发像频率计这样对测量精度要求精度很高的电子仪器时,变得更加的有效。内部丰富的存储资源,能够满足频率计设计的各种不同需求。可以说,单片机的进步指导着频率计的发展方向。 发展趋势之二:在功能上从以前的仅实现单一频率测量扩展到还能测周期、占空比、脉冲等各种参数指标。数字技术的不断成熟,使得在一块很小的板子上制作大规模、多功能的电子产品变得非常的容易、方便。当然,功能的实现是以强大的软件技术做后盾的,以后的频率计等测量仪器将在编程语言的不断优化下,数字技术的不断完善下实现更多的功能。 发展趋势三:频率计虚拟化。随着计算机的普及,利用计算机做显示和操作台的虚拟仪表,
16、也越来越被广泛应用。目前主流的开发平台是NI公司的Lab VIEW。 电子测量技术的发展,单片机技术和大规模可编程数字逻辑电路的普及为频率测量的结构简单提供了技术基础,使得频率测量正朝着高灵敏度、高可靠性、全集成化和智能化的方向发展。智能化芯片的应用,使得同一硬件具有多种不同的功能,为多样化、系统化带来了便利。以后数字化智能频率计将在满足测量要求和实现功能的同时,也为操作频率计的人,带来使用上的方便和舒适。总之,数字频率计正向着更高的精确度,更低的测量误差,更多的功能实现,更少的价格,更人性化,更智能化方向发展。随着科学技术的发展,用户对数字频率计也提出了新的要求。对于低档产品要求使用操作方
17、便,量程(足够)宽,可靠性高,价格低。而对于中高档产品, 则要求有高分辨率,高精度,高稳定度,高测量速率;除通常通用频率计所具有的功能外,还要有数据处理功能,统计分析功能,时域分析功能等等,或者包含电压测量等其他功能。这些要求有的已经实现或者部分实现,但要真正完美的实现这些目标,对于生产厂家来说,还有许多工作要做,而不是表面看来似乎发展到头了。 随着数字集成电路技术的飞速发展,应用计数法原理制成的数字式频率测量仪器具有精度高、测量范围宽、便于实现测量过程自动化等一系列的突出特点。 本课题的研究内容为数字频率计的单片机实现,主要涉及信号的预处理、数据采集、计算、译码及量程的自动转换等功能模块的
18、软硬件实现。通过该项设计,可以将模拟电路及数字电路的理论知识运用于实际设计中,并熟练编程控制单片机的能力,同时提高分析问题和解决问题的能力。 1.2市场频率计厂商介绍 目前,市场上的频率计厂家可分为三类:中国大陆厂家、中国台湾厂家、欧美厂家。其中,欧美频率计厂家所占有的市场份额最大。 欧美频率计厂家主要有:Pendulum Instruments 和 Agilent科技。 Pendulum Instruments 公司是一家瑞典公司,总部位于瑞典首都斯德哥尔摩。 Pendulum 公司源于Philips公司的时间、频率部门,在时间频率测量领域具有40多年的研发生产经历。Pe
19、ndulum Instruments 公司常规频率计型号主要有:CNT-91、CNT-90、CNT-81、CNT-85。同时,Pendulum Instruments公司还推出铷钟时基频率计CNT-91R、CNT-85R。以及微波频率计CNT-90XL(频率测量范围高达60G)。 Agilent科技公司是一家美国公司,总部位于美国的加利福尼亚。Agilent科技公司成立于1939年,在电子测量领域也有着70多年的研发生产经历。Agilent科技公司的常规频率计信号主要有:53181A、53131A、53132A。同时,Agilent科技公司还推出微波频率计:53150A,53151A,53
20、152A(频率测量范围最高可达46G)。 1.3数字频率计设计的任务与要求 单片机控制的数字频率计 1.测频范围:10Hz~10KHz。为保证测量精度分三个频段 10Hz~100Hz,100Hz~1KHz,1KHz~10KHz,有超量程指示。 2.输入波形:函数信号发生器输出正弦波,三角波,矩形波,幅度为5V,能产生所需频率的脉冲信号。 3.测量误差:≤1。 2 测频方法选择 2.1测频方法设计的几种方案 测量频率的方法有很多种,主要分为模拟法和数字法两大类,因为本次
21、设计的要求和环境,现在主要讨论数字法中的电子计数式的几种测频方法。 电子计数式的测频方法主要有以下几种:脉冲数定时测频法(M法),脉冲周期测频法(T法),脉冲数倍频测频法(AM法),脉冲数分频测频法(AT法),脉冲平均周期测频法(M/T法),多周期同步测频法。下面是几种方案的具体方法介绍。 脉冲数定时测频法(M法):此法是记录在确定时间Tc内待测信号的脉冲个数Mx,则待测频率为: Fx=Mx/Tc (2-1) 脉冲周期测频法(T法):此法是在待测信号的一个周期Tx内,记录标准频率信号变化
22、次数Mo。这种方法测出的频率是: Fx=Mo/Tx (2-2) 脉冲数倍频测频法(AM法):此法是为克服M法在低频测量时精度不高的缺陷发展起来的。通过A倍频,把待测信号频率放大A倍,以提高测量精度。其待测频率为: Fx=Mx/ATo (2-3) 脉冲数分频测频法(AT法):此法是为了提高T法高频测量时的精度形成的。由于T法测量时要求待测信号的周期不能太短,所以可通过A分频使待测信号的周期扩大
23、A倍,所测频率为: Fx=AMo/Tx (2-4) 脉冲平均周期测频法(M/T法):此法是在闸门时间Tc内,同时用两个计数器分别记录待测信号的脉冲数Mx和标准信号的脉冲数Mo。若标准信号的频率为Fo,则待测信号频率为: Fx=FoMx/Mo (2-5) 多周期同步测频法:是由闸门时间Tc与同步门控时间Td共同控制计数器 计数的一种测量方法,待测信号频率与M/T法相同。 2.2几种方案
24、的优劣讨论 以上几种方法各有其优缺点: 脉冲数定时测频法,时间Tc为准确值,测量的精度主要取决于计数Mx的误差。其特点在于:测量方法简单,测量精度与待测信号频率和门控时间有关,当待测信号频率较低时,误差较大。 脉冲周期测频法,此法的特点是低频检测时精度高,但当高频检测时误差较大。 脉冲数倍频测频法,其特点是待测信号脉冲间隔减小,间隔误差降低;精度比M法高A倍,但控制电路较复杂。 脉冲数分频测频法,其特点是高频测量精度比T法高A倍,但控制电路也较复杂。 脉冲平均周期测频法,此法在测高频时精度较高,但在测低频信号时精度较低。 多周期同步测频法,此法的优点是,闸门时间与被测信号同步
25、消除了对被测信号计数产生的±1个字误差,测量精度大大提高,且测量精度与待测信号的频率无关,达到了在整个测量频段等精度测量。 2.3本次设计采用的方案 根据频率的定义,频率是单位时间内信号波的个数,因此采用上述各种方案都能实现频率的测量。但是本论文设计的是一个用单片机做为电路控制系统的数字式频率计,采用脉冲定时测频法,则在低频率的测量时误差会大一些。采用脉冲周期测频法则测高频率时精度无法保证;采用脉冲数倍频测频法和脉冲数分频测频法则精度有所提高,但控制电路较复杂;采用脉冲平均周期测频法则很难兼顾低频信号的测量;而采用多周期同步测频法,闸门时间与被测信号同步,消除了对被测信号计数产生
26、的±1误差,测量精度大大提高,且测量精度与待测信号的频率无关,达到了在整个测量频段等精度测量。本次设计由于个人水平有限,因此,本次设计根据需要,采用脉冲定时测频法。 3 数字频率计的硬件电路设计 3.1数字频率计的硬件系统框架 3.1.1一般数字频率计的原理 数字式频率计是测量频率最常用的仪器之一,其基本设计原理是首先把待测信号通过放大整形,变成一个脉冲信号,然后通过控制电路控制计数器计数,最后送到译码显示电路里进行显示,其基本构成框图如图3-1所示。 图3-1-数数字式频
27、率计原理框图 由上图可以看出,待测信号经过放大整形电路后得到一个待测信号的脉冲信号,然后通过计数器计数,可得到需要的频率值,最后送入译码显示电路中显示出来。但是控制部分才是最重要的,它在整个系统的运行中起至关重要的作用。 3.1.2 基于单片机的数字频率计原理 由上节介绍可知,控制电路在数字频率计中起至关重要的作用。采用什么样的控制电路,直接决定了数字频率计的性能。由第二章的内容可知,为了得到一个高性能的数字频率计,本次设计采用单片机来做为数字频率计的核心控制电路,辅之于少数的外部控制电路。因此本此设计的系统包括信号放大整形电路、分频电路、单片机AT89C51和显示电路等。本
28、系统让被测信号经过放大整形后,进入单片机开始计数,利用单片机内部定时计数器定时,在把所记得的数经过相关处理后送到显示电路中显示。其系统原理框图将在下面介绍。 根据上述的基于单片机的数字频率计的设计原理,我们可设计一个由放大整形电路、分频电路、多路数据选择器、AT89C51以及显示电路来构成的数字式频率计,其系统框图如图3-2所示。 图3-2 数字频率计系统框图 3.2单片机电路设计 3.2.1单片机主电路设计 ATC89C51可以完成ISP在线编程功能,ATC89C51内部有EEPROM,可以在程序中修改,断电不丢失。还增加了两级中断优先级,STC推出的系列
29、51单片机芯片是全面兼容其它51单片机的,而且51单片机是主流大军。 1.89C51芯片介绍 许多由关硬件设计中都使用到单片机89C51,其功能比以往的单片机强大的多。AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容
30、由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。89C51引脚图如图3-3所示。 图3-3 89C51引脚图 主要特性: 与MCS-51兼容 4K字节可编程FLASH存储器 寿命:1000写/擦循环 数据保留时间:10年 全静态工作:0Hz-24MHz 三级程序存储器锁定 128×8位内部RAM 32可编程I/O线 两个16位定时器/计数器 5个中断源 可编程串行通道 低功耗的闲置和掉电模式 片内振荡
31、器和时钟电路 特性概述: AT89C51提供以下标准功能:4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。 管脚说明: VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门
32、电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为低八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“
33、1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的
34、缘故。 P3口也可作为AT89C51的一些特殊功能口,如下表所示: 口管脚 备选功能 P3.0RXD(串行输入口) P3.1TXD(串行输出口) P3.2/INT0(外部中断0) P3.3/INT1(外部中断1) P3.4T0(记时器0外部输入) P3.5T1(记时器1外部输入) P3.6/WR(外部数据存储器写选通) P3.7/RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节
35、在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:
36、当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 振荡器特性: XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的
37、脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。 芯片擦除: 整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。 此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。 串口通讯 单片机的结构和特殊寄存器,这是你编写软件的
38、关键。至于串口通信需要用到那些特殊功能寄存器呢,它们是SCON,TCON,TMOD,SCON等,各代表什么含义呢? SBUF数据缓冲寄存器这是一个可以直接寻址的串行口专用寄存器。有朋友这样问起过“为何在串行口收发中,都只是使用到同一个寄存器SBUF?而不是收发各用一个寄存器。”实际上SBUF包含了两个独立的寄存器,一个是发送寄存,另一个是接收寄存器,但它们都共同使用同一个寻址地址-99H。CPU在读SBUF时会指到接收寄存器,在写时会指到发送寄存器,而且接收寄存器是双缓冲寄存器,这样可以避免接收中断没有及时的被响应,数据没有被取走,下一帧数据已到来,而造成的数据重叠问题。发送器则不需要用到双
39、缓冲,一般情况下我们在写发送程序时也不必用到发送中断去外理发送数据。操作SBUF寄存器的方法则很简单,只要把这个99H 地址用关键字sfr定义为一个变量就可以对其进行读写操作了,如sfrSBUF=0x99;当然你也可以用其它的名称。通常在标准的reg51.h或at89x51.h等头文件中已对其做了定义,只要用#include引用就可以了。 SCON串行口控制寄存器通常在芯片或设备中为了监视或控制接口状态,都会引用到接口控制寄存器。SCON就是51芯片的串行口控制寄存器。它的寻址地址是98H,是一个可以位寻址的寄存器,作用就是监视和控制51芯片串行口的工作状态。51芯片的串口可以工作在几个不同
40、的工作模式下,其工作模式的设置就是使用SCON寄存器。它的各个位的具体定义如下: SM0 SM1 SM2 REN TB8 RB8 TIRI SM0、SM1为串行口工作模式设置位,这样两位可以对应进行四种模式的设置。串行口工作模式设置。 SM0 SM1 模式 功能 波特率 0 0 0 同步移位寄存器 fosc/12 0 1 1 8位UART 可变 1 0 2 9位UART fosc/32 或fosc/64 1 1 3 9位UART 可变 在这里只说明最常用的模式1,其它的模式也就一一略过,有兴趣的朋友可以找相关的硬件资料查看。表中的fosc代表振荡器的频率,也就是晶振的频率。UA
41、RT为(Universal Asynchronous Receiver)的英文缩写。 SM2在模式2、模式3中为多处理机通信使能位。在模式0中要求该位为0。 REM为允许接收位,REM置1时串口允许接收,置0时禁止接收。REM 是由软件置位或清零。如果在一个电路中接收和发送引脚P3.0,P3.1都和上位机相连,在软件上有串口中断处理程序,当要求在处理某个子程序时不允许串口被上位机来的控制字符产生中断,那么可以在这个子程序的开始处加入REM=0来禁止接收,在子程序结束处加入REM=1再次打开串口接收。大家也可以用上面的实际源码加入REM=0来进行实验。 TB8发送数据位8,在模式2和3是要
42、发送的第9位。该位可以用软件根据需要置位或清除,通常这位在通信协议中做奇偶位,在多处理机通信中这一位则用于表示是地址帧还是数据帧。 RB8接收数据位8,在模式2和3是已接收数据的第9位。该位可能是奇偶位,地址/数据标识位。在模式0中,RB8为保留位没有被使用。在模式1中,当SM2=0,RB8是已接收数据的停止位。 TI发送中断标识位。在模式0,发送完第8位数据时,由硬件置位。其它模式中则是在发送停止位之初,由硬件置位。TI置位后,申请中断,CPU响应中断后,发送下一帧数据。在任何模式下,TI都必须由软件来清除,也就是说在数据写入到SBUF后,硬件发送数据,中断响应(如中断打开),这时TI=
43、1,表明发送已完成,TI不会由硬件清除,所以这时必须用软件对其清零。 RI接收中断标识位。在模式0,接收第8位结束时,由硬件置位。其它模式中则是在接收停止位的半中间,由硬件置位。RI=1,申请中断,要求CPU 取走数据。但在模式1中,SM2=1时,当未收到有效的停止位,则不会对RI置位。同样RI也必须要靠软件清除。常用的串口模式1是传输10个位的,1 位起始位为0,8位数据位,低位在先,1位停止位为1。它的波特率是可变的,其速率是取决于定时器1或定时器2的定时值(溢出速率)。AT89C51和AT89C2051等51系列芯片只有两个定时器,定时器0和定时器1,而定时器2是89C52系列芯片才有
44、的。 波特率在使用串口做通讯时,一个很重要的参数就是波特率,只有上下位机的波特率一样时才可以进行正常通讯。波特率是指串行端口每秒内可以传输的波特位数。有一些初学的朋友认为波特率是指每秒传输的字节数,如标准9600会被误认为每秒种可以传送9600个字节,而实际上它是指每秒可以传送9600个二进位,而一个字节要8个二进位,如用串口模式1来传输那么加上起始位和停止位,每个数据字节就要占用10个二进位,9600波特率用模式1传输时,每秒传输的字节数是9600÷10=960字节。51芯片的串口工作模式0的波特率是固定的,为fosc/12,以一个12M的晶振来计算,那么它的波特率可以达到1M。模式2的波
45、特率是固定在fosc/64或fosc/32,具体用那一种就取决于PCON寄存器中SMOD位,如SMOD为0,波特率为focs/64,SMOD为1,波特率为focs/32。模式1和模式3的波特率是可变的,取决于定时器1或2(52芯片)的溢出速率。那么我们怎么去计算这两个模 式的波特率设置时相关的寄存器的值呢?可以用以下的公式去计算。 波特率=(2SMOD÷32)×定时器1溢出速率 上式中如设置了PCON寄存器中的SMOD位为1时就可以把波特率提升2倍。通常会使用定时器1工作在定时器工作模式2下,这时定时值中的TL1做为计数,TH1做为自动重装值,这个定时模式下,定时器溢出后,TH1的值会自
46、动装载到TL1,再次开始计数,这样可以不用软件去干预,使得定时更准确。在这个定时模式2下定时器1溢出速率的计算公式如下: 溢出速率=(计数速率)/(256-TH1) 上式中的“计数速率”与所使用的晶体振荡器频率有关,在51芯片中定时器启动后会在每一个机器周期使定时寄存器TH 的值增加一,一个机器周期等于十二个振荡周期,所以可以得知51芯片的计数速率为晶体振荡器频率的1/12,一个12M的晶振用在51芯片上,那么51的计数速率就为1M。通常用11.0592M晶体是为了得到标准的无误差的波特率,那么为何呢?计算一下就知道了。如我们要得到9600的波特率,晶振为11.0592M和12M,定时器1
47、为模式2,SMOD 设为1,分别看看那所要求的TH1为何值。代入公式: 上面的计算可以看出使用12M 晶体的时候计算出来的TH1不为整数,而TH1的值只能取整数,这样它就会有一定的误差存在不能产生精确的9600波特率。当然一定的误差是可以在使用中被接受的,就算使用11.0592M的晶体振荡器也会因晶体本身所存在的误差使波特率产生误差,但晶体本身的误差对波特率的影响是十分之小的,可以忽略不计。 本实验中用到的芯片引脚功能: 主电源引脚Vcc和Vss •Vcc(40脚):接+5V电压; •Vss(20脚):接地。 89C51晶振接法如图3-4。
48、 图3-4 89C51晶振接法图 选用6MHz频率的晶体,允许输入的脉冲频率为250kHz。电容的大小范围为20pF~40pF,本设计选用20pF电容。 2.单片机复位状态 单片机的复位都是靠外部电路实现的,在时钟电路工作后,只要在单片机的RST引脚上出现24个时钟震荡脉冲(2个机器周期)以上的高电平,单片机便实现初始化状态复位。为了保证应用系统可靠地复位,在设计复位电路时,通常使RST引脚保持10ms以上的高电平。只要保持高电平,则MCS-51单片机就循环复位;当RST从高电平变为低电平以后,MCS-51单片机从0000H地址开始执行程序。在复位有效
49、期间,ALE、 引脚输出高电平。 89C51上电复位电路图。 图3-5 89C51上电复位电路图 单片机复位状态表。 表 3-6 单片机复位状态表 专用寄存器 复位状态 专用寄存器 复位状态 PC 0000H TMOD 00H ACC 00H TCON 00H B 00H TH0 00H PSW 00H TL0 00H SP 07H TH1 00H DPTR 0000H TL1 00H P0~P3 FFH SCON 00H IP XXX0 0
50、000B SBUF XXXX XXXXB IE 0XX0 0000B PCON 0XXX XXXXB 注:XXX不定 复位后,P0口~P3口输出高电平,且使这些准双向口皆处于输入状态,并且将07H写入栈指针SP(即设定堆栈底为07H),同时,将程序计数器PC和其余的特殊功能寄存器清为0(不定的位除外)。但复位不影响单片机内部的RAM状态 3.3放大整形电路 3.3.1放大整形电路的必要性 因为在单片机计数中只能对脉冲波进行计数,而实际中需要测量频率的信号是多种多样的,有脉冲波、还有可能有正弦波、三角波等,所以需要一个电路。把待测信号转化为可以进行计数的脉






