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

2023-11-03 01:59

本文主要是介绍C51单片机开发心形灯流水灯(C语言),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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


仿真电路


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

这篇关于C51单片机开发心形灯流水灯(C语言)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/334800

相关文章

VSCode开发中有哪些好用的插件和快捷键

《VSCode开发中有哪些好用的插件和快捷键》作为全球最受欢迎的编程工具,VSCode的快捷键体系是提升开发效率的核心密码,:本文主要介绍VSCode开发中有哪些好用的插件和快捷键的相关资料,文中... 目录前言1、vscode插件1.1 Live-server1.2 Auto Rename Tag1.3

Agent开发核心技术解析以及现代Agent架构设计

《Agent开发核心技术解析以及现代Agent架构设计》在人工智能领域,Agent并非一个全新的概念,但在大模型时代,它被赋予了全新的生命力,简单来说,Agent是一个能够自主感知环境、理解任务、制定... 目录一、回归本源:到底什么是Agent?二、核心链路拆解:Agent的"大脑"与"四肢"1. 规划模

C语言逗号运算符和逗号表达式的使用小结

《C语言逗号运算符和逗号表达式的使用小结》本文详细介绍了C语言中的逗号运算符和逗号表达式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习... 在C语言中逗号“,”也是一种运算符,称为逗号运算符。 其功能是把两个表达式连接其一般形式为:表达

Go语言实现桥接模式

《Go语言实现桥接模式》桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立地变化,本文就来介绍一下了Go语言实现桥接模式,感兴趣的可以了解一下... 目录简介核心概念为什么使用桥接模式?应用场景案例分析步骤一:定义实现接口步骤二:创建具体实现类步骤三:定义抽象类步骤四:创建扩展抽象类步

GO语言实现串口简单通讯

《GO语言实现串口简单通讯》本文分享了使用Go语言进行串口通讯的实践过程,详细介绍了串口配置、数据发送与接收的代码实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目录背景串口通讯代码代码块分解解析完整代码运行结果背景最近再学习 go 语言,在某宝用5块钱买了个

Python+wxPython开发一个文件属性比对工具

《Python+wxPython开发一个文件属性比对工具》在日常的文件管理工作中,我们经常会遇到同一个文件存在多个版本,或者需要验证备份文件与源文件是否一致,下面我们就来看看如何使用wxPython模... 目录引言项目背景与需求应用场景核心需求运行结果技术选型程序设计界面布局核心功能模块关键代码解析文件大

C++多线程开发环境配置方法

《C++多线程开发环境配置方法》文章详细介绍了如何在Windows上安装MinGW-w64和VSCode,并配置环境变量和编译任务,使用VSCode创建一个C++多线程测试项目,并通过配置tasks.... 目录下载安装 MinGW-w64下载安装VS code创建测试项目配置编译任务创建 tasks.js

GO语言zap日志库理解和使用方法示例

《GO语言zap日志库理解和使用方法示例》Zap是一个高性能、结构化日志库,专为Go语言设计,它由Uber开源,并且在Go社区中非常受欢迎,:本文主要介绍GO语言zap日志库理解和使用方法的相关资... 目录1. zap日志库介绍2.安装zap库3.配置日志记录器3.1 Logger3.2 Sugared

Go语言中如何进行数据库查询操作

《Go语言中如何进行数据库查询操作》在Go语言中,与数据库交互通常通过使用数据库驱动来实现,Go语言支持多种数据库,如MySQL、PostgreSQL、SQLite等,每种数据库都有其对应的官方或第三... 查询函数QueryRow和Query详细对比特性QueryRowQuery返回值数量1个:*sql

GO语言中gox交叉编译的实现

《GO语言中gox交叉编译的实现》本文主要介绍了GO语言中gox交叉编译的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录一、安装二、使用三、遇到的问题1、开启CGO2、修改环境变量最近在工作中使用GO语言进行编码开发,因