音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

關(guān)于MAX7219應(yīng)用的問題(附簡單驅(qū)動程序)

作者:ilovecr 欄目:單片機
關(guān)于MAX7219應(yīng)用的問題(附簡單驅(qū)動程序)
以下是簡單驅(qū)動讓5個數(shù)碼管顯示1 1 1 1 1
# include <reg51.h>
# define uCHAR unsigned CHAR
# define uint unsigned int
sbit din=P1^2;
sbit clk=P1^4;
sbit load=P1^3;
void LED_W (uCHAR DATA)           //LED寫數(shù)據(jù)函數(shù)
     {
       uint i;
       load=0;
       for(i=8;i>=1;i--)
          {
            clk=0;
            din=DATA&0x80;
            DATA=DATA<<1;
            clk=1;
           }
        load=1;
      }

void LED_INIT(void)
   {
        uint x=0;
        uCHAR LED_REG[10]={0x09,0xFF,0x0A,0x00,0x0B,0x04,0x0C,0x01,0x0F,0x00};
        for(x=0;x<=9;x++)
          {
           uint b;
           b=LED_REG[x];
           LED_W(b);
          }
}
void LED_DSP(uint a,uint d)

    {
      LED_W(a);
      LED_W(d);
    }

void main(void)
{

while(1)
      {
           LED_INIT();
           LED_DSP(0x01,0x01);
           LED_DSP(0x02,0x01);
           LED_DSP(0x03,0x01);
           LED_DSP(0x04,0x01);
           LED_DSP(0x05,0x01);
       }
    }

結(jié)果運行后顯示9 1 1 H 1
電路沒問題,請教,我的問題處在那里

2樓: >>參與討論
WX7134
沒仔細看,看我的自己慢慢研究吧

// MAX7219寄存器設(shè)置
void MAX7219_init (void)
{
    sent_data( 0x0C01 ); // 置LED為正常狀態(tài)
    sent_data( 0x0A04 ); // 置LED亮度為9/32
    sent_data( 0x0B03 ); // 置LED掃描范圍DIGIT0-3
    sent_data( 0x0900 ); // 置LED顯示為不譯碼方式

}

// 向MAX7219送數(shù)據(jù)函數(shù)              
void sent_data (unsigned int m)
{
     MAX7219_data =  m ;

    CLK = 0;delay(0);
    DIN = 0;delay(0);
    LOAD = 0;delay(0);

    for ( MAX7219_data=0x8000; MAX7219_data>=0x0001; MAX7219_data=MAX7219_data>>1 )
    {
    if ( ( m & MAX7219_data ) == 0 ) DIN = 0; else DIN = 1;
    CLK = 1;delay(0);
    CLK = 0;delay(0);
    }
    LOAD = 1;delay(0);   
}      

// 顯示選項送顯示器及輸出控制函數(shù)
void display_out (void)
{
// 顯示數(shù)據(jù)送顯示器
    sent_data(0x0100+display_buf[0]);
    sent_data(0x0200+display_buf[1]);
    sent_data(0x0300+display_buf[2]);
    sent_data(0x0400+display_buf[3]);
}

3樓: >>參與討論
mcdog
LOAD時序有問題。我改了一下你的程序,你自己試試看。
# include <reg51.h>
# define uCHAR unsigned CHAR
# define uint unsigned int
sbit din=P1^2;
sbit clk=P1^4;
sbit load=P1^3;
void LED_W (uCHAR DATA)           //LED寫數(shù)據(jù)函數(shù)
     {
       uint i;
       load=0;
       for(i=8;i>=1;i--)
          {
            clk=0;
            din=DATA&0x80;
            DATA=DATA<<1;
            clk=1;
           }
                                                //此處LOAD取消
      }

void LED_INIT(void)
   {
        uint x=0;
        bit y=0; //加入16CLK識別
        uCHAR LED_REG[10]={0x09,0xFF,0x0A,0x07,0x0B,0x04,0x0C,0x01,0x0F,0x00};
        for(x=0;x<=9;x++)
          {
           uint b;
           b=LED_REG[x];
           y=!y;
           LED_W(b);
           if(y==0) load=1;//16CLK后LOAD=1
          }
}
void LED_DSP(uint a,uint d)

    {
      LED_W(a);
      LED_W(d);
      load=1;
    }

void main(void)
{

while(1)
     {
           LED_INIT();
           LED_DSP(0x01,0x01);
           LED_DSP(0x02,0x01);
           LED_DSP(0x03,0x01);
           LED_DSP(0x04,0x01);
           LED_DSP(0x05,0x01);
      }
  }


4樓: >>參與討論
ilovecr
謝謝!
WX7134的程序驗證了,沒有問題
mcdog的我還沒有試驗呢,我原來的程序時參照一本書上匯編改的,我用示波器看輸出了mcdog說的對可能是時序有問題,也就是說書上的也錯了,還是認真的看原版的數(shù)據(jù)手冊是最好的!謝謝二位了

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
求教高手一個關(guān)于PROTEL 制板的一個較偏的問題
基于單片機的鑒相鑒幅漏電保護器的設(shè)計。
好心大蝦幫幫忙吧~!
軟封裝的芯片如何把膠去掉?
今天本人現(xiàn)場技術(shù)支持,在線解答所有人單片機問題。
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號