2016年1月份一直调试 32*16 点阵的LED显示面板,到今天为止 总算完成了最困难的一部分,现在做一个小小的总结。
1. MBI5120+PR4538驱动调试
MBI5120是串并转换芯片,这里用作列显控制用,PR4538则用作行显控制。
行列显示必须配合默契,方能正常显示汉字或者图形。
2. LED屏扫描方式与刷新频率
这次用到的 32*16 点阵的LED显示面板是4扫屏,意思是整个屏幕分为4次扫描完成;
一块 64*16 点阵屏( 两块32*16 点阵串联组成)共1024 dot,
全彩模组分上下两个部分,即一个部分为512 dot,
4扫屏每次扫描点数为512/4=128dot,但是一次要发2组数据(上下两个部分)
就是时钟数位128,但是数据位数为128+128 bits
关于刷新频率,太低会有闪烁,太快数据显示不过来,显示效果也不好,
这里经过反复测试最后的刷新频率定为60HZ左右,效果较好。
3. 下面给大家分享一下主循环的架构
void Loop_Display(void)
{
unsigned char i = 0;
if(Delay300us_Flag)
{
for(i=0;i<16;i++)
{
send_buffer_a[i] = Save11[Delay_Cnt%4].Msk[i];
send_buffer_b[i] = Save22[Delay_Cnt%4].Msk[i];
send_buffer_m1[i] = Save11[Delay_Cnt%4].Msk[i];
send_buffer_m2[i] = Save22[Delay_Cnt%4].Msk[i];
send_buffer_l1[i] = Save11[Delay_Cnt%4].Msk[i];
send_buffer_l2[i] = Save22[Delay_Cnt%4].Msk[i];
send_buffer_r1[i] = Save11[Delay_Cnt%4].Msk[i];
send_buffer_r2[i] = Save22[Delay_Cnt%4].Msk[i];
}
Color_Display(send_buffer_a,send_buffer_b,send_buffer_m1,send_buffer_m2,send_buffer_l1,send_buffer_l2,send_buffer_r1,send_buffer_r2,Green);
HC138_scan(Delay_Cnt);
Delay300us_Flag = 0;
Delay_Cnt++;
}
}