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

这篇具有很好参考价值的文章主要介绍了【51单片机】:闪灯、流水灯(从左往右)、流水灯(从右往左)、蜂鸣器。。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

学习目标:

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

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

于是介绍如下:

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

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

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

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


学习内容:闪灯

        让led1达到闪烁的效果:

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

         代码如下:

#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引脚

代码如下:文章来源地址https://www.toymoban.com/news/detail-509492.html

#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); //延时
    }
}

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

到了这里,关于【51单片机】:闪灯、流水灯(从左往右)、流水灯(从右往左)、蜂鸣器。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 51单片机学习--LED流水灯

    延时代码可通过软件生成,系统频率要和开发板的晶振频率相对应。  

    2024年02月16日
    浏览(40)
  • 51汇编单片机学习(三)八路流水灯

    流水灯主要是在小灯闪烁的基础上对小灯进行移动 八路流水则为赋值一组引脚并对引脚进行定义,在上一篇文章我们能知道当引脚置1时为高电平,此时小灯不亮,引脚置0时,低电平,小灯亮,所以可知在一组引脚中,可设置小灯初始位置从“01111111”开始亮起,而十六进制

    2024年02月07日
    浏览(34)
  • 基于51单片机设计的花样流水灯设计

    花样流水灯是一种常见的LED灯效果,被广泛应用于舞台表演、节日庆典、晚会演出等场合。在现代智能家居、电子产品中,花样流水灯也被广泛使用,通过调整亮灭顺序和时间,可以实现各种炫酷的灯光效果,增强用户体验。而51单片机作为一种常见的嵌入式开发平台,具有

    2024年02月09日
    浏览(32)
  • 51单片机通过两个按键控制流水灯方向

    按键一接单片机P3_1,按键2接P3_0 8个流水灯接P2口 以下是代码:

    2024年02月11日
    浏览(34)
  • 【51单片机】按键操作(单个灯闪烁&&流水灯)

    🎊专栏【51单片机】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 大一同学小吉,欢迎并且感谢大家指出我的问题🥰 目录 ⭐注意 🍔同一个灯  🏳️‍🌈效果 🏳️‍🌈代码 🏳️‍🌈问题分析 ⭐注意 ⭐P3_1=0,表示按下按键  ⭐为什么while(

    2024年02月01日
    浏览(60)
  • 51单片机流水灯三种实现方法

    流水灯可以用三种方法实现 一.通过移位函数  _crol_()  和  _cror_() 二.位移实现流水灯 三.数组流水灯实现 首先说一下流水灯的原理 让0从左往右位移或者从右往左位移 从而实现流水灯依次点亮 电路图如下,使用软件是project 使用左移函数代码如下  ///运行结果是LED灯从上到

    2023年04月09日
    浏览(39)
  • 单片机c51中断 — 中断键控流水灯

    项目文件 文件 关于项目的内容知识点可以见专栏单片机原理及应用 的第五章,中断   在第4章的实例2中,按键检测是采用查询法进行的,其流程图如图所示 问题是这样的:由于查询法 -按键查询、标志位修改及彩灯循环几个环节是串联关系,当CPU运行于彩灯时,将因不能及

    2024年02月08日
    浏览(43)
  • 汇编语言实现C51单片机点亮流水灯

    P0作输出口,接8只发光二极管,编写程序实现二极管循环点亮 二极管为共阳极连接时,即二极管正极已接通电源,单片机输出接阴极,所以单片机输出为低电平有效。 所以为实现二极管轮流点亮,单片机的输出应为:0FEH,0FDH,0FBH,....0FEH,每输出一种状态,需要延时0.1us. 最后在

    2024年02月06日
    浏览(41)
  • 51单片机--定时器与按键控制流水灯模式

    51单片机上的定时器是一种硬件模块,用于计时和生成特定的时间延迟。 它的电路和运转都在单片机内完成 ,它是嵌入在单片机内部的一个功能模块,具有多种工作模式和功能。 在51单片机中,通常有两个定时器/计数器:定时器0(Timer 0)和定时器1(Timer 1)。每个定时器都

    2024年02月13日
    浏览(33)
  • 51单片机用定时器控制流水灯,呼吸灯

    让LED从L1开始流到L8,(间隔1S,使用定时器)然后全灭LED,然后从L1开始进行呼吸灯状态。之后L1,L3,L5,L7点亮,然后L2,L4,L6,L8点亮。最后所有LED全亮 #include REGX52.H #includeINTRINS.H sbit LED = P2 ^ 0; unsigned int TOTOTO = 0; int number = 0; unsigned int Time; unsigned int i; //配置定时器 void Timer0Init(

    2024年02月15日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包