AT89C518×8 LED点阵屏数组方式显示一个字符和一个数字循环程序
时间: 2024-02-27 14:53:18 浏览: 22
好的,以下是AT89C518×8 LED点阵屏数组方式显示一个字符和一个数字循环程序的示例代码:
```
#include <reg52.h>
// 定义LED点阵屏的共阴极连接方式
#define LED_COM P0
// 定义LED点阵屏的阴极连接方式
#define LED_SEG P2
// 定义字符和数字的数组
unsigned char code LED_CharTable[] = {
0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F,
// 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71,
// A, b, C, d, E, F
0x76, 0x30, 0x1E, 0x38, 0x15, 0x54,
// G, H, I, J, K, L
0x3F, 0x73, 0x67, 0x50, 0x6D, 0x78,
// M, n, O, P, q, r
0x3E, 0x6B, 0x4F, 0x5C, 0x73, 0x67,
// S, t, U, V, W, X
0x50, 0x6D, 0x78, 0x1C, 0x2A, 0x76
// Y, Z, -, _, .
};
// 定义字符和数字的索引
unsigned char code LED_IndexTable[] = {
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99
};
// 定义当前显示的字符和数字的索引
unsigned char g_u8CharIndex = 0;
unsigned char g_u8NumberIndex = 0;
// 延时函数
void Delay(unsigned int u16ms) {
unsigned int i, j;
for(i = u16ms; i > 0; i--) {
for(j = 110; j > 0; j--);
}
}
// 显示一个字符
void ShowChar(unsigned char u8Index) {
LED_COM = LED_CharTable[u8Index];
}
// 显示一个数字
void ShowNumber(unsigned char u8Index) {
LED_COM = LED_CharTable[u8Index / 10];
LED_SEG = 0xFE;
Delay(1);
LED_SEG = 0xFF;
LED_COM = LED_CharTable[u8Index % 10];
}
// 主函数
void main(void) {
// 定义循环计数器
unsigned int i;
// 循环显示一个字符和一个数字
while(1) {
// 显示一个字符
ShowChar(LED_IndexTable[g_u8CharIndex]);
// 延时一段时间
for(i = 0; i < 1000; i++) {
Delay(1);
}
// 显示一个数字
ShowNumber(LED_IndexTable[g_u8NumberIndex]);
// 延时一段时间
for(i = 0; i < 1000; i++) {
Delay(1);
}
// 更新字符和数字的索引
g_u8CharIndex++;
if(g_u8CharIndex >= sizeof(LED_IndexTable)) {
g_u8CharIndex = 0;
}
g_u8NumberIndex++;
if(g_u8NumberIndex >= sizeof(LED_IndexTable)) {
g_u8NumberIndex = 0;
}
}
}
```
该程序使用了AT89C518微控制器和LED点阵屏,在数组方式下循环显示一个字符和一个数字,并且可以通过修改索引表来显示不同的字符和数字。其中,ShowChar和ShowNumber函数用于显示一个字符和一个数字,Delay函数用于延时一段时间,主函数则是循环调用这些函数来完成显示的过程。