一 概述
单片机又称微控制器(microcontroller)是将中央处理器(CPU)存储器、定时器/计数器、IO接口电路等部件集成在一块芯片上的微型计算机。目前,单片机技术飞速发展,在各种场合被广泛应用。单片机做为控制核心,与传感器、执行机构等结合可以组成自动化的检测控制系统,本文结合单片机的定时/计数器的端口功能,开发一种实用的检测装置。
二 单片机组成原理
MCS51是由美国INTEL公司生产的系列单片机,其中以8051最为典型,由内部总线将逻辑运算器ALU、累加器A、程序计数器PC、指令寄存器IR、指令译码器ID、控制逻辑PLA、存储器、输入输出口联结成统一的整体,以实现其功能。8051单片机是8位机32根I/O线 即4个并口分别记做P0.P1.P2.P3,集成128K的片内RAM和4K片外ROM,其具有的两个16位定时计数可通过编程实现4种工作模式。
三计数功能的结构与原理
MCS-51的单片机内有两个16位可编程的定时/计数器T0和T1,它们具有四种工作方式,分别为模式0、1、2、3。其控制字和状态均在相应的特殊功能寄存器中,通过对控制寄存器的编程,就可方便地选择适当的工作方式。MCS-51单片机内部的定时/计数器的结构如下图所示,定时器T0特性功能寄存器TL0(低8位)和TH0(高8位)构成,定时器T1由特性功能寄存器TL1(低8位)和TH1(高8位)构成。特殊功能寄存器TMOD控制定时寄存器的工作方式,TCON则用于控制定时器T0和T1的启动和停止计数,同时管理定时器T0和T1的溢出标志等。程序开始时需对TL0、TH0、TL1和TH1进行初始化编程,以定义它们的工作方式和控制T0和T1的计数。
由程序设置M0,M1的值以选择单片机的工作方式,如M1=0、M0=1时,工作在工作模式1此时T0、T1的功能时相同的,用户可以任意选择。工作模式1与0的区别时计数器的位数不同。工作模式0时13位计数器,工作模式1是16位计数器,TLX(8位)、THX(8位)作为16位寄存器,计数值从0开始,计到0FFFFH后,再加1,计数器则被溢出复位,并将溢出标志位TFX置1。
四 应用研究
周期的测量
因为,周期=脉冲数/时间 ,为了计算出单位时间的脉冲数,首先要有一个时间基准。如果用单片机的定时器进行定时则直接接入单片机内的信号的最高频率取决于晶振频率,由于所测信号的每一个脉冲的高低电平要持续至少一个机器周期,即它的周期不得高于2倍的机器周期;另一方面,一个机器周期等于6个状态周期,一个状态周期等于2个晶振周期。故有: T待测<=24*T晶振。
(1)低频信号周期的测量 接线示意图如图1,前端属于信号调理电路,工作原理是:用一个计数器,一个定时器,在设定的时间内对脉冲数进行累加;另一方法是一个定时器一个中断口,中断为下降沿触发,在中断程序中计数。很明显,该方法所得计数值会受到定时误差的影响;在精度要求高的场合可以用外接精密脉冲源的方法来规避此误差。即:使用外部脉冲进行比较计数时没有定时原因造成的误差。如图2。此时会有如下的关系式:
F待测*COUNT标准=F标准 *CONNT待测
(2) 高频信号周期的测量,图3是一个典型的电路
这个电路中各部分的功能说明如下:AD9686:将非TTL电平信号转变为TTL电平,属于前向调理电路
累加器:是二进制计数器,目的是对信号进行分频,MR为清零端。此处用了两种不同性能的计数器,即74LS197和74LS93。其中LS197是四位二进制计数器,最高计数频率100MHz,它可以进行16分频,如果根据单片机的主频计算分频后的频率仍然高于可测频则需继续分频,当然对后面的分频芯片的最高工作频率的要求可以降低。各管脚的输出为:
74LS197的输出: 74LS93的输出:
Q1:Fin的2分频 Q2:Fin的4分频 Q1:Fin的32分频 Q2:Fin的64分频
Q3:Fin的8分频 Q1:Fin的16分频 Q3:Fin的128分频 Q1:Fin的256分频
本电路采用硬件控制方式,门控位置“1”时,74LS00打开,待测脉冲与基准脉冲同时进入外部硬件计数器计数,延时一定时间后,门控位置0,停止计数,根据此时的计数值我们有如下关式
COUNT待测/F待测=COUNT基准/F基准
根据需要可只将相应的分频管脚接入单片机内计数,也可采用I/O口全部读入各位分频脚的方法,该种电路的结构具有模块化的优点。
五结语
单片机以其集成度高、功能强大、功耗低、扩展方便、开发周期短等优点而被广泛应用,尤其在工业控制,智能仪表、家用电器、信息通信等领域。本文只是粗略的介绍了单片机的一个应用,还有很多不足,依据该方法可以方便的组成周期检测系统,具有一定的应用价值,希望大家可以共同研究,开发出更好的应用系统。
作者单位:安徽滁州农机技工学校
地址:安徽滁州农机技工学校 239000
Email:kingwf513@eyou.com/kingwf513@hotmail.com