找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6064|回复: 2
收起左侧

在51hei开发板上实现数码管滚动显示字符

[复制链接]
ID:1 发表于 2010-4-11 01:12 | 显示全部楼层 |阅读模式

/************************************************
跳线设置:默认
显示效果:012345 这几个数字在51hei板子的后6个数码管中滚动显示
************************************************/
#include<reg52.h> //头文件
#include<intrins.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;k<150;k++) // 延时
 {
  h=0xfb;  //准备点亮数码管
  for(i=cnt;i<j;i++)
  {
  WEI=1;  //让位选的这个74hc573处于直通状态,也就是输入0,输出也是0,输入1输出也是1
  P0=h;   //点亮对应的数码管
  WEI=0;  //锁存 也就是保持74hc573现在这个时刻的输出状态一直不变

  DUAN=1; //同上哦
  P0=table;  //显示对应的数值
  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
}

 

下载地址:http://www.51hei.com/ziliao/51hei-5/数码管_滚动.rar

评分

参与人数 1黑币 +4 收起 理由
HAIHOUZI + 4 赞一个!

查看全部评分

回复

使用道具 举报

ID:14556 发表于 2010-8-28 16:00 | 显示全部楼层

学习中,谢谢

回复

使用道具 举报

ID:105786 发表于 2016-5-9 11:37 | 显示全部楼层
很好,学习了,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表