51单片机点亮LED的5中方法(由简单到困难)

这篇具有很好参考价值的文章主要介绍了51单片机点亮LED的5中方法(由简单到困难)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文将介绍用各种不同的方法和算法点亮51单片机LED的程序,包括详细的注释和说明。

方法1:使用GPIO口点亮LED

#include<reg52.h> //头文件
sbit LED=P1^0; //定义LED
void main()
{
    LED=0; //LED亮,输出低电平
}

以上代码使用了P1口的第0位控制LED的亮灭。当LED=0时,输出低电平,LED亮;当LED=1时,输出高电平,LED灭。

方法2:使用定时器控制LED闪烁

#include<reg52.h> //头文件
sbit LED=P1^0; //定义LED
void delay(unsigned int i) //延时函数
{
    while(i--);
}
void main()
{
    while(1)
    {
        LED=0; //LED亮
        delay(500); //延时500ms
        LED=1; //LED灭
        delay(500); //延时500ms
    }
}

以上代码使用了延时函数和定时器来控制LED的闪烁。在这段代码中,我们定义了一个延时函数,来实现LED闪烁的时间间隔。当LED=0时,LED亮,执行延时函数;当LED=1时,LED灭,执行延时函数。

方法3:使用中断控制LED闪烁

#include<reg52.h> //头文件
sbit LED=P1^0; //定义LED
void delay(unsigned int i) //延时函数
{
    while(i--);
}
void main()
{
    TMOD=0x01; //定时器1工作在模式1
    TH0=(65536-50000)/256; //装入初值,使定时器从50ms开始计时
    TL0=(65536-50000)%256;
    ET0=1; //开启定时器1的中断
    EA=1; //开总中断
    TR0=1; //启动定时器1
    while(1)
    {
        //主程序不执行任何操作
    }
}
void Timer0() interrupt 1 //定时器1中断函数
{
    static unsigned char i=0;
    TH0=(65536-50000)/256; //重新装载初值,使定时器1从50ms开始计时
    TL0=(65536-50000)%256;
    i++;
    if(i==20) //当定时器1中断20次,即1秒时
    {
        i=0;
        LED=!LED; //LED状态取反
    }
}

以上代码使用了定时器中断来控制LED的闪烁。在这段代码中,我们定义了一个定时器中断函数,来实现LED闪烁的时间间隔。当定时器1中断20次,即1秒时,LED状态取反。

方法4:使用PWM控制LED亮度

#include<reg52.h> //头文件
sbit LED=P1^0; //定义LED
void main()
{
    TMOD=0x01; //定时器1工作在模式1
    TH0=0xFC; //装入初值,使定时器1的工作频率为10kHz
    TL0=0x67;
    EA=1; //开总中断
    ET0=1; //开定时器1中断
    TR0=1; //启动定时器1
    while(1)
    {
        for(unsigned char i=0;i<=99;i++) //PWM调节亮度的循环
        {
            if(i==LED) continue; //如果亮度相等,则跳过
            LED=i; //改变LED的亮度
            delay(10); //延时10ms
        }
    }
}
void Timer0() interrupt 1 //定时器1中断函数
{
    static unsigned char cnt=0;
    cnt++;
    if(cnt==100) cnt=0; //当计数到100时,重新计数
    if(cnt<LED) LED=0; //当计数小于LED的亮度时,LED亮
    else LED=1; //当计数大于LED的亮度时,LED灭
}

以上代码使用了PWM来控制LED的亮度。在这段代码中,我们定义了一个定时器中断函数和一个PWM调节亮度的循环。当计数小于LED的亮度时,LED亮;当计数大于LED的亮度时,LED灭。

方法5:使用移位寄存器控制多个LED的亮灭

#include<reg52.h> //头文件
void main()
{
    unsigned char LED[]={0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x00}; //定义8个LED的状态
    unsigned char i,j;
    while(1)
    {
        for(i=0;i<8;i++) //移位循环
        {
            for(j=0;j<8;j++) //输出循环
            {
                P1=LED[j]; //输出LED的状态
                delay(10); //延时10ms
            }
            LED[i]=LED[i]<<1; //移位
            if(LED[i]==0) LED[i]=0x80; //当最高位为0时,将最低位设为1
        }
    }
}

以上代码使用了移位寄存器来控制多个LED的亮灭。在这段代码中,我们定义了一个LED数组和一个移位循环和一个输出循环。当最高位为0时,将最低位设为1,以实现LED的循环显示。

结论

本文介绍了用各种不同的方法和算法点亮51单片机LED的程序,包括使用GPIO口点亮LED、使用定时器控制LED闪烁、使用中断控制LED闪烁、使用PWM控制LED亮度和使用移位寄存器控制多个LED的亮灭。以上代码都有详细的注释和说明,希望对读者有所帮助。

  • 方法1:使用GPIO口点亮LED - 简单
  • 方法2:使用定时器控制LED闪烁 - 中等
  • 方法3:使用中断控制LED闪烁 - 高级
  • 方法4:使用PWM控制LED亮度 - 高级
  • 方法5:使用移位寄存器控制多个LED的亮灭 - 高级

在实际编程中,这些程序都可以用于控制LED灯的亮灭和闪烁,适用于各种不同的场景。例如,方法1可以用于简单的LED控制,方法2可以用于制作闪烁的警示灯,方法3可以用于制作节奏感强的LED灯效,方法4可以用于制作可调节亮度的LED灯,方法5可以用于制作多个LED灯的循环显示效果。这些程序的难度和应用场景有所不同,可以根据具体需求选择合适的方法和算法。文章来源地址https://www.toymoban.com/news/detail-702389.html

到了这里,关于51单片机点亮LED的5中方法(由简单到困难)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 51单片机入门(2)LED点亮的背后

    上一节提到了51单片机开发环境的搭建,这节我们开始正式进入51单片机的学习——点亮LED。 所有的控制类芯片学习的第一个实践就是点亮LED,这是最简单、最基本的操作,但这个实现过程却可能攘括了单片机的整个工作流程,所以要想学好单片机,点灯实验是一定要掌握的

    2023年04月08日
    浏览(26)
  • 如何使用单片机点亮LED灯,并使用按键控制[51单片机]

    首先先看一下我的板子,如果我们板子不相同,可能操作也不太相同 我们就不讲底层原理了,直接看,我们可以看到板子上有 8个LED灯   那这个8个LED用什么来控制呢,我们先看底层的线路图,所有的LEDD都连接到了P2带后缀的接口上, 那么只需要操作这几个接口的高低电频,

    2024年02月05日
    浏览(32)
  • 51单片机——LED 点阵点亮一个点,小白详解

    LED点阵介绍:        LED点阵是由发光二极管排列组成的显示器件,在我们生活中的电器中随处可见,被广泛用于汽车报站器,广告屏等。         通常用用较多的是8*8点阵,然后使用多个8*8点阵组成不同分辨率的LED点阵显示屏,比如16*16点阵可以使用4个8*8点阵构成。因

    2024年02月09日
    浏览(32)
  • STM32/51单片机编程入门(点亮LED)

    目录 一、Proteus电路仿真软件上的C51程序设计及仿真 1.原理图绘制 2.Keil5上的51程序编写 3.仿真 二、安装mdk5软件和stm32包,完成一个stm32的简单程序 1.mdk5软件中编写程序 2.stm32仿真程序调试 三、STM32F103系列芯片的地址映射和寄存器映射原理,GPIO端口的初始化设置的一般步骤

    2024年02月02日
    浏览(48)
  • 51单片机点亮LED灯以及实现2盏LED灯的交替闪烁

    点亮LED灯,根据单片机原理图 将LED灯1和LED灯2介入单片机的口设为低电平即可 代码如下: #include “reg52.h” sbit led1= P3^7; void main() { led1 = 0;//给led1一个低电平,点亮 } 结果图: 图中有一盏LED灯为我这个51单片机自带的电源接通灯,被代码点亮的只有一盏 实现2盏LED灯的交替闪烁

    2024年02月07日
    浏览(31)
  • 51单片机 | LED点阵实验 | 点亮一个点 | 显示数字 | 显示图像

      开发板上使用了 64 个红色 LED 按照行列排布组成的 8*8 LED 点阵。下面介绍 LED 点阵的使用。    LED 点阵 是由发光二极管排列组成的显示器件,在我们日常生活的电器中随处可见,被广泛应用于汽车报站器,广告屏等。如下所示:   通常应用较多的是 8*8 点阵,然后使

    2023年04月08日
    浏览(31)
  • 一周学完C51单片机(1)点亮LED灯以及按键控制

    首先找到单片机的原理图,找到LED模块。我这里是P2口是连接了LED灯,通过此原理图我们可以看到 我们只需将单片机的IO口置为低电平,就可以点亮LED灯。 因为代码比较简单,我就分别展示一下代码,一颗LED灯的亮灭,流水灯 延时函数可以通过小工具来实现,选择好系统的频

    2024年02月08日
    浏览(32)
  • 单片机C语言实例:1、点亮LED的多种方法

    不管学习什么单片机,通常点灯是迈入编程的第一步,点灯虽然简单,但是玩出花样来,需要的知识点还是不少的,本文归纳了15种点灯方式,看看自己会几种,看看是否能帮到努力点灯的工程师们。 程序实例1: 程序实例2: 程序实例3: 程序实例4: 程序实例5: 程序实例

    2024年02月09日
    浏览(21)
  • 【74HC595】51单片机(普中A2开发板)LED点阵屏点亮以及74HC595芯片的使用笔记

    纯小白写的文章,如有问题,欢迎评论区讨论,反驳,指正。 如果你只想了解74HC595如何使用,建议只看2.3。 通过查看普中A2开发板的原理图(图1)可以知道,通过P0(P0_0、P0_1…P0_7)口和DPa、DPb…DPh来控制哪一颗LED点亮。我这个开发板上的点阵模块没有按照他给的原理图上

    2024年02月05日
    浏览(55)
  • 51单片机定时器。实验(六):定时器实验:使用AT89S51单片机的定时器/计数器T1控制LED每隔3秒点亮一次(即亮3秒,灭3秒,如此反复)

    目录 题目: proteus仿真: 代码: 分析题目: 定时器: 工作方式寄存器TMOD设置: 控制寄存器TCON设置: 设定计数初值:  定时器四种工作方式: 实验过程讲解: 配置定时器:设置TMOD寄存器 设定定时器初值:THx和TLx(x=0,1) 设置IE寄存器: 启动定时器: 中断检测: 使用

    2023年04月20日
    浏览(36)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包