用C语言编写单片机由16个LED灯组成的爱心心跳
时间: 2024-02-19 07:58:47 浏览: 22
以下是用C语言编写单片机由16个LED灯组成的爱心心跳的示例:
```c
#include <reg51.h>
sbit LED1 = P1^0;
sbit LED2 = P1^1;
sbit LED3 = P1^2;
sbit LED4 = P1^3;
sbit LED5 = P1^4;
sbit LED6 = P1^5;
sbit LED7 = P1^6;
sbit LED8 = P1^7;
sbit LED9 = P2^0;
sbit LED10 = P2^1;
sbit LED11 = P2^2;
sbit LED12 = P2^3;
sbit LED13 = P2^4;
sbit LED14 = P2^5;
sbit LED15 = P2^6;
sbit LED16 = P2^7;
// 定义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++) {
for(k = 0; k < 8; k++) {
if(Heart[i][k] & 0x80) LED1 = 1;
else LED1 = 0;
if(Heart[i][k] & 0x40) LED2 = 1;
else LED2 = 0;
if(Heart[i][k] & 0x20) LED3 = 1;
else LED3 = 0;
if(Heart[i][k] & 0x10) LED4 = 1;
else LED4 = 0;
if(Heart[i][k] & 0x08) LED5 = 1;
else LED5 = 0;
if(Heart[i][k] & 0x04) LED6 = 1;
else LED6 = 0;
if(Heart[i][k] & 0x02) LED7 = 1;
else LED7 = 0;
if(Heart[i][k] & 0x01) LED8 = 1;
else LED8 = 0;
if(Heart[i][k] & 0x80) LED9 = 1;
else LED9 = 0;
if(Heart[i][k] & 0x40) LED10 = 1;
else LED10 = 0;
if(Heart[i][k] & 0x20) LED11 = 1;
else LED11 = 0;
if(Heart[i][k] & 0x10) LED12 = 1;
else LED12 = 0;
if(Heart[i][k] & 0x08) LED13 = 1;
else LED13 = 0;
if(Heart[i][k] & 0x04) LED14 = 1;
else LED14 = 0;
if(Heart[i][k] & 0x02) LED15 = 1;
else LED15 = 0;
if(Heart[i][k] & 0x01) LED16 = 1;
else LED16 = 0;
delay(1); // 延时1ms
}
}
delay(10); // 延时10ms
}
}
```
这段代码使用了16个LED灯来显示16个爱心,每个爱心由8行8列的点阵组成。每隔10ms,LED灯会显示下一列的点阵,直到显示完16列后重新开始。