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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2530|回復: 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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久999 | 美国av毛片| 久久久久久国产精品mv | 亚洲国产精品久久 | 久久久久久国产精品免费免费狐狸 | 99视频在线看 | 91玖玖 | 视频一区二区国产 | 欧洲毛片 | 国产小u女发育末成年 | 一本色道精品久久一区二区三区 | 欧美狠狠操| 奇米av | 亚洲午夜精品一区二区三区他趣 | 操久久 | 天堂成人av | 日韩中文字幕一区二区 | 欧美激情 一区 | 日皮视频免费 | 人人人人爽 | 久久综合一区二区三区 | 中文字幕在线视频免费观看 | 国产成人精品一区二区在线 | 久草网在线视频 | 91精品在线看 | 拍真实国产伦偷精品 | 99自拍视频 | 亚洲美女在线一区 | 黄网站涩免费蜜桃网站 | 蜜桃在线一区二区三区 | 欧美一级久久 | 福利一区在线观看 | 国产精品国产成人国产三级 | 日韩精品免费一区 | 欧美日韩成人 | 日韩一区二区在线视频 | h片免费在线观看 | 亚洲成人精品 | 亚洲一区二区三区视频在线 | 日韩一区在线视频 | 久久尤物免费一区二区三区 |