项目5 定时器与脉冲计数器的设计

合集下载

定时器计数器的定时实验

定时器计数器的定时实验

定时器和计数器是数字逻辑电路中常见的功能模块,用于时间测量和事件计数。

以下是一个可能的定时器计数器的定时实验设计方案:
实验名称:定时器计数器的定时实验
实验目的:
1. 了解定时器和计数器在数字电路中的应用;
2. 学习定时器的工作原理和使用方法;
3. 掌握计数器的功能及其在事件计数中的应用。

实验内容:
1. 定时器实验:
-设计一个简单的定时器电路,利用集成电路或开发板上的定时器模块,实现不同时间间隔的脉冲输出。

-调节定时器参数,观察输出信号的频率和占空比的变化。

2. 计数器实验:
-将定时器的输出信号连接到计数器输入端,通过计数器实现对脉冲数量的计数。

-设置计数器的初始值和计数方式,观察计数器的计数过程及计数结果。

实验器材与设备:
1. 集成电路或开发板上的定时器和计数器模块
2. 连接线、电源等实验器材
3. 示波器或数码多用表等测试仪器
4. 相关的实验软件和工具
实验注意事项:
1. 理解定时器和计数器的工作原理,正确连接和设置实验电路。

2. 注意电路连接的准确性,确保信号传输正常。

3. 在实验过程中注意观察输出信号波形和计数结果,及时调整参数以获取所需实验数据。

预期结果:
通过该实验,学生可以深入了解定时器和计数器在数字电路中的应用,掌握定时器的工作原理和调节方法,以及理解计数器在事件计数中的作用。

学生将能够实际操作定时器计数器模块,设计并搭建相应的实验电路,观察实验结果并进行数据分析。

这样的定时器计数器的定时实验设计旨在帮助学生加深对数字逻辑电路中定时和计数功能的理解,培养其实验操作能力和问题解决能力。

定时器的设计实验报告

定时器的设计实验报告

定时器的设计实验报告1. 引言定时器是一种常见的计时装置,广泛应用于各个领域,如电子设备、工业自动化、交通运输等。

本实验通过设计一个基于脉冲计数的定时器电路,旨在研究其工作原理,探索其在实际应用中的可行性和性能表现。

2. 原理及设计2.1 工作原理脉冲计数定时器是一种通过计数器累加输入脉冲信号的数量来实现计时的装置。

其基本原理是利用脉冲信号的频率和计数器的计数速度之间的关系,通过计数器的累加值计算时间间隔。

2.2 设计步骤1. 确定定时器的时间基准。

时间基准可以选择外部脉冲输入或者由稳定的晶振产生。

2. 设计计数器的位数。

根据计时的范围确定计数器的位数,以保证计数范围的覆盖。

3. 计算计数器的计数速度。

根据计时的最大时间间隔和计数器的位数,计算所需的输入脉冲频率。

4. 根据计数器的位数和计数速度,选择合适的计数器芯片。

5. 配置计数器芯片的工作模式和输入脉冲的触发方式。

6. 连接电路并验证设计是否符合要求。

2.3 接线图_______________input > Counter > output________ Display_________3. 实验结果及分析3.1 实验设置- 输入脉冲频率:1kHz- 计数器位数:4位- 计数器芯片:74HC163- 时间基准:晶振(频率为10MHz)3.2 实验结果在实验过程中,我们通过将输入脉冲接到74HC163计数器芯片的CP 输入端,将74HC163的输出接到数码显示器,观察并记录实时的计数结果。

在实验进行中,我们发现计数器芯片的最大计数范围是15(4位二进制),对应的时间间隔为15ms(1kHz输入脉冲时)。

3.3 实验分析通过实验结果可以看出,该定时器电路能够准确计时,实际测量的时间结果与理论计算非常接近。

由于74HC163计数器芯片的高稳定性和高精度,使得定时器的性能表现较好。

然而,该设计存在一个缺点,即计数器位数的限制。

由于计数器位数的限制,导致定时的最大时间间隔受到了限制。

实验五 脉冲计数实验

实验五 脉冲计数实验

实验五脉冲计数实验(定时/计数器实验)1,实验目的:熟悉单片机内部定时/计数器功能,掌握初始化编程方法。

2,实验内容:把定时器0外部输入的脉冲进行计数,并送显示器显示3,实验程序框图:4,实验接线如右图:5,实验步骤:用插针把8MHZ插孔和T插孔连接,P3.4 依次接T0~T7或单脉冲输出孔,执行程序,观察数码管上计数脉冲的速度及个数。

7, 程序清单(文件名:timer.asm):;脉冲计数(定时/计数器实验)ORG 0000HLJMP SE15ORG 0060HSE15: MOV SP,#53HMOV TMOD,#05HMOV TH0,#00HMOV TL0,#00H ;定时计数器初始化SETB TR0 ;开计数器LO29: MOV R2,TH0MOV R3,TL0 ;取出TH0.TL0内容LCALL ZOY0 ;二转十进制MOV R0,#79HMOV A,R6LCALL PTDSMOV A,R5LCALL PTDSMOV A,R4LCALL PTDS ;送显示缓冲区LCALL SSEE ;显示SJMP LO29 ;循环计数.显示ZOY0: CLR AMOV R4,AMOV R5,AMOV R6,A ;0送R4 R5 R6MOV R7,#10HLO30: CLR C ;R2 R3左移.移出的MOV A,R3 ;最高位送CYRLC AMOV R3,AMOV A,R2RLC AMOV R2,AMOV A,R6ADDC A,R6 ;(R4 R5 R6)*2+CY送R4 R5 R6 DA A ;十进制调整MOV R6,AMOV A,R5ADDC A,R5DA AMOV R5,AMOV A,R4ADDC A,R4DA AMOV R4,ADJNZ R7,LO30 ;循环16次RET;-----------------------------------------------PTDS: MOV R1,A ;拆送显示缓冲区ACALL PTDS1MOV A,R1SWAP APTDS1: ANL A,#0FHMOV @R0,AINC R0RET;--------------------------------------------SSEE: SETB RS1 ;换工作区MOV R5,#05HSSE2: MOV 30H,#20HMOV 31H,#7EHMOV R7,#06HSSE1: MOV R1,#0DDHMOV A,30HMOVX @R1,A ;字位送入MOV R0,31HMOV A,@R0MOV DPTR,#DDFFMOVC A,@A+DPTR ;取字形代码MOV R1,#0DCHMOVX @R1,A ;字形送入MOV A,30H ;右移RR AMOV 30H,ADEC 31HMOV A,#0FFHMOVX @R1,A ;关显示DJNZ R7,SSE1 ;6位显示完了吗?DJNZ R5,SSE2 ;5次显示完了吗?CLR RS1RET;-------------------------------------------------------- DDFF: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH;-------------------------------------------------------- END。

51单片机定时-计数器结构和计数器工作原理

51单片机定时-计数器结构和计数器工作原理
使用中断方式时对IE寄存器赋值开发中断
使TR0或TR1置位,启动定时/计数器
晶体振荡器的振荡信号从XTAL2端输入到片内的时钟发生器上,时钟发
生器是一个二分频触发器电路,它将振荡器的信号频率除以2,向CPU提供
了两相时钟信号P1和P2。时钟信号的周期称为机器状态时间S,它是振荡
周期的2倍。在每个时钟周期(即机器状态时间S)的前半周期,相位1(即
P1信号)有效,在每个时钟周期的后半周期,相位2(即P2信号)有效。
提供
用途:定时器和计数器
核心:加1计数器
原理:每来一个脉冲则加1计数器加1,当加到全1时再来一个脉冲使加
1计数器归零,同时加1计数器的溢出使TCON寄存器中的TF0(或TF1)
置1,向CPU发出中断请求
脉冲来
补充:
计数器工作原理:
用作计数器时,对T0或T1引脚的外部脉冲计数,如果前一个机器周期
采样值为1,后一个机器周期采样值为0,则说明有一个脉冲,计数器加
1。
在每个机器周期的S5P2期间采样引脚输入电平。新的计数初值于下一个
机器周期的S3P1期间装入计数器。
此种方式需要两个机器周期来检测一个1->0负跳变信号,因此最高的计
数频率为时钟频率的1/24。
S5P2:
S5P2指的是第5个时钟周期的相位2。
工作原理:13位计数器,使用TL0的低5位和TH0的高8位组成,TL0
的低5位溢出时向TH0进位。TH0溢出时发出中断请求。
方式1
计算公式:
最大计数:65536个机器周期
工作原理:16位计数器,TL0作为低8位,TH0作为高8位
方式2:自动重装初值的8位计数方式
计算公式:p.s.晶振频率必须选择12的整数倍,因为定时器的频率是晶振

51单片机脉冲产生程序设计

51单片机脉冲产生程序设计

51单片机脉冲产生程序设计脉冲产生是嵌入式系统中非常重要的功能之一、在51单片机中,我们可以通过定时器/计数器和中断来实现脉冲的产生。

下面将详细介绍如何设计一个脉冲产生的程序。

首先,我们需要选择一个定时器作为脉冲产生的源。

在51单片机中,有两个可用的定时器,分别是定时器0和定时器1、我们选择一个定时器后,就需要设置定时器的工作模式和计数方式。

在这个例子中,我们选择使用定时器1,并设置为工作模式1和16位计数。

下面是相关的代码示例:```c#include <reg51.h>//定义定时器1的计数周期,用于控制脉冲的频率//主函数void main//声明并初始化定时器计数值unsigned int count = 0xFFFF - TIM1_CYCLE;//设置定时器1的工作模式和计数方式TMOD=0x20;//工作模式1TH1 = count / 256; // 设置高字节TL1 = count % 256; // 设置低字节//启动定时器1TR1=1;while (1)//脉冲输出的相关处理//这里可以添加相关操作}```在上述代码中,我们通过`TIM1_CYCLE`宏定义了定时器1的计数周期,用于控制脉冲的频率。

然后,我们设置了定时器1的工作模式为工作模式1,并计算出计数值,将其分别赋值给TH1和TL1寄存器。

最后,启动定时器1,并在主循环中进行相关的脉冲输出处理。

通过以上的代码段,我们实现了一个简单的脉冲产生程序。

在实际应用中,我们可以根据需要进行进一步的处理,例如根据输入信号进行触发控制、与其他模块进行通信等。

需要注意的是,在上述代码中,我们使用了51单片机的计数方式1,即工作模式1、根据实际需求,您可以根据相应的定时器和计数方式进行调整。

另外,定时器的计数周期也可以根据具体应用进行调整,以满足不同的脉冲需求。

总结起来,设计一个脉冲产生的程序需要选择定时器和计数方式,设置定时器的工作模式和计数值,然后启动定时器,并在主循环中进行相关的处理。

脉冲计数器的设计与分析详解

脉冲计数器的设计与分析详解

脉冲计数器的设计与分析详解脉冲计数器简介计数器是数字系统中用得较多的基本逻辑器件。

计数器采用全自动贴片封装工艺,具有很强的抗干扰能力,并具有多种输出功能和控制功能,多种计数模式,广泛运用于电力、石化、冶金、轻工、制药、航空等诸多领域。

技术参数1、水表脉冲一般为干簧管信号,水表计数要防止抖动、不丢脉冲。

在程序设计时,脉冲计数的优先级要大于其他程序的优先级。

水表脉冲计数自动保存在模块内的存储器里。

2、水表计数模块具有RS485自由通讯协议功能或者ModBus协议通讯功能,自由通讯协议应该简单明了,容易应用。

3、水表计数模块供电电源分外部供电和电池供电,并且电路板上要有容量大一点的电容。

外部供电为DC24V,当用外部供电时,电池停止供电;当外部供电中断时,电池供电,当外部供电和电池供电都中断后,电容供电。

当外部供电或者电池供电中断后,要有报警信号输出。

电池选用市场上的通用电池。

4、计算机根据RS485通讯协议或者ModBus通讯协议能对模块的地址进行更改、对模块里的数据进行设置。

并能读出模块的地址、计数数据、报警信息等。

5、水表模块的封装应防水、防潮、放静电、防冻、防高温,易于安装、拆卸和维护。

6、所有接线端子要至少能接0.5m2 线径的RVV或BVR电缆。

用处脉冲计数器当前应用范围主要有电表、水表、煤气表以及光电等等;下面就依水表计数模块简要讲述一下计数器的基本功能、操作方法及其技术参数等。

1、水表脉冲自动计数功能。

通讯时不妨碍计数;2、具有RS485自由协议或ModBus协议通讯功能;3、断电保持数据功能;4、通过计算机软件对模块内的地址、数据写功能和数据读功能;5、故障诊断输出功能;6、水表模块一般安装在现场,需要防水、防潮、防冻、防高温。

具有抗干扰能力;脉冲计数器设计与分析总体框图及模块设计NE555定时器产生脉冲信号→ 施密特触发器整形→ 计数器计数→ 数字信号译码→ 数码管显示CC40106由六个斯密特触发器电路组成。

定时器计数器常用编程方法

定时器计数器常用编程方法

定时器计数器常用编程方法定时器和计数器是嵌入式系统中常用的功能模块,用于实现时间测量、任务调度、PWM生成等功能。

在嵌入式系统的开发中,了解和掌握常用的定时器计数器编程方法至关重要。

本文将介绍几种常用的定时器计数器编程方法,以帮助开发者更好地运用定时器计数器。

一、基本概念在进行定时器计数器编程之前,我们首先需要了解一些基本概念。

1. 定时器:定时器是一种能够按照一定时间周期自动计数,并产生相应中断或触发事件的硬件模块。

2. 计数器:计数器是一种能够按照外部信号或者内部时钟信号进行计数,并提供计数结果的硬件模块。

3. 溢出中断:当定时器或计数器的计数值达到最大值后,会发生溢出,并触发溢出中断,用于实现周期性的定时或计数功能。

4. 输入捕获:定时器计数器可以通过输入捕获功能,实时记录外部事件信号的时间戳,用于时间测量等应用。

二、定时器计数器编程方法在嵌入式系统中,常用的定时器编程方法包括常规模式、CTC模式、PWM模式等。

下面分别介绍这些方法的基本原理及编程实现。

1. 常规模式常规模式是定时器最简单的工作模式,通过设置计数器的初值和溢出中断来实现定时功能。

其编程步骤如下:(1)设置定时器计数器的初值,决定计数器的起点。

(2)使能定时器的溢出中断,当计数器溢出时触发中断。

(3)启动定时器计数。

下面是一个使用常规模式实现定时功能的示例代码:```C#include <avr/io.h>#include <avr/interrupt.h>void Timer_Init(){// 设置计数器初值TCNT1 = 0;// 使能溢出中断TIMSK |= (1 << TOIE1);// 启动定时器计数,使用外部时钟源TCCR1B |= (1 << CS12) | (0 << CS11) | (0 << CS10);}// 定时器溢出中断处理函数ISR(TIMER1_OVF_vect){// 处理定时事件}int main(){Timer_Init();// 主循环while (1){// 其他任务处理}return 0;}```2. CTC模式CTC模式(Clear Timer on Compare Match)是一种定时器工作模式,可以实现在指定时间后产生中断或触发事件。

单片机定时器计数器应用

单片机定时器计数器应用

为了获得1秒时间,T0中断需要发生200次。程序包含主函
数,T0的初始化函数和T0中断服务函数,显示语句放在中
断服务函数内,程序如下:
/******************************************************************/ #include<reg51.h> code unsigned char seven_seg[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; unsigned char cp,i; //声明全局变量 void timer0_isr(void) interrupt 1 // timer0中断服务函数 { TR0 = 0; //停止计数 TL0 = 0x78; // TL0重新预置 TH0 = 0xec; // TH0重新预置 TR0 = 0; //开始计数 cp++; // timer0中断1次,变量cp加1 if(cp == 200) //中断200次,时间刚好为1秒 { cp = 0; i ++; }
项目5 单片机定时器/计数器应用
5.1任务说明
任务:利用单片机内部定时器/计数器中断实现一个数码管 的秒记数,重点学习定时器/计数器的工作方式以及
其控制寄存器TMOD、TCON的功能,在程序实现
过程中掌握定时器/计数器中断的一般步骤。
5.2 单片机的定时/计数器结构
51单片机内部含有两个定时器/计数器,分别是T0和 T1,在增强型51系列单片机中,如STC89C51RC,内部出了 含有T0和T1外,还有T2定时器/计数器。定时器/计数器主 要由于精确的定时,也可用于对外部脉冲进行计数以及为

定时器计数器常用编程方法

定时器计数器常用编程方法

定时器计数器常用编程方法定时器计数器是编程中常用的工具,它们可以用于控制程序的执行时间、测量时间间隔、产生脉冲信号等。

以下是一些常用的编程方法来使用定时器计数器:1. 硬件定时器/计数器:许多微控制器和处理器都内置了硬件定时器/计数器。

这些定时器/计数器可以用于产生精确的时间延迟或测量时间间隔。

在编程时,通常需要配置定时器/计数器的参数,如计数频率、计数值等,然后启动定时器/计数器,让它自动计数或计时。

2. 软件定时器/计数器:如果硬件没有提供定时器/计数器,或者需要更灵活的控制,可以使用软件定时器/计数器。

软件定时器/计数器是通过程序代码实现的,通常使用循环和延时函数来模拟定时或计数。

这种方法不如硬件定时器/计数器精确,但可以实现简单的定时和计数功能。

3. 操作系统提供的定时器/计数器:许多操作系统都提供了定时器和计数器的API或功能。

例如,在Windows系统中,可以使用CreateTimerQueueTimer函数创建一个定时器,用于在指定的时间间隔后触发回调函数。

在Linux系统中,可以使用alarm或setitimer函数设置定时器。

这些方法通常需要结合操作系统提供的API进行编程。

4. 第三方库或框架:许多编程语言和框架提供了对定时器和计数器的支持。

例如,Python中的time模块提供了sleep函数用于暂停程序执行一段时间,而Tkinter库提供了Timer类用于在GUI应用程序中创建定时器。

这些库或框架通常提供更高级的功能和更灵活的控制,但需要学习和使用特定的API或语法。

总之,使用定时器计数器的编程方法有很多种,具体选择哪种方法取决于应用程序的需求和使用的编程语言或框架。

单片机基础及应用项目五课后习题及答案

单片机基础及应用项目五课后习题及答案

单片机基础及应用项目五课后习题及答案一、填空题1.51单片机中有(2)个(16)位的定时/计数器,可以被设定的工作方式有(四)种。

2.51单片机的定时器/计数器有四种工作方式,其中方式0是(13)位计数器;方式1为(16)位计数器;方式2为(自动重装初值)的(8)位计数器;只有定时器(T0)才能选作组合方式3,此时将形成2个(8)位的计数器。

3.单片机中,常用作地址锁存器的芯片是(74HC373),常用作地址译码器芯片的是(74HC138)。

4.若要启动定时器T0开始计数,则应将TR0的值设置为(1)。

5.若系统晶振频率为12MHz,则T0工作方式1时最多可以定时(65536)us。

6.TMOD中M1M0=11时,定时器工作方式(3)。

7.单片机工作于定时状态时,计数脉冲来自(单片机内部的时钟脉冲)。

8.单片机工作于计数状态时,计数脉冲来自(单片机外部的时钟脉冲)二、选择题1.单片机的定时器/计数器设定为工作方式1时,是(D)A、8位计数器结构B、2个8位计数器结构C、13位计数器结构D、16位计数器结构2.定时器/计数器有4种工作模式,它们由(B)寄存器中的M1、M0状态决定A、TCONB、TMODC、PCOND、SCON3.若单片机的振荡频率为6MHz,设定时器工作在方式1需要定时1ms,则定时器初值应为(C)A、500B、1000C、216-500D、216-10004.定时器1工作在计数方式时,其外加的计数脉冲信号应连接到(D)引脚A、P3.2B、P3.3C、P3.4D、P3.55.74LS138芯片是(B)A、驱动器B、译码器C、锁存器D、编码器6.在下列寄存器中,与定时/计数控制无关的是(C)A、TCONB、TMODC、SCOND、IE7.启动定时器0开始计数的指令是使TCON的(B)A、TF0位置1B、TR0位置1C、TR0位置0D、TR1位置08.用定时器T1方式1计数,要求每计满10次产生溢出标志,则TH1、TL1的值是(A)A、FFH、F6HB、F6H、F6HC、F0H、E0HD、FFH、DFH9.与开启定时器0中断无关的是(C)A、TR0=1B、ET0=1C、ES0=1D、EA=110.多位数码管显示时,(D)负责输出字型码,控制数码管的显示内容。

项目5 定时器与脉冲计数器的设计

项目5 定时器与脉冲计数器的设计

while(1) { if(TF0 = = 1) //定时溢出标志位为1时表示计时溢出 { TF0 = 0; //软件清零 TH0 =(65536-50000)/256; //重置50ms定时 TL0 =(65536-50000)%256; if(++T_Count == 20) //50*20=1000ms后LED滚动一次 { P0 = _crol_(P0,1); P2 = _crol_(P2,1); T_Count = 0; } } } }
任务5.1 定时器的设计
5.1.1 MCS-51单片机内部定时/计数器的原理
5.1.1.1 单片机定 时/计数器的结构
加1计数器(高8位、低8位); 工作方式控制寄存器TMOD,工作方式设置; 定时器控制寄存器TCON,启动、停止及设置溢出标志。
5.1.1.2 定时/计数器工作原理
TMOD中,各有一个控制位(C/T),分别用于控制定 时/计数器T0和T1工作在定时器方式还是计数器方式。 定时功能----计数输入信号是内部时钟脉冲,每个机器周期使 寄存器的值加1。所以,计数频率是振荡频率的1/12。 定时模式,对内部机器周期计数 定时时间 t =计数值N x Tcy
5.1.2.3 用定时/计数器的工作方式2设计定时器 方式2—8位自动装入时间常数方式 自动重装初值的8位计数方式 ,适合于用作较 精确的脉冲信号发生器。
振荡器
T0 TR0 GATE INT0
1/12
C/T=0
TL0
C/T=1 1 ≥1 & TH0
TF0
TH0(TH1)中保留初值
定时/计数器工作方式1 定时方式: 定时=(28-X)×时钟周期×12
//发光二极管定时1s闪烁主程序 void main() { for( ; ; ) { P1_0=!P1_0; //取反P1.0 使发光二极管闪烁 sTime (); //调用1s定时 } }

定时器及其应用脉冲单元设计

定时器及其应用脉冲单元设计

定时器及其应用脉冲单元设计
定时器是一种定时的控制设备,它能够控制或维持时间或按精确程度
设定的时间,是人们构建控制系统的基本元件。

它在自动控制仪表、汽车、工业生产的控制、节目控制、家用电器等多种系统中发挥着重要作用,是
实现自动化的必要条件。

许多定时器本身带有有定时动作的输出,与其它
控制部件组合时可完成更多功能。

脉冲单元是一种特殊用途的定时器,它由脉冲定时器、脉冲计数器、
脉管记忆器、触发开关等组成,可以实现负责的定时功能,如精确定时、
定次定时控制。

因为它可以按一定的规律生成脉冲信号,可以代替机械定
时器,因此在实际工作中常被用于替代传统的机械定时器,从而实现精确
定时控制,有助于提高生产效率,降低生产成本。

脉冲单元的主要作用是按照一定的规律定时输出脉冲信号,这些信号
可以控制其它部件的操作,从而实现定时控制。

一般情况下,脉冲单元的
输出可以分为定时输出和脉冲输出。

定时输出是指定时器内部定时器定时
输出的脉冲信号,一般用于实现定时控制;脉冲输出是由计数器(又称脉
冲计数器)定时计数输出脉冲信号,可用于实现定次定时或定流定时控制。

脉冲单元的应用很广泛。

项目5 脉冲发生器的设计与制作

项目5 脉冲发生器的设计与制作

5.2 项目理论知识
4. 方式3 在工作方式3下,定时/计数器T0被拆成两个独立的8 位TL0和TH0。 其中,TL0既可以用做计数,又可以用做定时,定时/ 计数器T0的各控制位和引脚信号全归它使用,其功能 和操作与方式0和方式1完全相同,而且逻辑电路结构 也极其类似。 定时/计数器T0的高8位TH0,只能作为简单的定时器 使用。由于定时/计数器T0的控制位已被TL0占用,因 此只好借用定时/计数器T1的控制位TR1和TF1,即以 计数溢出置位TF1,而定时的启动和停止则由TR1的状 态控制。
5.3 项目概要设计
5.3.3 软件程序的概要设计 有关脉冲发生器项目的软件设计的核心:如何产生脉 冲。从输出端口的电平状态分析,脉冲就是指定时间 的高电平和指定时间的低电平,周期变化,从而形成 指定频率的脉冲。 根据上述分析,软件概要设计的内容就是: (1)产生脉冲,就转换成产生端口的高、低电平; (2)指定的时间,由单片机的定时/计数器0来完成
5.2 项目理论知识
5.2.5 单片机定时器的初始化步骤 在使用单片机的定时/计数器时,需要进行初始化设 置: (1) 设置定时/计数器的工作方式——TMOD寄存器; (2)装载初值——TH和TL; (3)如果采用中断方式工作时,设置中断允许和优 先级——IE寄存器和IP寄存器; (4)启动定时/计数器——TCON中的TR1或TR0位。 在进行定时/计数器的初始化设置时,需要注意的是 ,TMOD不能按位设置,只可以按字节设置,TCON寄 存器则可以按位设置和按字节设置。
嵌 入 式 开 发 初 级
单片机原理与应用(C语言版)
项目五 脉冲发生器的设计与制作
目录
5.1 项目要求与分析
5.2 项目理论知识
5.3 项目概要设计

脉冲计数器的设计与测试

脉冲计数器的设计与测试

实验一:脉冲计数器的设计与测试1实验器材:PC机一台,VerilogPro仿真软件一套。

2实验目的:1、了解过程赋值语句的使用要点;2、掌握if-else分支语句的使用方法3、掌握VerilogPro软件的使用方法。

4、掌握测试程序的编写方法。

3、实验要求1、设计一个模10的BCD码计数器,实现从0-9的递增循环计数,并设计测试程序。

2、设计一个模100的BCD码计数器,实现从0-99的递增循环计数,并设计测试程序。

3、设计一个模36的BCD码计数器,实现从0-35的递增循环计数并设计测试程序。

参考代码//模10计BCD码计数器模块设计及测试程序module count_10(clk,rst,count0);input clk,rst;output[3:0] count0;reg[3:0] count0;always @(posedge clk or negedge rst)if(!rst)count0=0;elseif(count0>=9)count0=0;elsecount0=count0+1;endmodulemodule test_count10;reg clk,rst;wire[3:0] count0;initialbeginclk=0;rst=0;#20 rst=1;#100 rst=0;#30 rst=1;#200 $finish;endalways #2 clk=~clk;count_10 A(clk,rst,count0);initial$monitor($time,”count0=%d”,count0); endmodule//模100 BCD码计数器设计模块及测试程序module count_100(clk,rst,count0,count1); input clk,rst;output[3:0] count0,count1;reg[3:0] count0,count1;always @(posedge clk or negedge rst)if(!rst)begincount0=0;count1=0;endelsebeginif(count0>=9)begincount0=0;if(count1>=9)count1=0;elsecount1=count1+1;endelsecount0=count0+1;endendmodulemodule test_count100;reg clk,rst;wire[3:0] count0,count1;initialbeginclk=0;rst=0;#20 rst=1;#100 rst=0;#30 rst=1;#2000 $finish;endalways #2 clk=~clk;count_100 A(clk,rst,count0,count1);initial$monitor($time,”count=%d%d”,count1,count0); endmodule//模36 BCD码计数器设计及测试模块module count_36(clk,rst,count0,count1);input clk,rst;output[3:0] count0,count1;reg[3:0] count0,count1;always @(posedge clk or negedge rst)if(!rst)begincount0=0;count1=0;endelsebeginif(count0>=9||(count0==5&&count1==3))begincount0=0;if(count1>=3)count1=0;elsecount1=count1+1;endelsecount0=count0+1;endendmodulemodule test_count36;reg clk,rst;wire[3:0] count0,count1;initialbeginclk=0;rst=0;#20 rst=1;#100 rst=0;#30 rst=1;#2000 $finish;endalways #2 clk=~clk;count_36 A(clk,rst,count0,count1);initial$monitor($time,”count=%d%d”,count1,count0); endmodule。

单片机设计实验--脉冲计数器

单片机设计实验--脉冲计数器

实验八脉冲计数实验一、实验目的:(1)掌握定时器/计数器的计数工作方式;(2)掌握用定时器/计数器实现脉冲计数的方法;(3)掌握用Keil实现软件调试的方法;(4)掌握用Proteus实现电路设计,程序设计和仿真的方法。

二、实验内容:定时器0外部输入端(P3.4)和定时器1外部输入端(P3.5)作为计数脉冲输入端,利用按钮手控产生单脉冲信号作为计数输入脉冲,编写程序控制,每输入一个(5个)脉冲,工作寄存器R0(R1)的内容加1,同时将R0(R1)的内容送到两位LED数码管中显示出来,晶振频率6MHZ。

三、实验参考电路:P1口接两位数码管显示工作寄存器R0的内容,P2口接两位数码管显示工作寄存器R0的内容,两只按钮分别接P3.2(外部中断0中断输入端)和P3.3(外部中断1中断输入端)。

实验电路如图:四、实验参考程序:ORG 0000HLJMP MAIN 指向主程序;ORG 000BH 定时器/计数器0的入口地址;LJMP T0C 指向中断服务程序;ORG 001BH 定时器/计数器1的入口地址;LJMP T1C 指向中断服务程序;ORG 0030HMAIN: MOV R0,#00H 清零;MOV R1,#00HMOV P1,#00HMOV P2,#00HMOV TMOD,#66H 置计数器0,计数器1为方式2;MOV TH0,#0FFH 置1次计数初值;MOV TL0,#0FFHMOV TH1,#0FBH 置5次计数初值;MOV TL1,#0FBHSETB EA 开中断;SETB ET0SETB ET1SETB TR0 启动计数器0;SETB TR1 启动计数器1;SJMP $ORG 0100HT0C: MOV A,R0 计数器0中断服务程序;ADD A,#01HDA A 十进制调整;MOV R0,A 保存计数器;MOV P1,A 计数值送显示器;RETIORG 0200HT1C: MOV A,R1 计数器1中断服务程序;ADD A,#01HDA A 十进制调整;MOV R1,A 保存计数器;MOV P2,A 计数器送显示器;RETIEND五、实验步骤:(1)建立工程文件,选择单片机型号,生成asm文件,在所生成文件中输入参考程序并调试如下:如图可以看出程序调试无错误,所以可以将其生成HEX文件。

脉冲计数器 微机原理课程设计

脉冲计数器 微机原理课程设计

二○一一~二○一二学年第一学期信息科学与工程学院自动化系课程设计报告书课程名称:微机原理及应用课程设计班级:自动化0901姓名:学号:指导教师:二○一一年12 月8日一、课程设计目的:综合运用本课程知识,利用集成电路设计实现一些中小规模电子电路或者完成一定功能的程序,以复习巩固课堂所学的理论知识,提高程序设计实现系统、绘制系统电路图的能力,为实际应用奠定一定的基础。

二、课程设计题目:脉冲计数器用555集成电路实现周期可调的多谐振荡器。

用8088设计一个能实现对脉冲个数记录的电路。

脉冲个数用4位LED数码显示。

具体要求:1.画出连接线路图或功能模块引脚连接图。

2.采用8088CPU作主控制器,8259作为外扩中断的管理。

3.采用4个共阴极型LED。

三、需求分析1.用555定时器设计一个多谐振荡器,可以调整其脉冲周期和占空比。

2.用8529管理中断,8088控制地址的选择和数据的输出。

3.记录脉冲的个数,并在四位LED上显示。

脉冲个数从0到9999,当超过9999时LED 清零,重新计数。

4.LED接口采用动态显示接口,阳极用VCC拉高,提高LED数码管的亮度。

四、硬件部分设计1.555多谐振荡器多谐振荡器的设计电路图,如图:上图中主要利用可变电阻R1和R2调节脉冲周期用作粗调和占空比,因为T=0.7(R1+R2)C1,α=R1/(R1+R2),其中的R2阻值范围小用作细调,R1的阻值范围大作为粗调。

这里要注意的是R1和R2都不能为0,否则输出的不是脉冲,而是稳定电平。

2.主电路的工作流程图当脉冲发出后,送入8529,8088响应中断后,调用中断程序,记录数据在LED 数码管上显示。

流程图,如图:3.主电路中主要器件分析1.多谐振荡器发出脉冲,从8259中的IRQ2上进入8259,并进行优先级选择,74LS138(U1)为8259编译地址,8259的地址为20H 或21H 。

如图:图中的14号引脚上的端口信号接到8259的片选信号上。

课题设计(脉冲计数器设计)

课题设计(脉冲计数器设计)

脉冲计数器程序设计
专业
班级:
姓名:
学号:
完成时间:
目录
1、课题设计的任务与要求: (3)
1.1课题设计的任务: (3)
1.2设计要求: (3)
2、设计思路与步骤: (3)
2.1 设计思路: (3)
2.2 设计步骤: (3)
3、参考资料 (5)
4、总结 (5)
1、课题设计的任务与要求:
1.1课题设计的任务:
在8051单片机的INTO引脚外接脉冲信号,要求每送来一个脉冲,把30H单元值加1,若30H单元记满则进位31H单元。

试利用中断结构,编制一个脉冲计数程序。

1.2设计要求:
1)用汇编语言编程;请在过程中加入必要的解释。

2)思路清晰、结构合理、层次清晰,设计简洁但又要能体现设计过程。

2、设计思路与步骤:
2.1 设计思路:
1)外部中断的设定;
2)当有中断产生,需要保护ACC寄存器。

在中断程序内,做加一动作。

2.2 设计步骤:
3、参考资料
3.1 <<MCS-51学习>>
4、总结
(整个课程设计过程中,你觉得学习到了什么,课设过程中自己做的不足的地方有哪些?对自己的学习有何启示?)。

定时器、计数器简单电路编程及梯形图的经验设计法

定时器、计数器简单电路编程及梯形图的经验设计法

TON T××,PT
TONR T××,PT
TOF T××,PT
2. 时基 按时基脉冲分,则有1ms、10ms、100ms 三种定时器。不同的时基标 准,定时精度、定时范围和定时器刷新的方式不同。 (1)定时精度和定时范围。 定时器的工作原理是:使能输入有效后,当前值PT对PLC内部的时基 脉冲增1计数,当计数值大于或等于定时器的预置值后,状态位置1。 其中,最小计时单位为时基脉冲的宽度,又为定时精度; 从定时器输入有效,到状态位输出有效,经过的时间为定时时间, 即:定时时间=预置值×时基。 当前值寄存器为16bit,最大计数值为32767,由此可推算不同分辨率 的定时器的设定时间范围。CPU 22X系列PLC的256个定时器分属TON (TOF)和TONR工作方式,以及3种时基标准,如表4-4所示。 可见时基越大,定时时间越长,但精度越差。
I0.0
LD I0.1 LD I1.0 CTD C4,3 LD C4 = Q0.0
I1.0
C4当前值 C4
数字量控制系统梯形图程序设计方法
4 .1梯形图的经验设计法
经验设计法:在典型电路的基础上,根据对 控制系统要求,不断地修改和完善梯形图。 设计所用的时间、设计的质量与设计者的经 验有很大的关系,它可以用于较简单的梯形 图(如手动程序例
I0.1 I0.2 I0.3 5 4 3 2 C50当前值 Q0.0 C50状态位 1 4 3 4 5
LD I0.1 LD I0.2 LD I0.3 CTUD C50,4 LD C50 = Q0.0
(3)减计数指令(CTD)。当复位LD有效时,LD=1,计数器把设 定值(PV)装入当前值存储器,计数器状态位复位(置0)。当 LD=0,即计数脉冲有效时,开始计数,CD端每来一个输入脉冲上 升沿,减计数的当前值从设定值开始递减计数,当前值等于0时, 计数器状态位置位(置1),停止计数。 【例4-5】减计数指令应用示例。

实验五 单片机定时、计数器实验1——方波发生器

实验五 单片机定时、计数器实验1——方波发生器

实验五单片机定时/计数器实验1——方波发生器一、实验目的1.定时/计数器是单片机的一个重要功能部件,可用来实现定时、计数、频率测量、脉冲宽度测量、产生信号、信号检测等。

用AT89C51单片机定时/计数器0的定时功能可构成一简单的方波发生器,实现为400us的方波输出。

若改变定时/计数器0的初值,可得到不同周期的方波输出。

2.用proteus设计、仿真基于AT89C51单片机的方波发生器。

3.学会使用VSM虚拟示波器观测波形。

二、电路设计1.从PROTEUS库中选取元件①AT89C51:单片机;②RES:电阻;③LED-GREEN:绿发光二极管;④CAP、CAP-ELEC:电容、电解电容;⑤CRYSTAL:晶振;⑥SW-SPST:带锁存的单刀双掷开关。

2.放置元器件3.放置电源和地4.连线5.元器件属性设置6.电气检测7.虚拟检测仪器(1)VSM虚拟示波器单击小工具栏中的按钮,在对象选择器列表中单击OSCILLOSOPE(示波器),再在ISIS编辑区中适当位置单击,虚拟示波器就放置好了。

它以虚拟示波器符号表示,如图所示。

最后将单片机的P3.5、P3.7分别于示波器的A、B信道相连。

(2)电压探针选择电压探针,连接到要实时监测的电路上,以便仿真时观察该处的电压变化。

三、源程序设计、生成目标代码文件1.流程图2.源程序设计通过菜单“sourc e→Add/Remove Source Files…”新建源程序文件:DZC32.ASM。

通过菜单“sourc e→DZC35.ASM”,打开PROTEUS提供的文本编辑器SRCEDIT,在其中编辑源程序。

程序编辑好后,单击按钮存入文件DZC35.ASM。

3.源程序编译汇编、生成目标代码文件通过菜单“sourc e→Build All”编译汇编源程序,生成目标代码文件。

若编译失败,可对程序进行修改调试直至汇编成功。

四、PROTEUS仿真1.加载目标代码文件2.仿真单击按钮,启动仿真。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
X= 213-T/(时钟周期×12) = 0110001100011000B = 0x6318
所以TH1赋值0x63 ,TL1赋值0x18。
注意:定时/计数器的方式0为13位计数器,其不用的是低 8位中的高三位,一般补三个0。
3. 任务设计 (1)硬件原理图设计
(2)软件程序设计
#include<AT89X51.h>
计数器脉冲来源:
➢振荡器脉冲经过12分频 ➢T0或T1引脚的外部脉冲
计数值:溢出时计数器值-计数初值。
计数器全1时,再输入1个脉冲就回零,并发生 溢出(TCON中TF0或TF1置1), 发中断请求 。
5.1.1.3 时/计数器的初始化
1.工作方式控制寄存器TMOD
D7
D6
D5
D4
D3
D2
D1
D0
//流水灯定时1s滚动主程序
void main( )
{ uchar T_Count = 0;
//累加计数溢出发生的次数
P0 = 0xFE;
//点亮D1灯
P2 = 0xFE;
//点亮D16灯
TMOD = 0x01;
//定时器0工作于方式1
TH0 =(65536-50000)/256; //50ms定时初值
任务5.1 定时器的设计 5.1.1 MCS-51单片机内部定时/计数器的原理
5.1.1.1 单片机定 时/计数器的结构
加1计数器(高8位、低8位); 工作方式控制寄存器TMOD,工作方式设置; 定时器控制寄存器TCON,启动、停止及设置溢出标志。
5.1.1.2 定时/计数器工作原理
TMOD中,各有一个控制位(C/T),分别用于控制定 时/计数器T0和T1工作在定时器方式还是计数器方式。
GATE C/T
M1
M0 GATE C/T
M1
M0
T1控制
GATE—门控位 C/T—计数/定时选择 M1 M0—工作方式选择
T0控制 注意:不能进行位寻址
定时/计数器的工作方式
M1 M0 00 01 10 11
工作方式 方式0 方式1 方式2 方式3
功能说明
13位计数器
16位计数器
自动重装初值的8位计数器
振荡器
计数脉冲输入
T0 TR0 GATE 1 INT0
定时
1/12
C/T=0 器
TL0 TH0 TF0
C/T=1
低5位 8位
& ≥1
13位计数器
计数 器
➢定时/计数器工作方式0 定时方式:
计数初值:X= 213-T/(时钟周期×12) 定时=(213-X)×时钟周期×12
=(213 –X)*12*1/fosc 例:8*10-3=(213-X)*12*1/(12*106)
方式1—16位方式 16位计数,由TL0作为低8位、TH0作为高8位。 16位计数,由TL1作为低8位、TH1作为高8位。
振荡器
T0 TR0 GATE 1 INT0
1/12 ≥1
定时
C/T=0 器
TL0 TH0 TF0
C/T=1
低8位 8位
&
16位计数器
计数 器
定时/计数器工作方式1
定时方式: 定时=(216-X)×时钟周期 ×12
试计算X的初值。
解:采用定时器0的方式0:
500*10-6=(213-X)*12*1/fosc
x=7692=1E0CH=1 1110 000 0 1100
F0H
0CH
即 TH0=F0H , TL0 =0CH
TMOD=GATE C/T M1M0 GATE C/T M1M0
0 0 00
0 0 00 00H
方式3只针对T0,T0分成两个 独立的8位定时/计数器;T1
无式3
2.定时器控制寄存器TCON
D7 D6 D5 D4 D3 D2 D1 D0 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
中断请求标志 启动定时/计数器 触发方式选择
0 停止
0 低电平
1 启动
1 下降沿
3.定时/计数器的初始化
初值X分别送给TL0(TL1)和TH0(TH1)。
1.任务要求
本任务要求用AT89C51的定时器1方式2设计一只1 秒 的定时器,用定时器的查询方式,使AT89C51控制的一只 发光二极管定时1秒闪烁。
= 65536-50000=15536 = 0x6318
所以TH1赋值0x63 ,TL1赋值0x18。
TH0 =(65536-40000)/256; TL0 =(65536-40000)%256;
3. 任务设计 (1) 硬件原理图设计
C1
22pF
X1
C2
12M
22pF
R1
10k
C3
10uF
U1
19 XTAL1 18 XTAL2
2.任务分析 ① 确定TMOD控制字:
采用AT89C51的定时器0方式1定时, TMOD = 0x01。
②计算计数器的计数初值:
因为方式1采用16位计数器,其最大定时时间为: 65536×1 ms =65.536ms,可选择定时时间为5 ms,再循环 200次就可以定时为1s了。
X = 216-T/(时钟周期×12)
39 1 38 2 37 3 36 4 35 5 34 6 33 7 32 8
P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15
21 9 22 10 23 11 24 12 25 13 26 14 27 15 28 16
{ P0 = _crol_(P0,1);
P2 = _crol_(P2,1);
T_Count = 0;
}
}
}
}
5.1.2.3 用定时/计数器的工作方式2设计定时器
方式2—8位自动装入时间常数方式 自动重装初值的8位计数方式 ,适合于用作较
精确的脉冲信号发生器。
振荡器
T0 TR0 GATE 1 INT0
1/12 ≥1
C/T=0
C/T=1 &
TL0 TF0 TH0
TH0(TH1)中保留初值
定时/计数器工作方式1
定时方式: 定时=(28-X)×时钟周期×12 =(28 –X)*12*1/fosc
计数初值:X= 28-T/(时钟周期×12) 计数方式: 计数次数值N=28-X
计数初值:X= 28-计数次数值N
9 RST
29 30 31
PSEN ALE EA
1 2 3 4 5 6 7 8
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
AT89C51
P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7
中断服务程序中重新装入定时初值
void timer0() interrupt 1 {
TH0=0xFE; //定时器0高8位给初值 TL0=0xC0; //定时器0低8位给初值 }
5.1.2 用单片机定时/计数器设计定时器(查询方式)
5.1.2.1 用定时/计数器的工作方式0设计定时器
方式0—13位方式。由TL0的低5位和TH0的8位组成。 TH0溢出时,置位TF0标志,向CPU发出中断请求。
P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1
P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD
10 11 12 13 14 15 16 17
16
1
R2
R3
R4
R5
R6
R7
R8
R9
280
280
280
280
280
280
280
280
D1
D2
D3
D4
D5
D6
D7
D8
定时功能----计数输入信号是内部时钟脉冲,每个机器周期使 寄存器的值加1。所以,计数频率是振荡频率的1/12。 定时模式,对内部机器周期计数 定时时间 t =计数值N x Tcy
计数功能----计数脉冲来自相应的外部输入引脚,T0为P3.4, T1为P3.5。 计数模式,对外部事件脉冲计数 计数脉冲周期要大于2 Tcy
可编程器件在使用前需要进行初始化:
① 确定TMOD控制字:编程时将控制字送TMOD;
② 计算计数器的计数初值: 编程时将计数初值送TH0、TL0或TH1、TL1;
③ 开中断(如果使用中断方式): 编程实置位EA、ETi
④ TR0或TR1位置位控制定时器的启动和停止。
【例】若单片机晶振为12MHz,要求产生5ms的定时,
一只1 秒的定时器,用定时器的查询方式,使 AT89C51控制的一只发光二极管定时1秒闪烁。
2.任务分析 ① 确定TMOD控制字: 采用AT89C51的定时器1方式0定时, TMOD = 0x00
② 计算计数器的计数初值:
因为方式0采用13位计数器,其最大定时时间为:8192×1 ms = 8.192 ms,可选择定时时间为5 ms,再循环200次就可以定 时为1s了。
8
7
6
5
4
3
2
9
10
11
12
13
14
15
D9
D10
D11
D12
D13
D14
D15
D16
R10
R11
R12
R13
R14
R15
R16
R17
280
相关文档
最新文档