在Keil软件中,先使LED灯依次点亮,再使LED点阵按9 8 7 6 5 4 3 2 1 0的顺序呈现。


点亮LED简单,
#include <reg51.h>
void delay(unsigned int t) // 延时函数
{
unsigned int i, j;
for(i=0; i<t; i++)
for(j=0; j<125; j++);
}
void main()
{
char i;
while(1)
{
for(i = 0; i< 8; i++){
P0 = ~(1 << i);
delay(500);
}
}
}
点阵屏,这个就是AI生成的了,我可没那个功夫写,自己整理一下吧,
#include <reg51.h>
// 数字0-9的编码模式
unsigned char code digitPatterns[10][8] = {
{0x3C, 0x42, 0x81, 0x81, 0x81, 0x81, 0x42, 0x3C}, // 0
{0x00, 0x10, 0x20, 0xFF, 0x00, 0x00, 0x00, 0x00}, // 1
{0x22, 0x41, 0x81, 0x81, 0x81, 0x81, 0x5E, 0x00}, // 2
{0x22, 0x41, 0x81, 0x89, 0x89, 0x89, 0x76, 0x00}, // 3
{0x18, 0x28, 0x48, 0xFF, 0x08, 0x08, 0x1F, 0x00}, // 4
{0xF2, 0x89, 0x89, 0x89, 0x89, 0x89, 0x8E, 0x00}, // 5
{0x3C, 0x66, 0x83, 0x81, 0x81, 0x81, 0x42, 0x00}, // 6
{0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, 0x00}, // 7
{0x36, 0x49, 0x89, 0x89, 0x89, 0x89, 0x76, 0x00}, // 8
{0x26, 0x49, 0x89, 0x89, 0x89, 0x89, 0x7E, 0x00} // 9
};
// 延时函数
void delay(unsigned int time) {
unsigned int i, j;
for (i = 0; i < time; i++)
for (j = 0; j < 1000; j++);
}
void main() {
unsigned char i, digit, row;
while (1) {
for (digit = 0; digit < 10; digit++) {
for (row = 0; row < 8; row++) {
// 设置P0口的数据线,发送当前行的数据
P0 = digitPatterns[digit][row];
// 设置P2口的译码器控制信号,选择要显示的公共端
P2 = ~(1 << (row % 3));
delay(1); // 持续时间,调整
// 关闭所有公共端
P2 = 0xFF;
// 短暂延时,创建多行扫描效果
delay(1);
}
}
}
这段代码中,使用了一个二维数组digitPatterns,其中存储了数字0-9的每一行数据。在循环中,通过依次设置P0口的数据线和P2口的译码器控制信号,实现逐行显示数字的效果。同时,通过短暂的延时和多行扫描,可以提高显示效果和亮度稳定性。
需要根据实际的硬件连线和点阵LED屏的型号,适当调整代码中的延时和亮度参数,以达到最佳显示效果。
请注意,以上代码仅提供了一个基本的示例,具体的实现可能会因硬件平台和点阵LED屏的不同而有所变化。确保根据您的实际硬件连接和点阵LED屏的规格进行相应的修改。