【C51】Keil中的C51心形流水灯项目:硬件设计、软件实现与Proteus仿真

这篇博客将介绍如何在Keil中建立C51心形流水灯项目,包括硬件设计、软件实现和在Proteus中的电路仿真。通过详细的步骤指导和代码解释

1. 在keil中建立项目

当您想在Keil中建立一个项目时,首先需要打开Keil软件。然后按照以下步骤进行操作:

  1. 从菜单栏选择“Project”,然后点击“New Project”。
  2. 在弹出的对话框中选择保存项目的路径,并为项目命名。
  3. 在“Device”选项卡中选择您使用的单片机型号。
  4. 点击“OK”按钮创建项目。

在这里插入图片描述
接下来,在Keil中添加源文件和配置编译选项:

  1. 在左侧的“Project”窗口中,右键点击项目名称,然后选择“Add New Item to Group”。
  2. 在弹出的对话框中选择要添加的源文件,并点击“Add”按钮。
  3. 右键点击源文件,在弹出菜单中选择“Options for Source ‘filename.c’”。
  4. 在弹出的对话框中,您可以配置编译选项,例如优化级别、调试信息等。 配置完成后,点击“OK”按钮。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. 在proteus中画好电路图

在这里插入图片描述
在这里插入图片描述

3. 源代码

// main.c
#include <reg51.h>
sbit button = P1 ^ 7;
typedef unsigned char uchar;
typedef unsigned int uint;
void delay(uint xms) {
	while (xms--) {
		int i = 115;
		while (i--);
	}
}
void down() { // 自上而下
	char i; uchar mask;
	for (i = 0; i < 8; ++i) {
		mask = 1 << i;
		P0 = ~mask;
		P2 = ~mask;
		delay(500);
	}
}
void up() { // 自下而上
	char i; uchar mask;
	for (i = 7; i >= 0; --i) {
		mask = 1 << i;
		P0 = ~mask;
		P2 = ~mask;
		delay(500);
	}
}
void rotateR() { // 顺时针
	char i; uchar mask;
	for (i = 7; i >= 0; --i) {
		mask = 1 << i;
		P0 = ~mask;
		delay(500);
	}
	P0 = 0xFF;
	for (i = 0; i < 8; ++i) {
		mask = 1 << i;
		P2 = ~mask;
		delay(500);
	}
	P2 = 0xFF;
}
void rotateL() { // 逆时针
	char i; uchar mask;
	for (i = 0; i < 8; ++i) {
		mask = 1 << i;
		P0 = ~mask;
		delay(500);
	}
	P0 = 0xFF;
	for (i = 7; i >= 0; --i) {
		mask = 1 << i;
		P2 = ~mask;
		delay(500);
	}
	P2 = 0xFF;
}
void blink(int n) { // 闪烁
	uchar mask1 = 0xFF, mask2 = 0x00;
	while (n--) {
		P0 = P2 = mask2;
		delay(500);
		P0 = P2 = mask1;
		delay(500);
	}
}
void right() { //自左向右
	char i, j; uchar mask1, mask2;
	for (i = 3, j = 4; i >= 0; --i, ++j) {
		mask1 = 1 << i;
		mask2 = 1 << j;
		P0 = ~(mask1 | mask2);
		delay(500);
	}
	P0 = 0xFF;
	for (i = 0, j = 7; i <= 3; ++i, --j) {
		mask1 = 1 << i;
		mask2 = 1 << j;
		P2 = ~(mask1 | mask2);
		delay(500);
	}
	P2 = 0xFF;
}
void left() { //自右向左
	char i, j; uchar mask1, mask2;
	for (i = 3, j = 4; i >= 0; --i, ++j) {
		mask1 = 1 << i;
		mask2 = 1 << j;
		P2 = ~(mask1 | mask2);
		delay(500);
	}
	P2 = 0xFF;
	for (i = 0, j = 7; i <= 3; ++i, --j) {
		mask1 = 1 << i;
		mask2 = 1 << j;
		P0 = ~(mask1 | mask2);
		delay(500);
	}
	P0 = 0xFF;
}
void main() {
	while (1) {
		up();
		blink(3);
		down();
		blink(3);
		right();
		blink(3);
		left();
		blink(3);
		rotateR();
		blink(3);
		rotateL();
		blink(3);
	}
}

4. 实现效果

https://live.youkuaiyun.com/v/371088?spm=1001.2014.3001.5501

c51_心形流水灯

评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Q_hd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值