技术文档

单片机显示时间 如何测量单片机程序的运行时间

小编 2024-10-17 技术文档 23 0

如何测量单片机程序的运行时间

开发单片机程序的时候,我们经常需要测量一段程序的运行时间,并不断地优化它。那么实际项目中该如何精确地测量一段程序的运行时间呢?一般有两种方法。

1. 使用单片机内部定时器测量,在待测程序段的开始启动定时器,在待测程序段的结尾关闭定时器。为了测量的准确性,要进行多次测量,并进行平均取值。但是该方法在待测程序运行时间极短的情况下,准确性不高。

void Delay_us(uint32_t nCount)

{

/* 清零计数器并开启滴答定时器 */

SysTick->VAL = 0;

SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;

for( ; nCount > 0 ; nCount --)

{

while(SysTick_GetFlagStatus() != SET);

}

/* 关闭滴答定时器 */

SysTick->CTRL &= ~ SysTick_CTRL_ENABLE_Msk;

}

2.借助示波器的测量方法是:在待测程序段的开始阶段使单片机的一个GPIO输出高电平,在待测程序段的结尾阶段再令这个GPIO输出低电平。用示波器通过检查高电平的时间长度,就知道了这段代码的运行时间。显然,借助于示波器的方法更为简便,而且,对于运行时间极短的情况测量准确性更高。

void Delay_us(uint32_t nCount)

{

GPIO_SetBits(GPIOB,GPIO_Pin_0);

for( ; nCount > 0 ; nCount --)

{

while(SysTick_GetFlagStatus() != SET);

}

GPIO_ResetBits(GPIOB,GPIO_Pin_0);

}

详解数码管显示控制

数码管种类繁多,按外观来划分,可以分为七段数码管、米字型数码管、点阵块等。图8-5所示为各种不同形状的数码管。

图8-5 各种不同形状的数码管

LED数码管结构与工作原理

单片机系统中常用的是七段数码管,它由8个发光二极管(以下简称字段)构成,如图8-6(a)图所示(注:由于小数点字段不常用,所以一般称为七段),通过不同的组合可以显示数字0~9、字符A~F、H、L、P、U、符号“-”及小数点“.”。

根据发光二极管物理连接的不同,七段数码管可以分为共阴极和共阳极两种结构。共阴极型数码管如图8-6(b)所示,所有字段的阴极均连接低电平,因此在使用共阴极数码时,需要在相应字段上加高电平,才会使其发光。共阳极数码管如图8-6(c)所示,所有字段的阳极均连接高电平,在使用时,需要在相应字段上加低电平。

图8-6 7段数码管结构

LED数码管字型编码

在单片机与数码管组成的应用系统中,一般将单片机的一个并口与数码管的8个段控制引脚连接,且按照口线位的顺序由低到高与a、b、c、d、e、f、g、h连接,这样,若要显示不同字符,只需应用单片机的口线输出相应的控制的电平就可以实现。向口线送的数据就是LED的字型编码。共阴和共阳的字型编码如表8-2所示。

表8-2 共阴和共阳的字型编码表

LED数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数位,因此根据LED数码管的驱动方式的不同,可以分为静态显式和动态显式两类。

LED数码管静态显示

静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O口线进行驱动,或者使用如BCD码、二–十进位解码器解码进行驱动。

静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O口较多,如驱动5个数码管静态显示则需要5×8=40根I/O口线来驱动,而1个89S51单片机可用的I/O口线才32个。

2位共阳极数码管的静态显示电路如图8-7所示。

图8-7 2位共阳极数码管的静态显示电路原理图

显示数字12的C51程序如下:

LED数码管动态显示

数码管动态显示是单片机中应用最为广泛的显示方式,动态驱动是将所有数码管的8个同名端“a,b,c,d,e,f,g,h”连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制。

当单片机输出字形码时,所有数码管都接收到相同的字形码,究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制。通过分时轮流控制各个LED数码管的COM端,就使各个数码管轮流受控显示。

在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极体的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示,不会有闪烁感,动态显示的效果和静态显示相同,并且能够节省大量的I/O口线,降低功耗。

2位共阳极数码管动态显示电路如图8-8所示。

显示数字12的C51程序如下:

图8-8 2位共阳极数码管动态显示电路原理图

相关问答

单片机 定时的 时间 怎么改变?

定时器实质是计数器。当计数脉冲周期一定时,就有定时功能。雅帆用水桶给你打个比方吧!一、向上计定时数器举例当一个255毫升的烧杯,提前放入155毫升水后,...

单片机 中最基本的 时间 单位是什么?

时钟周期是单片机中运行指令的基本单位,它代表了单片机中的时钟信号通过一个完整的周期所用的时间。在单片机中,时钟信...单片机中最基本的时间单位是时钟周...

51 单片机 C语言怎样测量高电平持续的 时间 ?

时器while(P1^0==1);...假设定时器不溢出,P1.0为高电平输入引脚:while(P1^0==1);//等待眼前的高电平过去while(P1^0==0);//等待下一个高电平来到...

单片机 复位电路 复位 时间 的计算方法-ZOL问答

现在假设你的单片机的输出电阻为RO,电源为VDD,复位电路的电阻和电容分别为R和C。时间常数为(RO+R)C公式如下,Vrst为电容上的电压电阻的作用不是限制电流的大...

单片机 一条IF语句所需要的 时间 ?

还真不好确定,这与变量的数据类型有关,char,int对应的IF语句所需时间是不一样的。因为处理方式不一样。还真不好确定,这与变量的数据类型有关,char,int对应...

单片机 怎么设置LED点阵亮的 时间 长度?

要设置LED点阵亮的时间长度,可以通过控制单片机的IO口输出信号来实现。首先,需要确定所使用的单片机型号和开发环境,然后编写相应的程序代码。在程序中,可以...

当需设置超过最大计数值的计数 时间 时,怎样设置 单片机 计数器...

5条回答:【推荐答案】用多次计数,再加一级或多级计数变量。比如,一次最多计65ms那么,就让定时器计50ms中断一次。在中断中,time_50ms加1或减1总之计14次就是1S30S...

51系列 单片机 的最小 时间 单位?

MCS—51时序中最小的时间单位是机器周期。时序是用定时单位来描述的,MCS-51的时序单位有四个,它们分别是节拍、状态、机器周期和指令周期,接下来我们分别加...

8位 单片机 系统运行 时间 ?

8位单片机的系统运行时间取决于多个因素,包括但不限于以下几点。首先,系统运行时间取决于单片机的时钟频率。时钟频率越高,单片机每秒钟执行的指令数量就越多...

stc15 单片机 定时 时间 怎么算?

单片机的定时时间的计算公式=计数值(定时值)*机器周期=计数值(定时值)*12/晶振频率。上面的两个等号是等价的,因为,单片机的机器周期=12秒/晶振频率...

猜你喜欢