【单片机学习】LED灯的基本控制

题目:

首先让8路LED灯闪烁3遍然后熄灭,接着依次点亮LED灯,最后依次熄灭LED灯

#include "reg52.h"
sbit HC138_A=P2^5;
sbit HC138_B=P2^6;
sbit HC138_C=P2^7;

//延时函数
void delay(unsigned int t)
{
	while(t--);
	while(t--);

}

void LED_Running()
{
	unsigned char i;
	HC138_C=1;
	HC138_B=0;
	HC138_A=0;

    //闪烁三次(方法一)
//	for(i=0;i<3;i++)
//	{
//		P0=0x00; //灯亮
//		delay(60000);
//		P0=0xff; //灯灭
//		delay(60000);
//	}
	
	//闪烁三次(方法二)
	for(i=0;i<6;i++)
	{
		P0=~P0;
		delay(60000);
	}
	
	//依次点亮
	for(i=1;i<=8;i++)
	{
		P0=0xff<<i; //左移
		delay(60000);
	}
	
	//依次熄灭
	for(i=1;i<=8;i++)
	{
		P0=~(0xff<<i);
		delay(60000);
	}
}

void main()
{
	while(1)
	{
		LED_Running();
	}

}

### 回答1: void delay(unsigned int i) 的意思是延迟一段时间,时间长度为 i,单位为毫秒。这个函数可以用来控制程序的执行速度,常用于需要等待一段时间后再执行下一步操作的情况,比如延迟 LED 的闪烁时间。 ### 回答2: void delay(unsigned int i)是一个C语言中的函数,通常用于程序中需要延时的场合。具体来说,delay函数用于让程序暂停一段时间,以实现一些需要一定时间执行的操作。在函数的参数中,i表示需要延时的时长,单位是毫秒。 delay函数的作用实际上等同于让程序进行一段空闲的等待,因为程序需要为了完成延时操作而使用CPU资源,而这个过程并不真正实现任何实际的计算任务。因此,对于需要运行时间非常敏感的应用,如实时性检测等,使用delay函数可能不太合适。 在延时的过程中,CPU会一直处于忙等状态,直到延时的时间到达。具体实现上,delay函数通常使用循环语句与计数器来完成。例如,在Atmel AVR单片机中,常常使用以下代码来实现延时30毫秒的操作: void delay(unsigned int i){ while(i--){ _delay_ms(1); } } 这个函数通过使用while语句来进行循环,通过--i的操作来递减计数器。另外调用了一个库函数_delay_ms,该函数可以让CPU进行等待指定的毫秒数。通过这个函数的多次调用,整个delay操作就能够被完成。 总之,函数void delay(unsigned int i)用于实现程序的软件延时,在某些场合下是非常有用的,但在实时性要求较高的程序中需要慎用。 ### 回答3: void delay(unsigned int i)是一种在编写程序时常用的函数,其作用是让程序暂停一段时间,以达到延迟的目的。在实际应用中,程序需要在一些特定的时间间隔内执行一些任务,例如控制LED的闪烁频率、控制电机的转速等等,这时就需要用到延时函数。 该函数的形参i表示延时的时间,单位是毫秒(ms),即当调用该函数并传入参数i后,程序会停止运行i毫秒的时间。 在函数内部,一般采用循环计数的方式实现延时,具体实现方法如下: void delay(unsigned int i) { unsigned int j,k; for(j=0;j<i;j++) for(k=0;k<525;k++); } 在函数中,j和k都是用于计数的无符号整数,循环嵌套使得程序需要执行i*525次,从而达到延时的效果。 需要注意的是,该函数的延时精度取决于CPU的时钟频率,一般会产生一定误差。如果需要更精确的延时,可以采用使用定时器的方式实现,但这需要更高级的技术储备和编写语言的支持。 综上所述,void delay(unsigned int i)函数是一种常见的用于延时的函数,适用于一些简单的应用场景。在实际应用中,需要根据实际情况选择延时方式和精度,以达到最优效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值