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

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 7993|回復(fù): 23
收起左側(cè)

大神幫忙看看,點(diǎn)陣一直閃爍

  [復(fù)制鏈接]
ID:165827 發(fā)表于 2017-2-21 21:12 | 顯示全部樓層 |閱讀模式
程序應(yīng)該沒(méi)問(wèn)題啊




#include "reg51.h"                       
#include "intrins.h"

typedef unsigned int u16;         
typedef unsigned char u8;


sbit SRCLK=P3^6;
sbit RCLK=P3^5;
sbit SER=P3^4;

u8 code ledweixuan[]=
{
  0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,                          /*這就是掃描*/
};
void delay(u16 i)
{
         while(i--);
}

u8 code ledduan1[]=
{
/*--  文字:  普  --*/
/*--  宋體12;  此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16   --*/
0x40,0x44,0x54,0x64,0x45,0x7E,0x44,0x44,0x44,0x7E,0x45,0x64,0x54,0x44,0x40,0x00,
0x00,0x00,0x00,0xFF,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0xFF,0x00,0x00,0x00,0x00,

};

void Hc595SendByte(u8 dat1,u8 dat2,u8 dat3,u8 dat4)
{
        u8 a;

        SRCLK = 1;
        RCLK = 1;

        for(a=0;a<8;a++)               
        {
                SER = dat1 >> 7;       
                dat1 <<= 1;

                SRCLK = 0;                         
                _nop_();
                _nop_();
                SRCLK = 1;       
        }

        for(a=0;a<8;a++)               
        {
                SER = dat2 >> 7;               
                dat2 <<= 1;

                SRCLK = 0;                         
                _nop_();
                _nop_();
                SRCLK = 1;       
        }

        for(a=0;a<8;a++)               
        {
                SER = dat3 >> 7;               
                dat3 <<= 1;

                SRCLK = 0;                         
                _nop_();
                _nop_();
                SRCLK = 1;       
        }

        for(a=0;a<8;a++)                 
        {
                SER = dat4 >> 7;                 
                dat4 <<= 1;

                SRCLK = 0;                         
                _nop_();
                _nop_();
                SRCLK = 1;       
        }

        RCLK = 0;
        _nop_();
        _nop_();
        RCLK = 1;
}



void main()
{       
         u8 i;
        while(1)
        {
         for(i=0; i<16; i++)
         {
           Hc595SendByte(~ledweixuan[i+16],~ledweixuan[i],ledduan1[16+i],ledduan1[i]);
           delay(10);
         }
        }               
}

QQ圖片20170221211107.jpg
回復(fù)

使用道具 舉報(bào)

ID:165792 發(fā)表于 2017-2-21 22:29 | 顯示全部樓層
不錯(cuò)功能比較多
回復(fù)

使用道具 舉報(bào)

ID:155507 發(fā)表于 2017-2-21 23:27 | 顯示全部樓層
試一下這個(gè)
  1. void main()
  2. {        
  3.         u8 i;
  4.         while(1)
  5.         {
  6.                 for(i=0; i<16; i++)
  7.                 {
  8.                         Hc595SendByte(~ledweixuan[i+16],~ledweixuan[i],ledduan1[16+i],ledduan1[i]);
  9.                         delay(10);
  10.                         Hc595SendByte(0x00,0x00,0x00,0x00);   //消隱
  11.                 }
  12.         }
  13. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

ID:159140 發(fā)表于 2017-2-22 11:08 | 顯示全部樓層
可能刷新頻率過(guò)低
回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2017-2-23 01:50 | 顯示全部樓層
程序顯示效低。
回復(fù)

使用道具 舉報(bào)

ID:165827 發(fā)表于 2017-2-23 10:29 | 顯示全部樓層

還是不行呀
回復(fù)

使用道具 舉報(bào)

ID:165827 發(fā)表于 2017-2-23 10:31 | 顯示全部樓層
qq329401134 發(fā)表于 2017-2-22 11:08
可能刷新頻率過(guò)低

怎么解決呢
回復(fù)

使用道具 舉報(bào)

ID:165827 發(fā)表于 2017-2-23 10:31 | 顯示全部樓層

怎么解決呢
回復(fù)

使用道具 舉報(bào)

ID:165827 發(fā)表于 2017-2-23 10:39 | 顯示全部樓層

我試了一下朋友的單片機(jī),沒(méi)有問(wèn)題,難道是我的壞了。。。。怎么會(huì)呢
回復(fù)

使用道具 舉報(bào)

ID:111634 發(fā)表于 2017-2-23 12:27 | 顯示全部樓層
本帖最后由 zl2168 于 2017-2-23 18:58 編輯

給你個(gè)不閃爍的正確案例,自己去對(duì)照研究吧!


實(shí)例66LED 16×16點(diǎn)陣掃描顯示漢字


16×16點(diǎn)陣顯示電路.jpg


用一片154(4-16譯碼器)代替2片138(3-8譯碼器),性價(jià)比更高。
對(duì)LED顯示來(lái)說(shuō),164595性價(jià)比更高(都是串入并出移位寄存器,164控制更簡(jiǎn)單)
實(shí)例66a LED 16×16點(diǎn)陣漢字顯示.rar (48.21 KB, 下載次數(shù): 28)
LED 16×16點(diǎn)陣顯示漢字.jpg 16×16點(diǎn)陣顯示“單片機(jī)”.jpg


回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2017-2-24 15:13 | 顯示全部樓層
解決方案:
一般8*8點(diǎn)陣,需要8次掃描才能完成一個(gè)完整的顯示。我做過(guò)實(shí)驗(yàn),4ms大約是人眼視覺(jué)閃感點(diǎn)。最終采用的掃描方案是:每2.5ms掃描一次,以保證視覺(jué)上無(wú)閃動(dòng)。驅(qū)動(dòng)電流取30mA,以保證亮度合適。
以上供你參考。
回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2017-2-24 15:20 | 顯示全部樓層
本帖最后由 yzwzfyz 于 2017-2-24 15:23 編輯

掃描切換注意事項(xiàng):
1、準(zhǔn)備好顯示的數(shù)據(jù)。(不事先準(zhǔn)好,在切換時(shí)再做數(shù)據(jù),會(huì)影響切換時(shí)間,使顯示效率降低)
2、先總關(guān),即禁顯示(不這樣做,新顯示與舊顯示會(huì)同時(shí)在屏)
3、開(kāi)顯示。(即送出數(shù)據(jù))
要點(diǎn):2、3、是切換必須花費(fèi)的無(wú)效顯示時(shí)間,最好用一條指令完成。
如    MOV   P1, #FFH     ;關(guān)顯示
       CLR    P1.3            ;顯示第4列
回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2017-2-24 15:38 | 顯示全部樓層
以下是我在我的產(chǎn)品程序中,截取的8*8點(diǎn)陣顯示掃描切換語(yǔ)句,只有了三句,供參考。
                MOV     PX_SCAN, #FFH             ;切換開(kāi)始,先關(guān)所有顯示(關(guān)陽(yáng)極電壓),黑屏
                SETB    P_MOVSET                    ;移位寄存器置數(shù);送出數(shù)據(jù)
                MOV     PX_SCAN, A                   ;顯示列,開(kāi)新的顯示列
在此之前,有142個(gè)串行數(shù)據(jù),都準(zhǔn)備好了,就是沒(méi)有送出,而送出開(kāi)關(guān)就是第二句。
在此之前,下個(gè)顯示的列也準(zhǔn)備好了,放在A中。
這里PX_SCAN=P2它間接地控制LED的8路電源,P_MOVSET是P1.5接移位寄存器置數(shù)RCK。
回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2017-2-24 15:40 | 顯示全部樓層
以上程序,每2.5ms執(zhí)行一次。
回復(fù)

使用道具 舉報(bào)

ID:166423 發(fā)表于 2017-2-24 15:51 | 顯示全部樓層
可能刷新頻率過(guò)低  以上程序,每2.5ms執(zhí)行一次
回復(fù)

使用道具 舉報(bào)

ID:111634 發(fā)表于 2017-2-24 17:25 | 顯示全部樓層
上述“實(shí)例66LED 16×16點(diǎn)陣掃描顯示漢字”案例只有11句c程序,循環(huán)操作,簡(jiǎn)單的不得了,去看看吧!可先proteus仿真,驗(yàn)明正身,以免上當(dāng)受騙。但絕不會(huì)讓你失望!
回復(fù)

使用道具 舉報(bào)

ID:125378 發(fā)表于 2017-2-24 20:09 | 顯示全部樓層
#include "reg51.h"                         #include "intrins.h"  typedef unsigned int u16;          typedef unsigned char u8;   sbit SRCLK=P3^6; sbit RCLK=P3^5; sbit SER=P3^4;  u8 code ledweixuan[]= {   0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,                          /*這就是掃描*/ }; void delay(u16 i) {          while(i--); }  u8 code ledduan1[]= { /*--  文字:  普  --*/ /*--  宋體12;  此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16   --*/ 0x40,0x44,0x54,0x64,0x45,0x7E,0x44,0x44,0x44,0x7E,0x45,0x64,0x54,0x44,0x40,0x00, 0x00,0x00,0x00,0xFF,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0xFF,0x00,0x00,0x00,0x00,  };  void Hc595SendByte(u8 dat1,u8 dat2,u8 dat3,u8 dat4) {         u8 a;          SRCLK = 1;         RCLK = 1;          for(a=0;a<8;a++)                         {                 SER = dat1 >> 7;                         dat1 <<= 1;                  SRCLK = 0;                                          _nop_();                 _nop_();                 SRCLK = 1;                 }          for(a=0;a<8;a++)                         {                 SER = dat2 >> 7;                                 dat2 <<= 1;                  SRCLK = 0;                                          _nop_();                 _nop_();                 SRCLK = 1;                 }          for(a=0;a<8;a++)                         {                 SER = dat3 >> 7;                                 dat3 <<= 1;                  SRCLK = 0;                                          _nop_();                 _nop_();                 SRCLK = 1;                 }          for(a=0;a<8;a++)                          {                 SER = dat4 >> 7;                                  dat4 <<= 1;                  SRCLK = 0;                                          _nop_();                 _nop_();                 SRCLK = 1;                 }          RCLK = 0;         _nop_();         _nop_();         RCLK = 1; }
回復(fù)

使用道具 舉報(bào)

ID:166475 發(fā)表于 2017-2-24 20:31 來(lái)自觸屏版 | 顯示全部樓層
刷新頻率太低吧
回復(fù)

使用道具 舉報(bào)

ID:88481 發(fā)表于 2017-2-24 23:41 來(lái)自觸屏版 | 顯示全部樓層
檢查一下點(diǎn)陣的陰極與陽(yáng)極有沒(méi)有調(diào)亂
回復(fù)

使用道具 舉報(bào)

ID:74868 發(fā)表于 2017-2-25 12:18 | 顯示全部樓層
增加延遲時(shí)間
回復(fù)

使用道具 舉報(bào)

ID:228016 發(fā)表于 2017-8-17 08:44 | 顯示全部樓層
請(qǐng)問(wèn)樓主解決問(wèn)題了嗎?我也遇到了同樣的問(wèn)題。
回復(fù)

使用道具 舉報(bào)

ID:227393 發(fā)表于 2017-8-17 12:11 來(lái)自觸屏版 | 顯示全部樓層
用中斷去掃描顯示就沒(méi)問(wèn)題了,刷新頻率太低了就要閃爍了
回復(fù)

使用道具 舉報(bào)

ID:228061 發(fā)表于 2017-8-17 13:10 | 顯示全部樓層
刷新率低了
回復(fù)

使用道具 舉報(bào)

ID:228126 發(fā)表于 2017-8-17 17:01 | 顯示全部樓層
點(diǎn)陣的電流一般比較大啊,你的USB確定帶的動(dòng)???用電源供電試試
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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