欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 單片機8只數碼管滾動顯示16個數字的程序 亮度太低,速度太快 請高手支支招 [打印本頁]

作者: renwxzy    時間: 2021-4-30 21:11
標題: 單片機8只數碼管滾動顯示16個數字的程序 亮度太低,速度太快 請高手支支招
想寫個滾動顯示數字的程序,8個數碼管滾動顯示16個數字,雖然程序可以實現,但是亮度太低,速度太快,該怎么修改呢,請高手支支招

單片機源程序如下:
#include <REG51.H>
#define uchar unsigned char
#define uint unsigned int

uchar code table[] = { 0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71, 0x00};
uchar code wei[] = { 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};

void delay(uint x)
{
        uchar j;
        uint i;
        
        for( i = 0; i < x; i++ )
                for( j = 0; j < 111; j++ );
}

void main(void)
{
         uchar i;
        uint j;
        P1 =P0 = 0x00;
        while(1){
                 for( i = 0; i < 16; i++ ){
                        for( j = 0; j < 8; j++ ){  
                                delay(1);
                                 P1 = table[(i+j)%16];
                                P0 = wei[j];
                                delay(20);
                        }
                        delay(200);
                }
        }
}


作者: 人人學會單片機    時間: 2021-5-1 09:36
https://www.bilibili.com/video/BV1Jx411Z7yC?p=1
作者: wulin    時間: 2021-5-1 10:47
  1. #include <REG51.H>
  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
  5. uchar code wei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

  6. void delay(uint x)
  7. {
  8.         uint i,j;
  9.         for(i=0;i<x;i++)
  10.                 for(j=0;j<111;j++);
  11. }

  12. void main(void)
  13. {
  14.         uchar i,k;
  15.         uint j;
  16.         while(1)
  17.         {
  18.                 P1=0x00;//段消隱
  19.                 P0=wei[i];//送位碼
  20.                 P1=table[i];//送段碼
  21.                 i=++i%8;//8位動態顯示計數
  22.                 if(++j>=1000)//約1秒
  23.                 {
  24.                         j=0;
  25.                         table[16]=table[0];
  26.                         for(k=0;k<16;k++)//數組循環排序
  27.                                 table[k]=table[k+1];
  28.                 }
  29.                 delay(1);
  30.         }
  31. }
復制代碼



作者: mengzhixinheng    時間: 2021-5-1 11:48
程序邏輯沒錯,但是不能那樣延時,需要用時時掃描來做延時替換掉delay(200)
作者: renwxzy    時間: 2021-5-1 16:30
明白了 多謝兩位總工 受教了
作者: renwxzy    時間: 2021-5-1 16:36
wulin 發表于 2021-5-1 10:47

多謝多謝 明白了 當時也想給每個數字延時 但是延時一長 就變成一個數字了 就是沒想到每輪多次掃描
作者: renwxzy    時間: 2021-5-1 16:37
mengzhixinheng 發表于 2021-5-1 11:48
程序邏輯沒錯,但是不能那樣延時,需要用時時掃描來做延時替換掉delay(200)

多謝多謝 明白了
作者: MOVEORDIE    時間: 2021-5-1 18:44
亮度低改小限流電阻仍不能滿足要求的話,不要用空操作延時。可以把顯示放中斷,每次中斷顯示一位,顯示完后不要關閉。等到下次進入中斷刷新前再關閉顯示,然后再顯示下一位,這樣的亮度很高,每次中斷處理的時間也不長。我的中斷時間是2.5ms,你可以根據自己的情況調整中斷時間。




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1