(89c51)16x16点阵屏幕的实现

时间:2023-03-08 22:06:26

基本组件是一个51单片机,一个74154译码器,四个MATRIX-8X8。

(89c51)16x16点阵屏幕的实现

考虑到单片机引脚有限,所以使用P0口和P2口的总共16根引脚选择列,而P1口的低4位接译码器,译出的一个低电平选择行。所以图像的显示机制大概如下:

(1)按行扫描,不需要手动选择哪一行,只需要将行数设置为自动加一即可。

(2)每一行先扫描左边的8位,再扫描右边的。

(3)假如数组为 unsigned char table[],行数设置为i,那么当扫描到第i行时P0=table[2*i];P2=table[2*i+1]。

例如:

unsigned char table={0x01;0x02}
unsigned char length=;
unsigned char i;
while(1)
{
  for(i=;i<length;i++)
  {
    P0=table[*i];
    P2=table[*i+];
  }//显示出来应该是00000001 00000010
}

因为我在自己的项目中将行和列调换了一下,很麻烦,还用了很多反相器,所以后面想来这样做就很简单了。因为觉得麻烦就没有调试了,有问题的话大概是高低位接反导致的,多加调试就好了。