【51单片机】:闪灯、流水灯(从左往右)、流水灯(从右往左)、蜂鸣器。

学习目标:

        言归正传,一切都回归本源,从51再来一次,首先就是最简单的点灯大师。

        这么些年从51 到  32  再到  arduino  再到  ESP  等等,都是从点灯大师开始的。

于是介绍如下:

  1. 闪灯
  2. 流水灯(从左往右)
  3. 流水灯(从右往左)
  4. 蜂鸣器

        LED灯的原理:LED是发光二极管,它是一种半导体器件。当电子从N型半导体向P型半导体注入时,它们会与空穴结合并释放出能量,这些能量以光的形式发射出来。LED灯的引脚通常有两个,一个是正极(长脚),一个是负极(短脚)。在电路中,LED灯的正极连接到电源的正极,负极连接到电源的负极,这样电流就可以流过LED灯,使其发光。

        流水灯原理:流水灯是一种LED灯的应用,它的原理是通过控制多个LED灯的亮灭顺序,使得它们像水流一样流动。流水灯电路中通常使用一个计数器芯片和多个LED灯,计数器芯片可以控制LED灯的亮灭顺序,从而实现流水灯的效果。

        蜂鸣器原理:蜂鸣器是一种声音发生器,它的原理是通过交替地给蜂鸣器施加正负电压,使得蜂鸣器内部的振荡器产生声音。蜂鸣器通常有两个引脚,一个是正极,一个是负极。在电路中,蜂鸣器的正极连接到电源的正极,负极连接到电源的负极,同时通过控制电压的正负来控制蜂鸣器的声音。


学习内容:闪灯

        让led1达到闪烁的效果:

         代码如下:

#include <reg51.h>

sbit LED=P2^0; 

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

void main()
{
    while(1)
    {
        LED=0; //LED亮
        delay(10000); //延时
        LED=1; //LED灭
        delay(10000); //延时
    }
}

        


学习内容:流水灯(从左往右)、流水灯(从右往左)

        流水灯(从左往右):

第一种方法:

#include <reg51.h>

sbit LED1=P1^0; //定义P1.0口为LED1控制口
sbit LED2=P1^1; //定义P1.1口为LED2控制口
sbit LED3=P1^2; //定义P1.2口为LED3控制口
sbit LED4=P1^3; //定义P1.3口为LED4控制口

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

void main()
{
    while(1)
    {
        LED1=0; //第一个LED亮
        delay(10000); //延时
        LED1=1; //第一个LED灭
        LED2=0; //第二个LED亮
        delay(10000); //延时
        LED2=1; //第二个LED灭
        LED3=0; //第三个LED亮
        delay(10000); //延时
        LED3=1; //第三个LED灭
        LED4=0; //第四个LED亮
        delay(10000); //延时
        LED4=1; //第四个LED灭
    }
}

第二种方法:(从左往右  也   包含   从右往左   推荐使用这个方法)


#include "reg52.h"

typedef unsigned int u16;	
typedef unsigned char u8;

#define LED_PORT  P2	

void delay_10us(u16 ten_us)
{
	while(ten_us--);	
}

void main()
{	
   	u8 i=0;

	LED_PORT=~0x01;
	delay_10us(50000);
	while(1)
	{
		//方法1:使用移位+循环实现流水灯
//		for(i=0;i<8;i++)
//		{
//			LED_PORT=~(0x01<<i);	//将1右移i位,然后取反将结果赋值到LED_PORT
//			delay_10us(50000);
//		}
		
		//方法2:使用循环+_crol_或_cror_函数实现流水灯
		for(i=0;i<7;i++)	 //将led左移一位
		{									  
			LED_PORT=_crol_(LED_PORT,1);
			delay_10us(50000); 	
		}
		for(i=0;i<7;i++)	//将led右移一位
		{
			LED_PORT=_cror_(LED_PORT,1);
			delay_10us(50000);	
		}	
	}		
}

学习产出:蜂鸣器

        蜂鸣器是   P2^5引脚

代码如下:

#include <reg51.h>

sbit Buzzer=P2^5; 
void delay(unsigned int i) //延时函数
{
    while(i--);
}

void main()
{
    while(1)
    {
        Buzzer=1; //蜂鸣器响
        delay(10000); //延时
        Buzzer=0; //蜂鸣器停止响
        delay(10000); //延时
    }
}

逆风的方向,更适合飞翔。

猜你喜欢

转载自blog.csdn.net/oxygen23333/article/details/129785567