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

標題: 我想問一下如何用delay函數做出一個動態掃描數碼管。郭天祥的板子。我邏輯那錯了? [打印本頁]

作者: 單片機在想peach    時間: 2019-11-4 14:38
標題: 我想問一下如何用delay函數做出一個動態掃描數碼管。郭天祥的板子。我邏輯那錯了?
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
uchar num2;
uchar num;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,                                                                                                                          
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay (uchar z)
{
        uchar x,y;
        for(x=z;x>0;x--)
        for(y=110;y>0;y--);
}
void main()
{        
        num2=wela;   
        wela=0xfe;
        while(1)
        {
                for(num=1;num<7;num++)
                 {
                         wela=1;
                        P0=num2;
                        wela=0;
                        delay(1000);
                        num2=_crol_(num2,1);
                        dula=1;                        
                        P0=table[num];
                        dula=0;
                        if(num2==0xbf)
                        num2=0xfe;
                }
        }               
}


作者: 單片機在想peach    時間: 2019-11-4 14:45
編輯沒問題運行后六個管子一起亮一起顯示由一變化到七
作者: _4061N_    時間: 2019-11-4 18:23
main的第一行
        num2=wela;   
        wela=0xfe;

很明顯的時序錯誤,而且wela是sbit  類型,不應該賦0和1以外的值。

應修改為
        num2=0xfe;
作者: mengzhixinheng    時間: 2019-11-4 20:00
num2沒有初值
作者: mengzhixinheng    時間: 2019-11-4 20:08
如果是共陰極數碼管,必須用1移位取反
作者: xianfajushi    時間: 2019-11-4 22:48
那你的問題是蝦米?從你描述可以證明你已經做到了。
作者: wulin    時間: 2019-11-4 23:16
單片機在想peach 發表于 2019-11-4 14:45
編輯沒問題運行后六個管子一起亮一起顯示由一變化到七

賦值錯誤
       num2=wela;   
       wela=0xfe;
順序錯誤
       wela=1;
       P0=num2;
       wela=0;
       delay(1000);//延時參數不可以超過uchar類型255
       num2=_crol_(num2,1);
       dula=1;                        
       P0=table[num];
       dula=0;
       if(num2==0xbf)
       num2=0xfe;


  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. sbit dula=P2^6;
  6. sbit wela=P2^7;
  7. uchar num2;
  8. uchar num;
  9. uchar code table[]={
  10. 0x3f,0x06,0x5b,0x4f,
  11. 0x66,0x6d,0x7d,0x07,
  12. 0x7f,0x6f,0x77,0x7c,
  13. 0x39,0x5e,0x79,0x71};
  14. void delay (uchar z)
  15. {
  16.         uchar x,y;
  17.         for(x=z;x>0;x--)
  18.                 for(y=110;y>0;y--);
  19. }
  20. void main()
  21. {        
  22.         num2=0xfe;   
  23.         while(1)
  24.         {
  25.                 for(num=1;num<7;num++)
  26.                 {
  27.                         P0=0x00;//消除鬼影
  28.                         dula=1;
  29.                         dula=0;

  30.                         P0=num2;//送位碼
  31.                         wela=1;
  32.                         wela=0;

  33.                         P0=table[num];//送段碼
  34.                         dula=1;
  35.                         dula=0;
  36.                         delay(2);//延時2ms
  37.                         num2=_crol_(num2,1);
  38.                         if(num2==0xbf)
  39.                                 num2=0xfe;
  40.                 }
  41.         }               
  42. }
復制代碼




作者: 累不死的狗    時間: 2019-11-4 23:47
單片機在想peach 發表于 2019-11-4 14:45
編輯沒問題運行后六個管子一起亮一起顯示由一變化到七

你想實現什么結果
作者: 累不死的狗    時間: 2019-11-4 23:52
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
uchar num2;
uchar num;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,                                                                                                                          
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay (uchar z)
{
        uchar x,y;
        for(x=z;x>0;x--)
        for(y=110;y>0;y--);
}
void main()
{        
              wela=0xfe;
        num2=wela;   

        while(1)
        {
                for(num=1;num<7;num++)
                 {
                         wela=1;
                        P0=num2;
                        wela=0;
                        delay(1000);
                        num2=_crol_(num2,1);
                        dula=1;                        
                        P0=table[num];
                        dula=0;
                        if(num2==0xbf)
                        num2=0xfe;
                }
        }               
}
這樣應該就沒問題了
作者: zhy123654    時間: 2019-11-5 08:21
我來學習一下,我看到這個是共陰的數碼管為什么位碼只用一個就行了
作者: 單片機在想peach    時間: 2019-11-5 19:59
wulin 發表于 2019-11-4 23:16
賦值錯誤
       num2=wela;   
       wela=0xfe;

對的解決了
作者: 單片機在想peach    時間: 2019-11-5 19:59
_4061N_ 發表于 2019-11-4 18:23
main的第一行
        num2=wela;   
        wela=0xfe;


作者: 單片機在想peach    時間: 2019-11-5 20:01
累不死的狗 發表于 2019-11-4 23:52
#include
#include
#define uchar unsigned char

后面修改了一下
這樣就可以達成掃描數碼管了
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
uchar num2;
uchar num;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,                                                                                                                          
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay (uchar z)
{
        uchar x,y;
        for(x=z;x>0;x--)
        for(y=100
                ;y>0;y--);
}
void main()
{      
                dula=0;
                wela=0;
        num2=0xfe;   
        while(1)
        {
                for(num=1;num<7;num++)
                 {
                        wela=1;
                        P0=num2;
                        wela=0;
                                                num2=_crol_(num2,1);
                        delay(10);              
                        dula=1;                        
                        P0=table[num];
                        dula=0;
                                                delay(10);
                        if(num2==0xbf)
                        num2=0xfe;
                                                wela=1;
                                                dula=1;
                                                P0=0x00;
                                                delay(5);
                                                wela=0;
                                                dula=0;         
                }
        }               
}

作者: 單片機在想peach    時間: 2019-11-5 20:02
_4061N_ 發表于 2019-11-4 18:23
main的第一行
        num2=wela;   
        wela=0xfe;

對的然后再消影




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