久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2422|回復: 8
打印 上一主題 下一主題
收起左側

單片機數碼管滾動顯示,滾動的程序怎么做?求思路

[復制鏈接]
跳轉到指定樓層
樓主
51單片機控制數碼管滾動顯示8個數就是01234567
      70123456
      67012345
       ...
  1. #include "reg52.h"
  2. sbit LSA=P2^2;
  3. sbit LSB=P2^3;
  4. sbit LSC=P2^4;
  5. unsigned char seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  6. void delay(unsigned int i)
  7. {
  8.         while(i--);
  9. }
  10. void main()
  11. {
  12.         while(1)
  13.         {
  14.                 unsigned char i;
  15.                 for(i=0;i<8;i++)
  16.                 {
  17.                    switch(i)
  18.                         {
  19.                                 case 0: LSC=1;LSB=1;LSA=1;break;
  20.                                 case 1: LSC=1;LSB=1;LSA=0;break;
  21.                                 case 2: LSC=1;LSB=0;LSA=1;break;
  22.                                 case 3: LSC=1;LSB=0;LSA=0;break;
  23.                                 case 4: LSC=0;LSB=1;LSA=1;break;
  24.                                 case 5: LSC=0;LSB=1;LSA=0;break;
  25.                                 case 6: LSC=0;LSB=0;LSA=1;break;
  26.                                 case 7: LSC=0;LSB=0;LSA=0;break;
  27.                         }
  28.                 P0=seg[i];
  29.                 delay(50);
  30.                
  31.                 }
  32.         }
  33. }
復制代碼
這寫完了數碼管顯示八個數
滾動顯示八個數怎么樣寫?思路是怎樣的

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:161164 發表于 2021-12-31 00:46 | 只看該作者
簡單數學問題



回復

使用道具 舉報

板凳
ID:277550 發表于 2021-12-31 10:02 | 只看該作者
用數組,循環改變
回復

使用道具 舉報

地板
ID:584814 發表于 2021-12-31 10:39 | 只看該作者
分析:共有8位只顯示8數位置循環,也就是說第8位下次代替第1而第1之后都白后移,
方法很多最簡單的就是用余數,每次循環后數的倍數+1與8整除取余數就是新位置,P0=seg[i];中的i
所以修改一下程序就可以,可以再加個外循環,這個變量+i后和8取余數就OK
例:......
                unsigned char i , j ; //修改,增加 j 變量
                for(j = 0 ; i < 8 ; j ++) //增加循環
                { //新增
               ......
                P0=seg[ ( i + j ) % 8 ]; //修改,取余數
                }  //新增
......
回復

使用道具 舉報

5#
ID:213173 發表于 2022-1-1 10:07 | 只看該作者
  1. #include "reg52.h"
  2. sbit LSA=P2^2;
  3. sbit LSB=P2^3;
  4. sbit LSC=P2^4;
  5. unsigned char code seg[]={
  6.         0x3f,0x06,0x5b,0x4f,
  7.         0x66,0x6d,0x7d,0x07,
  8.         0x7f,0x6f,0x77,0x7c,
  9.         0x39,0x5e,0x79,0x71};
  10. unsigned char data dis_buf[8];

  11. void delay(unsigned int i)
  12. {
  13.         while(i--);
  14. }

  15. void main()
  16. {
  17.         unsigned char i,j,k,t;

  18.         for(k=0;k<8;k++)
  19.                 dis_buf[k]=seg[k];//初始顯示緩存

  20.         while(1)
  21.         {
  22.                 P0=0x00;//消隱
  23.                 P2&=0xe3;//清位碼
  24.                 P2|=7-i<<2;//送位碼
  25.                 P0=dis_buf[i];//送段碼
  26.                 delay(550);        //延時,保持顯示一段時間
  27.                 i=++i%8;//0~7循環
  28.                 t++;
  29.                 if(t>=250)//
  30.                 {
  31.                         t=0;
  32.                         j=++j%16;//0~15循環
  33.                         for(k=0;k<8;k++)
  34.                                 dis_buf[k]=seg[(k+j)%16];//導入緩存
  35.                 }
  36.         }
  37. }
復制代碼
回復

使用道具 舉報

6#
ID:332444 發表于 2022-1-1 10:49 | 只看該作者
回復

使用道具 舉報

7#
ID:999096 發表于 2022-1-1 21:38 | 只看該作者
位選循環切換,左移一位,
回復

使用道具 舉報

8#
ID:995903 發表于 2022-1-3 19:54 | 只看該作者
xianfajushi 發表于 2022-1-1 10:49
https://blog.csdn.net/xianfajushi/article/details/106419914

謝謝謝謝
回復

使用道具 舉報

9#
ID:979299 發表于 2022-1-3 22:16 | 只看該作者
來個最簡間的思路
#include<reg52.h>
#define DataPort P0 //定義段數據端口
#define SegPort  P2 //定義位數據端口

unsigned char code dofly_DuanMa[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                                                                   0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,
                                                                0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};
unsigned char code dofly_WeiMa[]={0,1,2,3,4,5,6,7};

void Delay(unsigned int t);

main()
{
        unsigned char i=0,num;
        unsigned int j;
        while(1)
        {
                SegPort=dofly_WeiMa[i]; //取位碼
                DataPort=dofly_DuanMa[num+i]; //取段碼
                Delay(200);
                i++;j++;
                if(8==i)   
                i=0;
                if(j==500)
                {
                        j=0;
                        num++;
                        if(num==16)
                        num=0;
                }
        }
}

void Delay(unsigned int t)
{
        while(--t);
}
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91福利网址| 国产精品久久久久久久久免费相片 | 日韩欧美在线免费观看视频 | 国产精品99 | 国产激情视频网站 | 亚洲一区成人 | 亚洲在线 | 一级a性色生活片久久毛片 午夜精品在线观看 | 不卡视频一区二区三区 | 天天干b| 精品无码久久久久久国产 | 国产成人精品视频 | 日本精品久久久久久久 | 天天爱av | 精品无码三级在线观看视频 | 性做久久久久久免费观看欧美 | 欧美视频一区二区三区 | 日韩一级| 日韩欧美三级电影 | 国产 日韩 欧美 中文 在线播放 | 九九福利| 黄片毛片在线观看 | 亚洲综合在线视频 | 国产精品一卡二卡三卡 | 日韩a在线| 成人在线视频一区 | 精品国产91| 日韩在线小视频 | 国产乱xxav| 美女三区 | 久久久久久看片 | 日韩在线成人 | 国产69久久精品成人看动漫 | 91国在线高清视频 | 精精国产xxxx视频在线 | 中文字幕精品一区 | 特级做a爰片毛片免费看108 | 日本免费一区二区三区视频 | 国产免费a视频 | 丁香久久 | 精品欧美黑人一区二区三区 |