用C语言编写单片机16个爱心心跳代码
时间: 2023-08-02 12:22:27 浏览: 177
以下是用C语言编写单片机16个爱心心跳代码的示例:
```c
#include <reg51.h>
// 定义8个爱心的图案
unsigned char code Heart[8][8] = {
{0x00, 0x00, 0x1C, 0x3E, 0x7C, 0xF8, 0xF0, 0xE0},
{0x00, 0x00, 0x1C, 0x3E, 0x7C, 0xF8, 0xF0, 0xE0},
{0x00, 0x00, 0x38, 0x7C, 0xFE, 0xFE, 0xFC, 0xF8},
{0x00, 0x00, 0x70, 0xF8, 0xFE, 0xFE, 0xFC, 0xF8},
{0x00, 0x01, 0xE0, 0xF0, 0xFC, 0xFE, 0xFE, 0xFC},
{0x00, 0x03, 0xC0, 0xE0, 0xF8, 0xFC, 0xFE, 0xFC},
{0x00, 0x07, 0x80, 0xC0, 0x7C, 0xFE, 0xFE, 0x7C},
{0x00, 0x0F, 0x00, 0x80, 0x3E, 0xFE, 0xFE, 0x38}
};
void delay(unsigned int t) {
unsigned int i, j;
for(i = 0; i < t; i++) {
for(j = 0; j < 100; j++);
}
}
void main() {
unsigned int i, j, k;
unsigned char row = 0xFE; // 初始显示第一列
while(1) {
for(i = 0; i < 8; i++) {
P0 = row; // 输出行码
P1 = ~Heart[i][k]; // 输出列码
delay(1); // 延时1ms
}
row = (row << 1) | 0x01; // 移位显示下一列
if(row == 0xFF) { // 如果已经显示完16列,则重新开始
row = 0xFE;
}
delay(10); // 延时10ms
}
}
```
这段代码使用了8x8的矩阵LED点阵来显示16个爱心,每个爱心由8行8列的点阵组成。每隔10ms,显示器会向左移动一列,直到显示完16列后重新开始。
阅读全文