熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂(lè)園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2017-2-21 21:12
正文摘要:程序應(yīng)該沒(méi)問(wèn)題啊 #include "reg51.h" #include "intrins.h" typedef unsigned int u16; ... |
點(diǎn)陣的電流一般比較大啊,你的USB確定帶的動(dòng)???用電源供電試試 |
刷新率低了 |
用中斷去掃描顯示就沒(méi)問(wèn)題了,刷新頻率太低了就要閃爍了 |
請(qǐng)問(wèn)樓主解決問(wèn)題了嗎?我也遇到了同樣的問(wèn)題。 |
增加延遲時(shí)間 |
檢查一下點(diǎn)陣的陰極與陽(yáng)極有沒(méi)有調(diào)亂 |
刷新頻率太低吧 |
#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; } |
上述“實(shí)例66LED 16×16點(diǎn)陣掃描顯示漢字”案例只有11句c程序,循環(huán)操作,簡(jiǎn)單的不得了,去看看吧!可先proteus仿真,驗(yàn)明正身,以免上當(dāng)受騙。但絕不會(huì)讓你失望! |
可能刷新頻率過(guò)低 以上程序,每2.5ms執(zhí)行一次 |
以上程序,每2.5ms執(zhí)行一次。 |
以下是我在我的產(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。 |
本帖最后由 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列 |
解決方案: 一般8*8點(diǎn)陣,需要8次掃描才能完成一個(gè)完整的顯示。我做過(guò)實(shí)驗(yàn),4ms大約是人眼視覺(jué)閃感點(diǎn)。最終采用的掃描方案是:每2.5ms掃描一次,以保證視覺(jué)上無(wú)閃動(dòng)。驅(qū)動(dòng)電流取30mA,以保證亮度合適。 以上供你參考。 |
本帖最后由 zl2168 于 2017-2-23 18:58 編輯 給你個(gè)不閃爍的正確案例,自己去對(duì)照研究吧! 實(shí)例66LED 16×16點(diǎn)陣掃描顯示漢字 ![]() 用一片154(4-16譯碼器)代替2片138(3-8譯碼器),性價(jià)比更高。 對(duì)LED顯示來(lái)說(shuō),164比595性價(jià)比更高(都是串入并出移位寄存器,164控制更簡(jiǎn)單) ![]() ![]() ![]() |
angmall 發(fā)表于 2017-2-21 23:27 我試了一下朋友的單片機(jī),沒(méi)有問(wèn)題,難道是我的壞了。。。。怎么會(huì)呢 |
yzwzfyz 發(fā)表于 2017-2-23 01:50 怎么解決呢 |
qq329401134 發(fā)表于 2017-2-22 11:08 怎么解決呢 |
angmall 發(fā)表于 2017-2-21 23:27 還是不行呀 ![]() |
程序顯示效低。 |
可能刷新頻率過(guò)低 |
試一下這個(gè)
|
不錯(cuò)功能比較多 |
Powered by 單片機(jī)教程網(wǎng)