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

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

考虑到单片机引脚有限,所以使用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=2;
unsigned char i;
while(1)
{

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

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

原文地址:https://www.cnblogs.com/viaduct/p/5851977.html