51单片机滚动显示代码
时间: 2023-10-29 16:07:57 浏览: 156
以下是基于51单片机的滚动显示代码:
```
#include <reg51.h> // 引入51单片机头文件
sbit LSA = P2^2;
sbit LSB = P2^3;
sbit LSC = P2^4;
unsigned char code duanxuan[] = { // 数码管段选编码表
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delay(unsigned int i) // 延时函数
{
while(i--);
}
void display(unsigned char *p) // 数码管显示函数
{
unsigned char i;
for(i=0;i<8;i++)
{
switch(i)
{
case(0):
LSA=0;LSB=0;LSC=0;break; // 第一位数码管
case(1):
LSA=1;LSB=0;LSC=0;break; // 第二位数码管
case(2):
LSA=0;LSB=1;LSC=0;break; // 第三位数码管
case(3):
LSA=1;LSB=1;LSC=0;break; // 第四位数码管
case(4):
LSA=0;LSB=0;LSC=1;break; // 第五位数码管
case(5):
LSA=1;LSB=0;LSC=1;break; // 第六位数码管
case(6):
LSA=0;LSB=1;LSC=1;break; // 第七位数码管
case(7):
LSA=1;LSB=1;LSC=1;break; // 第八位数码管
}
P0=*(p+i); // 数码管段选
delay(100); // 延时控制数码管刷新速度
P0=0x00; // 关闭数码管
}
}
void main()
{
unsigned char i,j;
unsigned char a[8]={0}; // 定义一个数组,存放待显示的八个数码
while(1)
{
for(i=0;i<8;i++)
{
a[i]=i+1; // 数组赋值
for(j=0;j<50;j++) // 控制滚动速度
{
display(duanxuan+a[i]); // 显示当前值
}
}
}
}
```
以上代码基于 8 位数码管进行滚动显示,如果需要使用其他数码管需要修改相应的代码。另外,如果需要改变滚动速度可以通过调整延时的时间来实现。
阅读全文