新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 数码管滚动显示数字程序

数码管滚动显示数字程序

作者:时间:2012-11-06来源:网络收藏

/************************************************
跳线设置:默认
显示效果:012345 这几个数字在51hei单片机板子的后6个
************************************************/
#includereg52.h> //头文件
#includeintrins.h>
#define uchar unsigned char
uchar code table[]={0x3f,0x06,0x5b,//显示的数值
0x4f,0x66,0x6d,0x00,0x00,0x00,0x00,
0x00,0x00,0x3f,0x06,0x5b,0x4f,0x66};
sbit DUAN=P2^6; //74HC573的LE端 U1 LED的段选端
sbit WEI=P2^7; //74HC573的LE端 U2 LED的位选端
uchar flag; //定义标志位
void main() //主函数
{
uchar i,j,k,h,cnt;//定义局部变量
TH0=0XF7; //装入初始值,时间约为2.5ms
TL0=0X00;
ET0=1; //开分控
EA=1; //开总控
TR0=1; //启动定时器
while(1)
{
j=cnt+6; //控制循环的数值
for(k=0;k150;k++) // 延时
{
h=0xfb; //准备点亮
for(i=cnt;ij;i++)
{
WEI=1; //让位选的这个74hc573处于直通状态,也就是输入0,输出也是0,输入1输出也是1
P0=h; //点亮对应的数码管
WEI=0; //锁存 也就是保持74hc573现在这个时刻的输出状态一直不变

DUAN=1; //同上哦
P0=table[i]; //显示对应的数值
DUAN=0;
while(!flag); //延时2.5ms
flag=0; //标志位清零,准备下次显示
DUAN=1;
P0=0x00; //关闭数码管,消隐
DUAN=0;
h=_crol_(h,1); //循环左移
}
}
cnt++; //加1,确定哪些数值显示
if(cnt==12) //移位的次数
cnt=0; //清零,准备下次显示
}
}
void time() interrupt 1 //定时器0
{
TH0=0XF7; //装入初值
TL0=0X00;
flag=1; //标志位置1
}



评论


相关推荐

技术专区

关闭