|
|||||||||||
| 技術(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 欄目:單片機 |
以下是簡單驅(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 于 2006/4/13 23:32:00 發(fā)布:
沒仔細看,看我的自己慢慢研究吧 // 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 于 2006/4/14 11:53:00 發(fā)布:
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 于 2006/4/17 7:27:00 發(fā)布:
謝謝! WX7134的程序驗證了,沒有問題 mcdog的我還沒有試驗呢,我原來的程序時參照一本書上匯編改的,我用示波器看輸出了mcdog說的對可能是時序有問題,也就是說書上的也錯了,還是認真的看原版的數(shù)據(jù)手冊是最好的!謝謝二位了 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |