点阵的电流一般比较大啊,你的USB确定带的动???用电源供电试试 |
刷新率低了 |
用中断去扫描显示就没问题了,刷新频率太低了就要闪烁了 |
请问楼主解决问题了吗?我也遇到了同样的问题。 |
增加延迟时间 |
检查一下点阵的阴极与阳极有没有调乱 |
刷新频率太低吧 |
#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; 此字体下对应的点阵为:宽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; } |
上述“实例66LED 16×16点阵扫描显示汉字”案例只有11句c程序,循环操作,简单的不得了,去看看吧!可先proteus仿真,验明正身,以免上当受骗。但绝不会让你失望! |
可能刷新频率过低 以上程序,每2.5ms执行一次 |
以上程序,每2.5ms执行一次。 |
以下是我在我的产品程序中,截取的8*8点阵显示扫描切换语句,只有了三句,供参考。 MOV PX_SCAN, #FFH ;切换开始,先关所有显示(关阳极电压),黑屏 SETB P_MOVSET ;移位寄存器置数;送出数据 MOV PX_SCAN, A ;显示列,开新的显示列 在此之前,有142个串行数据,都准备好了,就是没有送出,而送出开关就是第二句。 在此之前,下个显示的列也准备好了,放在A中。 这里PX_SCAN=P2它间接地控制LED的8路电源,P_MOVSET是P1.5接移位寄存器置数RCK。 |
本帖最后由 yzwzfyz 于 2017-2-24 15:23 编辑 扫描切换注意事项: 1、准备好显示的数据。(不事先准好,在切换时再做数据,会影响切换时间,使显示效率降低) 2、先总关,即禁显示(不这样做,新显示与旧显示会同时在屏) 3、开显示。(即送出数据) 要点:2、3、是切换必须花费的无效显示时间,最好用一条指令完成。 如 MOV P1, #FFH ;关显示 CLR P1.3 ;显示第4列 |
解决方案: 一般8*8点阵,需要8次扫描才能完成一个完整的显示。我做过实验,4ms大约是人眼视觉闪感点。最终采用的扫描方案是:每2.5ms扫描一次,以保证视觉上无闪动。驱动电流取30mA,以保证亮度合适。 以上供你参考。 |
本帖最后由 zl2168 于 2017-2-23 18:58 编辑 给你个不闪烁的正确案例,自己去对照研究吧! 实例66LED 16×16点阵扫描显示汉字 ![]() 用一片154(4-16译码器)代替2片138(3-8译码器),性价比更高。 对LED显示来说,164比595性价比更高(都是串入并出移位寄存器,164控制更简单) ![]() ![]() ![]() |
我试了一下朋友的单片机,没有问题,难道是我的坏了。。。。怎么会呢 |
yzwzfyz 发表于 2017-2-23 01:50 怎么解决呢 |
qq329401134 发表于 2017-2-22 11:08 怎么解决呢 |
还是不行呀 ![]() |
程序显示效低。 |
可能刷新频率过低 |
试一下这个
|
不错功能比较多 |