找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索

PIC16F877A單片機(jī)驅(qū)動(dòng)max7219時(shí)點(diǎn)陣有殘影閃爍

查看數(shù): 4575 | 評(píng)論數(shù): 16 | 收藏 0
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請(qǐng)稍候......
發(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& ...

回復(fù)

ID:371546 發(fā)表于 2022-3-6 09:07
多級(jí)串聯(lián)的時(shí)候,寫入數(shù)據(jù)的過程中,不用的位要寫NO-OP代碼,這樣就不會(huì)重影了。

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

ID:371546 發(fā)表于 2022-3-6 09:05
本帖最后由 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
}

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

ID:420836 發(fā)表于 2021-8-27 08:43
想知道問題是如何解決的。7 段 LED 顯示編程時(shí),必須先將之前的數(shù)字完全清除才能顯示新的數(shù)字,以免出現(xiàn)重影。
ID:332444 發(fā)表于 2021-8-26 17:00
消隱有軟消隱與硬消隱,軟消隱就是送燈熄滅的值,硬消隱控制芯片清零引腳的值.
ID:332444 發(fā)表于 2021-8-26 16:56
基本就是消隱存在問題
ID:215984 發(fā)表于 2021-8-26 16:37
樓主還上線嗎?我也出現(xiàn)了此種情況,麻煩你告知原因,謝謝!
ID:917386 發(fā)表于 2021-6-26 13:42
請(qǐng)問怎么解決的
ID:258542 發(fā)表于 2020-7-12 16:12
我和樓主碰到一樣的問題了,弄了好幾天都沒解決,請(qǐng)問下樓主是您代碼哪里的問題呢?
ID:147616 發(fā)表于 2020-2-20 20:40
怎么解決的
ID:649963 發(fā)表于 2019-11-26 15:06
代碼問題,認(rèn)真看可以發(fā)現(xiàn)殘影都是其他出現(xiàn)的字體。
ID:48140 發(fā)表于 2019-11-26 10:53
怎么解決的?
ID:45497 發(fā)表于 2019-10-15 14:14
代碼問題,已解決了。
ID:45497 發(fā)表于 2019-10-14 21:54
發(fā)現(xiàn)殘影就是第一片的數(shù)據(jù),不知是什么原因,看代碼是應(yīng)該沒有顯示的。
ID:617981 發(fā)表于 2019-10-14 17:23
代碼問題,認(rèn)真看可以發(fā)現(xiàn)殘影都是其他出現(xiàn)的字體。
ID:45497 發(fā)表于 2019-10-14 14:19
請(qǐng)問有人碰到過嗎?
ID:45497 發(fā)表于 2019-10-12 21:22
https://v.youku.com/v_show/id_XN ... m=a2hzp.8244740.0.0這是運(yùn)行時(shí)的視頻

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表