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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 5022|回復(fù): 2
收起左側(cè)

請(qǐng)幫忙指導(dǎo)一下單片機(jī)8位共陽數(shù)碼管循環(huán)顯示0-9,謝謝!

[復(fù)制鏈接]
ID:709752 發(fā)表于 2020-3-26 22:50 | 顯示全部樓層 |閱讀模式
各位高手你們好!我這個(gè)51開發(fā)板(STC89C52)是10多年前的板子;板子上是2組4位共陽數(shù)碼管,組成的8位數(shù)碼管;沒有

鎖存器;位選是用三極管驅(qū)動(dòng)的。請(qǐng)高手們。幫我優(yōu)化一下這個(gè)程序。謝謝!!!
循環(huán)顯示.png
/*****八位數(shù)碼管循環(huán)顯示數(shù)字0--9;這是個(gè)笨方法,請(qǐng)高手指點(diǎn),謝謝!*****/

單片機(jī)源程序如下:
  1. #include "reg52.h"
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uint i,j;

  5. uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x00,0x90};//段選數(shù)字0-9;
  6. uchar code  wela[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位選開關(guān)

  7. void delay()
  8.    {
  9.      unsigned char i,j;
  10.      for(i=250;i>0;i--)
  11.      {
  12.           for(j=250;j>0;j--);
  13.           }

  14.    }  
  15. void main()
  16.   {
  17.     while(1)
  18.     {
  19.       for(i=0;i<8;i++)
  20.         {
  21.           P2=wela[i] ;
  22.                   
  23.           P0=table[i];
  24.                    delay();
  25.                     delay();
  26.                          delay(); }//第一次依次顯示0--7;
  27.                   for(i=0;i<2;i++)
  28.                   {
  29.                   P2=wela[i];
  30.                   P0=table[8+i];
  31.                   delay();
  32.                   delay();
  33.                          delay();
  34.                   }//循環(huán)下來,第一位顯示8,第二位顯示9;
  35.               for(i>=2;i<8;i++)
  36.                             {
  37.                                   P2=wela[i];
  38.                           P0=table[i-2];
  39.                           delay();
  40.                                   delay();
  41.                          delay();
  42.                                 }//從第三位到第八位顯示0--5;
  43.                                    for(i=0;i<4;i++)
  44.                             {
  45.                                P2=wela[i];
  46.                                P0=table[6+i];
  47.                                delay();
  48.                                            delay();
  49.                          delay();
  50.                                            }//繼續(xù)從第1位到第四位顯示6--9;
  51.                                            for(i>=4;i<8;i++)
  52.                                              {
  53.                                                          P2=wela[i];
  54.                                     P0=table[i-4];
  55.                                     delay();
  56.                                                         delay();
  57.                          delay();
  58.                                                  }//從第五位到第八位顯示0--3;
  59.                                             for(i=0;i<6;i++)
  60.                                      {
  61.                                         P2=wela[i];
  62.                                         P0=table[4+i];
  63.                                         delay();
  64.                                                                 delay();
  65.                          delay();
  66.                                                     }//從第1位到第六位顯示4--9;
  67.                                                     for(i>=6;i<8;i++)
  68.                                                        {
  69.                                                                   P2=wela[i];
  70.                                              P0=table[i-6];
  71.                                              delay();
  72.                                                                          delay();
  73.                          delay();
  74.                                                            }//從第七位到第八位顯示0和1;
  75.                                                                         for(i=0;i<8;i++)
  76.                                            {
  77.                                                P2=wela[i] ;
  78.                                                                                              P0=table[i+2];
  79.                                                        delay();
  80.                                                        delay();
  81.                                                            delay(); }//從第一位到第八位顯示2--9;完成一個(gè)整

  82. 循環(huán)。

  83.    }
  84.    }
復(fù)制代碼

回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2020-3-27 08:12 | 顯示全部樓層
添加一個(gè)顯示緩存,可以大幅度簡化代碼。
  1. #include "reg52.h"
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uint i,j,k;
  5. uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//段選數(shù)字0-9;
  6. uchar code  wela[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位選開關(guān)
  7. uchar data dis_buf[11];//顯示緩存
  8. void delay(uint k) //ms延時(shí)程序
  9. {
  10.         uint i,j;
  11.         for(i=k;i>0;i--)
  12.                 for(j=120;j>0;j--);
  13. }  
  14. void main()
  15. {
  16.         for(i=0;i<10;i++)
  17.         {//將需要顯示的數(shù)字0~9按序保存在顯示緩存中
  18.                 dis_buf[i]=table[i];       
  19.         }
  20.         while(1)
  21.         {
  22.                 P0=0xff;//消隱
  23.                 P2=wela[j];//送位碼
  24.                 P0=dis_buf[j];//送段碼
  25.                 j++;        //數(shù)碼管動(dòng)態(tài)顯示計(jì)數(shù)
  26.                 if(j==8)
  27.                 {
  28.                         j=0;
  29.                         k++;    //更新速度計(jì)數(shù)
  30.                         if(k==50)//可以調(diào)整顯示更新速度
  31.                         {
  32.                                 k=0;
  33.                                 dis_buf[10]=dis_buf[0];//將顯示緩存0移動(dòng)到10
  34.                                 for(i=0;i<10;i++)
  35.                                 {
  36.                                         dis_buf[i]=dis_buf[i+1];//顯示緩存全部移動(dòng)一位
  37.                                 }
  38.                         }
  39.                 }
  40.                 delay(2);//控制主循環(huán)速度
  41.         }
  42. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

ID:709752 發(fā)表于 2020-3-27 12:15 | 顯示全部樓層
wulin 發(fā)表于 2020-3-27 08:12
添加一個(gè)顯示緩存,可以大幅度簡化代碼。

謝謝您!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久一区二区三区 | 国外成人在线视频网站 | 亚洲日韩中文字幕一区 | 日韩av免费在线电影 | 国产午夜精品一区二区三区四区 | 一区二区三区精品视频 | 日本精品一区二区三区在线观看视频 | 国产激情免费视频 | 日韩电影免费在线观看中文字幕 | 日日夜夜精品视频 | 五月槐花香 | 精精国产xxxx视频在线 | 亚洲一区二区在线视频 | 亚洲精品一区二区三区 | 在线视频 欧美日韩 | 亚洲欧美一区二区三区在线 | 特一级毛片 | 一区二区三区欧美在线观看 | 午夜av电影 | 国产成人免费视频网站视频社区 | 亚洲毛片一区二区 | 亚洲国产精品日本 | 国产精品美女久久久av超清 | 久久精品91久久久久久再现 | 日韩在线免费视频 | 91欧美| 免费观看av | 国产精品综合久久 | 精品一区国产 | 亚洲成人精品免费 | 视频在线亚洲 | 国产在线视频一区 | av在线一区二区三区 | 日本天堂一区 | 色综合一区| 午夜激情影院 | 色婷婷一区 | 美女国产| 国产精品极品美女在线观看免费 | 97久久精品午夜一区二区 | 国产99热 |