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