单片机脉冲计数
- 格式:doc
- 大小:77.00 KB
- 文档页数:6
51单片机外部脉冲计数程序51单片机外部脉冲计数程序是一种常见的嵌入式应用程序,它可以通过计数外部脉冲信号来实现各种功能,如测量速度、记录行程、控制电机等。
在本文中,我们将介绍如何编写一个简单的51单片机外部脉冲计数程序,供初学者参考。
一、程序框架```c#include <reg52.h>sbit PulsePin = P1^0; //定义脉冲信号输入引脚unsigned long cnt = 0; //计数器void ExternalInterrupt0() interrupt 0 //外部中断0的中断服务程序{cnt++; //计数器加一}```程序中定义了一个脉冲信号输入引脚PulsePin,一个计数器cnt,并在主程序中开启了全局中断和外部中断0,并设置外部中断0为下降沿触发。
在外部中断0的中断服务程序中,计数器cnt会加一。
二、程序解析1. 硬件连接将需要计数的脉冲信号输入引脚连接到单片机的P1.0引脚上,并连接好单片机的电源和地线。
2. 宏定义和全局变量首先定义了PulsePin引脚为输入模式,并定义了计数器cnt为无符号长整型变量。
3. 主程序在主程序中,首先开启了全局中断和外部中断0,然后设置外部中断0为下降沿触发。
最后加入一个无限循环,等待外部中断的触发。
4. 外部中断0的中断服务程序在外部中断0的中断服务程序中,计数器cnt会加一。
三、总结本文介绍了如何编写一个简单的51单片机外部脉冲计数程序。
通过外部中断0的中断服务程序,可以实现对外部脉冲信号的计数。
本程序只是一个简单的例子,读者可以根据自己的需求对其进行改进和优化。
单片机脉冲计数器1、设计内容用单片机实现对一路脉冲计数和显示的功能。
硬件包括单片机最小系统、LED显示、控制按钮;软件实现检测到显示2、要求计数范围0~2000;脉冲输入有光电隔离整形,有清零按钮程序如下:ORG 0000HLJMP MAINORG 0003HLJMP 0100HORG 0013HLJMP 0150HORG 0050HMAIN: CLR AMOV 30H , A ;初始化缓存区MOV 31H , AMOV 32H , AMOV 33H , AMOV R6 , AMOV R7 , ASETB EASETB EX0SETB EX1SETB IT0SETB IT1SETB PX1NEXT1: ACALL HEXTOBCDD ;调用数制转换子程序ACALL DISPLAY ;调用显示子程序LJMP NEXT1ORG 0100H ;中断0服务程序MOV A , R7ADD A , #1MOV R7, AMOV A , R6ADDC A , #0MOV R6 , ACJNE R6 , #07H , NEXTCLR AMOV R6 , AMOV R7 , ANEXT: RETIORG 0150H ;中断1服务程序CLR AMOV R6 , AMOV R7 , ARETIORG 0200HHEXTOBCDD:MOV A , R6 ;由十六进制转化为十进制PUSH ACCMOV A , R7PUSH ACCMOV A , R2PUSH ACCCLR AMOV R3 , AMOV R4 , AMOV R5 , AMOV R2 , #10HHB3: MOV A , R7 ;将十六进制中最高位移入进位位中RLC AMOV R7 , AMOV A , R6RLC AMOV R6 , AMOV A , R5 ;每位数加上本身相当于将这个数乘以2 ADDC A , R5DA AMOV R5 , AMOV A , R4ADDC A , R4DA A ;十进制调整MOV R4 , AMOV A , R3ADDC A , R3DJNZ R2 , HB3POP ACCMOV R2 , APOP ACCMOV R7 , APOP ACCMOV R6 , ARETORG 0250HDISPLAY: MOV R0 , #30HMOV A , R5ANL A , #0FHMOV @R0 , AMOV A , R5SW AP AANL A , #0FHINC R0MOV @R0 , AMOV A , R4ANL A , #0FHINC R0MOV @R0 , AMOV A , R4SW AP AANL A , #0FHINC R0MOV @R0 , AMOV R0 , #30HMOV R2 , #11111110BAGAIN: MOV A , R2MOV P2 , AMOV A , @R0MOV DPTR , #TABMOVC A , @A+DPTRMOV P0 , AACALL DELAYINC R0MOV A , R2RL AMOV R2 , AJB ACC.4 , AGAINRETTAB: DB 03FH , 06H , 5BH , 4FH , 66H , 6DH , 7DH , 07H , 7FH , 6FH ;七段码表DELAY: MOV TMOD , #01H ;0.05s延时子程序MOV TL0 , #0B0HMOV TH0 , #3CHSETB TR0WAIT: JNB TF0 , WAITCLR TF0CLR TR0RETEND单片机的T1口计数,T0口定时,P1口输出段码,P2口位选,三位数码管显示 ORG 0000HAJMP MAINORG 000BHAJMP COUNTORG 0100HMAIN: MOV TMOD,#51HMOV TH1,#00HMOV TL1,#00HMOV TL0,#0B0HMOV TH0,#3CHSETB PT0SETB ET0SETB EASETB TR0SETB TR1WAIT: AJMP WAITCOUNT: MOV 30H,TL1MOV 31H,TH1LCALL BCDLCALL WFRETIBCD: MOV R1,30HMOV A,R1MOV B,#100DIV ABMOV 33H,AMOV A,BMOV B,#10DIV ABMOV 34H,AMOV 35H,BPLAY: MOV A,33HMOV DPTR,#TABMOVC A,@A+DPTRMOV P1,ASETB P2.2LCALL DELAYCLR P2.2MOV A,34HMOVC A,@A+DPTRMOV P1,ASETB P2.1LCALL DELAYCLR P2.1MOV A,35HMOVC A,@A+DPTRMOV P1,ASETB 2.0LCALL DELAYCLR P2.0RETTAB: DB 3FH,06H,5BH,4FH,66F,6DH,7DH,07H,7FH,6FHDELAY: MOV R5,#10HDE1: MOV R7,#5DE2: MOV R6,#20DE3: DJNZ R6,DE3DJNZ R7,DE2DJNZ R5,DE1RETWF: MOV TH1,#00HMOV TL1,#00HMOV TH0,#0B0HMOV TL0,#3CHSETB TR1SETB TR0RETENDCOUNT: CLR TR1CLR TR0MOV 30H,TL1MOV 31H,TH1LCALL BCDLCALL WFRETORG 0000HAJMP MAINORG 000BHAJMP COUNTORG 0100HMAIN: MOV TMOD,#51HMOV TH1,#00HMOV TL1,#00HMOV TL0,#0B0HSETB PT0SETB ET0SETB EASETB TR0SETB TR1WAIT: AJMP W AITCOUNT: MOV 30H,TL1MOV 31H,TH1LCALL BCDLCALL WFRETIBCD: MOV R1,30HMOV A,R1MOV B,#100DIV ABMOV 33H,AMOV A,BMOV B,#10DIV ABMOV 34H,AMOV 35H,BPLAY: MOV A,33HMOV DPTR,#TABMOVC A,@A+DPTRMOV P1,ASETB P2.2LCALL DELAYCLR P2.2MOV A,34HMOVC A,@A+DPTRMOV P1,ASETB P2.1LCALL DELAYCLR P2.1MOV A,35HMOVC A,@A+DPTRMOV P1,ASETB 2.0LCALL DELAYCLR P2.0RETTAB: DB 3FH,06H,5BH,4FH,66F,6DH,7DH,07H,7FH,6FHDE1: MOV R7,#5DE2: MOV R6,#20 DE3: DJNZ R6,DE3DJNZ R7,DE2DJNZ R5,DE1RETWF: MOV TH1,#00H MOV TL1,#00HMOV TH0,#0B0HMOV TL0,#3CHSETB TR1SETB TR0RETENDCOUNT: CLR TR1CLR TR0MOV 30H,TL1MOV 31H,TH1LCALL BCDLCALL WFRET。
单片机脉冲计数单片机脉冲计数是指通过单片机对输入的脉冲信号进行计数。
在工业自动化、电子测量等领域中,脉冲计数广泛应用。
单片机脉冲计数是一种高精度、高可靠性的计数方式,可以实现对脉冲信号的精确计数和处理。
一、单片机脉冲计数的原理单片机脉冲计数的原理是通过单片机的计数器来实现的。
当有脉冲信号输入时,单片机的计数器开始计数。
在计数的过程中,单片机可以通过编程来实现对计数器的控制,如计数器的清零、计数器的读取等操作。
当计数结束时,单片机可以通过计算来得到脉冲信号的频率、周期、脉宽等参数。
二、单片机脉冲计数的步骤单片机脉冲计数的步骤主要包括以下几个方面:1.硬件电路设计硬件电路设计是单片机脉冲计数的重要环节。
在设计电路时,需要根据实际需要选择合适的计数器、脉冲输入口等元器件,并合理布局电路,确保电路的稳定性和可靠性。
2.编写单片机程序编写单片机程序是单片机脉冲计数的关键。
在编写程序时,需要考虑计数器的清零、计数器的读取、频率、周期、脉宽等参数的计算等多个方面。
同时,还需要考虑程序的效率和稳定性,确保程序能够正确地运行。
3.测试和调试测试和调试是单片机脉冲计数的最后一步。
在测试和调试时,需要使用示波器、计数器等设备进行检验,确保计数的精度和稳定性符合要求。
如果发现问题,需要及时进行排查和解决。
三、单片机脉冲计数的应用单片机脉冲计数在工业自动化、电子测量等领域中有着广泛的应用。
例如,可以用于物料计数、流量计量、速度检测、频率测量等方面。
在电子测量领域中,单片机脉冲计数可以实现高精度的波形测量和分析,如脉冲宽度测量、脉冲周期测量等。
四、单片机脉冲计数的优点单片机脉冲计数具有以下几个优点:1.高精度:单片机脉冲计数可以实现高精度的计数和测量,可以满足高精度的应用需求。
2.高可靠性:单片机脉冲计数采用数字化处理,具有高可靠性和稳定性,可以保证计数结果的准确性和可靠性。
3.易于扩展:单片机脉冲计数可以通过编程来实现计数器的扩展和功能的扩展,可以满足不同应用场合的需求。
本科毕业论文(2012届)题目单片机脉冲计数电路设计学院理学院专业应用物理专业班级08073211学号08072121学生姓名xx指导教师xx完成日期2011年12月摘要随着单片机技术和电子技术的不断发展(单片机在医学仪器领域得到广泛应用,其在生物医学信号处理和控制中发挥着越来越重要的作用。
各种生物医学信号经过放大、滤波等处理后(可将模拟信号转换为数字信号送到单片机处理(此外还可以通过单片机根据处理结果对医疗仪器进行控制)。
可以更精确简单便携的检测脉搏、心跳、血压等数据。
因此本论文所做脉冲计数系统采用了以单片机(PIC16F877A)为核心,结合相关的外围元器件例如六位8段数码管、复位电路,再配以相应的软件,达到制作简易脉冲计数器的目的。
以C语言为程序设计的基础,利用PIC单片机独有的CCP捕捉模式能实现脉冲的检测计算,频率实时显示在数码管上。
关键词:PIC16F877A;CCP捕捉模式;脉冲;C语言ABSTRACTWith the single chip microcomputer technology and electronic technology development of microcomputer in the medical instrument (was widely used in the, in the biomedical signal processing and control a more and more important role in biological medicine. Various signal amplified, filtering processing (analog signal after can be converted to digital signals to SCM processing (also can through the MCU according to deal with the results of the medical instrument control). It will be more accurate, simple and portable for the detection of heart beating, blood pressure and pulse data. This research of the digital clock with the single chip processor (PIC16F877A) as the core, combining related peripheral components such as six 8 period of digital tube and reset circuit, matching again with the corresponding software to create a simple counter to the purpose of the pulse. C language program is designed for the foundation, PIC microcontroller unique CCP capture mode is used to realize pulse test calculation, frequency real-time display in digital tubes.Keywords: PIC16F877A;CCP Capture mode;Pulse;C Language目录引言 (1)第一章方案选择 (2)1.1脉冲检测方案 (2)1.2显示方案 (2)1.3编程语言选择方案 (2)第一章系统设计 (4)2.1总体设计 (4)2.2主控制模块的方案选择与设计 (4)2.3芯片介绍 (4)2.3.1 基本介绍 (4)2.4主控模块电路 (10)2.5数码管显示电路设计 (11)2.6Protel99SE设计 (11)第三章软件设计 (13)3.1编程语言的选择 (13)3.2程序设计 (13)3.2.1程序流程图 (13)3.2.2 CPP捕捉中断函数 (14)3.2.3 初始化函数 (14)3.2.4 BCD转化函数 (17)3.2.5 延时函数 (18)第四章选材及应用软件 (20)4.1制作选材 (20)4.1.1 硬件选材 (20)4.1.2 电路制作 (20)4.2源程序编译与软件调试 (21)4.2.1 MPLAB和HI-TECH PICC软件简介 (21)第五章总结 (23)致谢 (25)参考文献 (26)附件 (27)引言单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D 转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。
单片机的定时器模式
单片机的定时器模式有以下几种:
1. 定时/计数模式(T/C mode):定时器用作定时器或者计数器,在设定时间或者计数到设定值后触发中断或者输出信号。
2. 输入捕获模式(Input Capture mode):定时器用于测量输入信号的脉冲宽度或者周期,在每次捕获到输入信号时记录定时器的值。
3. 输出比较模式(Output Compare mode):定时器用于与某个参考值进行比较,当定时器的值与参考值相等时,可以触发中断或者产生输出信号。
4. 脉冲宽度调制模式(PWM mode):定时器通过改变输出信号的占空比来生成脉冲宽度可调的方波,用于控制电机速度、LED亮度等应用。
5. 脉冲计数模式(Pulse Count mode):定时器用于计数输入信号的脉冲个数,在达到设定的脉冲数后触发中断或者产生输出信号。
这些定时器模式可以根据单片机的型号和品牌的不同而略有差异,具体的定时器模式可以参考单片机的技术手册或者开发工具的相关文档。
单片机计数器原理
单片机计数器是一种用来计数或记录事件发生次数的电子装置。
它由一些逻辑门和触发器组成,能够实现多种不同的计数方式。
单片机计数器的工作原理是基于二进制数的变化。
它包括一个计数器寄存器,该寄存器可以保存当前计数值。
每当计数器收到一个时钟脉冲时,它将根据计数方式对计数值进行修改。
在计数器工作过程中,需要设置计数初始值和计数方式。
计数器的初始值决定了计数开始时的值,而计数方式决定了计数的规则和变化方式。
常见的计数方式包括二进制计数、BCD计数和循环计数等。
在二进制计数方式下,计数器从0开始,依次递增至最大值,再从0开始循环。
在BCD计数方式下,计数器以十进制方式
计数,每当计数器值达到9时,将进位信号传递给高位,并从
0开始计数。
在循环计数方式下,计数器按照预先设置的规则
进行循环计数。
计数器的输出可以用于各种应用,例如生成周期性脉冲、测量脉冲频率、分频等。
通过改变计数器的初始值和计数方式,可以实现不同的计数需求。
总的来说,单片机计数器是一种能够实现计数功能的电子设备,它根据不同的计数方式和初始值,可以实现多种计数规则和用途。
桂林电子科技大学单片机最小应用系统设计报告指导老师:吴兆华学生:张亚鲁学号:082011224桂林电子科技大学机电工程系目录一、实验课题及要求 (3)二、实验目的 (3)三、系统硬件电路 (3)3.1硬件电路说明 (4)3.3最小系统控制部分 (6)3.3.1晶振电路 (6)3.3.2复位电路 (8)四、软件设计 (11)4.1程序流程图 (11)4.2程序源代码 (12)五、设计总结 (14)六、参考文献 (15)一、实验课题及要求用8031单片机控制可测方波1~100Hz,并显示每分钟计数的脉冲二、实验目的1、加深外部中断指令的基本使用方法;2、熟悉外部中断处理程序的编程方法;3、进一步熟悉8051内部定时/计数器的初始化、使用方法及编程方法;4、进一步掌握8051中断处理程序的编程方法和应用;5、掌握I/O接口的基本方法;6、学会使用并熟练掌握电路绘制软件Protel99SE(或DXP)。
三、系统硬件电路整个设计主要包括单片机基本的晶振电路,按键复位电路,设计中需要的LED管,开关、按键等。
具体的电路图如下图1所示图1系统设计总电路图3.1硬件电路说明本次硬件系统包括单片机最小系统、外部中断电路、LED显示电路三部分在下面介绍中对每一部分都有详细的说明。
3.2 AT89C51单片机简介AT89S51单片机是美国ATMEL公司生产的低功耗,高性能CMOS 8位单片机,片内含4K bytes的可系统编程的Flash只读程序存储器,器件采用ATMEL 公司的高密度,非易失性存储技术生产,兼容标准8051指令系统及引脚。
它集Flash程序存储器,既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片芯片中,ATMEL公司的功能强大,低价AT89S51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。
图2 AT89S51引脚图AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含8k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及89C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。
单片机脉冲计数电路设计毕业设计论文设计题目:单片机脉冲计数电路设计摘要:本设计针对单片机脉冲计数电路进行了研究与设计。
首先介绍了单片机的工作原理和脉冲计数的相关知识,然后详细介绍了设计的硬件电路和软件程序。
硬件电路包括信号输入模块、计数器模块和数码管显示模块,软件程序包括脉冲计数、时钟设置和数码管显示控制等功能。
通过实验验证了本设计电路的可行性和性能,达到了预期的设计目标。
关键词:单片机;脉冲计数;电路设计一、引言脉冲计数是电子测量中常用的一种方法,可以对特定事件的发生频率和周期进行测量和计算。
在实际应用中,脉冲计数广泛应用于科学实验、工程测量和工控系统等领域。
本设计旨在设计一种简单而高效的单片机脉冲计数电路,以满足实际应用的需求。
二、单片机的工作原理单片机是一种集成了中央处理器、存储器、输入输出接口和其他辅助设备的微型计算机。
其主要功能是根据程序进行数据处理,实现各种控制和计算任务。
单片机通过输入输出口与外部电路连接,实现信息的输入和输出。
三、脉冲计数原理脉冲计数是通过计数器实现的。
计数器是一种特殊的时序电路,可以根据输入的脉冲信号对计数器的值进行累加或减少。
通过读取计数器的值,可以得到脉冲信号的频率和周期。
计数器的工作原理是将输入的脉冲信号通过触发器进行分频,然后再通过多级触发器进行累加和计数。
四、硬件电路设计本设计的硬件电路包括信号输入模块、计数器模块和数码管显示模块。
信号输入模块负责接收外部脉冲信号并将其转换成适合单片机接口的信号。
计数器模块用于记录输入脉冲信号的数量和周期。
数码管显示模块用于将计数值以数字形式显示出来。
五、软件程序设计本设计的软件程序通过单片机的编程实现。
主要功能包括脉冲计数、时钟设置和数码管显示控制等。
脉冲计数功能通过定时中断实现,每次接收到脉冲信号后进行计数。
时钟设置功能通过设置单片机的时钟频率来确定计数精度。
数码管显示控制功能则通过控制数码管模块的引脚状态来实现。
一、课程设计任务 (1)二、课程设计分工安排................................................................................. 错误!未定义书签。
三、课程设计原理和方法 (1)3.1定时器工作原理 (1)3.1.1 定时/计数器构成 (1)3.1.2 定时/计数器的控制寄存器 (2)3.1.3 定时器/计数器工作方式 (2)3.1.3 定时器/计数器工作方式 (3)3.1.3 定时器/计数器工作方式 (4)3.2 软件设计 (5)3.2.1 程序流程图 (5)3.2.2 程序清单............................................................................... 错误!未定义书签。
3.2.2 程序清单 (7)3.3 功能图 (8)3.4硬件电路布线图 (9)四、小结 (9)五、参考文献 (10)六、致谢 (10)七、心得体会..................................................................................................................................一、课程设计任务熟悉8031定时/计数器的计数功能,掌握初始化编程方法,掌握中断程序的调试方法,利用定时/计数器0对外部输入的脉冲进行计数,并送显示器显示。
二、课程设计分工安排组长朱威主持共同分析系统结构和功能,并负责写出总体设计方案;易瑞刚负责论述8031定时/计数器的主要功能,以及在设计系统中的具体编程语句和含义,同时负责购买电阻,分频器,并焊接电路板;李孝捷负责论述8031定时/计数器的工作方式,以及在设计系统中的具体编程语句和含义;张友清负责论述如何利用8031定时/计数功能实现脉冲计数,以及在设计系统中的具体编程语句和含义;三、课程设计原理和方法3.1定时器工作原理3.1.1 定时/计数器构成AT89C51单片机有二个16位定时/计数器T0、T1,分别由4个8位计数器组成,均属SFR寄存器。
单片机实验报告
班级:自动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; //开启外部中断0
IT0=1; //设置成下降沿触发方式
TMOD=0x01; //设置定时器0为模式1,即16位计数模式
TH0=(65536-10000)/256; //计数时间为10ms
TL0=(65536-10000)%256;
ET0=1; //开启定时器0中断
TR0=1; //启动定时器0
P2=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--)
;
}。