这篇博客将介绍如何在Keil中建立C51心形流水灯项目,包括硬件设计、软件实现和在Proteus中的电路仿真。通过详细的步骤指导和代码解释
1. 在keil中建立项目
当您想在Keil中建立一个项目时,首先需要打开Keil软件。然后按照以下步骤进行操作:
- 从菜单栏选择“Project”,然后点击“New Project”。
- 在弹出的对话框中选择保存项目的路径,并为项目命名。
- 在“Device”选项卡中选择您使用的单片机型号。
- 点击“OK”按钮创建项目。

接下来,在Keil中添加源文件和配置编译选项:
- 在左侧的“Project”窗口中,右键点击项目名称,然后选择“Add New Item to Group”。
- 在弹出的对话框中选择要添加的源文件,并点击“Add”按钮。
- 右键点击源文件,在弹出菜单中选择“Options for Source ‘filename.c’”。
- 在弹出的对话框中,您可以配置编译选项,例如优化级别、调试信息等。 配置完成后,点击“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_心形流水灯

5330





