C51单片机开发心形灯流水灯(C语言)

这篇具有很好参考价值的文章主要介绍了C51单片机开发心形灯流水灯(C语言)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

利用Keil uVision4编程程序,在Proteus 8 Professional中创建仿真电路


仿真电路
单片机心形流水灯程序,单片机开发,51单片机,单片机,c语言,Powered by 金山文档
单片机心形流水灯程序,单片机开发,51单片机,单片机,c语言,Powered by 金山文档
单片机心形流水灯程序,单片机开发,51单片机,单片机,c语言,Powered by 金山文档
单片机心形流水灯程序,单片机开发,51单片机,单片机,c语言,Powered by 金山文档
单片机心形流水灯程序,单片机开发,51单片机,单片机,c语言,Powered by 金山文档

16进制样式花型
int a[][8] = {  0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,
                0x03,0x06,0x0c,0x18,0x30,0x60,0xc0,0x80,
                0x07,0x0e,0x1c,0x38,0x70,0xe0,0xc0,0x80,
                0x0f,0x1e,0x3c,0x78,0xf0,0xe0,0xc0,0x80,
                0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0x7f,
                };

延迟函数
void delay(unsigned int x)
{
    while(x--);
}

循环调用函数

led1() 是指操作P0端口,

以此类推,led4() 是调用四个输出端口,循环闪烁

void led1(int j,int i)
{
    while(1)
    {
        P0 = a[j][i];
        delay(m);
        i++;
        if(i >= 8)
        {
            i = 0;
            P0 = 0x00;
            break;                
        }
    }
    while(1)
    {
        P2 = a[j][i];
        delay(m);
        i++;
        if(i >= 8)
        {
            i = 0;
            P2 = 0x00;
            break;
        }
    }
    while(1)
    {
        P3 = a[j][i];
        delay(m);
        i++;
        if(i >= 8)
        {
            i = 0;
            P3 = 0x00;
            break;
        }
    }
    while(1)
    {
        P1 = a[j][i];
        delay(m);
        i++;
        if(i >= 8)
        {
            i = 0;
            P1 = 0x00;
            break;
        }
    }
}

void led3(int j,int i)
{
   while(1)
   {
        P0 = P2 = a[j][i];
        delay(m);
        i++;
        if(i >= 8)
        {
            i = 0;
            P0 = P2 = 0x00;
            break;
        }
   }
   while(1)
    {
        P2 = P3 = a[j][i];
        delay(m);
        i++;
        if(i >= 8)
        {
            i = 0;
            P2 = P3 = 0x00;
            break;
        }
    }
    while(1)
    {
        P3 = P1 = a[j][i];
        delay(m);
        i++;
        if(i >= 8)
        {
            i = 0;
            P3 = P1 = 0x00;
            break;
        }
    }
    while(1)
    {
        P1 = P0 = a[j][i];
        delay(m);
        i++;
        if(i >= 8)
        {
            i = 0;
            P1 = P0 = 0x00;
            break;
        }
    }
}

void led2(int j,int i)
{
   while(1)
   {
        P0 = P3 = a[j][i];
        delay(m);
        i++;
        if(i >= 8)
        {
            i = 0;
            P0 = P3 = 0x00;
            break;
        }
   }
   while(1)
    {
        P2 = P1 = a[j][i];
        delay(m);
        i++;
        if(i >= 8)
        {
            i = 0;
            P2 = P1 = 0x00;
            break;
        }
    }
    while(1)
    {
        P3 = P0 = a[j][i];
        delay(m);
        i++;
        if(i >= 8)
        {
            i = 0;
            P3 = P0 = 0x00;
            break;
        }
    }
    while(1)
    {
        P1 = P2 = a[j][i];
        delay(m);
        i++;
        if(i >= 8)
        {
            i = 0;
            P1 = P2 = 0x00;
            break;
        }
    }
}

void led4(int j,int i)
{
   while(1)
   {
        P0 = P2 = P3 = P1 = a[j][i];
        delay(m);
        i++;
        if(i >= 8)
        {
            i = 0;
            P0 = P2 = P3 = P1 = 0x00;
            break;
        }
   }
      while(1)
   {
        P0 = P2 = P3 = P1 = a[j][i];
        delay(m);
        i++;
        if(i >= 8)
        {
            i = 0;
            P0 = P2 = P3 = P1 = 0x00;
            break;
        }
   }   while(1)
   {
        P0 = P2 = P3 = P1 = a[j][i];
        delay(m);
        i++;
        if(i >= 8)
        {
            i = 0;
            P0 = P2 = P3 = P1 = 0x00;
            break;
        }
   }   while(1)
   {
        P0 = P2 = P3 = P1 = a[j][i];
        delay(m);
        i++;
        if(i >= 8)
        {
            i = 0;
            P0 = P2 = P3 = P1 = 0x00;
            break;
        }
   }
  
}

C语言代码
#include<reg51.h>
int a[][8] = {    0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,
                0x03,0x06,0x0c,0x18,0x30,0x60,0xc0,0x80,
                0x07,0x0e,0x1c,0x38,0x70,0xe0,0xc0,0x80,
                0x0f,0x1e,0x3c,0x78,0xf0,0xe0,0xc0,0x80,
                0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0x7f,
                };
int m = 5000;
void delay(unsigned int x)
{
    while(x--);
}
void led1(int j,int i)
{
    while(1)
    {
        P0 = a[j][i];
        delay(m);
        i++;
        if(i >= 8)
        {
            i = 0;
            P0 = 0x00;
            break;                
        }
    }
    while(1)
    {
        P2 = a[j][i];
        delay(m);
        i++;
        if(i >= 8)
        {
            i = 0;
            P2 = 0x00;
            break;
        }
    }
    while(1)
    {
        P3 = a[j][i];
        delay(m);
        i++;
        if(i >= 8)
        {
            i = 0;
            P3 = 0x00;
            break;
        }
    }
    while(1)
    {
        P1 = a[j][i];
        delay(m);
        i++;
        if(i >= 8)
        {
            i = 0;
            P1 = 0x00;
            break;
        }
    }
}

void led3(int j,int i)
{
   while(1)
   {
        P0 = P2 = a[j][i];
        delay(m);
        i++;
        if(i >= 8)
        {
            i = 0;
            P0 = P2 = 0x00;
            break;
        }
   }
   while(1)
    {
        P2 = P3 = a[j][i];
        delay(m);
        i++;
        if(i >= 8)
        {
            i = 0;
            P2 = P3 = 0x00;
            break;
        }
    }
    while(1)
    {
        P3 = P1 = a[j][i];
        delay(m);
        i++;
        if(i >= 8)
        {
            i = 0;
            P3 = P1 = 0x00;
            break;
        }
    }
    while(1)
    {
        P1 = P0 = a[j][i];
        delay(m);
        i++;
        if(i >= 8)
        {
            i = 0;
            P1 = P0 = 0x00;
            break;
        }
    }
}

void led2(int j,int i)
{
   while(1)
   {
        P0 = P3 = a[j][i];
        delay(m);
        i++;
        if(i >= 8)
        {
            i = 0;
            P0 = P3 = 0x00;
            break;
        }
   }
   while(1)
    {
        P2 = P1 = a[j][i];
        delay(m);
        i++;
        if(i >= 8)
        {
            i = 0;
            P2 = P1 = 0x00;
            break;
        }
    }
    while(1)
    {
        P3 = P0 = a[j][i];
        delay(m);
        i++;
        if(i >= 8)
        {
            i = 0;
            P3 = P0 = 0x00;
            break;
        }
    }
    while(1)
    {
        P1 = P2 = a[j][i];
        delay(m);
        i++;
        if(i >= 8)
        {
            i = 0;
            P1 = P2 = 0x00;
            break;
        }
    }
}

void led4(int j,int i)
{
   while(1)
   {
        P0 = P2 = P3 = P1 = a[j][i];
        delay(m);
        i++;
        if(i >= 8)
        {
            i = 0;
            P0 = P2 = P3 = P1 = 0x00;
            break;
        }
   }
      while(1)
   {
        P0 = P2 = P3 = P1 = a[j][i];
        delay(m);
        i++;
        if(i >= 8)
        {
            i = 0;
            P0 = P2 = P3 = P1 = 0x00;
            break;
        }
   }   while(1)
   {
        P0 = P2 = P3 = P1 = a[j][i];
        delay(m);
        i++;
        if(i >= 8)
        {
            i = 0;
            P0 = P2 = P3 = P1 = 0x00;
            break;
        }
   }   while(1)
   {
        P0 = P2 = P3 = P1 = a[j][i];
        delay(m);
        i++;
        if(i >= 8)
        {
            i = 0;
            P0 = P2 = P3 = P1 = 0x00;
            break;
        }
   }
  
}

void main(void)
{
    int i = 0;
    while(1){
        int j = 0;
        P0 = 0x00;
        P2 = 0x00;
        P1 = 0x00;
        P3 = 0x00;
        while(j <= 4)
        {
            led1(j,i);
            j++;
        }
        j=0;
        while(j <= 4)
        {
            led2(j,i);
            j++;
        }
        j=0;
        while(j <= 4)
        {
            led3(j,i);
            j++;
        }
        j=0;
        while(j <= 4)
        {
            led4(j,i);
            j++;
        }
        j=0;
            
    }
}
仿真电路和代码

链接:https://pan.baidu.com/s/1vx33QiXO0uhXMq1ItUebNQ

提取码:5151文章来源地址https://www.toymoban.com/news/detail-731484.html

到了这里,关于C51单片机开发心形灯流水灯(C语言)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • C51单片机按键控制流水灯模式(定时器版本)以及定时器时钟

      上篇文章我们学了关于定时器的三大组成部分及许多寄存器的概念问题,这篇文章我们就要开始讲解实操部分。 首先,我们先来看看本文最后写成的代码:      以上三张是代码的主函数,此外,代码中还需用到的独立按键检测代码在下面:  注意:头文件中#ifndef和#def

    2023年04月17日
    浏览(45)
  • 51单片机入门流水灯

    上次已经实现了LED的点亮了,这篇文章将带大家实现流水灯。 要想实现流水灯首先就得知道什么是延时函数,延时函数的作用就是等待。比如延时一毫秒就是让程序在这里等待一毫秒。延时函数的本质就是执行一些空指令,因为执行指令需要耗费时间,所以执行一定数量的空

    2024年02月04日
    浏览(41)
  • 51单片机实现流水灯

    我们之前说过可以控制管脚口电平来控制LED的亮灭,低电平灯亮,高电平灯灭,具体可以看我之前的博客。 P20~P27可以用八位二进制数来表示每一位的电平,第八位是P20,第一位是P27,那么11111110就代表P20亮,其他灭,11101111就代表P24亮,其他灭。流水灯的代码就可以写成这样

    2024年02月11日
    浏览(43)
  • 【51单片机】键控流水灯

    设置k3作为启动键,只有先按下k3才能开始控制流水灯,按下k3后LED闪烁提示开始成功。 在按下k3后,其余键即可控制流水灯。其中k1执行从右到左,k2执行从左到右。 按下k4,执行外部中断,立马中止流水灯运行,需重新按下启动键重启。

    2024年02月06日
    浏览(35)
  • 51单片机按键控制流水灯

    1独立按键的原理图 按键所对应的引脚为P3的0、1、2、3引脚口,并且这里总共有四个独立按键,它们公共的一段都接到了 GND 电源的负极。这样我们就知道按键上电的默认电平为高电平。所以我们只需要控制按键按下时给一个低电平0,不按下时默认高电平1就行。  2按键控制

    2024年02月11日
    浏览(50)
  • 51单片机学习--LED流水灯

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

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

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

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

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

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

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

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

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

    2024年02月11日
    浏览(43)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包