当前位置:文档之家› 最后数字定时器

最后数字定时器

最后数字定时器
最后数字定时器

目录

第1部分实验概述

1.1 设计要求 (3)

1.2 设计方案 (3)

1.3 硬件电路工作原理 (4)

第2部分程序设计

2.1 流程图 (7)

2.2 资源分配 (9)

2.3 源代码 (10)

第3部分硬件系统设计

3.1系统仿真电路图 (15)

3.2 系统仿真结果 (15)

3.3 系统测试结果和结果分析 (17)

第4部分实验总结

3.2 误差产生的原因 (19)

3.2 实验问题与解决方案 (19)

3.2 参考文献 (20)

第1部分实验概述

1.1实验要求

1定时时间的设置范围为1~99min,开机上电后隐含值为10min。

2 使用LED数码管显示时间。

3 定时器控制一个交流220V,1A的用电设备,上电是不允许用电设备瞬间通电。

4 定时时间设定后,启动计时,用电设备通电,同时显示器逐分倒计时。期间分个位数码管的小数点每秒闪亮一次。计时到0分时,切断用电设备电源。

5计时误差:100分误差<±10s。

1.2 方案设计

数字定时器系统的基本组成如图1所示。

图1 数字定时系统电路的原理框图

数字定时系统电路的原理框图根据设计任务与要求,可初步将系统分为五大功能模块:主电路、晶振复位电路、按键电路、显示电路、继电器电路。进一步细说,主电路选用AT89C2051作为中央处理器,系统采用12MHZ的晶振;按键控制电路由两个个按键(启动键(start)、时间设定键(set))组成,采用三个独立开关,按键按下产生一个脉冲信号;显示电路由二位8段共阴极数码管和一个9位上拉排阻组成,位选,个位和十位由P3.0和P3.1输出,段选由P1输出;继电器电路由一个继电器和一个用电器(灯泡)组成,通过电路与P3.7相连。当P3.7输出高电平时,继电器不吸合,用电器(灯灭)不工作。

1.3 硬件电路的工作原理

1.3.1单片机最小系统的设计模块

硬件连接说明:本系统以AT89C2051单片机为核心。单片机采用内部振荡的方式。上拉排阻与一个2位8段共阴LED数码显示管相连。从P1口输出LED 数码管的字形码,从P3.0和P3.1口输出LED数码管的位选码,高电平有效。2个功能按键和P3.2和P3.3口相连,按键另一端接地,当按键按下,产生一个脉冲信号。继电器电路则与P3.7口相连,当P3.7口输出高电平时,用电器工作。

1.3.2晶振复位电路设计

89C2051芯片内部有一个高增益反相放大器,用于构成振荡器。反相放大器的输入端为XTAL1,输出端为XTAL2,两端跨接石英晶体及两个电容就可以构成稳定的自激振荡器,振荡的频率就是晶体的固有频率。要检查该振荡电路是否正常工作,可用示波器查看输出端XTAL2是否有脉冲信号。电容C1和C2通常取30pF左右,可稳定频率并对振荡频率有微调作用。由于单片机内部振荡方式电路简单,时钟信号比较稳定,是独立的单片机应用系统的首选,故本设计采用内部振荡方式,采用12MHZ的晶振。

复位电路通过电解电容和电阻形成振荡电路,通过开关按键来形成复位。在振荡稳定后应保证复位高点平持续时间(即正脉冲宽度)大于两个机器周期。复位有两种,一种是手动复位还有一种是上电自动复位,通常采用手动复位和上电自动复位的组合。本实验即是如此。数字定时系统电路的晶振复位电路图如图2所示。

图2 数字定时系统电路的晶振电路图

1.3.3定时中断

89C51中断系统有5个中断源,而本设计电路采用定时器T0产生定时中断,由于本设计需要0.1s的基本时间,故选择其工作在定时方式1下。这时定时器T0是一个16位的计时器,由它产生50ms的基本定时中断,20次中断后将得到1s的时间,每60s设定时间减1。

1.3.4按键电路

按键电路由两个独立按键组成。独立式按键占用I/O口线较多,适用于按键较少的情况。矩阵式键盘占用的I/O口相对较少,适用于按键很多的情况。本实验共设置2个按键,分别连在P3.2和P3.3口,低电平有效。每个按键分别完成设置和开始的功能。其电路连接图如图3所示。

图3 按键电路图

1.3.5 继电器电路

继电器电路将采用P3.7口驱动,根据实验要求,当按下开始键后,P3.7变为高电平,则此时二极管Q2导通,此时Q1截止,继电器不能工作,不能吸和,此时用电器不能工作(即灯不亮),直到计时结束数码管全灭时P3.7口输出变为低电平,继电器吸合,用电器工作,工作结束,用电器也停止工作(即等亮)。其电路连接图如图4所示。

图4 继电器电路图

1.3.6显示电路

对于显示电路,本设计采用2位8段共阴极LED数码管显示。该显示电路由二位8段共阴极数码管和一个9位上拉排阻组成,位选,个位和十位由P3.0和P3.1口输出,段选由P1输出。上电显示隐含上电时间10min。按SET设置键,我们能够增加倒计时的时间,时间范围为1-99min。我们按下START开始键后定时器开始倒计时。我们能看到数码管逐分倒计时,直到计时结束,数码管全灭。其显示电路图如图5所示。

图5 显示电路图

第2部分软件设计

2.1程序流程图

主程序流程图

数字定时器显示子程序流程图2.2资源分配

INT0 (P3.2)功能键SET,边沿触发

INT1 (P3.3)功能键STRAT,边沿触发

P1.0-P1.7 LED段码输出,高电平有效

P3.0 LED数码管分十位阴极,低电平有效

P3.1 LED数码管分个位阴极,低电平有效

P3.7 继电器驱动输出,低电平有效

T0 16位计时器,系统时钟,10ms中断一次T1 16位计时器,计时时钟,0.1s中断一次

2.3源代码

#include

#define uint unsigned int //宏定义

#define uchar unsigned char //宏定义

#define LIGHT_ON() LIGHT_IO=0

#define LIGHT_OFF() LIGHT_IO=1

sbit led0=P3^0; /*定义P1.0*/

sbit led1=P3^1;/*定义P1.1*/

sbit LIGHT_IO=P3^7;

sbit LED_DOT=P1^7;

uchar DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

int display_num=10;

int timer_counter;

int timer_second;

int timer_half_second;

int key_start_flag;

int key_set_flag;

void DelayMS(uint ms)

{

uchar t;

while(ms--)for(t=0;t<120;t++);

}

void DisplayNum(uchar i) //显示

{

if(key_start_flag==1) //动态

{

if(timer_half_second%2==0)

{

led0=0; //十位

P1=DSY_CODE[i/10];

DelayMS(20);

led0=1;

led1=0; //个位

P1=DSY_CODE[i%10];

DelayMS(20);

led1=1;

}else

{

led0=0; //十位

P1=DSY_CODE[i/10];

DelayMS(20);

led0=1;

led1=0; //个位

P1=DSY_CODE[i%10]|0x80;

DelayMS(20);

led1=1;

}

}else //静态

{

led0=0; //十位

P1=DSY_CODE[i/10];

DelayMS(20);

led0=1;

led1=0; //个位

P1=DSY_CODE[i%10];

DelayMS(20);

led1=1;

}

}

/*void DisplayDot()

{

// led1=0; //十位

LED_DOT=~LED_DOT;

//DelayMS(20);

//led0=1;

}*/

/*

******************************************************************************* *

** 函数名称:Init_Timer0(void)

** 函数功能:定时器初始化子程序

*******************************************************************************

*

*/

void Init_Timer0() //定时器初始化子程序

{

TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响

TH0=0x3c; //定时50ms

TL0=0xb0;

EA=1; //总中断打开

ET0=1; //定时器中断打开

TR0=1; //定时器开关打开

}

/*

******************************************************************************* *

** 函数名称:Timer0_isr(void) interrupt 1 using 1

** 函数功能:定时器中断程序

******************************************************************************* *

*/

void T0_time() interrupt 1

{

TH0=0x3c; //定时50ms

TL0=0xb0;

timer_counter++;

if(timer_counter>=10)

{

timer_counter=0;

timer_half_second++;

if(timer_half_second>=120)

{

timer_half_second=0;

if(key_start_flag==1)

{

display_num--;

if(display_num<=0)

{

key_start_flag=0;

LIGHT_ON();

}

}

}

}

}

void KeyInterruptInit()

{

// IT0=0; //低电平触发

IT0=1; //下降沿触发

EX0=1;

// IT1=0; //低电平触发

IT1=1; //下降沿触发

EX1=1;

EA=1;

}

/******************************************************** * INT0中断函数* ********************************************************/ void counter0() interrupt 0

{

EX0=0;

display_num++;

if(display_num>=100)

{

display_num=1;

}

LIGHT_OFF();

EX0=1;

}

/******************************************************** * INT1中断函数* ********************************************************/ void counter1() interrupt 2

{

EX1=0;

if(key_start_flag==1)

{

key_start_flag=0;

}else if(key_start_flag==0)

{

key_start_flag=1;

LIGHT_OFF();

}

EX1=1;

}

void GpioInit(void)

{

LIGHT_OFF();

}

void main()

{

// uint a;

GpioInit();

Init_Timer0();

KeyInterruptInit();

while(1)

{

//DisplayDot();

//DelayMS(500);

DisplayNum(display_num);

}

}

第3部分硬件系统设计

3.1系统仿真电路图

本设计采用proteus仿真,电路图如图6

图6仿真电路图

3.2系统仿真结果

1.上电后LED数码管显示上电时间10min且程序处于等待状态。

图7上电十分钟显示图

此时,主程序不断调用显示子程序以及按键电路情况,当检测到有键按下后,转到相应的程序执行。

选择依据:从此图可以看出小数点此时并没有闪烁,可知此时没按SET键,系

统的隐含上电时间为10min.

2.当设置键被按下后,程序进入调时设置状态。按下SET键,可以将当前的计数单位值加1,直到加到99为最大值。按到最大值后继续按从1开始。

图8设置定时时间图

选择依据:此图可现实出当按SET键时,可以讲当前计数设置到10到99之间的任意值。

3.STRAT键按下后程序开始减1计数直到0,数码管逐分倒计时,同时继电器不能工作,用电器工作,直到计数值到0后,继电器吸合,用电器电源被切断停止工作。

图9电路倒计时图

图10电路倒计时结束图

选择依据:由图9可以看出该电路能够实现倒计时的功能,而图10中可以看出当计数为0时,继电器部分的变化,此时用电器开始工作即灯亮。

3.3系统测试结果与分析

图11上电十分钟显示图

选择依据:从此图可以看出小数点此时并没有闪烁,可知此时没按SET键,系

统的隐含上电时间为10min.

图12设置定时时间图

选择依据:此图可现实出当按SET键时,可以讲当前计数设置到10到99之间

的任意值。

图13电路倒计时图

图14电路倒计时结束图

选择依据:由图13可以看出该电路能够实现倒计时的功能,而图14中可以看出当计数为0时,继电器部分的变化,此时用电器开始工作即灯亮。

第4部分实验总结

4.1误差产生的原因

实验误差产生的原因主要有以下几个方面:

一、软件设计部分中定时程序产生的误差,定时中断产生的误差,以及初始化程序产生的误差。(这部分的误差可以通过修改程序使实验误差减小。)

二、还有一部分误差是不能通过修改程序来改变的,是实验过程中不可避免的。比如说运行定时部分所需的时间和人机界面访问所产生的时间误差。

三、CPU运行时也会产生一定的误差,这也是不可避免的。

四、在波形发生器的实验中为什么方波会有尖刺?

当电源线与地线之间有交叉时,可能会产生一些不稳定因素使得方波产生尖刺脉冲。

4.2实验问题与解决方案

一、仿真时我们设计的电路是继电器在高电平的状态下继电器不能吸合,而我们程序中最后P3.7口的输出的是低电平致继电器工作。所以我们通过修改程序将程序改为P3.7口的输出的是高电平导致继电器不工作,使灯灭,使其能够正常运行。

二、仿真时我们LED数码管上的小数点是每两秒闪烁一次,因为我们程序上写的是偶数秒小数点亮,奇数秒小数点不亮来解决的。后来我们将程序改为偶数奇数秒都亮,此时小数点却在个位十位上不停地轮流闪烁。后来我们将程序改为每偶半秒闪一次,便解决了这个问题。

三、实物仿真时,发现数码管不能显示数字,但是经过万能表测试得知数码管部

分没有问题,单片机也能够正常运行,多次测试后发现时复位电路部分错接了一

个100欧的电阻,使电路一直处于复位状态,使数码管不能正常显示数字,修改后,数码管即能正常工作。

4.3参考文献

[1]单片机原理及接口技术(第三版)李朝青 [M] 北京航空航天大学出版社

[2]51单片机C语言教程郭天祥 [M] 电子工业出版社

[3]《51单片机原理与应用——基于keilC和proteus》[M] 北京航空航天大学

出版社

[4]《单片机应用程序设计技术》[M] 周航慈

[5]《8051单片机实践与应用》[M] 吴金戌

定时器中断程序设计实验

实验一定时器/中断程序设计实验 一、实验目的 1、掌握定时器/中断的工作原理。 2、学习单片机定时器/中断的应用设计和调试 二、实验仪器和设备 1、普中科技单片机开发板; 2、Keil uVision4 程序开发平台; 3、PZ-ISP 普中自动下载软件。 三、实验原理 805l 单片机内部有两个 16 位可编程定时/计数器,记为 T0 和 Tl。8052 单片机内除了 T0 和 T1 之外,还有第三个 16 位的定时器/计数器,记为 T2。它们的工作方式可以由指令编程来设定,或作定时器用,或作外部脉冲计数器用。定时器 T0 由特殊功能寄存器 TL0 和 TH0 组成,定时器 Tl 由特殊功能寄存器 TLl 和 TH1 组成。定时器的工作方式由特殊功能寄存器 TMOD 编程决定,定时器的运行控制由特殊功能寄存器 TCON 编程控制。T0、T1 在作为定时器时,规定的定时时间到达,即产生一个定时器中断,CPU 转向中断处理程序,从而完成某种定时控制功能。T0、T1 用作计数器使用时也可以申请中断。作定时器使用时,时钟由单片机内部系统时钟提供;作计数器使用时,外部计数脉冲由 P3 口的 P3.4(或 P3.5)即 T0(或 T1)引脚输入。 方式控制寄存器 TMOD 的控制字格式如下: 低 4 位为 T0 的控制字,高 4 位为 T1 的控制字。GATE 为门控位,对定时器/计数器的启动起辅助控制作用。GATE=l 时,定时器/计数器的计数受外部引脚输入电平的控制。由由运行控制位 TRX (X=0,1)=1 和外中断引脚(0INT 或 1INT)上的高电平共同来启动定时器/计数器运行;GATE=0时。定时器/计数器的运行不受外部输入引脚的控制,仅由 TRX(X=0,1)=1 来启动定时器/计数器运行。 C/-T 为方式选择位。C/-T=0 为定时器方式,采用单片机内部振荡脉冲的 12 分频信号作为时钟计时脉冲,若采用 12MHz 的振荡器,则定时器的计数频率为 1MHZ,从定时器的计数值便可求得定时的时间。 C/-T=1 为计数器方式。采用外部引脚(T0 为 P3.4,Tl 为 P3.5)的输入脉冲作为计数脉冲,当 T0(或 T1)输入信号发生从高到低的负跳变时,计数器加 1。最高计数频率为单片机时钟频率的 1/24。 M1、M0 二位的状态确定了定时器的工作方式,详见表。

数字定时器资料

电子系统设计 数字定时器 实验报告 学校:苏州大学 学院:城市轨道交通学院 班级:通信工程 组员:张强强朱宇翔肖伟健吴易洲

前言 在电子技术飞速发展的今天,电子产品逐渐趋向人性化和智能化。人们人们为了实现这一目的而引入了单片机。单片机又称单片微型计算机,也称为微控制器,是微型计算机的一个重要分支,单片机是20世纪70年代中期发展起来的一种大规模集成电路芯片,是集CPU,RAM,ROM,I/O接口和中断系统于同一硅片上的器件。单片机的诞生标志着计算机正式形成了通过计算机系统和嵌入式计算机系统两个分支。目前单片机已渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。单片机已在广阔的计算机应用领域中表现得淋漓尽致电器因此,单片机已成为电子类工作者必须掌握的专业技术之一。 这次实验,我们组是以单片机为核心设计一个数字定时器。在实验过程中,我们开始了解电系统设计的和基本理念,基本规则和基本流程;在不断完善设计的过程中,我们逐步丰富和巩固自己的理论知识,培养积极思考解决问题的习惯并充分地发挥自己动手实验操作的能力。 可以说这次实验将我们所学的《单片机原理与应用》以及《电子系统设计》两门课程进行了有机的结合。通过解决实际问题,我们对原理有了更深刻的理解,对于应用有了更广泛的接触。另外实验中我们学会使用Proteus和Keil两款软件进行单片机电路的仿真以及程序的编写及联调。这些都为我们以后的课程设计乃至工作研究奠定了厚实的基础。 这次的实验中,我们以单片机实现计时和倒计时功能,由LED 显示剩余时间,显示格式为 XX(分),精确到1分的整数倍。虽然接触到的功能模块较多,包括接口模块、中断模块、存储模块、控制模块和显示模块等,但仍然只是单片机这门学问的皮毛,在以后的学习中我们还需要不断汲取知识,不断地将理论与实践结合。 本次实验有本小组4位组员共同完成,张强强负责,朱宇翔负责,吴易洲负责,肖伟健负责。 编者注

定时器计数器

定时器/计数器 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位计数器

单片机定时器实验程序

ORG 0000H LJMP START ORG 001BH ;定时器/计数器1中断程序入口地址 LJMP INT ORG 0100H START: MOV TMOD,#10H ;计数器置为方式1 MOV TL1,#0B0H ;装入时间常数 MOV TH1,#03CH SETB ET1 ;允许定时器T1中断 SETB EA ;允许总中断 SETB TR1 ;开始计数 MOV R0,#05H ;05是进入中断的次数LOOP: MOV R1,#00H MOV R2,#26H ;灯的状态循环次数LOOP1: MOV A,R1 ACALL TABLE MOV P1,A INC R1 LOOP2: CJNE R0,#00H,LOOP2 MOV R0,#05H DJNZ R2,LOOP1 LJMP LOOP TABLE: INC A ;从表中取显示码入累加器 MOVC A,@A+PC RET DB 0FFH,0FEH,0FCH,0F8H,0F0H,0E0H,0C0H,80H,0H DB 01H,03H,07H,0FH,1FH,3FH,7FH,0FFH,00H,0FFH,0FEH DB 0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH,0BFH,0DFH DB 0EFH,0F7H,0FBH,0FDH,0FEH,0FFH,00H,0FFH,00H INT: CLR TR1 ;停止计数 DEC R0 ;计数值减一 MOV TL1,#0B0H ;重置时间常数初值 MOV TH1,#03CH SETB TR1 ;开始计数 RETI ;中断返回 END

将T1改为T0,并且溢出间隔为0.05s ORG 0000H LJMP START ORG 001BH ;定时器/计数器1中断程序入口地址 LJMP INT ORG 0100H START: MOV TMOD,#01H ;计数器置为方式1 MOV TL1,#78H ;装入时间常数 MOV TH1,#0CH SETB ET0 ;允许定时器T1中断 SETB EA ;允许总中断 SETB TR0 ;开始计数 MOV R0,#05H ;05是进入中断的次数 LOOP: MOV R1,#00H MOV R2,#25H ;灯的状态循环次数 LOOP1: MOV A,R1 ACALL TABLE MOV P1,A INC R1 LOOP2: CJNE R0,#00H,LOOP2 MOV R0,#05H DJNZ R2,LOOP1 LJMP LOOP TABLE: INC A ;从表中取显示码入累加器 MOVC A,@A+PC RET DB 0FFH,07FH,3FH,1FH,0FH,07H,03H,01H,00H DB 80H,81H,0C1H,0C3H,0E3H,0E7H,0F7H,0FFH DB 00H,0FFH,00H,0FFH,0EFH,0E7H,0C7H,0C3H,83H,81H,01H,00H DB 01H,03H,07H,0FH,1FH,3FH,7FH,0FFH INT: CLR TR1 ;停止计数 DEC R0 ;计数值减一 MOV TL1,#78H ;重置时间常数初值 MOV TH1,#0CH SETB TR1 ;开始计数 RETI ;中断返回 END

AVR定时器中断初值计算方法

AVR定时器中断初值计算方法 使用芯片ATMega16外部晶振 定时器1(16位定时器)寄存器TCCR1B=0x04设定256预分频要利用定时器定时1秒 1,4000000/256=15625说明定时器每当1/15625秒就会触发一次中断 2,65535-15625=49910计算出要累加多少次才能在1秒后出发定时器1的溢出中断 3,49910<==>C2F6将计算后的值换算成16进制 4,TCNT1H=0xC2;对寄存器赋值 TCNT1L=0xF6; ================================================= 例如用16位定时器TIMER1,4MHZ晶振,256分频,100ms定时,如何求得初值赋给TCNT1 65536-(4M/256)*= 其中,4M是晶体频率,是定时时长单位秒。 对于8位的定时器 T=(2^8-计数初值)*晶振周期*分频数=(2^8-计数初值)/晶振频率*分频数计数初值=2^8-T/晶振周期/分频数=2^8-T*晶振频率/分频数

因为AVR一指令一周期 IARForAVR精确延时 C语言中,想使用精确的延时程序并不容易。IAR中有这样的一个函数__delay_cycles(),该函数在头文件中定义,函数的作用就是延时N个指令周期。根据这个函数就可以实现精确的延时函数了(但不能做到100%精确度)。 实现的方法: 建立一个的头文件: #ifndef__IAR_DELAY_H #define__IAR_DELAY_H #include<> #defineXTAL8//可定义为你所用的晶振频率(单位Mhz) #definedelay_us(x)__delay_cycles((unsignedlong)(x*XTAL)) #definedelay_ms(x)__delay_cycles((unsignedlong)(x*XTAL*1000)) #definedelay_s(x)__delay_cycles((unsignedlong)(x*XTAL*1000000 )) #endif

定时器计数器(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,产生中断请求,表示定时时间到或

WinCC 中定时器使用方法介绍

1、定时器功能介绍 2、脚本中定时器介绍 3、使用脚本实现更多定时器功能 3.1 整点归档 3.2 WinCC 项目激活时避免脚本初次执行及延迟执行脚本1 定时器功能介绍 WinCC 中定时器的使用可以使 WinCC按照指定的周期或者时间点去执行任务,比如周期执行变量归档、在指定的时间点执行全局脚本或条件满足时打印报表。WinCC 已经提供了一些简单的定时器,可以满足大部分定时功能。但是在有些情况下,WinCC 提供的定时器不能满足我们需求,这时我们就可以通过 WinCC 提供的脚本接口通过编程的方式实现定时的功能,因为脚本本身既可以直接调用 WinCC其他功能,比如报表打印,也可以通过中间变量来控制其他功能的执行,比如通过置位/复位归档控制变量来触发变量记录的执行。WinCC 提供了 C 脚本和 VBS 脚本,本文主要以全局 C 脚本编程为例介绍定时功能的实现。 2 脚本中定时器介绍既然在全局脚本中可以编程控制其他功能的执行,那么首先看看全局脚本的触发: 图1 脚本触发器分类如图1所示:脚本触发器分为使用定

时器和使用变量,定时器又分为周期执行和非周期执行一次,比如每分钟执行一次脚本属于周期执行,指定2012年10月1日执行一次属于非周期执行。使用变量触发脚本,即在变量发生变化时,脚本就执行一次,而变量的采集可以根据指定周期循环采集,或者根据变化采集,根据变化实际是1秒钟采集变量一次。 3使用脚本实现更多定时器功能 利用脚本自身的定时器,可以通过在脚本中编程的方式实现更多其它定时功能。 3.1整点归档 WinCC提供了变量归档,变量归档分为周期归档和非周期归档,不管是周期归档或非周期的归档,都又可以通过一些变量或脚本返回值来控制归档,比如:整点归档。下面的设置结合WinCC脚本,实现了在整点开始归档,归档五分种后停止归档,即每个小时仅归档前五分钟的数据。 软件环境:Windows 7 Professional Service Pack1 , WinCC V7.0 SP3 归档名称:ProcessValueArchive 归档变量:NewTag 归档周期:1 分钟 归档控制变量 startarchive C脚本触发周期:10秒 脚本代码: #include"apdefap.h" int gscAction( void ) { #pragma option(mbcs) #pragma code ("kernel32.dll");

数字定时器资料

北京理工大学2012级电子技术课程设计 数字定时器

第1章概述 1.1设计目的 1、学习掌握电子技术基础知识和具体电路设计能力; 2、熟练掌握EDA仿真的使用方法; 3、增强学生的实践能力和遇到各种问题后寻找问题原因、解决问题的能力。 1.2设计要求 1、计时显示范围要求自00时00分00秒到23时59分59秒; 2、具有校时功能,可对小时、分、秒分别进行校准; 3、要求预选时刻到达时被控对象连续响10秒,蜂鸣器在10秒内断续鸣叫5次,即响1秒停1秒。 第2章设计与仿真 2.1工作原理 数字定时器由振荡电路、分频电路、计时电路、数码管显示电路、校时电路和闹钟电路组成。 由振荡电路产生2Hz的方波信号,经分频器产生1Hz和0.5Hz的信号,其中计时电路用1Hz信号,闹钟电路用0.5Hz信号,校时电路用2Hz与1Hz信号。计时电路使用的是6片CD4518和5片CD4028,分秒计数器为60进制,时计数器为24进制,CD4028输出进位脉冲给下一位的CP端。当计数器满24小时时,输出清零信号给各计数器完成清零,重新计数。校时电路由CD4015与一些门电路组成,闹钟电路由门电路和蜂鸣器组成。 2.2分部设计与仿真 2.2.1振荡电路 振荡电路可用555定时器与RC组成的电路实现,如图2-1所示。

图2-1 555定时器RC振荡电路 OUT管脚输出的即为2Hz的方波信号。 2.2.2分频电路 因为需要用到1Hz与0.5Hz的方波信号,所以把74LS160设计成分频器,把振荡电路2Hz的信号接到CLK管脚,则其QA端输出的为1Hz方波信号,QB 端输出的为0.5Hz方波信号,电路如图2-2所示。 图2-2 分频电路

定时器计数器答案

定时器/计数器 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

51单片机定时器初值的计算

51单片机定时器初值的计算 一。10MS定时器初值的计算: 1.晶振12M 12MHz除12为1MHz,也就是说一秒=1000000次机器周期。10ms=10000次机器周期。65536-10000=55536(d8f0) TH0=0xd8,TL0=0xf0 2.晶振11.0592M 11.0592MHz除12为921600Hz,就是一秒921600次机器周期,10ms=9216次机器周期。 65536-9216=56320(dc00) TH0=0xdc,TL0=0x00 二。50MS定时器初值的计算: 1.晶振12M 12MHz除12为1MHz,也就是说一秒=1000000次机器周期。50ms=50000次机器周期。65536-50000=15536(3cb0) TH0=0x3c,TL0=0xb0 2.晶振11.0592M 11.0592MHz除12为921600Hz,就是一秒921600次机器周期,50ms=46080次机器周期。 65536-46080=19456(4c00) TH0=0x4c,TL0=0x00 三。使用说明 以12M晶振为例:每秒钟可以执行1000000次机器周期个机器周期。而T 每次溢出 最多65536 个机器周期。我们尽量应该让溢出中断的次数最少(如50ms),这样对主程序的干扰也就最小。开发的时候可能会根据需要更换不同频率的晶振(比如c51单片机,用11.0592M的晶振,很适合产生串

口时钟,而12M晶振很方便计算定时器的时间),使用插接式比较方便。 51单片机12M和11.0592M晶振定时器初值计算 2011-01-04 22:25 at89s52,晶振频率12m 其程序如下: 引用代码:#include #include void timer0_init() { TMOD=0x01;//方式1 TL0=0xb0; TH0=0x3c; TR0=1; ET0=1; } void timer0_ISR(void) interrupt 1 { TL0=0xb0; TH0=0x3c;//50ms中断一次 single++; if(single==20) { kk++; single=0; } } void main() { int kk=0;//计数器 int single=0; timer0_init(); } TL0=0xb0; TH0=0x3c; 这两个是怎么算出来得

定时器与计数器

四川工程职业技术学院 单片机应用技术课程电子教案 Copyright ? https://www.doczj.com/doc/953668033.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发出中断 请求(定时器/计数器中断允许时)。如果定时器/计数器工作于定时模式,则表 示定时时间已到;如果工作于计数模式,则表示计数值已满。

定时器计数器

图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 。

定时器产品使用说明书

定时器产品使用说明书 定时设置: 1、先检查时钟是否与当前时间一致,如需重新校准,在按住“时钟”键的同时,分别按住“星期”、“小时”、“分钟”键,将时钟调到当前准确时间。 2、按一下“设定”键,显示屏左下方出现“1开”字样(表示第一次开启的时间)。然后按“星期”调整本次设定的星期组合模式,再按“小时”、“分钟”键,输入所需开启的时间。 3、再按一下“设定”键,显示屏左下方出现“1关”字样(表示第一次关闭时间),再按“星期”、“小时”、“分钟”键,输入所需关闭的日期和时间。 4、继续按动“设定”键,显示屏左下方将依次显示“2开、2关、3开、3关……16开、16关”,参考步骤2、3设置以后各次开关时间。设置完成后,按一下“时钟”键返回。 5、如果每天不需设置16组开关,则必须按“清除”键,将多余各组消除,使其显示屏上显示“—:—”图样(不是00:00)。 6、按“模式”键,可以变换工作模式。总共有四种工作模式:A、液晶显示开(代表进入常开模式);B、液晶显示关(代表进入常关模式);C、由开进入自动(表示目前状态为开,等到下一组时间到后开始自动运行);D、由关进入自动(表示目前状态为关,等到下一组定时时间到后开始自动运行)。 当出现以下情况时: 1、定时器没有根据设定的程序开启或关闭,请检查设置程序是否正确或重新调整。 2、定时器长时间不用,显示模糊时,请将定时器接通电源充足,10分钟后无显示,按“复位”键,2-3秒。 3、如以上步骤均不能排除问题,请与公司或经销商联系维修。 注意事项: 1、对于那些因定时开关出错而可能发生的生命相关事故或者对社会产生重大影响的设备(如医疗设备等),请不要使用定时开关。 2、对于那些因定时开关出错而发生重大财产损失的设备(大型加热器或冷库),在使用本定时开关时,请务必是特性和性能的数值有足够的余量,并采取二重电路等安全对策。 3、请勿自行修理、分解或改造。 4、接通电源后请勿接触端子部分。本开关工作在无潮湿、腐蚀及高金属含量气体环境中。请勿沾染油或水。

数字定时器设计

设计任务 设计一个数字定时器 设计要求 1,定时1-99分钟,开机上电并且默认10分钟。 2,显示时间自选,不一定使用数码管。 3,定时时间可调,调试方式为两种,一是步进,二是直接输入。 4,有负载,220V/A,要求开机上电的时候,负载关闭。 5,有相关的提示信息,一旦时间设定之后,会给出时间设定的提示信息。 6,定时时间到,关闭电晕啊,切断负载电源,关闭电源。 7,系统工作电源V in=+12V 设计基本理论 本设计将采用89C51单片机,89C51单片机是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。单片机自带5个中断,两个16位定时器32个I/O口,可擦除只读存储器可以反复擦除多次,功能相当强大。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器。89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 主体模块设计 数字定时器系统的基本组成如下图所示

数字定时系统电路的原理框图根据设计任务与要求,可初步将系统分为五大功能模块:主电路、按键电路、显示电路、继电器电路。进一步细说,主电路选用AT89C51作为中央处理器,系统采用12MHZ的晶振;按键控制电路由两个个按键(启动键(start)、时间设定键(set))组成,采用三个独立开关,按键按下产生一个脉冲信号;显示电路由二位8段共阴极数码管和一个9位100欧姆上拉排阻组成,位选,个位和十位由P0输出,段选由P1输出;继电器电路由一个继电器和一个用电器(灯泡)组成,通过电路与P3.0相连。当P3.0输出高电平时,继电器不吸合,灯亮。 各部件具体设计 1单片机最小系统的设计模块 硬件连接说明:本系统以AT89C51单片机为核心。单片机采用内部振荡的方式。通过200欧姆电阻与一个6位8段LED数码显示管相连。从P0口输出LED数码管的字形码,从P2口输出LED数码管的位选码,高电平有效。4个功能按键和P1口相连,中间通过10K的电阻与+5V电源相连,按键另一端接地,P1口低电平时表示按键被按下。报警电路则与P3.0口相连,当P3.0口输出高电平时,蜂鸣器响。 2晶振电路设计 由于单片机内部振荡方式电路简单,时钟信号比较稳定,是独立的单片机应用系统的首选,故本设计采用内部振荡方式,采用12MHZ的晶振。数字定时系统电路的晶振电路图如下图所示。

ATMEGA16定时器的使用

ATMEGA16定时器的使用 [日期:2012-01-07 ] [来源:本站编辑作者:佚名] [字体:大中小] (投递新闻) /* 本程序简单的示范了如何使用ATMEGA16的定时器 AVR定时器的要点介绍 T0工作于CTC模式,输出1KHz/2KHz 50%占空比的方波 T1工作于快速PWM模式兼输入捕捉 T2工作于相位修正PWM模式,输出490Hz的8bit PWM波 出于简化程序考虑,各种数据没有对外输出,学习时建议使用JTAG ICE硬件仿真器对于定时器,AVRstudio的软件仿真是不准确的。 */ #include #include #include //时钟定为8MHz,F_CPU=8000000 //管脚定义 #define ICPKEY 6 //ICP1 PD6 按键模拟ICP输入 #define PWM0 3 //OC0 PB3 #define PWM1A 5 //OC1A PD5 #define PWM1B 4 //OC1B PD4 #define PWM2 7 //OC2 PD7 //宏定义 #define PWM1A_ON() PORTD|= (1<

定时器程序

#include #define uchar unsigned char #define uint unsigned int sbit LED=P0^0; uchar T_Count=0; void main() { TMOD=0x00; //定时器0 工作方式0 TH0=(8192-5000)/32; //5ms 定时 TL0=(8192-5000)%32; IE=0x82; //允许T0 中断 TR0=1; while(1); } //T0 中断函数 void LED_Flash() interrupt 1 { TH0=(8192-5000)/32; //恢复初值 TL0=(8192-5000)%32; if(++T_Count==100) //0.5s 开关一次LED { LED=~LED; T_Count=0; } } 28 TIMER0 控制流水灯 #include #include

#define uchar unsigned char #define uint unsigned int void main() { uchar T_Count=0; P0=0xfe; P2=0xfe; TMOD=0x01; //定时器0 工作方式1 TH0=(65536-40000)/256; //40ms 定时TL0=(65536-40000)%256; TR0=1; //启动定时器 while(1) { if(TF0==1) { TF0=0; TH0=(65536-40000)/256; //恢复初值TL0=(65536-40000)%256; if(++T_Count==5) { P0=_crol_(P0,1); P2=_crol_(P2,1); T_Count=0; } } } }

课程设计报告:数字式计时器电路555定时器

目录 目录 (1) 1.系统设计思路与总体方案 (2) 1.1 设计思路与流程图 (2) 2.Multisim软件的简介 (3) 2.1Multisim概貌及特点 (3) 3.555定时器,CD4518和CD4011介绍 (7) 3.1 555定时器 (7) 3.2 CD4518引脚功能 (11) 3.3 CD4011引脚图 (12) 4. 数字逻辑,振荡器,计数器和显示电路图 (14) 4.1数字逻辑模块 (14) 4.2振荡器模块 (14) 4.3 计数器模块 (19) 4.4 显示器模块 (20) 5. 电路的总体设计与调试 (20) 5.1 总体电路原理图 (20) 5.2总体电路工作原理 (21) 6.课程设计感受 (22) 6.1 课程设计中的收获和体会 (22) 7.附录与文献 (24)

7.1附录 (24) 7.2参考文献 (25) 1.系统设计思路与总体方案 1.1 设计思路与流程图 根据任务书可以知道本课题是一个2位数字显示计数器,是一个十进制计数器组合,本质上就是一计时器。通过一个时基电路产生一定频率脉冲,将脉冲信号输入低位的计数器输入端,通过一级级的进位,从而达到计数。从而完成此课题,我们可以将这整个计数系统,分为几个模块进行分析。 (1).数字逻辑控制模块。通过使用门电路来控制计时器进位及清零。 (2).脉冲信号产生模块。由一个振荡电路来产生一个固定频率的脉冲信号,作为计时器的时基信号。 (3).计时数计数模块。接收计时及中断信号脉冲,从而控制计数器计数,且有清零功能,该模块选用十进制计数器。 (2).译码显示模块。该模块要显示00到99的数字,选用十进制计数器的基础上,通过它们之间的级联,最终显示相应数字。 该数字式定时器,需要用到555定时器,由此产生振荡信号,在数字逻辑电路的控制下,由计数器计数,最后在数码管上显示出来,画为流程图如下:

单片机定时器程序

实验十一定时器实验三 一、实验要求 1.将P2口和四个数码管的数据口相连,P1口和位选线相连接,电路用共阳极; 2.数码管显示4位从前两位分钟、后两位为秒;分钟和秒的值从00到59增加; 3.实现定时器1S的定时,每1S时间到时,使秒钟加一,当秒钟为60时,显示为00 秒,分钟加一;当分钟为60时,显示为00分,从新开始一个小时的计时。 #include //定义8051寄存器头文件 #define SEG7P P2 //定义数码管就接口在P2口 #define SCANP P1 //定义P3口为数码管位选口unsigned char TAB[]={ 0xc0,0xf9,0xa4,0xb0,0x99, //数字0~4的码值 0x92,0x83,0xf8,0x80,0x98 }; //数字5~9的码值unsigned int show_s,show_m; //定义变量show_s,show_m void Get_disp(char show_s1,char show_m1); //声明赋值函数 void Display(); //声明显示函数 void delay_ms(int x); //声明延时函数 char disp[4]; //定义显示数字数组 char scan[4]={0xfe,0xfd,0xfb,0xf7}; //定义位选扫描数组 main() //主程序的开始 { SEG7P=0xff; //赋初值关闭数码管 IE=0x82; //开启中断总开关和定时器0开关 TMOD=0x01; //设置模式为1 TR0=1; //开启定时器0 TH0=(65535-50000)/256; //设置定时器初值,计数高八位 TL0=(65535-50000)%256; //计数低八位 while(1) //无穷循环 { Get_disp(show_s,show_m); //调用赋值函数 Display(); //调用显示函数} } /*****定时器0中断子函数*****/ void TF_0(void) interrupt 1 { int T; TH0=(65535-50000)/256; //重新转载定时器的初值 TL0=(65535-50000)%256; T++; //计数自增 if(T==20) //判断T { T=0; //T回到初值 show_s++; //秒自增

定时器-计数器

定时器 / 计数器 一、实验目的 ⒈学会8253芯片和微机接口的原理和方法。 ⒉. 掌握8253定时器/计数器的工作方式和编程原理。 二、实验内容 利用8253进行二次分频,控制LED灯亮10秒,灭10秒。 三、实验程序清单(在H8253.ASM的基础上修改) CODE SEGMENT ;H8253.ASM ASSUME CS: CODE ORG 1290H START: JMP TCONT TCONTRO EQU 0043H TCON0 EQU 0040H TCON1 EQU 0041H TCONT: MOV DX,TCONTRO MOV AL,36H ;0号通道控制字需要修改 OUT DX,AL MOV DX,TCON0 ;计数初值要按计算出的值来写 MOV AL,00H OUT DX,AL MOV AL,04H OUT DX,AL MOV DX,TCONTRO MOV AL,36H ;1号通道控制字需要修改 OUT DX,AL MOV DX,TCON1 MOV AL,00H ;计数初值要按计算出的值来写 OUT DX,AL MOV AL,02H OUT DX,AL JMP $ CODE ENDS END START

四、实验步骤 ⒈8253的GATE0、GATE1接+5V,OUT0接CLK1,CLK1接LED灯(L1)。 8253的CLK0插孔接分频器74LS393(左下方)的T2插孔,分频器的频 率源为8.0MHZ,T→8.0MHZ。 ⒉运行实验程序 在系统提示符“P.”状态下,联机运行程序 3. 观察实验现象,修改程序中的计数初始值,观察结果。

相关主题
文本预览
相关文档 最新文档