找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1442|回复: 6
打印 上一主题 下一主题
收起左侧

51普中单片机数码管滚动显示

[复制链接]
跳转到指定楼层
楼主
ID:1055060 发表于 2023-1-10 21:54 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如何让数码管像广告牌一样滚动显示0-8这个数字串
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:161164 发表于 2023-1-11 14:18 | 只看该作者
开一个缓存数组
数码管显示缓存数组的内容
缓存数组想放什么就放什么
回复

使用道具 举报

板凳
ID:629502 发表于 2023-1-11 15:33 | 只看该作者
把0-8这些要显示的数字对应的存起来,然后调用。
回复

使用道具 举报

地板
ID:213173 发表于 2023-1-11 17:30 | 只看该作者
你试试
  1. #include <reg51.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. uchar table[]={        //0~F数组
  5.         0x3f,0x06,0x5b,0x4f,
  6.         0x66,0x6d,0x7d,0x07,
  7.         0x7f,0x6f,0x77,0x7c,
  8.         0x39,0x5e,0x79,0x71};
  9. uchar data dis_buf[8];//缓存
  10. uchar temp;

  11. void delayms(uint k)
  12. {
  13.         uint i,j;  
  14.         for(i=k;i>0;i--)
  15.                 for(j=110;j>0;j--);
  16. }

  17. void main(void)
  18. {
  19.         uint t;
  20.         uchar i,j;
  21.         for(i=0;i<8;i++)
  22.                 dis_buf[i]=table[i];//初始化缓存
  23.         while(1)
  24.         {
  25.                 if(++t>=500)
  26.                 {
  27.                         t=0;
  28.                         temp=table[0];
  29.                         for(i=0;i<15;i++)                               
  30.                                 table[i]=table[i+1];//循环移动字符
  31.                         table[15]=temp;
  32.                         for(i=0;i<8;i++)
  33.                                 dis_buf[i]=table[i];//更新缓存
  34.                 }
  35.                 P0=0x00;                        //段消隐
  36.                 P2&=0xe3;                //清位码
  37.                 P2|=(j*4);                //送位码
  38.                 P0=dis_buf[j];        //送段码
  39.                 j=++j%8;
  40.                 delayms(1);//延时控制循环周期
  41.         }
  42. }
复制代码
回复

使用道具 举报

5#
ID:634587 发表于 2023-1-11 21:23 | 只看该作者
学了Arduino,才知道原来C51里面很难搞的程序随便下个库就有了。
回复

使用道具 举报

6#
ID:1061002 发表于 2023-1-12 10:43 | 只看该作者
table数表对应数码管编码
回复

使用道具 举报

7#
ID:963677 发表于 2023-1-12 15:31 | 只看该作者
可以用数组放置数字串的信息,在数码管中用for循环循环显示数据中的信息,然后不断左右移动就行,左右移动可以用原本显示的位置循环加上位移距离即可
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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