单片机c语言编程跑马灯(单片机双向跑马灯c语言编程)

初识单片机和C语言

随着科技不断的发展,单片机已经成为了现代电子产品中的重要组成部分,它可以帮我们完成各种各样的任务。而在单片机的开发过程中,C语言是最常用的程序设计语言之一,因为其强大的编译、调试和可移植性等优势。跑马灯是单片机编程的入门案例之一,因此学习跑马灯程序对我们来说很有必要。

单片机跑马灯的实现

在单片机跑马灯程序中,我们需要用到单片机的输出端口和延时函数。具体来说,就是利用单片机的IO口控制LED的亮灭,然后使用延时函数来控制其闪烁的速度。

代码如下:

void LED_Init()
{
    P1 = 0xFF; // P1 初始值设为全 1
}
void breathe_light()
{
    unsigned char led_move = 0x01;
    while(1)
    {
        P1 = led_move;
        led_move <<= 1; // led_move 右移一位
        if (led_move == 0x00)
        {
            led_move = 0x01; // led_move 回到最右侧再重新开始
        }
        delay(100);
    }
}

跑马灯的改进

在跑马灯程序的基础上,我们可以进行一些改进,比如增加闪烁的方式、改变速度和方向等。下面给出一个更加复杂的跑马灯程序,其中每个LED的闪烁方式、亮度和延时都不一样,可以是跳动、渐变和闪烁:

单片机c语言编程跑马灯(单片机双向跑马灯c语言编程)

#include 
void delay(unsigned long i)
{
     while(i--);
}
void breathe_light()
{
    unsigned char PWM[] = {127, 254, 191, 63, 31, 63, 191, 254}; // PWM为预定亮度表
    unsigned char soft_flash[] = {0, 1, 2, 3, 4, 5, 6, 7}; // 正常显示,亮度不断提高
    unsigned char hard_flash[] = {1, 2, 4, 8, 16, 32, 64, 128};  // 逆序显示,亮度不断降低
    unsigned char jump_flash[] = {0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01}; // 三个LED跳动,其余不变
    unsigned char count = 0, shift = 0;
    while (1)
    {
        shift++;
        if (shift == 3)
        {
            shift = 0;
        }
        for (count = 0; count < 8; count++)
        {
            P1 = PWM[count] & (soft_flash[count] <> (2 - shift) | jump_flash[count]);
            delay(1000);
        }
    }
}
void main()
{
    breathe_light();
}

本文来自投稿,不代表亲测学习网立场,如若转载,请注明出处:https://www.qince.net/mcugrde8.html

郑重声明:

本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。

我们不承担任何技术及版权问题,且不对任何资源负法律责任。

如遇到资源无法下载,请点击这里失效报错。失效报错提交后记得查看你的留言信息,24小时之内反馈信息。

如有侵犯您的版权,请给我们私信,我们会尽快处理,并诚恳的向你道歉!

(0)
上一篇 2023年4月26日 上午6:06
下一篇 2023年4月26日 上午6:06

猜你喜欢