LED点阵屏
LED点阵就是多个LED灯按照矩阵排列,与数码管的原理一样,可以进行行扫描或者列扫描来进行动态显示。下图为LED点阵的原理图。
为了节省引脚,AT89C52单片机采用了74HC595这个芯片来进行串行输入数据,下图为74HC595这个芯片的原理图。
OE为使能端,只有其为低电平时芯片才可以工作。
SRCLK接时钟线,当其出现上升沿时,将SER中的数据读入内部的八位寄存器。
RCLK锁存线,当其出现上升沿时,将八位寄存器的数据输出到后面的D0--D7。
下图就是74HC595芯片的功能图。
先通过P0口来选择哪一列数码管,再通过74HC595来使列数码管显示,代码如下:
74HC595显示一个字节
void _74HC595_sendbyte(unsigned char byte) {unsigned char i;for (i = 0; i<8; i++){SER = byte&(0x80>>i);SRCK = 1;SRCK = 0;}RCK = 1;RCK = 0; }void LED_matrixShowimage(unsigned char Column,Data) {/*switch(Column){case 0: P0 = ~0x80;break;case 1: P0 = ~0x40;break;case 2: P0 = ~0x20;break;case 3: P0 = ~0x10;break;case 4: P0 = ~0x08;break;case 5: P0 = ~0x04;break;case 6: P0 = ~0x02;break;case 7: P0 = ~0x01;break;}*/P0 = ~(0x80>>Column);_74HC595_sendbyte(Data);Delay(2);}