多媒体定时器在工业控制中的应用

多媒体定时器在工业控制中的应用
多媒体定时器在工业控制中的应用

多媒体定时器在工业控制中的应用_编程空间

浏览:4次作者:企业库时间:2010-1-9 16:19:04

随着自动控制技术的发展,以Windows为平台的实时控制系统得到广泛应用。在实时控制系统的控制过程中,采样时间的精确度是得以正常运行的关键。

对于以DOS为平台的控制系统,可以通过对硬件直接操作而得到精确的采样时间。而对于Windows平台,由于Windows9X是强占式多任务操作系统,系统接管全部硬件资源,用户无法直接同硬件打交道,时间控制离不开操作系统的支持。因此,在Windows9X平台下如何精确地控制采样频率是非常值得研究的。下面结合在造波机上控制系统研制中的具体方法加以探讨。

一、几种定时方法的比较

(1)普通定时器

普通定时器是简单的时间控制方法。首先由SetTimer()函数创建一个内存对象,设定间隔时间。此间隔时间被转换为IRQ 0中断请求的次数。当到达要求的次数时,计时器对象就发送一个WM_TIMER消息,由相应函数处理。由于系统定时器(8253定时器T/C0通道)的输入频率为1.1953180MHz,初始化为工作方式3,计数器初值为0(最大计数为65536),则其输出频率=1195318 / 65536≈18.2Hz,且直接连到IRQ 0。这样,CPU以18.2Hz的频率响应中断,周期为54.827ms。也就是说计数器的最短时间间隔约为55ms,转换成中断次数时还会产生舍入误差。另外,虽然中断是实时发生的,但由于WM_TIMER消息优先级不高,且易出现消息合并情况,即当消息队列中有一条WM_TIMER消息,而系统又向其中放入另一条WM_TIMER消息时,2条消息合并为1条消息。因此,普通定时器对消息处理在时间上和数目上存在不确定性,无法满足毫秒级控制要求。在工业实时控制系统中往往需要小于10ms的定时时钟,也就是说普通定时器在有较高要求的工业实时控制系统中不能满足要求。

(2)多媒体时钟

虽然多媒体时钟也是利用系统定时器工作的,但它的工作机理和普通定时器不同:①它可以通过函数TimeBeginPeriod()设置最小定时精度,即按精度要求设置8253的T/C0通道的计数初值,使计数器不在存在55ms的限制;②该顶时器并不倚赖消息机制,而是由函数TimeSetEvent()产生一个独立的线程,在一定的中断次数到达后,直接调用预先设置好的回调函数进行处理,而不必等应用程序的消息队列为空,从而保障了定时器得到实时响应。因此在基于Window 9X平台的实时控制系统中,多媒体时钟是一种很理想的高精度定时器,它可以

实现精度为1ms的高精度定时。

二、多媒体定时器的定制和使用

在造波机系统的实际研制中采用了多媒体定时器,其步骤如下:

(1)利用函数TimeGetCaps()确定定时器服务所能提供的最小和最大事件周期。这一周期对不同的计算机、不同的硬件配置以及Windows的不同运行方

式是不一样的的。

(2)用TimeBeginPeriod()函数建立想要使用的最小计时精度,由于精度较高的定时器消耗的系统资源就越多,因此在具体应用中应根据需要综合考虑。

(3)用TimeSetEvent()函数初始化和启动定时器事件,此时应给出定时器事件的周期、使用精度及调用函数的入口地址。其函数原型如下:

MMRESULT timeSetEvent(UINT uDelay,UINT uResolution,LPTIMECAL LBACK lpTimeProc,DWORD dwUser,UINT fuEvent);

其中,uDelay表示时间间隔;uResolution表示定时精度,其值越小,精度越高,为0时表示能达到的最高精度;lpTimeProc为回调用函数的地址;dwUs er为用户自定义的参数值;fuEvent为定时器类型,可取TIME_ONESHOT、TI ME_PERIODIC、TIME_CALLBACK_FUNCTION、TIME_CALLBACK_EVENT _SET、TIME_CALLBACK_EVENT_PULSE。其中TIME_PERIODIC表示事件每隔uDelay毫秒发生1次,TIME_CALLBACK_FUNCTION表示事件发生时调用回调函数(而非设置事件),本系统采用这两个值。

(4)回调函数是一个中断服务程序,它必须驻留在动态链接库中,或由开发者自己编写。回调函数可以定义成相应类的成员函数,也可以为全局函数。但要注意:因为C++编译器为类成员函数准备了一个隐藏参数this,使得当回调函数定义成类的普通成员函数时,函数类型与Windows callback函数的预设类型不符。此时必须定义成静态类型,以消除隐含的this指针。但静态成员函数只能访问静态成员,所以实际操作起来并不方便。因此多数情况下,回调函数定义成全局函数比较合适,并将相关类的指针作为参数(timeSetEvent()函数中的dwU ser参数)传递给回调函数。用该指针实现相应的操作,对于数据的处理和显示

更为方便。

(5)使用TimeKillEvent(UINT uTimerID)删除定时器以释放系统资源。其中uTimerID为由timeSetEvent()函数返回的定时器标号,然后调用函数TimeE ndPeriod()删除应用程序建立的最小定时器精度。

三、具体实现和动态显示

根据以上步骤,用Visual C++6.0作为开发工具,完成了具体的工作,其程

序框图如图所示。

需要说明的是,若采用分割视图的界面,尽管可以在全局回调函数中得到相关视图和文档的指针,但当调用文档类的UpdateAllViews()函数时经常出错,即使编译通过,在实际运行中也会出现错误。因此采取了一种曲线的方法,就是向相关视图发自定义消息,在自定义消息中更新视图,使其实时地动态地显示采集回的数据,并画出实际曲线和理论曲线,二者比较给操作人员更直观的印象。

另外,如每采集一个数据后就更新相应的视图,屏幕会出现难以忍受的闪烁现象。因此先在内存中建立一个与屏幕设备环境相对应的兼容性设备环境,所有的绘图及清屏操作读在兼容设备环境中完成;最后再将画好的曲线图从兼容设备环境传送到屏幕设备环境上显示,从而避免了闪烁。

主要程序实现代码如下:

//启动多媒体定时器

void CControlView::OnStart( )

{

……

uTimerID = timeSetEvent(10,0,TimeFunc,(DWORD)this,TIME_PERIODI

C|);

……

}

//终止多媒体定时器

void CControlView::OnStop( )

{

……

timeKillEvent(uTimerID );

……

}

//采集数据,处理数据,向视图发自定义消息

void CALLBACK TimeProc (UINT uID,UINT uMsg,DWORD dwUser,D

WORD dw1, DWORD dw2)

{

……

CControlView* pView = (CControlView*)dwUser;

PostMessage(pView->GetSafeHwnd(),WM_MYMESSAGE,0,0);

……

}

//更新视图

LRESULT CControlView::OnMyMessage(WPARAM wParam,LPARAM l

pParam)

{

……

GetDocument()->UpdateAllView();

……

}

//在CCurveView中动态绘制曲线

void CCurveView::OnUpdate(CView* pSender,LPARAM lHint,Cobject*

pHint)

{

……

CDC* pDC = GetDC(); //定义屏幕DC

CDC dcMem; //定义内存DC

dcMem.CreateCompatibleDC(pDC); //创建与屏幕DC兼容的内存DC

CRect rect;

GetClientRect(&rect);

//在内存中绘制波形

dcMem.offsetViewPortOrg(-rect.left,-rect.top);

dcMem.MoveTo(oldt,oldData);

dcMem.LineTo(newt,newData);

//把画好的波形从兼容设备DC传送到屏幕DC上显示

pDC->SetViewportOrg(0,0);

pDC->BitBlt(rect.left,rect.top,rect.Width(),rect.Height(),&dcMem,0,0,SRC

COPY);

}

通过测试和实际应用,本文所探讨的高精度多媒体定时器和实时显示方法工作良好,能满足一般定时控制系统的要求,值得推广。

VC++中使用定时器的方法

1.启用一个定时器直接调用函数: SetTimer(1,500,NULL);//定义时钟1,时间间隔为500ms SetTimer(2,1000,NULL);//定义时钟2,时间间隔为1000ms 可以在按钮按下时启用定时器: void CTimeDlg::OnButton1() { // TODO: Add your control notification handler code here SetTimer(1,500,NULL);//定义时钟1,时间间隔为500ms SetTimer(2,1000,NULL);//定义时钟2,时间间隔为1000ms } 2.关闭定时器:可以在按钮中调用如下函数关闭某定时器: void CTimeDlg::OnButton2() { // TODO: Add your control notification handler code here KillTimer(1); //关闭1号定时器 KillTimer(2); //关闭2号定时器 } 3.添加定时器时间到的处理代码: 1)在开发界面中Ctrl+W 进入MFCclass wizard页面2)选择Message Maps选项卡 3)在Project中选择你的工程 4)在object Ids:中选择C…..Dlg

5)在Messages:中选择WM_TIMER,此时,Member functions中自动定位到: W OnTimer ON_WM_TIMER, 6) 单击EDIT code(或双击W OnTimer ON_WM_TIMER)自动进入如下函数:void CTimeDlg::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default switch(nIDEvent) { case 1: //1号定时器应该处理的事情 //….. break; case 2: //2号定时器应该处理的事情 //….. break; } CDialog::OnTimer(nIDEvent); //此句VC自动生成 } 秘密

555定时器的典型应用电路

555定时器的典型应用电路 单稳态触发器 555定时器构成单稳态触发器如图22-2-1所示,该电路的触发信号在2脚输入,R和C是外接定时电路。单稳态电路的工作波形如图22-2-2所示。 在未加入触发信号时,因u i=H,所以u o=L。当加入触发信号时,u i=L,所以u o=H,7脚内部的放电管关断,电源经电阻R向电容C充电,u C按指数规律上升。当u C上升到2V CC/3时,相当输入是高电平,5 55定时器的输出u o=L。同时7脚内部的放电管饱和导通是时,电阻很小,电容C经放电管迅速放电。从加入触发信号开始,到电容上的电压充到2V CC/3为止,单稳态触发器完成了一个工作周期。输出脉冲高电平的宽度称为暂稳态时间,用t W表示。 图22-2-1 单稳态触发器电路图 图22-2-2 单稳态触发器的波形图 暂稳态时间的求取: 暂稳态时间的求取可以通过过渡过程公式,根据图22-2-2可以用电容器C上的电压曲线确定三要素,初始值为u c(0)=0V,无穷大值u c(∞)=V CC,τ=RC,设暂稳态的时间为t w,当t= t w时,u c(t w)=2 V CC/3时。代入过渡过程公式[1-p205]

几点需要注意的问题: 这里有三点需要注意,一是触发输入信号的逻辑电平,在无触发时是高电平,必须大于2 V CC/3,低电平必须小于 V CC/3,否则触发无效。 二是触发信号的低电平宽度要窄,其低电平的宽度应小于单稳暂稳的时间。否则当暂稳时间结束时,触发信号依然存在,输出与输入反相。此时单稳态触发器成为一个反相器。 R的取值不能太小,若R太小,当放电管导通时,灌入放电管的电流太大,会损坏放电管。图22-2-3是555定时器单稳态触发器的示波器波形图,从图中可以看出触发脉冲的低电平和高电平的位置,波形图右侧的一个小箭头为0电位。 图22-2-3 555定时器单稳态触发器的示波器波形图 [动画4-5] 多谐振荡器 555定时器构成多谐振荡器的电路如图22-2-4所示,其工作波形如图22-2-5所示。 与单稳态触发器比较,它是利用电容器的充放电来代替外加触发信号,所以,电容器上的电压信号应该在两个阈值之间按指数规律转换。充电回路是R A、R B和C,此时相当输入是低电平,输出是高电平;当电容器充电达到2 V CC/3时,即输入达到高电平时,电路的状态发生翻转,输出为低电平,电容器开始放电。当电容器放电达到2V CC/3时,电路的状态又开始翻转。如此不断循环。电容器之所以能够放电,是由于有放电端7脚的作用,因7脚的状态与输出端一致,7脚为低电平电容器即放电。

VC++实现微秒级的精确定时器

在工业生产控制系统中,有许多需要定时完成的操作,如定时显示当前时间,定时刷新屏幕上的进度条,上位机定时向下位机发送命令和传送数据等。特别是在对控制性能要求较高的实时控制系统和数据采集系统中,就更需要精确定时操作。 众所周知,Windows是基于消息机制的系统,任何事件的执行都是通过发送和接收消息来完成的。这样就带来了一些问题,如一旦计算机的CPU被某个进程占用,或系统资源紧张时,发送到消息队列中的消息就暂时被挂起,得不到实时处理。因此,不能简单地通过Windows消息引发一个对定时要求严格的事件。另外,由于在Windows中已经封装了计算机底层硬件的访问,所以,要想通过直接利用访问硬件来完成精确定时,也比较困难。所以在实际应用时,应针对具体定时精度的要求,采取相适应的定时方法。 VC中提供了很多关于时间操作的函数,利用它们控制程序能够精确地完成定时和计时操作。本文详细介绍了 VC中基于Windows的精确定时的七种方式: 方式一:VC中的WM_TIMER消息映射能进行简单的时间控制。首先调用函数SetTimer()设置定时间隔,如SetTimer(0,200,NULL)即为设置200ms的时间间隔。然后在应用程序中增加定时响应函数 OnTimer(),并在该函数中添加响应的处理语句,用来完成到达定时时间的操作。这种定时方法非常简单,可以实现一定的定时功能,但其定时功能如同Sleep()函数的延时功能一样,精度非常低,最小计时精度仅为30ms,CPU占用低,且定时器消息在多任务操作系统中的优先级很低,不能得到及时响应,往往不能满足实时控制环境下的应用。只可以用来实现诸如位图的动态显示等对定时精度要求不高的情况。如示例工程中的Timer1。 方式二:VC中使用sleep()函数实现延时,它的单位是ms,如延时2秒,用sleep(2000)。精度非常低,最小计时精度仅为30ms,用sleep函数的不利处在于延时期间不能处理其他的消息,如果时间太长,就好象死机一样,CPU占用率非常高,只能用于要求不高的延时程序中。如示例工程中的Timer2。 方式三:利用COleDateTime类和COleDateTimeSpan类结合WINDOWS的消息处理过程来实现秒级延时。如示例工程中的Timer3和Timer3_1。以下是实现2秒的延时代码: COleDateTime start_time =COleDateTime::GetCurrentTime(); COleDateTimeSpan end_time=COleDateTime::GetCurrentTime()-start_time; while(end_time.GetTotalSeconds()< 2) //实现延时2秒 { MSG msg; GetMessage(&msg,NULL,0,0); TranslateMessage(&msg); DispatchMessage(&msg);

定时器计数器

定时器/计数器 MCS-51单片机内部有两个16位可编程的定时器/计数器,即定时器T0(由TH0和TL0组成)和定时器T1(由TH1和TL1组成),它们既可用作定时器定时,又可用作计数器记录外部脉冲个数,其工作方式、定时时间、启动、停止等均用指令设定。 定时器/计数器的结构 1.定时器/计数器的工作原理 定时器/计数器T0和T1的工作方式通过八位寄存器TMOD设定,T0和T1 的启动、停止由八位寄存器TCON控制。工作前需先装入初值,利用传送指令将初值装入加1计数器TH0和TL0或TH1和TL1,高位数装入TH0或TH1,低位数装入TL0或TL1。当发出启动命令后,加1计数器开始加1计数,加到满值(各位全1)后,再加1就会产生溢出,系统将初值寄存器清0。如果需要继续计数或定时,则需要重新赋计数初值。 2.定时器的方式寄存器TMOD 特殊功能寄存器TMOD为定时器的方式控制寄存器。TMOD是用来设定定时器的工作方式,其格式如下: 各位功能如下: (1)GATE控制定时器的两种启动方式 当GATE=0时,只要TR0或TR1置1,定时器启动。 当GATE=1时,除TR0或TR1置1外,还必须等待外部脉冲输入端(P3.3)或(P3.2)高电平到,定时器才能启动。若外部输入低电平则定时器关闭,这样可实现由外部控制定时器的启动、停止,故该位被称为门控位。定时器1类同。 (2)定时/计数方式选择位 当该位为0时,T0或T1为定时方式;当该位为1时,T0或T1为计数方式。(3)方式选择位M1、M0 M1、M0两位可组合成4种状态,控制4种工作方式。每种方式的功能如表5-1。 表5-1 M1、M0控制的工作方式 M1 M0 工作方式说明 0 0 0 1 1 0 1 1 0 1 2 3 13位计数器 16位计数器 可再装入8位计数器

51单片机外部中断与定时器的实用

中断使能寄存器 通过设置中断使能寄存器 IE 的 EA 位 使能所有中断 每个中断源都有单独的使能位 可通过软件设置 IE 中相应的使能位在任何时候使能或禁能中断 中断使能寄存器 IE 的各 位如下所示 中断使能寄存器IE 位地址 0AFH 0AEH 0ADH 0ACH 0ABH 0AAH 0A9H 0A8H 位符号 EA / ET2 ES ET1 EX1 ET0 EX0 EA 使能标志位 置位则所有中断使能 复位则禁止所有中断保留 ET2 定时器2 中断使能 ES 串行通信中断使能 ET1 定时器 1 中断使能 EX1 外部中断 1 使能 ET0 定时器0 中断使能 EX0 外部中断 0使能 8051 支持两个中断优先级 有标准的中断机制, 低优先级的中断只能被高优先级的中断所中断 ,而高优先级的中断不能被中断。 中断优先级寄存器 每个中断源都可通过设置中断优先级寄存器IP 来单独设置中断优先级 如果每个中断源的相应位被置位 则该中断源的优先级为高,如果相应的位被复位, 则该中断源的优先级为低, 如果你觉得两个中断源不够用 ,别急以后我会教你如何增加中断优先级 表 A-5 示出了 IP 寄存器的各位 此寄存器可位寻址 IP 寄存器 位地址 0BFH 0BEH 0BDH 0BCH 0BBH 0BAH 0B9H 0B8H 位符号 / / / PS PT1 PX1 PT0 PX0 编号 中断源 中断向量 上电复位 0000H 0 外部中断0 0003H 1 定时器0溢出 000BH 2 外部中断1 0013H 3 定时器1溢出 001BH 4 串行口中断 0023H 5 定时器2溢出 002BH PT2 定时器 2中断优先级 PS 串行通信中断优先级 PT1 定时器 1中断优先级 PX1 外部中断1 优先级 PT0 定时器0中断优先级 PX0 外部中断0 优先级

555定时器的基本应用及使用方法

555定时器的基本应用及使用方法 我们知道,555电路在应用和工作方式上一般可归纳为3类。每类工作方式又有很多个不同的电路。在实际应用中,除了单一品种的电路外,还可组合出很多不同电路,如:多个单稳、多个双稳、单稳和无稳,双稳和无稳的组合等。这样一来,电路变的更加复杂。为了便于我们分析和识别电路,更好的理解555电路,这里我们这里按555电路的结构特点进行分类和归纳,把555电路分为3大类、8种、共18个单元电路。每个电路除画出它的标准图型,指出他们的结构特点或识别方法外,还给出了计算公式和他们的用途。方便大家识别、分析555电路。下面将分别 介绍这3类电路。 单稳类电路 单稳工作方式,它可分为3种。见图示。 第1种(图1)是人工启动单稳,又因为定时电阻定时电容位置不同而分为2个不同的单元,并分别以1.1.1 和1.1.2为代号。他们的输入端的形式,也就是电路的结构特点是: “RT-6.2-CT”和“CT-6.2-RT”。

第2种(图2)是脉冲启动型单稳,也可以分为2个不同的单元。他们的输入特点都是“RT-7.6-CT”,都是从2端输入。1.2.1电路的2端不带任何元件,具有最简单的形式;1.2.2电路则带 有一个RC微分电路。 第3种(图3)是压控振荡器。单稳型压控振荡器电路有很多,都比较复杂。为简单起见,我们只把它分为2个不同单元。不带任何辅助器件的电路为1.3.1;使用晶体管、运放放大器等辅助器件的电路为1.3.2。图中列出了2个常用电路。

双稳类电路 这里我们将对555双稳电路工作方式进行总结、归纳。 555双稳电路可分成2种。 第一种(见图1)是触发电路,有双端输入(2.1.1)和单端输入(2.1.2)2个单元。单端比较器(2.1.2)可以是6端固定,2段输入;也可是2端固定,6端输入。 第2种(见图2)是施密特触发电路,有最简单形式的(2.2.1)和输入端电阻调整偏置或在控制端(5)加控制电压VCT以改变阀值电压的(2.2.2)共2个单元电路。

VC++定时方式

VC中基于 Windows 的精确定时 中国科学院光电技术研究所游志宇 示例工程下载 在工业生产控制系统中,有许多需要定时完成的操作,如定时显示当前时间,定时刷新屏幕上的进度条,上位机定时向下位机发送命令和传送数据等。特别是在对控制性能要求较高的实时控制系统和数据采集系统中,就更需要精确定时操作。 众所周知,Windows 是基于消息机制的系统,任何事件的执行都是通过发送和接收消息来完成的。这样就带来了一些问题,如一旦计算机的CPU被某个进程占用,或系统资源紧张时,发送到消息队列中的消息就暂时被挂起,得不到实时处理。因此,不能简单地通过Windows消息引发一个对定时要求严格的事件。另外,由于在Windows中已经封装了计算机底层硬件的访问,所以,要想通过直接利用访问硬件来完成精确定时,也比较困难。所以在实际应用时,应针对具体定时精度的要求,采取相适应的定时方法。 VC中提供了很多关于时间操作的函数,利用它们控制程序能够精确地完成定时和计时操作。本文详细介绍了 VC中基于Windows的精确定时的七种方式,如下图所示:

图一图像描述 方式一:VC中的WM_TIMER消息映射能进行简单的时间控制。首先调用函数SetTimer()设置定时间隔,如SetTimer(0,200,NULL)即为设置200ms的时间间隔。然后在应用程序中增加定时响应函数 OnTimer(),并在该函数中添加响应的处理语句,用来完成到达定时时间的操作。这种定时方法非常简单,可以实现一定的定时功能,但其定时功能如同Sleep()函数的延时功能一样,精度非常低,最小计时精度仅为30ms,CPU占用低,且定时器消息在多任务操作系统中的优先级很低,不能得到及时响应,往往不能满足实时控制环境下的应用。只可以用来实现诸如位图的动态显示等对定时精度要求不高的情况。如示例工程中的Timer1。 方式二:VC中使用sleep()函数实现延时,它的单位是ms,如延时2秒,用sleep(2000)。精度非常低,最小计时精度仅为30ms,用sleep函数的不利处在于延时期间不能处理其他的消息,如果时间太长,就好象死机一样,CPU 占用率非常高,只能用于要求不高的延时程序中。如示例工程中的Timer2。 方式三:利用COleDateTime类和COleDateTimeSpan类结合WINDOWS的消息处理过程来实现秒级延时。如示例工程中的Timer3和Timer3_1。以下是实现2秒的延时代码: COleDateTime start_time = COleDateTime::GetCurrentTime(); COleDateTimeSpan end_time= COleDateTime::GetCurrentTime()-start_time; while(end_time.GetTotalSeconds()< 2) //实现延时2秒 { MSG msg; GetMessage(&msg,NULL,0,0); TranslateMessage(&msg); DispatchMessage(&msg); //以上四行是实现在延时或定时期间能处理其他的消息, //虽然这样可以降低CPU的占有率, //但降低了延时或定时精度,实际应用中可以去掉。 end_time = COleDateTime::GetCurrentTime()-start_time; }//这样在延时的时候我们也能够处理其他的消息。 方式四:在精度要求较高的情况下,VC中可以利用GetTickCount()函数,该函数的返回值是 DWORD型,表示以ms为单位的计算机启动后经历的时间间隔。精度比WM_TIMER消息映射高,在较短的定时中其计时误差为15ms,在较长的定时中其计时误差较低,如果定时时间太长,就好象死机一样,CPU占用率非常高,只能用于要求不高的延时程序中。如示例工程中的Timer4和Timer4_1。下列代码可以实现50ms的精确定时: DWORD dwStart = GetTickCount(); DWORD dwEnd = dwStart; do

定时器计数器(TC)简介以及例子说明

定时器/计数器(T/C)简介 一、定时器/计数器有关的特殊功能寄存器 1. 计数数寄存器TH和TL 计数器寄存器是16位的,计数寄存器由TH高8位和TL低8 位构成。在特殊功能寄存器(SFR)中,对应T/C0为TH0和TL0,对应T/C1为TH1和TL1。定时器/计数器的初始值通过TH1/TH0和TL1/TL0设置。 2. 定时器/计数器控制寄存器TCON TR0,TR1:T/C0,1启动控制位。 1——启动计数0——停止计数 TCON复位后清“0”,T/C需受到软件控制才能启动计数,当计数寄存器计满时,产生向高位的进位TF,即溢出中断请求标志。 3. T/C的方式控制寄存器TMOD T/C1 T/C0 C/T :计数器或定时器选择位。 1——为计数器0——为定时器 GATE:门控信号 1——T/C的启动受到双重控制,即要求TR0/TR1和INT0/INT1

同时为高。 M1和M0:工作方式选择位。(四种工作方式) 4.定时器/计数器2(T/C2)控制寄存器 TF2:T/C2益出标志——必须由软件清除 EXF2:T/C2外部标志。当EXEN2=1,且T2EX引脚上出现负跳变而引起捕获或重装载时置位,EXF2要靠软件来清除。 RCLK:接收时钟标志1——用定时器2 溢出脉冲作为串行口的接收时钟0——用定时器1的溢出脉冲做接收时钟。 TCLK:发送时钟标志。 1——用定时器2 溢出脉冲作为串行口的发送时钟 0——用定时器1的溢出脉冲作发送时钟 EXEN2:T/C2外部允许标志。1——若定时器2未用作串行口

的波特率发生器,T2EX端的负跳变引起T/C2的捕获或重装载。 0——T2EX端的外部信号不起作用。 TR2:T/C2运行控制位 1——T/C2启动0——T/C2停止 C/T2:计数器或定时器选择位 1——计数器0——定时器 CP/RL:捕获/重载标志。 1——若EXEN2=1,且T2EX端的信号负跳变时,发生捕获操作。 0——若定时器2溢出,或在EXEN2=1条件下T2EX端信号负跳变,都会造成自动重装载操作。 二、定时器/计数器的工作方式 1.方式0 当TMOD中M1M0=00,T/C工作在方式0。 方式0为13位的T/C,由TH提供高8位,TL提供低5位的计数值,满计数值213,但启动前可以预置计数初值。 当C/T=0时,T/C为定时器,振荡源12分频的信号作为计数脉冲;当C/T=1时,T/C为计数器,对外部脉冲输入端T0或T1输入的脉冲计数。计数脉冲能否加到计数器上,受到启动信号控制。当GATE=0时,只要TR=1,则T/C启动。当GATE=1时,启动信号 =TR×INT,此时T/C启动受到双重控制。 T/C启动后立即加1计数,当13位计数满时,TH向高位进位,此进位将中断溢出标志TF置1,产生中断请求,表示定时时间到或

器件实验报告八—555集成定时器及其应用

555集成定时器及其应用实验报告 一、实验内容与目的 1.单稳态触发器功能的测试,对于不同的外界元件参数,测定输出信号幅度和暂稳时间。 2.多谐振荡器功能的测试与验证,给定一个外界元件,测量输出波形的频率、占空比,并且计算理论值,算出频率的相对误差。 实验仪器: 自制硬件基础电路实验箱,双踪示波器,数字万用表,集成定时器NE555 2片;电阻100kΩ、10kΩ各2只;51kΩ、5.1kΩ、4.7kΩ各1只;电容30μF、10μF、0.1μF、2200pF各1只;电位器100kΩ1只; 元器件:LM555。 二、实验预习内容: 本实验旨在了解555定时器的内部结构和工作原理:单稳态触发器、多谐振荡器的工作原理。 实验资料: (1)构成单稳态触发器 电路如下图所示,接通电源→电容C充电(至2/3Vcc)→RS触发器置0→Vo =0,T导通,C放电,此时电路处于稳定状态。当2加入VI<1/3Vcc时,RS触发器置1,输出Vo=1,使T 截止。电容C开始充电,按指数规律上升,当电容C 充电到2/3Vcc时,A1翻转,使输出Vo=0。此时T又重新导通,C很快放电,暂稳态结束,恢复稳态,为下一个触发脉冲的到来作好准备。其中输出Vo脉冲的持续时间tw=1.1RC,一般取R=1kΩ--10MΩ,C>1000PF,只要满足VI的重复周期大于tp0 ,电路即可工作,实现较精确的定时。 (2) 多谐振荡器 电路如下图所示,电路无稳态,仅存在两个暂稳态,亦不需外加触发信号,即可产生振荡(振荡过程自行分析)。电容C在1/3Vcc--2/3Vcc之间充电和放电,输出信号的振荡参数为:

周期T=0.7 C(R1+2R2) 频率f=1/T=1.44/(R1+2R2)C, 占空比D=( R1+R2 )/( R1+2R2)。 555电路要求R1与R2 均应大于或等于1kΩ ,使R1+R2 应小于或等于3.3MΩ。 三、实验过程与数据分析 1.单稳态触发器逻辑功能的测试。 连接电路如下:

555定时器及其应用

实验六 555定时器及其应用 一.实验目的 1.熟悉555定时器的组成及功能。 2.掌握555定时器的基本应用。 3.进一步掌握用示波器测量脉冲波形的幅值和周期。 二.实验原理 555定时器(又称时基电路)是一个模拟与数字混合型的集成电路。按其工艺分双极型

该端不用时,应将该端串入一只0.01μF 电容接地,以防引入干扰。 7脚:放电端。该端与放电管集电极相连,用做定时器时电容的放电。 在1脚接地,5脚未外接电压,两个比较器A 1、A 2基准电压分别为CC CC V 3 1 ,V 32的情况下,555时基电路的功能表如表6—1示。

输出高电平时间

2)Vi接连续脉冲f = 512HZ,用示波器观察、记录Vi、V2、V C及V O的波形(以Vi为触发信号),测出V O的脉冲宽度t W,且与理论值相比较。 4.设计一个用555定时器构成的方波发生器,要求方波的周期为1ms,占空比为5%。 四.预习要求 1.搞清555定时器的功能和应用 2.理论计算出实验内容1多谐振荡器的输出方波的周期T 3.理论计算实验内容3 中2)输出脉冲宽度t W。 4.搞清图6—5中R1、C1微分电路的作用。V i为连续脉冲,对应地分析、画出V2的波形。 五.思考题 1.用两片555定时器设计一个间歇单音发生电路,要求发出单音频率约为1KHZ,发音时间约为0.5S,间歇时间约为0.5S。 2.图6—4电路中指出电容C充电途径、放电途径。写出振荡周期T和占空比表达式。理论计算出实验内容2、3两种情况下的占空比。 3.图6—5中,设微分电路的输入连续脉冲周期为T i,R1、C1的参数应如何选择? 4.实验内容3中,如果不采用R1、C1微分电路,即V i直接接至定时器的2脚,是否还能得到原来脉冲宽度t w的输出脉冲。 六.实验仪器与器材 1.电子技术实验箱MS-ⅢA型1台 2.直流电源(+5V)DS-2B-12型1台 3.示波器5020B型1台 4.万用表MF-47型1只 5.555定时器1只

Windows中7种定时器

众所周知,Windows 是基于消息机制的系统,任何事件的执行都是通过发送和接收消息来完成的。这样就带来了一些问题,如一旦计算机的CPU被某个进程占用,或系统资源紧张时,发送到消息队列中的消息就暂时被挂起,得不到实时处理。因此,不能简单地通过Windows消息引发一个对定时要求严格的事件。另外,由于在Windows中已经封装了计算机底层硬件的访问,所以,要想通过直接利用访问硬件来完成精确定时,也比较困难。所以在实际应用时,应针对具体定时精度的要求,采取相适应的定时方法。 VC中提供了很多关于时间操作的函数,利用它们控制程序能够精确地完成定时和计时操作。本文详细介绍了VC中基于Windows的精确定时的七种方式,如下图所示:

图一图像描述 方式一:VC中的WM_TIMER消息映射能进行简单的时间控制。首先调用函数SetTimer()设置定时间隔,如SetTimer(0,200,NULL)即为设置200ms 的时间间隔。然后在应用程序中增加定时响应函数OnTimer(),并在该函数中添加响应的处理语句,用来完成到达定时时间的操作。这种定时方法非常简单,可以实现一定的定时功能,但其定时功能如同Sleep()函数的延时功能一样,精度非常低,最小计时精度仅为30ms,CPU占用低,且定时器消息在多任务操

作系统中的优先级很低,不能得到及时响应,往往不能满足实时控制环境下的应用。只可以用来实现诸如位图的动态显示等对定时精度要求不高的情况。如示例工程中的Timer1。 方式二:VC中使用sleep()函数实现延时,它的单位是ms,如延时2秒,用sleep(2000)。精度非常低,最小计时精度仅为30ms,用sleep函数的不利处在于延时期间不能处理其他的消息,如果时间太长,就好象死机一样,CPU占用率非常高,只能用于要求不高的延时程序中。如示例工程中的Timer2。 方式三:利用COleDateTime类和COleDateTimeSpan类结合WINDOWS的消息处理过程来实现秒级延时。如示例工程中的Timer3和Timer3_1。以下是实现2秒的延时代码: COleDateTime start_time = COleDateTime::GetCurrentTime(); COleDateTimeSpan end_time= COleDateTime::GetCurrentTime()-start_time; while(end_time.GetTotalSeconds()< 2) //实现延时2秒 { MSG msg; GetMessage(&msg,NULL,0,0); TranslateMessage(&msg); DispatchMessage(&msg); //以上四行是实现在延时或定时期间能处理其他的消息, //虽然这样可以降低CPU的占有率, //但降低了延时或定时精度,实际应用中可以去掉。 end_time = COleDateTime::GetCurrentTime()-start_time; }//这样在延时的时候我们也能够处理其他的消息。 方式四:在精度要求较高的情况下,VC中可以利用GetTickCount()函数,该函数的返回值是 DWORD型,表示以ms为单位的计算机启动后经历的时间间隔。精度比WM_TIMER消息映射高,在较短的定时中其计时误差为15ms,在较长的定时中其计时误差较低,如果定时时间太长,就好象死机一样,CP U占用率非常高,只能用于要求不高的延时程序中。如示例工程中的Timer4和Timer4_1。下列代码可以实现50ms的精确定时: DWORD dwStart = GetTickCount(); DWORD dwEnd = dwStart; do

定时器计数器答案

定时器/计数器 6·1 80C51单片机内部有几个定时器/计数器?它们就是由哪些专用寄存器组成? 答:80C51单片机内部设有两个16位的可编程定时器/计数器,简称为定时器0(T0)与定时器l(Tl)。在定时器/计数器中的两个16位的计数器就是由两个8位专用寄存器TH0、TL0, THl、TLl组成。 6·2 80C51单片机的定时器/计数器有哪几种工作方式?各有什么特点? 答:80C51单片机的定时器/计数器有4种工作方式。下面介绍4种工作方式的特点。 方式0就是一个13位的定时器/计数器。当TL0的低5位溢出时向TH0进位,而TH0溢 出时向中断标志TF0进位(称硬件置位TF0),并申请中断。定时器0计数溢出与否,可通过查询TF0就是否置位或产生定时器0中断。 在方式1中,定时器/计数器的结构与操作几乎与方式0完全相同,惟一的差别就是:定时器就是以全16位二进制数参与操作。 方式2就是能重置初值的8位定时器/计数器。其具有自动恢复初值(初值自动再装人)功; 能,非常适合用做较精确的定时脉冲信号发生器。 方式3 只适用于定时器T0。定时器T0在方式3T被拆成两个独立的8位计数器TL0: 与TH0。其中TL0用原T0的控制位、引脚与中断源,即:C/T、GATE、TR0、TF0与T0 (P3、4)引脚、INTO(P3、2)引脚。除了仅用8位寄存器TL0外,其功能与操作与方式0、方式1 完全相同,可定时亦可计数。此时TH0只可用做简单的内部定时功能。它占用原定时器Tl 的控制位TRl与TFl,同时占用Tl的中断源,其启动与关闭仅受TRl置1与清0控制。

6·3 定时器/计数器用做定时方式时,其定时时间与哪些因素有关?作计数时,对外界计数频率有何限制? 答: 定时器/计数器用做定时方式时,其定时时间与时钟周期、计数器的长度(如8位、13位、16位等)、定时初值等因素有关。作计数时,外部事件的最高计数频率为振荡频率(即时钟周期)的1/24。 6·4 当定时器T0用做方式3时,由于TR1位已被T0占用,如何控制定时器T1的开启与关闭? 答:定时器T0用做方式3时,由于TRl位己被T0占用,此时通过控制位C/T切换其定时器 或计数器工作方式。当设置好工作方式时,定时器1自动开始运行;若要停止操作,只需送入一个设置定时器1为方式3的方式字。 6.5 己知80C51单片机系统时钟频率为6 MHz,请利用定时器T0与Pl。2输出矩形脉冲, 其波形如下: 答:设置T0为方式2定时,定时50us,初值X 为: X=28-(6×106×50×10-8 )÷12= 231D= E7H TH0= TL0=E7H ,TMOD= 2H 源程序如下: MOV TMOD,#02H ;设置T0为方式2定时 MOV TH0,#E7H ;赋初值 MOV TL0,#E7H

实验08 555定时器及其应用

实验八 555定时器及其应用 一、实验目的 1.熟悉并掌握555时基电路的工作原理; 2.熟悉并掌握555构成的单稳态触发器、多谐振荡器、占空比可调的多谐振荡器三种典型电路结构及工作原理; 3.学会应用555时基集成电路。 二、实验任务(建议学时:4学时) (一)基本实验任务 1. NE555构成的单稳态触发器逻辑功能测试; 2. NE555构成的多谐振荡器及参数测试; 3. NE555构成的占空比可调的多谐振荡器及参数测试; (二)扩展实验任务() 1. 555构成的脉冲宽度调制(PWM —Pulse Width Modulation )器。 2. 利用555时基电路设计一个驱动电路,能够实现对LED 灯的亮度调节。 3. 利用555时基电路设计一个线性斜坡电压(Linear Ramp )发生器。 三、实验原理 1.555定时器又称为时基电路,由于它的内部使用了三个5K 的电阻,故取名555。 NE555引脚功能说明: GND :电源地;TRIG :触发端;OUT :输出端;RESET :清零端,低电平有效; CONT :控制端;THRES :阈值电压输入端;DISCH :放电端;Vcc :电源正极; 5K 5K 5K R S RE S Vcc CONT RESET THRES TRIG GND DISCH OUT 12 6 5 84 3 7 (a )引脚排列 (b )内部框图 图8-1 NE555引脚排列及内部框图

555定时器集成芯片型号很多,例如LM555、NE555、SA555、CB555、ICM7555、LMC555等等,尽管型号繁多,但它们的引脚功能是完全兼容的,在使用中可以彼此替换,大多数双极型芯片最后3位数码都是555,大多数CMOS型芯片最后4位数码都是7555(还有部分定时器芯片的命名采用C555来表示CMOS型555定时器,例如LMC555)。另外,还有双定时器型芯片双极型的556和CMOS型的7556、四定时器NE558。 555的引脚排列和内部框图见图8-1,556的引脚排列见图8-2。 图8-2 NE556双定时器引脚排列 2.双极型与CMOS型555定时器芯片的区别 1)双极型555定时器工作电压范围5~15V,其驱动能力强,最大负载电流达±200mA,其构成的多谐振荡器工作频率较低,极限大约为300kHz(不同厂商生产的555定时器其最高振荡频率不一定相同,具体值需要通过查阅厂商提供的芯片参数手册); 2)CMOS型555定时器工作电压范围3~16V,其驱动能力弱,最大负载电流仅有±4mA,其构成的多谐振荡器工作频率较高,可达500kHz(不同厂商生产的555定时器其最高振荡频率不一定相同,具体值需要通过查阅厂商提供的芯片参数手册); 由于CMOS型的555定时器驱动能力很弱,因此,使用CMOS型的555定时器时,当负载工作电流最大值超过±4mA时,需要在CMOS型555定时器的Out端和负载之间加一级缓冲电路以提高CMOS型555定时器的驱动能力。 注意,这里的负载电流正负表示的含义为:负载电流为正时,表示电流由Out端流出,负载电流为负时,表示电流流入Out端。

最新555定时器及基本应用汇总

555定时器及基本应 用

毕业论文 论文题目 555定时器及其基本应用 系别物电系 专业物理教育 班级 08级物理教育班 学号 130809066 姓名李小沙 指导教师袁乐民 二O一一年五月一日

555定时器及基本应用 摘要:555定时器是一种模拟和数字功能相结合的中规模集成器件。一般用双极性工艺制作的称为555,用CMOS工艺制作的称为 7555,除单定时器外,还有对应的双定时器556/7556。555定时器的电源电压范围宽,可在5~16V工作,最大负载电流可达200mA,7555可在3~18V工作,最大负载电流可达4mA,因而其输出可与TTL、CMOS或者模拟电路电平兼容。555定时器成本低,性能可靠,只需要外接几个电阻、电容,就可以实现多谐振荡器、单稳态触发器及施密特触发器等脉冲产生与变换电路。它也常作为定时器广泛应用于仪器仪表、家用电器、电子测量及自动控制等方面。 关键词:555定时器,施密特触发器,多谐振荡器,单稳态触发器引言:随着电子技术的发展,尤其是消费类电子的日益普及,555定时器的使用量也在飞速增长。在购买和使用555定时器时,人们对555定时器的性能要求也逐渐提高。555定时器最重要的两个性能为电池的容量和电池的内阻,电池容量与电池内阻存在密切的关系。一般而言, 电池的容量越大, 内阻就越小。电池内阻的大小及其变化可反应电池内部的变化。电池内阻大,电池放电电压平台低,电池输出功率小,电池充电时电压高,高倍率快速充电时,电池会产生大量的热,使充电效率降低,降低电池性能。可见电池内阻的大小是衡量电池性能好坏的重要指标, 准确测量电池内阻具有重要意义。目前,测量电池内阻的方法主要有加载降压法、短路电流法、电桥法、交流电流法、双量程测量法、电位差计法等。这些方法各有利弊, 普遍问题是测量步骤较繁琐, 有些测量方法存在着不可忽视的测量误差, 甚至某些测量方法(因电池放电时间过长等)对电池的寿命有一定影响。本文将以论证的方式介绍一种较容易、准确测量电池内阻和电池容量的方法。 一、 555定时器简介

定时器与计数器

四川工程职业技术学院 单片机应用技术课程电子教案 Copyright ? https://www.360docs.net/doc/af14370634.html, 第 讲 15 定时器/计数器基础

本讲主要内容: 15-1.实现定时的方法 15-2.定时器/计数器的结构和工作原理15-3.定时器/计数器的控制 15-4.定时器/计数器的工作方式 15-5.定时器/计数器应用

15-1.实现定时的方法 软件定时 ? 软件延时不占用硬件资源,但占用了CPU时间,降低了CPU的利用 率。例如延时程序。 采用时基电路定时 ?例如采用555电路,外接必要的元器件(电阻和电容),即可构成硬 件定时电路。但在硬件连接好以后,定时值与定时范围不能由软件 进行控制和修改,即不可编程,且定时时间容易漂移。 可编程定时器定时 ?最方便的办法是利用单片机内部的定时器/计数器。结合了软件定时 精确和硬件定时电路独立的特点。 定时器/计数器 如何使用呢?

定时器/计数器的结构 定时器/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。TMOD 是定时器/计数器的工作方式寄存器,确定工作方式和功能;TCON 是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。 G A T E C /T M 1 M 0 G A T E C /T M 1 M 0 TH1TL1TH0TL0 T1方式T0方式 T1引脚 T0引脚 机器周期脉冲 内部总线 TMOD TCON 外部中断相关位 T F 1 T R 1 T F 0 T R 0 T1计数器 T0计数器 控制单元

定时器/计数器的工作原理 ?计数器输入的计数脉冲源 系统的时钟振荡器输出脉冲经12分频后产生; T0或T1引脚输入的外部脉冲源。 ?计数过程 每来一个脉冲计数器加1,当加到计数器为全1(即FFFFH)时,再输入一个脉冲就使计数器回零,且计数器的溢出使TCON中TF0或TF1置1,向CPU发出中断 请求(定时器/计数器中断允许时)。如果定时器/计数器工作于定时模式,则表 示定时时间已到;如果工作于计数模式,则表示计数值已满。

电子技术实验报告8—555定时器及其应用

学生实验报告 系别电子信息学院课程名称电子技术实验 班级10通信A班实验名称实验八 555定时器及其应用 姓名葛楚雄实验时间2012年5月30日 学号20指导教师文毅 报告内容 一、实验目的和任务 1.熟悉555型集成时基电路的电路结构、工作原理及其特点。 2.掌握555型集成时基电路的基本应用。 二、实验原理介绍 555集成时基电路称为集成定时器,是一种数字、模拟混合型的中规模集成电路,其应用十分广泛。该电路使用灵活、方便,只需外接少量的阻容元件就可以构成单稳、多谐和施密特触发器,因而广泛用于信号的产生、变换、控制与检测。它的内部电压标准使用了三个5K的电阻,故取名555电路。其电路类型有双极型和CMOS型两大类,两者的工作原理和结构相似。几乎所有的双极型产品型号最后的三位数码都是555或556;所有的CMOS产品型号最后四位数码都是7555或7556,两者的逻辑功能和引脚排列完全相同,易于互换。555和7555是单定时器,556和7556是双定时器。双极型的电压是+5V~+15V,最大负载电流可达200mA,CMOS型的电源电压是+3V~+18V,最大负载电流在4mA以下。 1、555电路的工作原理 555电路的内部电路方框图如图20-1所示。它含有两个电压比较器,一个基本RS触发器,一个放电开关Td,比较器的参考电压由三只5KΩ的电阻器构成分压,它们分别使低电平比较器Vr1反相输入

端和高电平比较器Vr2的同相输入端的参考电平为2/3VCC和1/3VCC。Vr1和Vr2的输出端控制RS触发器状态和放电管开关状态。当输入信号输入并超过2/3VCC时,触发器复位,555的输出端3脚输出低电平,同时放电,开关管导通;当输入信号自2脚输入并低于1/3VCC时,触发器置位,555的3脚输出高电平,同时充电,开关管截止。 R是异步置零端,当其为0时,555输出低电平。平时该端开路或接VCC。Vro是控制电压端(5脚),D 平时输出2/3VCC作为比较器Vr1的参考电平,当5脚外接一个输入电压,即改变了比较器的参考电平,从而实现对输出的另一种控制,在不接外加电压时,通常接一个的电容器到地,起滤波作用,以消除外来的干扰,以确保参考电平的稳定。Td为放电管,当Td导通时,将给接于脚7的电容器提供低阻放电电路。 2、555定时器的典型应用 (1)构成单稳态触发器 上图20-2为由555定时器和外接定时元件R、C构成的单稳态触发器。D为钳位二极管,稳态时555电路输入端处于电源电平,内部放电开关管T导通,输出端Vo输出低电平,当有一个外部负脉冲触发信号加到Vi端。并使2端电位瞬时低于1/3VCC,单稳态电路即开始一个稳态过程,电容C开始充电,Vc按指数规律增长。当Vc充电到2/3VCC时,输出Vo从高电平返回低电平,放电开关管Td重新导通,电容C上的电荷很快经放电开关管放电,暂态结束,恢复稳定,为下个触发脉冲的来到作好准备。波形图见图20-3。

定时器计数器

图1-2 将T1计数的结果送P0口显示 (3)控制LED 灯左循环亮 用A T89C51单片机控制一组LED 灯左循环亮,采用50ms 延时子程序调用达到1S 延时,使用P0口输出控制发光二极管灯。电路图如图1-2所示,晶振采用12MHZ 。要求如下: ①用发光二极管灯左循环亮为输出值; ②利用单片机的定时器完成此项目; ③每1S 左循环一次。 图1-3 控制LED 灯左循环亮 三、实验程序 1. 用定时器T0查询方式控制P3口8位LED 闪烁 (1)分析: 用定时器0、方式1, 则TMOD =××××0001B 由于T 机器=12T 时钟=12 1/fosc=1us ,而方式1的最大定时时间为65.536ms ,所以可选择:50ms 。定时器初始值为: TH0=(65536-50000)/256;//定时器T0的高8位赋初值 TL0=(65536-50000)%256;//定时器T0的低8位赋初值 (2)程序设计 先建立文件夹“SY 1-1”,然后建立“SY2-1”工程项目,最后建立源程序文件“SY 1-1.c”,输入如下源程序: #include // 包含51单片机寄存器定义的头文件 void main(void) { TMOD=0x01; //使用定时器T0的方式1 TH0=(65536-50000)/256; /*定时器T0的高8位赋初值*/ TL0= (65536-50000)%256; /*定时器T0的低8位赋初值*/ TR0=1; //启动定时器T0 组长 学号 专业 班级 实验项目 实验1 定时器/计数器 课程名称 单片机原理 课程代码 试验时间 实验地点 成绩 教师签字: 一、实验目的 (1)了解80C51定时器/计数器的结构; (2)掌握定时器/计数器方式寄存器TMOD 设置; (3)掌握定时器/计数器控制寄存器TCON 设置; (4)掌握定时器/计数器的初始化步骤; (5)掌握定时或计数初值的计算; (6)掌握80C51定时器/计数器编程方法。 二、实验内容 (1)用定时器T0查询方式控制P3口8位LED 闪烁 使用T0工作于方式1,采用查询方式控制P3口8位LED 的闪烁周期为100ms ,即亮50ms ,熄灭50ms ,电路图如图1-1所示,设单片机晶振频率为12MHz 。 图1-1 用定时器T0查询方式控制P3口8位LED 闪烁 (2)将T1计数的结果送P0口显示 用AT89C51单片机控制LED 灯左循环亮,采用50ms 延时子程序调用达到1S 延时,使用P0口输出控制发光二极管灯。电路图如图1-2所示,设单片机晶振频率为12MHz 。

相关文档
最新文档