点阵显示屏左移右移问题

基于AT89C51的点阵显示屏左移右移程序有什么区别,怎么实现?有程序对比下最好了。
利用锁存器和译码器是怎么实现字的显示??
希望高手帮忙解答下

拿行扫描来说,用译码器分别选中某一列,然后送该列的数据,保持一段时间后,关闭该列的数据(消除鬼影)。然后进行循环扫描就可以显示一个字符(动态扫描),滚动就是把本来第N列显示的数据放到N-1列显示,可以用数据的移位来控制。
看下我以前写的程序,是32*16的点阵。行扫描(列数据是4个595),行是用两个138组成154的功能(154片子有点贵,而且片子外形有点大)。看你个人习惯啦。低电平是该点点亮。有什么问题可以加我QQ:376589514
/***************************************************************************
函数说明: 汉字从左向右滚屏显示
输入参数: 汉字索引号num, 该汉字需要的移位数shift
输出参数: 无
****************************************************************************/
void LeftToRightDisplay(uint8 num, uint8 shift)
{
uint8 i;
if (shift < 8)
{
for (i = 0; i < 16; i++)
{
Write74HC595(~((~word[num][2*i]<<(8-shift))|(~word[num-1][2*i+1]>>shift)));
Write74HC595(~((~word[num-1][2*i+1]<<(8-shift))|(~word[num-1][2*i]>>shift)));
Write74HC595(~((~word[num-1][2*i]<<(8-shift))|(~word[num-2][2*i+1]>>shift)));
Write74HC595(~((~word[num-2][2*i+1] <<(8-shift))|(~word[num-2][2*i]>>shift)));
Store74HC595();
delay();
Write74HC595(0xff);
Write74HC595(0xff);
Write74HC595(0xff);
Write74HC595(0xff);
Store74HC595();
SEL++;
}
}
else
{
for (i = 0; i < 16; i++)
{
Write74HC595(~((~word[num][2*i+1]<<(16-shift))|(~word[num][2*i]>>(shift-8))));
Write74HC595(~((~word[num][2*i]<<(16-shift) )|(~word[num-1][2*i+1]>>(shift-8))));
Write74HC595(~((~word[num-1][2*i+1]<<(16-shift))|(~word[num-1][2*i]>>(shift-8))));
Write74HC595(~((~word[num-1][2*i]<<(16-shift))|(~word[num-2][2*i+1]>>(shift-8))));
Store74HC595();
delay();
Write74HC595(0xff);
Write74HC595(0xff);
Write74HC595(0xff);
Write74HC595(0xff);
Store74HC595();
SEL++;
}
}
}
温馨提示:答案为网友推荐,仅供参考
相似回答