脉冲计数
脉冲计数模块

脉冲计数模块脉冲计数模块常用于电子设备中,用于测量脉冲信号的频率和计数。
它通常由一个计数器和一个输入接口组成,可以将输入的脉冲信号转换为数字计数值。
脉冲计数模块的应用非常广泛,例如在电力系统中用于测量电能的消耗、在通信系统中用于计算数据传输速率等等。
脉冲计数模块的工作原理是通过计数器记录输入的脉冲信号的数量,并根据一定的算法将其转换为可读的数字计数值。
它能够精确地测量脉冲信号的频率,并根据需要将其显示到数码管、液晶屏等输出设备上。
同时,脉冲计数模块还可以通过设置阈值来判断脉冲信号的高低电平,从而实现对信号的触发和采样。
脉冲计数模块的应用非常广泛。
在电力系统中,它可以用于测量电能的消耗,从而实现对电力负载的监测和管理。
在通信系统中,它可以用于计算数据传输速率,帮助用户了解网络的负载情况。
此外,脉冲计数模块还可以用于实验室的科研工作、工业生产中的自动化控制等领域。
脉冲计数模块的优点是精度高、稳定性好、反应速度快等。
它可以准确地测量脉冲信号的频率,并将其转换为数字计数值。
同时,脉冲计数模块还可以实现对信号的触发和采样,帮助用户更好地理解和分析脉冲信号。
然而,脉冲计数模块也存在一些局限性。
例如,由于计数器的位数限制,脉冲计数模块只能测量一定范围内的脉冲信号。
此外,脉冲计数模块对输入信号的幅度和频率有一定的要求,过高或过低的信号可能无法被正确计数。
脉冲计数模块是一种常用的电子设备,具有广泛的应用领域。
它能够准确地测量脉冲信号的频率和计数,并将其转化为可读的数字计数值。
虽然脉冲计数模块存在一定的局限性,但其优点仍然使其成为许多领域中不可或缺的工具。
通过不断的技术创新和改进,相信脉冲计数模块的性能和应用领域还会得到进一步的拓展。
脉冲计数

实验九脉冲计数(定时/计数器实验)1、实验目的:熟悉单片机内部定时/计数器功能,掌握初始化编程方法。
2、实验内容:把定时器0外部输入的脉冲进行计数,并送显示器显示3、实验程序框图:4、实验接线图:5、实验步骤:P3.4 依次接T0~T7或单脉冲输出孔,执行程序,观察数码管上计数脉冲的速度及个数。
6、思考:修改程序使显示器上可显示到999999个脉冲个数。
7、程序清单文件名:SW09.ASM;脉冲计数实验ORG 0000HLJMP SE15ORG 06E0HSE15: MOV SP,#53HMOV P2,#0FFHMOV A,#81HMOV DPTR,#0FF23HMOVX @DPTR,A ; 1MOV TMOD,#05HMOV TH0,#00HMOV TL0,#00HSETB TR0LO29: MOV R2,TH0MOV R3,TL0LCALL ZOY0MOV R0,#79HMOV A,R6LCALL PTDSMOV A,R5LCALL PTDSMOV A,R4LCALL PTDSLCALL SSEESJMP LO29ZOY0: CLR AMOV R4,AMOV R5,AMOV R6,AMOV R7,#10HLO30: CLR CMOV A,R3RLC AMOV R3,AMOV A,R2RLC AMOV R2,AMOV A,R6ADDC A,R6DA AMOV R6,AMOV A,R5ADDC A,R5DA AMOV R5,AMOV A,R4ADDC A,R4DA AMOV R4,ADJNZ R7,LO30RETPTDS: MOV R1,AACALL PTDS1MOV A,R1SWAP APTDS1:ANL A,#0FHMOV @R0,AINC R0RETSSEE: SETB RS1MOV R5,#05HSSE2: MOV 30H,#20HMOV 31H,#7EHMOV R7,#06HSSE1: MOV R1,#20HMOV A,30HCPL AMOVX @R1,AMOV R0,31HMOV A,@R0MOV DPTR,#DDFFMOVC A,@A+DPTRMOV R1,#21HMOVX @R1,AMOV A,30HRR AMOV 30H,ADEC 31HMOV A,#0FFHMOVX @R1,ADJNZ R7,SSE1DJNZ R5,SSE2CLR RS1RETDDFF: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEHEND实验九A/D转换实验1、实验目的:(1)掌握A/D转换与单片机接口的方法;(2)了解A/D芯片0809转换性能及编程方法;(3)通过实验了解单片机如何进行数据采集。
脉冲计数器芯片

脉冲计数器芯片
脉冲计数器芯片是一种集成电路,用于计数输入信号的脉冲数量。
它通常用于测量和控制应用中,例如计时器,频率测量器,脉冲宽度测量器等。
脉冲计数器芯片由多个触发器组成,每个触发器都有两个稳态,分别为置位和复位。
当输入信号到达计数器芯片时,触发器会根据计数器的工作模式进行状态的切换。
在每个脉冲到达时,触发器会将计数器的值增加一。
脉冲计数器芯片的规格参数通常包括输入电平、计数范围、最大计数速率等。
输入电平指的是输入信号的高低电平阈值。
计数范围指的是计数器能够达到的最大计数值。
最大计数速率指的是计数器芯片能够处理的最高频率。
脉冲计数器芯片可以有不同的工作模式。
最简单的模式是非累积模式,也称为二进制计数模式,即每个脉冲到达时计数器加一。
另一种常见的模式是十进制计数模式,即每到达十个脉冲时计数器加一。
还有一种常见的模式是预设模式,即可以预设计数器的初始值。
脉冲计数器芯片可以与其他逻辑门电路和显示器等组合使用,以实现更复杂的功能。
例如,可以将脉冲计数器芯片与数字显示器相连,以便将计数器的值显示出来。
还可以将脉冲计数器芯片与输入信号进行比较,实现触发输出信号的功能。
在实际应用中,脉冲计数器芯片有很多种型号和厂商。
不同的
芯片具有不同的性能和特点,因此在选择脉冲计数器芯片时需要根据具体的应用需求进行选择。
总之,脉冲计数器芯片是一种用于计数输入信号脉冲数量的集成电路。
它在计时、频率测量和脉冲宽度测量等领域具有广泛的应用,并且可以与其他电路组合使用以实现更丰富的功能。
光电编码器输出脉冲的几种计数方法

光电编码器输出脉冲的几种计数方法1.总脉冲计数法:总脉冲计数法是最简单的计数方法,即直接对光电编码器输出的每个脉冲进行计数。
计数器工作于计数模式,每次接收到一个脉冲信号,计数器就增加1、通过读取计数器的数值,可以获取到物体的具体位置。
这种方法适用于需要获取绝对位置信息的应用。
2.方向计数法:有些应用场景需要获取旋转运动物体的旋转方向,因此采用方向计数法。
方向计数法在总脉冲计数法的基础上增加了方向信号的判断。
方向信号通常通过一个相位差可调的霍尔元件或光电传感器来实现。
当物体顺时针旋转时,方向信号为高电平,计数器加1;当物体逆时针旋转时,方向信号为低电平,计数器减1、通过方向信号,可以准确识别旋转方向。
3.增量计数法:增量计数法是通过计算每次脉冲的增量来进行计数。
在这种方法中,光电编码器输出的脉冲信号被输入到一个脉冲传感器中,脉冲传感器将脉冲信号转换为固定周期的方波信号。
然后,方波信号经过一个计数器进行计数,每次计数都代表一个固定增量。
通过对增量计数进行累加,可以获取物体的位置信息。
增量计数法适用于需要获取相对位置变化的应用。
4.平均计数法:平均计数法是一种改进的计数方法,通过采用平均值来减小误差。
光电编码器输出的脉冲信号经过一个滤波器进行滤波,去除噪声和波动。
然后,滤波后的信号经过计数器进行计数。
由于滤波的作用,计数器只计数滤波后的信号,而不计数噪声和波动。
这样可以更准确地获取位置信息。
平均计数法适用于对测量精度要求较高的应用。
总结:光电编码器输出脉冲的计数方法有总脉冲计数法、方向计数法、增量计数法和平均计数法。
每种计数方法根据应用场景的需求选择不同的方法。
总脉冲计数法适用于需要获取绝对位置信息的应用;方向计数法适用于需要获取旋转方向的应用;增量计数法适用于需要获取相对位置变化的应用;平均计数法适用于对测量精度要求较高的应用。
单片机脉冲计数

单片机实验报告班级:自动0903姓名:一.软件实验实验题目:脉冲计数(定时/计数器实验)1,实验目的:熟悉单片机内部定时/计数器功能,掌握初始化编程方法。
2,实验内容:把外部中断0输入的脉冲进行计数,并送数码管显示。
仿真电路图如下所示:设定频率发生器为50Hz程序如下:#include <reg51.h>sbit P2_0=P2^0; //数码管选定位sbit P2_1=P2^1;sbit P2_2=P2^2;sbit P2_3=P2^3;unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; unsigned int motorspeed;unsigned char GE,SHI,BAI,QIAN;unsigned int counter=0; //脉冲数unsigned int calsp; //设定多长时间计算一次void display(); //数码管显示void delay(); //延迟函数void calspeed();void main(){EA=1; //开启总中断EX0=1; //开启外部中断0IT0=1; //设置成下降沿触发方式TMOD=0x01; //设置定时器0为模式1,即16位计数模式TH0=(65536-10000)/256; //计数时间为10msTL0=(65536-10000)%256;ET0=1; //开启定时器0中断TR0=1; //启动定时器0P2=P2&0xf0;while(1){display();calspeed();}}void calspeed(){if(calsp>=100) //100*10ms=1s计算一次{motorspeed=counter;counter=0; //清零脉冲数calsp=0; //清零标志}}void _TIMER0() interrupt 1{TH0=(65536-10000)/256; //重新装入初值,计数时间为10ms TL0=(65536-10000)%256;calsp++;}void _INT0() interrupt 0{counter++;}void display() //数码管显示函数{GE=motorspeed%10;SHI=motorspeed/10%10;BAI=motorspeed/100%10;QIAN=motorspeed/1000%10;P2_0=1;P0=table[QIAN];delay();P2_0=0;P2_1=1;P0=table[BAI];delay();P2_1=0;P2_2=1;P0=table[SHI];delay();P2_2=0;P2_3=1;P0=table[GE];delay();P2_3=0;}void delay() //延迟函数{unsigned char i=10;while(i--);}二.硬件实验实验题目:用单片机控制二极管1,实验目的:熟悉用单片机控制二极管及其编程方法2,实验内容:跑马灯显示二极管仿真电路图如下所示:程序如下:#include <reg51.h>#include <intrins.h>void delay();//延时子函数void main(void){unsigned char temp;temp=0xfe;while(1){P2=temp;delay();temp=_crol_(temp,1);}}void delay(){unsigned int y;y=10000;while(y--);}。
stm32脉冲计数原理

stm32脉冲计数原理一、介绍在嵌入式系统开发中,我们经常需要对脉冲进行计数,以测量某种事件的频率或持续时间。
stm32是一系列基于Cortex-M内核的32位微控制器,具有强大的计数功能,可以轻松实现脉冲计数。
二、stm32计数器基础stm32微控制器通常具有多个计数器,这些计数器可以提供高精度和高速的计数能力。
stm32的计数器通常是由一个预分频器、一个计数器和一个自动装载寄存器组成。
2.1 预分频器预分频器可以将输入脉冲的频率降低到计数器的工作范围内。
它通常采用二进制计数器或16位定时器进行实现,可以根据需要设置不同的分频比。
2.2 计数器计数器用于计数输入脉冲的数量。
stm32的计数器通常是一个16位或32位的寄存器,可以根据需要进行设置。
2.3 自动装载寄存器自动装载寄存器用于设置计数器的上限值。
当计数器达到该值时,会自动重置计数器,并触发一个中断或其他事件。
三、stm32脉冲计数原理stm32的脉冲计数原理基于计数器的工作方式和外部脉冲的输入引脚。
通过配置计数器的工作模式和相关的寄存器,可以实现对输入脉冲的计数。
3.1 输入捕获模式输入捕获模式是常用的脉冲计数方式之一。
在该模式下,stm32可以捕获到外部脉冲的上升沿或下降沿,并将计数器的值保存在相关的寄存器中。
3.2 边沿对齐模式边沿对齐模式是另一种常用的脉冲计数方式。
在该模式下,stm32可以捕获到外部脉冲的上升沿和下降沿,并将计数器的值保存在两个相关的寄存器中。
3.3 测量脉冲频率通过对输入脉冲的计数和计时,可以测量脉冲的频率。
根据 stm32 提供的计数器的位数,可以计算出脉冲的高精度频率值。
3.4 测量脉冲持续时间除了测量脉冲频率,stm32还可以测量脉冲的持续时间。
通过记录脉冲的开始时间和结束时间,可以计算出脉冲的持续时间。
四、stm32脉冲计数的应用stm32脉冲计数广泛应用于各种需要对脉冲进行计数的场景,例如:4.1 频率测量通过 stm32 脉冲计数功能,可以测量各种信号源的频率,如电机转速、传感器输出等。
脉冲计数器原理
脉冲计数器原理
脉冲计数器是一种电子设备,用于计算输入脉冲的数量。
它可以用于各种应用,如测量频率、速度和计数器。
脉冲计数器的工作原理基于触发器和计数逻辑电路。
触发器是一种电子开关,可以存储和传输二进制数据。
计数逻辑电路用于实现二进制计数。
当一个脉冲输入到脉冲计数器时,触发器会记录这个输入,并根据计数逻辑电路的设置进行计数。
计数逻辑电路将触发器之间的信号传递,使脉冲计数器按照规定的步长进行计数。
例如,对于一个4位二进制脉冲计数器,它可以计数从0到
15的二进制数。
每次接收到一个脉冲,计数器的值就会增加1。
当计数器的值达到15时,它会从0重新开始计数。
脉冲计数器通常会配备显示器或接口,用于显示或输出计数结果。
这样,用户可以实时观察脉冲计数器的计数值。
脉冲计数器可用于各种应用,如实验室测量、时间测量、速度测量和计时等。
它们被广泛应用于科学研究、工程控制和工业生产等领域。
单片机脉冲计数
模拟磨损试验机测定试件磨损次数装置实验——脉冲计数实验一,实验目的1,熟悉单片机定时/计数功能,掌握初始化编成方法;2,掌握顺序控制程序的简单编程;3,掌握显示数据的编程方法。
二,实验内容1,利用单相全波整流及直流电动机调速系统电气控制实验仪上脉冲产生电路,检测电机转动次数并显示。
实验仪上有八位LED共阴极显示块,软件设定预置数,计到预置数后电机停止运行。
2,开机前,显示预置数。
计数过程中在预置数范围内时,可随时停车并保持已计数值,再按启动钮继续计数或按清除钮删除计数值,重新运行并计数。
三,实验仪器、设备及材料PC机、有关连接线、数字万用表、电气控制实验仪、直流电压表、直流电动机。
四,实验原理用SST8位单片机SST89E564内部定时器/计数器T0计数方式进行计数,计数脉冲通过单片机P3.4口输入,并送八位显示块显示。
由于在显示块上显示的数据是十进制数,编写程序时必须进行二转十及BCD码调整。
在单相全波整流及直流电动机调速系统实验仪上显示时,把P2口作为控制字位输出,字位移动,逐位显示;P0口作为送字形代码输出。
采用共阴极字形代码,每显示一位后要关闭显示,循环逐位(8位)5次。
实验仪上设有按钮NK1、NK2、NK3,分别可作为启动(继续)、停车、清除按键,低电平有效,设计程序时要考虑延时。
五,实验步骤1,连接电气控制仪、直流电压表、直流电动机、外部脉冲输入端2,PC机上编程,通过数据线传输至电气控制实验仪,启动电气控制实验仪,完成实验。
六,实验程序;----------------------------------------------------------------------------- ORG 0000HLJMP START ;转发送主程序;----------------------------------------------------------------------------- ORG 001BHLJMP STOP ;转发送中断服务;----------------------------------------------------------------------------- ;主程序START: MOV SP,#60H ;堆栈SP=60HMOV TMOD,#15H ;T0为计算器,工作方式1,T1为定时器,工作方式1MOV P0,#03FHMOV P1,#0FFHMOV P2,#0FFH ;P0,P1,P2口赋初值MOV TH0,#00HMOV TL0,#00H ;TO从0开始计数MOV TH1,#00HMOV TL1,#00H ;T1定时时间为65.5msMOV 59H,#00H ;计数器溢出的数累计存放在59H单元 CLR 30H ;将停止标志位清零MOV 30H,#00H ;设预置数70000MOV 31H,#00HMOV 32H,#00HMOV 33H,#00HMOV 34H,#07HMOV 35H,#00HMOV 36H,#00HMOV 37H,#00HLCALL CT6 ;显示预置数START1: JB P1.0,START1LCALL DELYJB P1.0,START1 ;电机是否启动LL0: JB 30H,STOP1 ;电机是否停止LL1: SETB TR1 ;开定时器SETB EASETB ET1 ;开中断SETB TR0 ;开计数器CLR P1.3 ;启动电机LL2: LCALL CT ;显示LL3: SETB RS1 ;选择2区工作寄存器组CJNE R7,#00H,LL0CJNE R6,#00H,LL0CJNE R5,#07H,LL0CJNE R4,#00H,LL0 ;预置数到否LL4: SETB P1.3 ; 关电机CLR TR0 ; 关计数器CLR TR1 ; 关定时器CLR ET1CLR EA ; 关中断LL5: JB P1.2,LL6LCALL DELYJB P1.2,LL6 ;清零否LJMP START ;清零调转到STARTLL6: LCALL CT ; 显示LJMP LL5 ; 不清零调转到LL5RET;------------------------------------------------------------------------------ STOP1: SETB P1.3 ;关电机CLR 30H ;停止标志位清零CLR TR0 ;关计数器CLR TR1 ;关定时器CLR EACLR ET1 ;关中断STOP2: LCALL CT ;显示START2: JB P1.0,ST1LCALL DELYJB P1.0,ST1 ; 继续启动电机否LJMP LL1 ; 继续启动电机,调转到LL1ST1: JB P1.2,STOP1LCALL DELYJB P1.2,STOP1 ; 清零否LJMP START ; 清零后,调转到STARTRET;------------------------------------------------------------------------------ ;中断子程序STOP: JB P1.1,STPLCALL DELYJB P1.1,STP ;是否停止SETB 30H ;停止,标志位置1STP: RETI;------------------------------------------------------------------------------ ;显示子程序CT: CLR RS1 ;选择0区通用工作寄存器组MOV R6,TH0 ;计数器高八位传给R6MOV R7,TL0 ;计数器低八位传给R7JNB TF0,HB ;计数器是否溢出INC 59H ;将溢出的数累加后存在59H单元CLR TF0 ;溢出标志位清零HB: MOV R5,59H ;将累加后的溢出数传给R5SETB RS1 ;选择2区通用工作寄存器组CLR AMOV R4,AMOV R5,AMOV R6,AMOV R7,A ;清零MOV R2,#24 ;24次移位H_B: CLR RS1 ;选择0区通用工作寄存器组RLC AMOV R7,AMOV A,R6RLC AMOV R6,AMOV A,R5RLC AMOV R5,ASETB RS1 ;选择2区通用工作寄存器组MOV A,R7ADDC A,R7DA AMOV R7,AMOV A,R6ADDC A,R6DA AMOV R6,AMOV A,R5ADDC A,R5DA AMOV R5,AMOV A,R4ADDC A,R4DA AMOV R4,ADJNZ R2,H_B ;二进制数转十进制CT1: SETB RS1 ;选择2区通用工作寄存器组MOV R0,#30H ;拆字,十进制数由低位到高位依次存放到30H-37H MOV A,R7LCALL C_TMOV A,R6LCALL C_TMOV A,R5LCALL C_TMOV A,R4LCALL C_TCT6: MOV R3,#5 ;循环显示5次CT2: MOV DPTR,#TAB ;查表MOV R0,#30HCT3: MOV R1,#80HMOV P2,A ;送字位RR AMOV R1,AMOV A,@R0MOVC A,@A+DPTRMOV P0,A ;送字形MOV R2,#4FHDJNZ R2,$INC R0CJNE R1,#80H,CT4DJNZ R3,CT2CT5: RET;------------------------------------------------------------------------------ C_T: MOV R1,A ;拆字子程序ACALL PTDS1MOV A,R1SWAP APTDS1: ANL A,#0FHMOV @R0,AINC R0RET;------------------------------------------------------------------------------ DELY: SETB RS0 ;消抖延时子程序MOV R5,#04HDEL1: MOV R4,#0FFHDJNZ R4,$DJNZ R2,DEL1CLR RS0RET;------------------------------------------------------------------------------ TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,67H;------------------------------------------------------------------------------ END七,实验流程图(注:可编辑下载,若有不当之处,请指正,谢谢!)。
脉冲计数器介绍
脉冲计数器一、概述计数器是数字系统中用得较多的基本逻辑器件,它的基本功能是统计时钟脉冲的个数,即实现计数操作,它也可用于分频、定时、产生节拍脉冲和脉冲序列等。
例如,计算机中的时序发生器、分频器、指令计数器等都要使用计数器。
二、分类计数器的种类很多。
按构成计数器中的各触发器是否使用一个时钟脉冲源来分,可分为同步计数器和异步计数器;按进位体制的不同,可分为二进制计数器、十进制计数器和任意进制计数器;按计数过程中数字增减趋势的不同,可分为加法计数器、减法计数器和可逆计数器;还有可预制数和可编计数器等等。
三、用处脉冲计数器当前应用范围主要有电表、水表、煤气表以及光电等等;下面就依水表计数模块简要讲述一下计数器的基本功能、操作方法及其技术参数等:(一)、主要功能1、水表脉冲自动计数功能。
通讯时不妨碍计数;2、具有RS485自由协议或ModBus协议通讯功能;3、断电保持数据功能;4、通过计算机软件对模块内的地址、数据写功能和数据读功能;5、故障诊断输出功能;6、水表模块一般安装在现场,需要防水、防潮、防冻、防高温。
具有抗干扰能力;(二)、技术要求及操作方法1、水表脉冲一般为干簧管信号,水表计数要防止抖动、不丢脉冲。
在程序设计时,脉冲计数的优先级要大于其他程序的优先级。
水表脉冲计数自动保存在模块内的存储器里。
2、水表计数模块具有RS485自由通讯协议功能或者ModBus协议通讯功能,自由通讯协议应该简单明了,容易应用。
3、水表计数模块供电电源分外部供电和电池供电,并且电路板上要有容量大一点的电容。
外部供电为DC24V,当用外部供电时,电池停止供电;当外部供电中断时,电池供电,当外部供电和电池供电都中断后,电容供电。
当外部供电或者电池供电中断后,要有报警信号输出。
电池选用市场上的通用电池。
4、计算机根据RS485通讯协议或者ModBus通讯协议能对模块的地址进行更改、对模块里的数据进行设置。
并能读出模块的地址、计数数据、报警信息等。
脉冲计数(定时计数器的记数功能实验)
实验三脉冲计数(定时/计数器的记数功能实验1、实验目的:(1熟悉8031定时/计数器的记数功能,(2掌握初始化编程方法(3掌握中断程序的调试方法2、实验内容:定时/记数器0对外部输入的脉冲进行计数,并送显示器显示。
3.实验电路图:方案1方案24、实验器材:(1超想-3000TB综合实验仪 1 台(2超想3000仿真器 1 台(3连线若干根(4计算机 1 台5、实验连线:方案1:总线插孔的P3.4接脉冲源的DOWN,按下脉冲按钮,观察数码管上计数脉冲的个数。
6、实验原理:MCS-51有两个16位的定时/计数器:T0和T1。
计数和定时实质上都是对脉冲信号进行计数,只不过脉冲源不同而已.当工作在定时方式时,计数脉冲来自单片机的内部,每个机器周期使计数器加1,由于计数脉冲的频率是固定的(即每个脉冲为1个机器周期的时间,故可通过设定计数值来实现定时功能。
当工作在计数方式时,计数脉冲来自单片机的引脚,每当引脚上出现一个由1到0 的电平变化时,计数器的值加1,从而实现计数功能。
可以通过编程来指定时计数器的功能,以及它的工作方式。
读取计数器的当前值时,应读3次。
这样可以避免在第一次读完后,第二次读之前,由于低位溢出向高位进位时的错误。
7、程序框图8、程序清单; “验证式”实验三脉冲计数(定时/记数实验;对定时器0外部输入的脉冲信号进行计数且显示OUTBIT equ 0e101hCLK164 equ 0e102h ; 段控制口(接164时钟位DAT164 equ 0e102h ; 段控制口(接164数据位LEDBuf equ 40hORG 0000hMOV SP,#60HMOV DPTR,#0e100H ;8155初始化MOV A,#03HMOVX @DPTR,AMOV TMOD,#05H ;定时器初始化MOV TH0,#00HMOV TL0,#00HSETB TR0LOOP0:MOV R2,TH0MOV R3,TL0LCALL LOOP1 ;调用二转十子程序,结果放在R4 R5 R6中MOV R0,#40H MOV A,R6LCALL PTDSMOV A,R5LCALL PTDSMOV A,R4LCALL PTDSLCALL DISPLAYSJMP LOOP0LOOP1:CLR A ;二转十子程序MOV R4,AMOV R5,AMOV R6,AMOV R7,#10H LOOP2:CLR CMOV A,R3RLC AMOV R3,AMOV A,R2RLC AMOV R2,AMOV A,R6ADDC A,R6DA AMOV R6,AMOV A,R5ADDC A,R5DA AMOV R5,AMOV A,R4ADDC A,R4DA AMOV R4,ADJNZ R7,LOOP2RETPTDS: MOV R1,A ;拆字子程序ACALL PTDS1MOV A,R1SWAP APTDS1: ANL A,#0FHMOV @R0,AINC R0RETDelay:mov r7, #0 ; 延时子程序DelayLoop:djnz r7, DelayLoopdjnz r6, DelayLoopretDISPLAY:setb 0d3hmov r0, #LEDBufmov r1, #6 ; 共6个八段管 mov r2, #00000001b ; 从左边开始显示Loop: mov dptr, #OUTBITmov a, #00hmovx @dptr, a ; 关所有八段管mov a, @r0mov dptr,#LEDmapmovc a,@a+dptrmov B, #8 ; 送164DLP:rlc amov r3, amov acc.0, canl a,#0fdhmov dptr, #DAT164movx @dptr, amov dptr, #CLK164orl a,#02hmovx @dptr, aanl a,#0fDhmovx @dptr, amov a, r3djnz B, DLPmov dptr, #OUTBITmov a, r2movx @dptr, a ; 显示一位八段管 mov r6, #1 call Delaymov a, r2 ; 显示下一位rl amov r2, ainc r0djnz r1, Loopmov dptr, #OUTBITmov a, #0movx @dptr, a ; 关所有八段管clr 0d3hretLEDMAP: ; 八段管显示码db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h END。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
返回本节
返回目录
;The program below can count to maximum 999999 org 000bh inc 42h reti ;times of overflow of T0
ORG 1000H CONT: MOV SP,#53H MOV TMOD,#05H MOV TH0,#00H MOV TL0,#00H
返回目录
单片机系统中,通常使用七段LED显示器,采用动态扫描显 示,以简化硬件电路,降低成本。驱动七段LED显示器,至少 需两个并行口,一个送位选码选择不同的显示器,一个送显示 码以显示期望的符号。单片机自身的并行口有专门用途,需要 扩展并行口。 8155可编程接口芯片可与MCS-51系列单片机直接相连,而不 需要附加任何硬件。8155有两个8位并行口和一个6位并行口, 可以其中两个做为驱动七段LED显示器的并行口。此外,还可 以两个端口做为非编码键盘的连接口。图1电路中,以8155的PA 和PB口控制6个LED显示器。 计数脉冲由RS触发器产生,脉冲发生电路见图2,每按一次按 钮AN,则从SP产生一个正脉冲,从/SP产生负脉冲。
返回本节
返回目录
DA A MOV R5,A MOV A,R4 ADDC A,R4 DA A MOV R4,A DJNZ R7,CONT3 RET PWOR: MOV r1,A LCALL PWOR1
返回本节
返回目录
MOV A,r1 SWAP A PWOR1: ANL A,#0FH MOV @R0,A INC R0 RET DISP: SETB 0D4H MOV R1,#7EH MOV R2,#20H MOV R3,#00H
返回本节
返回目录
DISP1:
MOV DPTR,#0FF21H
MOV A,R2 MOVX @DPTR,A MOV DPTR,#CDATA MOV A,@R1 MOVC A,@A+DPTR MOV DPTR,#0FF22H MOVX @DPTR,A DISP2: DEC R1
返回本节
DJNZ R3,DISP2
返回本节
返回目录
2.软件设计 如前所述,内部定时/计数器T0设为计数方式,C/T需设置 为1。启动T0计数后,其计数值存于TL0和TH0,即使在计数方 式1下,其计数值最大也只能到65535。但当计数值超过65535时 ,硬件会自动将TF0置位。这样,只要统计TF0置位的次数,即 可知道实际脉冲计数值。 T0 1 以下参考程序选用T0工作于方式1,每轮计数值以二进制形 式存于TL0和TH0,经过二--十进制转换后存于R4、R5、R6。而 T0的溢出次数存于42H,每溢出一次意味着已计数65536个脉冲 。这样,利用上述R4、R5、R6和30H中的内容即可统计实际计 数的 脉 冲 个 数。 由 于只有 6个 LED显 示 器 , 因 此 只 须计 数 到 999999即可。
返回本节
返回目录
LCALL DISP SJMP loop CONT2: CLR A MOV R4,A MOV R5,A MOV R6,A MOV R7,#10H CONT3: CLR C MOV A,R3 RLC A
返回本节
返回目录
MOV R3,A MOV A,R2 RLC A MOV R2,A MOV A,R6 ADDC A,R6 DA A MOV R6,A MOV A,R5 ADDC A,R5
返回目录
CLR C MOV A,R2 RRC A MOV R2,A JNZ DISP1 MOV A,#0FFH MOV DPTR,#0FF22H MOVX @DPTR,A CLR 0D4H RET
返回本节
返回目录
CDATA:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH END 显示子程序DISP中,从显示缓冲区取出非压缩BCD码,经过查 表后得到字形码,送8155PB口(FF22H),再从8155的PA口( FF21H)送出位选码,选择相应的LED显示器显示输出。 三.实训说明 以上程序可先在PC机上汇编,消除语法错误后在单片机系统 上实际运行。连入单脉冲SP,每按一次按钮AN,显示的脉冲计 数值即增1。
返回本节
返回目录
返回本节
返回目录
mov 42h,#0 SETB TR0 setb et0 setb ea loop: MOV R2,TH0 MOV R3,TL0 LCALL CONT2 conn: mov a,42h jz fdis ;accumulate to display ;16-bits binary number to BCD
返回本节
返回目录
为了显示脉冲计数个数,把上面以压缩BCD码形式保存的时间 值转换成非压缩形式,存放于显示缓冲区(由低到高为内部 RAM的79H~7EH单元),然后送显示缓冲区显示。显示缓冲区 初始值置为0。 以下程序中,T0采用中断方式控制。 主程序流程图如下: ①堆栈初始化、T0置方式1计数、计数初值清零 ②溢出次数清零、T0开中断、启动T0计数 ③脉冲计数值进行二—十进制转换并存于R4、R5、R6 ④溢出次数X65536+R4R5R6送R4R5R6 ⑤R4R5R6转换为非压缩BCD码送显示缓冲区
返回本节
返回目录
二.教学指南 1.硬件电路 在单片机开发系统上,使用8031单片机,并通过一块8155 接口芯片驱动LED显示器和键盘。LED显示器采用动态扫描,显 示驱动电路如下图所示。
返回本节
返回目录
其中,6个七段LED显示器采用共阳极接法。当8155的PB口送出 显 示 码 时 , 由 PA0~PA5 选 中 的 数 码 管 显 示 对 应 的 字 符 。 AD0~AD7用于在单片机和8155之间传递地址、数据、命令、状 态信号,它的分时功能与MCS-51单片机完全相同,可直接相连 。其它控制信号包括ALE、RD、WR、RESET,也可与单片机 相连。 单脉冲发生电路见图2,其输出脉冲SP或⁄SP接T0(P3.4) 。
课题十五 脉冲计数
一.基本原理 MCS-51系列单片机中,一般有两个定时/计数器,它们至多可 进行16位二进制计数,计数值最长为65536。 用作计数器时,外部计数脉冲应接至T0(P3.4)或T1(P3.5) ,且每个周期中其高、低电平时间均不应小于一个机器周期。 本课题中,希望对外部脉冲进行十进制计数,并用6个LED显 示器将计数结果实时显示出来。最大的计数值应能达到999999 。
返回本节
返回目录
⑥调用显示子程序 ⑦转③ 每当计数到65536时溢出,T0发生中断,这时只须让溢出计数次 数增1即可,TF0会由硬件自动清零。 3.参考程序 RAM 42H T0 以下程序中,内部RAM的42H用来存放T0的溢出次数。主程序 中,R2、R3临时存放T0中十六位二进制计数值的高8位和低8位 ,通过二—十进制转换后存入R4、R5、R6中。利用溢出次数, 即可得到实际的脉冲计数次数,转换为非压缩BCD码形式,再 存入显示缓冲区,即可送显示。
mov 52h,42h
返回本节
返回目录
lp:
mov a,#36h add a,r6 da a mov r6,a mov a,#55h addc a,r5 da a mov r5,a mov a,#06h addc a,r4
返回本节
返回目录
da a mov r4,a djnz 52h,lp fdis: MOV R0,#79H MOV A,R6 LCALL PWOR MOV A,R5 LCALL PWOR MOV A,R4 LCALL PWOR