51单片机流水灯

**led 介绍**
LED是“Light Emitting Diode”的缩写,即发光二极管。它是一种半导体器件,能够将电能转化为可见光。LED灯通常由LED芯片、封装材料、铝基板和灯罩等部件组成。

**LED灯具有以下特点:**

  1. 节能:LED灯具有较高的光电转换效率,能够将大部分电能转化为光能,相比传统白炽灯泡 和荧 光灯具有更低的能耗。
  2. 寿命长:LED灯寿命长,可达数万小时,远远超过传统灯泡,减少了更换灯泡的频率。
  3. 节省空间:LED灯小巧轻便,可以设计成各种形状和尺寸,适用于各种应用场景。
  4. 环保:LED灯不含汞等有害物质,不会产生紫外线和红外线辐射,使用时也不会产生频闪等有害物质。

LED灯广泛应用于室内照明、户外照明、汽车灯具、电子显示屏、指示灯等领域。在电子设计和嵌入式系统中,LED也常用作电路指示灯、状态指示灯、信号灯等。在嵌入式系统中,LED灯通常通过微控制器的GPIO(通用输入/输出)引脚来驱动,通过控制GPIO引脚的电平状态来控制LED的亮灭。这样可以实现LED的闪烁、呼吸灯效果等。 LED的使用非常灵活,能够通过软件编程实现各种照明效果和指示功能。

单片机的工作原理:cpu通过配置寄存器控制我们的硬件电路实现我们的功能

二进制转换为16进制:进制转换关系对应表

点亮51单片机的第一个led灯和让单片机的led灯实现亮灭亮灭的效果(采用16进制的方式实现)

eg1:实现单个LED灯的亮和灭

#include <REGX52.H>

	// P1 是第一个led晶体管1111 1110 倒数转换为16进制

void main(){
	P1 = 0xFE;  // 点亮第一个单片机的led灯
	P1 = 0x55; 	// 单片机的亮灭效果
	

	while(1){// 添加while循环让单片机停止或者开始
	      
	}

}

eg2:实现单个LED灯的闪烁效果

#include <REGX52.H>
#include <INTRINS.H>

void Delay500ms()		//@11.0592MHz
{
	unsigned char i, j, k;

	_nop_();
	i = 4;
	j = 129;
	k = 119;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);

}



void main(){
	  while(1){// 循环实现led灯的亮灭情况
		    P1 = 0xFE;
		  	Delay500ms();// 函数的调用
				P1 = 0xFF;
				Delay500ms();
		}
}

eg3:实现单片机的流水灯显示

#include <REGX52.H>
#include <INTRINS.H>

void Delay500ms()		//@11.0592MHz
{
	unsigned char i, j, k;

	_nop_();
	i = 4;
	j = 129;
	k = 119;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);

}



void main(){
	  while(1){// 循环实现led灯的亮灭情况
		    P1 = 0xFE; // 1111 1110
		  	Delay500ms();
				P1 = 0xFD; // 1111 1101
				Delay500ms();
				P1 = 0xFB; // 1111 1011
		  	Delay500ms();
				P1 = 0xF7; // 1111 0111
				Delay500ms();
				P1 = 0xEF; // 1110 1111
		  	Delay500ms();
				P1 = 0xDF; // 1101 1111
				Delay500ms();
				P1 = 0xBE; // 1011 1111
		  	Delay500ms();
				P1 = 0x7F; // 0111 1111
				Delay500ms();
		}
}

eg4:使用延时函数实现200毫秒的流水灯轮动

#include <REGX52.H>
#include <INTRINS.H>

void Delay500ms(unsigned int xms)		//@11.0592MHz 单片机的系统中int 表示的是16位的,在计算机中是32位或者是64位的
{
	unsigned char i, j;
  while(xms){
		i = 2;
		j = 239;
		do{
		   while(--j);
		}while(--i);
	  xms--;
	}
	
}

void main(){
	  

	  while(1){
				// 循环实现led灯的亮灭情况
		    P1 = 0xFE; // 1111 1110
		  	Delay500ms(200); // 自定义200毫秒
				P1 = 0xFD; // 1111 1101
				Delay500ms(200);
				P1 = 0xFB; // 1111 1011
		  	Delay500ms(200);
				P1 = 0xF7; // 1111 0111
				Delay500ms(200);
				P1 = 0xEF; // 1110 1111
		  	Delay500ms(200);
				P1 = 0xDF; // 1101 1111
				Delay500ms(200);
				P1 = 0xBE; // 1011 1111
		  	Delay500ms(200);
				P1 = 0x7F; // 0111 1111
				Delay500ms(200);
		}

}

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值