![]() |
發(fā)布時(shí)間: 2019-10-12 21:20
正文摘要:877a驅(qū)動(dòng)max7219驅(qū)動(dòng)4塊8*8級(jí)聯(lián)成4*32,顯示時(shí)在第三塊總是有殘影,另外3塊確沒有,請(qǐng)問是代碼問題嗎?謝謝了! 單片機(jī)源程序如下: #include <pic.h> __CONFIG(HS&WDTDIS&LVPDIS); #define INT8U& ... |
多級(jí)串聯(lián)的時(shí)候,寫入數(shù)據(jù)的過程中,不用的位要寫NO-OP代碼,這樣就不會(huì)重影了。 |
參與人數(shù) 1 | 黑幣 +20 | 收起 理由 |
---|---|---|
![]() | + 20 | 回帖助人的獎(jiǎng)勵(lì)! |
本帖最后由 ldch88 于 2022-3-6 11:03 編輯 //----------------------------------------------------------------------------- //向MAX7219寫入字節(jié) //----------------------------------------------------------------------------- void Write_Max7219_byte(INT8U DATA) { INT8U i; CS=0; //CS=0有效,CS=1鎖存 for(i=8;i>=1;i--) { CLK=0; if(DATA & 0x80) DIN=1; else DIN=0; DATA=DATA<<1; CLK=1; //上升沿把數(shù)據(jù)送出去 } } //------------------------------------------------------------------ //向M第一片MAX7219寫入數(shù)據(jù) //------------------------------------------------------------------ void Write_Max7219_1(INT8U add1,INT8U dat1) { //CS=0; Write_Max7219_byte(0x00); //片8寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片7寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片6寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片5寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片4寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片3寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片2寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(add1); //片1寫入地址,即數(shù)碼管編號(hào) Write_Max7219_byte(dat1); //片1寫入數(shù)據(jù),即數(shù)碼管顯示數(shù)字 CS=1; } //--------------------------------------------------------------------- //第二片MAX7219的寫入數(shù)據(jù) //--------------------------------------------------------------------- void Write_Max7219_2(INT8U add2,INT8U dat2) { //CS=0; Write_Max7219_byte(0x00); //片8寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片7寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片6寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片5寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片4寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片3寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(add2); //片2寫入地址,即數(shù)碼管編號(hào) Write_Max7219_byte(dat2); //片2寫入數(shù)據(jù),即數(shù)碼管顯示數(shù)字 Write_Max7219_byte(0x00); //片1寫入空 Write_Max7219_byte(0x00); CS=1; } //--------------------------------------------------------------------- //第三片MAX7219的寫入數(shù)據(jù) //--------------------------------------------------------------------- void Write_Max7219_3(INT8U add3,INT8U dat3) { //CS=0; Write_Max7219_byte(0x00); //片8寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片7寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片6寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片5寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片4寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(add3); //片3寫入地址,即數(shù)碼管編號(hào) Write_Max7219_byte(dat3); //片3寫入數(shù)據(jù),即數(shù)碼管顯示數(shù)字 Write_Max7219_byte(0x00); //片2寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片1寫入空 Write_Max7219_byte(0x00); CS=1; } //--------------------------------------------------------------------- //第四片MAX7219的寫入數(shù)據(jù) //--------------------------------------------------------------------- void Write_Max7219_4(INT8U add4,INT8U dat4) { //CS=0; Write_Max7219_byte(0x00); //片8寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片7寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片6寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片5寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(add4); //片4寫入地址,即數(shù)碼管編號(hào) Write_Max7219_byte(dat4); //片4寫入數(shù)據(jù),即數(shù)碼管顯示數(shù)字 Write_Max7219_byte(0x00); //片3寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片2寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片1寫入空 Write_Max7219_byte(0x00); CS=1; } //--------------------------------------------------------------------- //第五片MAX7219的寫入數(shù)據(jù) //--------------------------------------------------------------------- void Write_Max7219_5(INT8U add5,INT8U dat5) { //CS=0; Write_Max7219_byte(0x00); //片8寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片7寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片6寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(add5); //片5寫入地址,即數(shù)碼管編號(hào) Write_Max7219_byte(dat5); //片5寫入數(shù)據(jù),即數(shù)碼管顯示數(shù)字 Write_Max7219_byte(0x00); //片4寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片3寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片2寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片1寫入空 Write_Max7219_byte(0x00); CS=1; } //--------------------------------------------------------------------- //第六片MAX7219的寫入數(shù)據(jù) //--------------------------------------------------------------------- void Write_Max7219_6(INT8U add6,INT8U dat6) { //CS=0; Write_Max7219_byte(0x00); //片8寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片7寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(add6); //片6寫入地址,即數(shù)碼管編號(hào) Write_Max7219_byte(dat6); //片6寫入數(shù)據(jù),即數(shù)碼管顯示數(shù)字 Write_Max7219_byte(0x00); //片5寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片4寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片3寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片2寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片1寫入空 Write_Max7219_byte(0x00); CS=1; } //--------------------------------------------------------------------- //第七片MAX7219的寫入數(shù)據(jù) //--------------------------------------------------------------------- void Write_Max7219_7(INT8U add7,INT8U dat7) { //CS=0; Write_Max7219_byte(0x00); //片8寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(add7); //片7寫入地址,即數(shù)碼管編號(hào) Write_Max7219_byte(dat7); //片7寫入數(shù)據(jù),即數(shù)碼管顯示數(shù)字 Write_Max7219_byte(0x00); //片6寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片5寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片4寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片3寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片2寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片1寫入空 Write_Max7219_byte(0x00); CS=1; } //--------------------------------------------------------------------- //第八片MAX7219的寫入數(shù)據(jù) //--------------------------------------------------------------------- void Write_Max7219_8(INT8U add8,INT8U dat8) { //CS=0; Write_Max7219_byte(add8); //片8寫入地址,即數(shù)碼管編號(hào) Write_Max7219_byte(dat8); //片8寫入數(shù)據(jù),即數(shù)碼管顯示數(shù)字 Write_Max7219_byte(0x00); //片7寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片6寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片5寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片4寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片3寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片2寫入空 Write_Max7219_byte(0x00); Write_Max7219_byte(0x00); //片1寫入空 Write_Max7219_byte(0x00); CS=1; } //--------------------------------------------------------------------- //初始化芯片 //--------------------------------------------------------------------- void Init_MAX7219(void) { Write_Max7219_1(0x09, 0x00); //譯碼方式:不譯碼 Write_Max7219_1(0x0a, 0x03); //設(shè)定亮度 Write_Max7219_1(0x0b, 0x07); //掃描界限;8個(gè)數(shù)碼管顯示 Write_Max7219_1(0x0c, 0x01); //掉電模式:0,普通模式:1 Write_Max7219_1(0x0f, 0x00); //顯示測(cè)試:1;測(cè)試結(jié)束,正常顯示:0 Write_Max7219_2(0x09, 0x00); //譯碼方式:不譯碼 Write_Max7219_2(0x0a, 0x03); //設(shè)定亮度 Write_Max7219_2(0x0b, 0x07); //掃描界限;8個(gè)數(shù)碼管顯示 Write_Max7219_2(0x0c, 0x01); //掉電模式:0,普通模式:1 Write_Max7219_2(0x0f, 0x00); //顯示測(cè)試:1;測(cè)試結(jié)束,正常顯示:0 Write_Max7219_3(0x09, 0x00); //譯碼方式:不譯碼 Write_Max7219_3(0x0a, 0x03); //設(shè)定亮度 Write_Max7219_3(0x0b, 0x07); //掃描界限;8個(gè)數(shù)碼管顯示 Write_Max7219_3(0x0c, 0x01); //掉電模式:0,普通模式:1 Write_Max7219_3(0x0f, 0x00); //顯示測(cè)試:1;測(cè)試結(jié)束,正常顯示:0 Write_Max7219_4(0x09, 0x00); //譯碼方式:不譯碼 Write_Max7219_4(0x0a, 0x02); //設(shè)定亮度 Write_Max7219_4(0x0b, 0x07); //掃描界限;8個(gè)數(shù)碼管顯示 Write_Max7219_4(0x0c, 0x01); //掉電模式:0,普通模式:1 Write_Max7219_4(0x0f, 0x00); //顯示測(cè)試:1;測(cè)試結(jié)束,正常顯示:0 Write_Max7219_5(0x09, 0x00); //譯碼方式:不譯碼 Write_Max7219_5(0x0a, 0x03); //設(shè)定亮度 Write_Max7219_5(0x0b, 0x07); //掃描界限;8個(gè)數(shù)碼管顯示 Write_Max7219_5(0x0c, 0x01); //掉電模式:0,普通模式:1 Write_Max7219_5(0x0f, 0x00); //顯示測(cè)試:1;測(cè)試結(jié)束,正常顯示:0 Write_Max7219_6(0x09, 0x00); //譯碼方式:不譯碼 Write_Max7219_6(0x0a, 0x03); //設(shè)定亮度 Write_Max7219_6(0x0b, 0x07); //掃描界限;8個(gè)數(shù)碼管顯示 Write_Max7219_6(0x0c, 0x01); //掉電模式:0,普通模式:1 Write_Max7219_6(0x0f, 0x00); //顯示測(cè)試:1;測(cè)試結(jié)束,正常顯示:0 Write_Max7219_7(0x09, 0x00); //譯碼方式:不譯碼 Write_Max7219_7(0x0a, 0x03); //設(shè)定亮度 Write_Max7219_7(0x0b, 0x07); //掃描界限;8個(gè)數(shù)碼管顯示 Write_Max7219_7(0x0c, 0x01); //掉電模式:0,普通模式:1 Write_Max7219_7(0x0f, 0x00); //顯示測(cè)試:1;測(cè)試結(jié)束,正常顯示:0 Write_Max7219_8(0x09, 0x00); //譯碼方式:不譯碼 Write_Max7219_8(0x0a, 0x03); //設(shè)定亮度 Write_Max7219_8(0x0b, 0x07); //掃描界限;8個(gè)數(shù)碼管顯示 Write_Max7219_8(0x0c, 0x01); //掉電模式:0,普通模式:1 Write_Max7219_8(0x0f, 0x00); //顯示測(cè)試:1;測(cè)試結(jié)束,正常顯示:0 } |
參與人數(shù) 1 | 黑幣 +20 | 收起 理由 |
---|---|---|
![]() | + 20 | 回帖助人的獎(jiǎng)勵(lì)! |
想知道問題是如何解決的。7 段 LED 顯示編程時(shí),必須先將之前的數(shù)字完全清除才能顯示新的數(shù)字,以免出現(xiàn)重影。 |
消隱有軟消隱與硬消隱,軟消隱就是送燈熄滅的值,硬消隱控制芯片清零引腳的值. |
基本就是消隱存在問題 |
樓主還上線嗎?我也出現(xiàn)了此種情況,麻煩你告知原因,謝謝! |
請(qǐng)問怎么解決的 |
我和樓主碰到一樣的問題了,弄了好幾天都沒解決,請(qǐng)問下樓主是您代碼哪里的問題呢? |
怎么解決的 |
代碼問題,認(rèn)真看可以發(fā)現(xiàn)殘影都是其他出現(xiàn)的字體。 |
怎么解決的? |
代碼問題,已解決了。 |
發(fā)現(xiàn)殘影就是第一片的數(shù)據(jù),不知是什么原因,看代碼是應(yīng)該沒有顯示的。 |
代碼問題,認(rèn)真看可以發(fā)現(xiàn)殘影都是其他出現(xiàn)的字體。 |
請(qǐng)問有人碰到過嗎? |
https://v.youku.com/v_show/id_XN ... m=a2hzp.8244740.0.0這是運(yùn)行時(shí)的視頻 |
Powered by 單片機(jī)教程網(wǎng)