51单片机100例实例之09例
//项目名称:8只数码管滚动显示多个不同字符
//项目再创作者:科技小宅神
//完成时间:2021/01/18
//备注:项目8没有了。

#include <reg52.h>
#include <intrins.h>//C51内部移位函数
#define uchar unsigned char
#define uint unsigned int
//段码表
uchar duan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80};//显示0-7
//1毫秒延时程序
void DelayMS(uint x)
{
uchar t;
while(x--)
{
for(t=0;t<120;t++);
}
}
//主程序
void main()
{
uchar i,j,k=0x80; //常量定义
P3 = 0xff; //先关闭数码管
P2 = 0x00;
while(1)//死循环
{ //刷新若干次,保持一段时间的稳定显示
for(i=0;i<30;i++)
{
for(j=0;j<8;j++)
{
P2=0x00;
k=_crol_(k,1);//逐次循环左移
P2=k; //发送位码
P3=duan[j]; //段码
DelayMS(200);
}
}
P2=0x00;//关闭所有数码管并延时
DelayMS(1000);
}
}