写一个用蓝桥杯单片机实现数码管上闪烁显示“8051”的程序
时间: 2024-03-17 14:41:02 浏览: 21
好的,以下是用蓝桥杯单片机实现数码管上闪烁显示“8051”的程序:
```c
#include <reg52.h>
#define LED P0
void delay(unsigned int t) // 延时函数
{
unsigned int i, j;
for (i = t; i > 0; i--)
for (j = 110; j > 0; j--);
}
void main()
{
while (1)
{
LED = 0x3f; // 显示“8051”
delay(500); // 延时 500ms
LED = 0xff; // 关闭数码管
delay(500); // 延时 500ms
}
}
```
注:以上程序使用的是共阴数码管,如果使用共阳数码管,需要将程序中的 `LED = 0x3f;` 修改为 `LED = 0xc0;`,`LED = 0xff;` 修改为 `LED = 0x00;`。
相关问题
写一个用蓝桥杯单片机实现数码管上飞入显示“CDHU”的程序
以下是用蓝桥杯单片机实现数码管上飞入显示“CDHU”的程序。假设使用的是51单片机,数码管的引脚分别接在P2口和P3口。
```
#include <reg51.h>
#define DELAY_TIME 100
unsigned char code segData[] = {
0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f // 数码管对应数字码表
};
void main() {
unsigned char i, j, k;
while (1) {
// 显示 "CDHU"
for (i = 0; i < 4; i++) {
P2 = segData[12 + i]; // 显示字母 C,D,H,U
P3 = 0x08 >> i; // 依次点亮数码管
delay(DELAY_TIME);
}
// 清除显示
for (j = 0; j < 4; j++) {
for (k = 0; k < 8; k++) {
P2 = 0xff; // 关闭所有数码管
P3 = 0x08 >> j; // 依次点亮数码管
delay(DELAY_TIME / 8);
}
}
}
}
void delay(unsigned int t) {
unsigned int i, j;
for (i = t; i > 0; i--) {
for (j = 110; j > 0; j--);
}
}
```
注:以上程序仅为参考,具体实现方法可能因所使用的单片机型号和数码管型号等因素而有所不同。
写一个用蓝桥杯单片机实现四个数码管上交替显示“2015”“LOVE”的程序
以下是用蓝桥杯单片机实现四个数码管上交替显示“2015”“LOVE”的程序。假设使用的是51单片机,数码管的引脚分别接在P2口和P3口。
```
#include <reg51.h>
#define DELAY_TIME 1000
unsigned char code segData[] = {
0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f // 数码管对应数字码表
};
void main() {
unsigned char i = 0;
while (1) {
// 显示 "2015"
P2 = 0xff; // 关闭所有数码管
P3 = 0x7f; // 选择第一个数码管
P2 = segData[2]; // 显示数字 2
delay(DELAY_TIME);
P2 = 0xff; // 关闭所有数码管
P3 = 0xbf; // 选择第二个数码管
P2 = segData[0]; // 显示数字 0
delay(DELAY_TIME);
P2 = 0xff; // 关闭所有数码管
P3 = 0xdf; // 选择第三个数码管
P2 = segData[1]; // 显示数字 1
delay(DELAY_TIME);
P2 = 0xff; // 关闭所有数码管
P3 = 0xef; // 选择第四个数码管
P2 = segData[5]; // 显示数字 5
delay(DELAY_TIME);
// 显示 "LOVE"
P2 = 0xff; // 关闭所有数码管
P3 = 0x7f; // 选择第一个数码管
P2 = segData[3]; // 显示字母 L
delay(DELAY_TIME);
P2 = 0xff; // 关闭所有数码管
P3 = 0xbf; // 选择第二个数码管
P2 = segData[9]; // 显示字母 O
delay(DELAY_TIME);
P2 = 0xff; // 关闭所有数码管
P3 = 0xdf; // 选择第三个数码管
P2 = segData[8]; // 显示字母 V
delay(DELAY_TIME);
P2 = 0xff; // 关闭所有数码管
P3 = 0xef; // 选择第四个数码管
P2 = segData[3]; // 显示字母 E
delay(DELAY_TIME);
}
}
void delay(unsigned int t) {
unsigned int i, j;
for (i = t; i > 0; i--) {
for (j = 110; j > 0; j--);
}
}
```
注:以上程序仅为参考,具体实现方法可能因所使用的单片机型号和数码管型号等因素而有所不同。