基于keil如何连接c51和74ls154a的引脚实现16×16点阵滚动显示姓名学号
时间: 2024-05-04 09:21:23 浏览: 139
首先,需要将C51单片机和74LS154A芯片引脚进行连接,具体连接方式如下:
C51单片机 -> 74LS154A芯片
P1.0 -> A0
P1.1 -> A1
P1.2 -> A2
P1.3 -> A3
P1.4 -> A4
P1.5 -> A5
P1.6 -> G2A
P1.7 -> G2B
注:上述连接方式为示例,具体连接方式应根据芯片引脚定义进行调整。
接下来,可以使用keil编写程序实现16×16点阵的滚动显示姓名和学号。以下是一个简单的示例程序,可供参考:
```c
#include <reg51.h>
#define LED P0
void delay(unsigned int t) // 延时函数
{
unsigned int i, j;
for (i = 0; i < t; i++)
for (j = 0; j < 123; j++);
}
void display(unsigned char *name, unsigned char *id) // 显示函数
{
unsigned char i, j;
for (j = 0; j < 16; j++)
{
for (i = 0; i < 8; i++)
{
LED = ~name[j * 8 + i];
P1 = j;
P1 |= 0x40;
delay(1);
}
for (i = 0; i < 8; i++)
{
LED = ~id[j * 8 + i];
P1 = j;
P1 &= 0xBF;
delay(1);
}
}
}
void main()
{
unsigned char name[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 姓名
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
unsigned char id[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 学号
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
unsigned char i, j;
while (1)
{
for (i = 0; i < 16; i++)
{
for (j = 0; j < 16; j++)
{
name[i * 16 + j] = ' '; // 清空姓名
id[i * 16 + j] = ' '; // 清空学号
}
}
for (i = 0; i < 8; i++)
{
name[15 * 16 + i] = 'N'; // 设置姓名
name[15 * 16 + i + 8] = 'a';
name[15 * 16 + i + 16] = 'm';
name[15 * 16 + i + 24] = 'e';
id[15 * 16 + i] = 'I'; // 设置学号
id[15 * 16 + i + 8] = 'D';
id[15 * 16 + i + 16] = ':';
id[15 * 16 + i + 24] = '1';
id[15 * 16 + i + 32] = '2';
id[15 * 16 + i + 40] = '3';
display(name, id); // 显示姓名和学号
}
}
}
```
在程序中,使用了delay函数实现了延时操作,display函数实现了点阵的显示操作。在main函数中,首先清空了姓名和学号的显示区域,然后设置了姓名和学号的显示内容,并不断调用display函数进行滚动显示。
最后,将程序下载到C51单片机上,连接74LS154A芯片和点阵模块,即可实现16×16点阵的滚动显示姓名和学号。
阅读全文