51单片机数码管滚动显示3个数字用LSA,LSB,LSC函数代码
时间: 2024-03-25 22:39:33 浏览: 96
以下是使用LSA、LSB、LSC函数控制51单片机数码管滚动显示3个数字的示例代码:
```c
#include <reg51.h>
// 数码管段选信号控制函数
void LSA(unsigned char i)
{
P2 = (P2 & 0x1F) | (i & 0xE0);
}
void LSB(unsigned char i)
{
P2 = (P2 & 0x3F) | (i & 0xC0);
}
void LSC(unsigned char i)
{
P2 = (P2 & 0x7F) | (i & 0x80);
}
// 数码管显示函数
void display(unsigned char *p)
{
unsigned char i;
for (i = 0; i < 8; i++)
{
LSA(1 << i); // 选中第i位数码管段
LSB(*p); // 在该数码管上显示*p的值
LSC(0x00); // 显示该数码管
delay(10); // 延时一段时间
LSC(0x80); // 关闭该数码管
p++; // 指向下一个数字
}
}
// 延时函数
void delay(unsigned int t)
{
unsigned int i, j;
for (i = 0; i < t; i++)
{
for (j = 0; j < 1000; j++);
}
}
// 主函数
void main()
{
unsigned char num[3] = {1, 2, 3}; // 要显示的数字
unsigned char i, j;
while (1)
{
for (i = 0; i < 3; i++)
{
for (j = 0; j < 100; j++)
{
display(num + i); // 显示数字数组中的第i个数字
}
}
}
}
```
在上面的代码中,LSA、LSB、LSC函数分别用于控制数码管的段选信号,具体实现方式可参考数码管的接口定义。display函数用于在数码管上显示一个3位数字,它通过调用LSA、LSB、LSC函数来控制数码管的显示。delay函数是一个简单的延时函数,用于控制数码管的刷新速度。在主函数中,我们通过循环调用display函数来实现数码管的滚动显示效果。
阅读全文