数码管移动.c
来自「AT89S52单片机程序50例(00-50)」· C语言 代码 · 共 37 行
C
37 行
//数码管移动,动态移动显示dofly
#include <reg52.h>
unsigned char const dofly[]={0,0,0,0,0,0,0,0, //不显示
0x6E,0x38,0x71,0x5C,0x5E, //DOFLY共阴值,显示时候取反
0,0,0,0,0,0,0,0,}; //dofly 码值
code unsigned char table[]={0,1,2,3,4,5,6,7}; //8位动态扫描值
//延时子程序
void delay(unsigned int cnt)
{
while(--cnt);
}
//主程序
void main()
{
unsigned char i,j; //定义内部变量
unsigned char a;
a=13; //移动13次,数码管个数8+显示字符个数5=13
while(1)
{
for(j=0;j<8;j++) //移动字符时间
{
for(i=0;i<8;i++) //动态扫描8位数码管
{
P0=dofly[i+a]; //取显示的码值
P2=table[7-i]; //取显示的位置
delay(300); //扫描延时大时会闪烁,小时会降低亮度并重影。
}
P2=0xFF; //有效的消除重影
}
a--;
if(a==0)
a=13; //重新循环
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?