1、LED 点阵1、点阵原理为了方便显示复杂字符、汉字、图形等信息,常采用点阵式 LED 显示器。在点阵式LED 显示器中,每一个行列交叉点对应一个发光二极管(如行线连结 LED 正极,列线连结LED 负极) ,二极管数量由点阵的分辨率决定。下图所示的是协会 51 板所用的 8*8 点阵由8*8 只发光二级管组成。要让点阵上的某一个点亮的话,只需将该点所在列线的 IO 口置0,行线所在的 IO 口置 1(列线接 LED 负极,行线接正极时) ,就能实现了。2、协会点阵显示的实现下图是协会 51 板上点阵的连接图。74HC138 译码器经过 PNP 三极管驱动与 8*8 点阵的行线相连,用于行扫描,
2、每次显示一行(Yx 为低电平显示) ,74HC595 移位寄存器与点阵的列线相连(R100x 为限流电阻) ,用于输入显示信息(显示信息可通过取模软件取得,输入方式可参考协会例程或 74HC595 的 PDF 文档) 。电协 51 板点阵连接图从上图可知点阵功能的实现涉及到 74HC138 和 74HC595 两个数字芯片,74HC138 前面已经简单介绍过了,下面就简单介绍一下 74HC595 移位寄存器:595 是具有 8 位移位寄存器和一个存储器,三态输出功能。移位寄存器和存储器是分别的时钟。数据在 SCHcp 的上升沿输入,在 STcp 的上升沿进入的存储寄存器中去。如果两个时钟连在一
3、起,则移位寄存器总是比存储寄存器早一个脉冲。 移位寄存器有一个串行移位输入(Ds) ,和一个串行输出(Q7 ), 和一个异步的低电平复位,存储寄存器有一个并行8 位的,具备三态的总线输出,当使能 OE 时(为低电平) ,存储寄存器的数据输出到总线。引脚说明符号 引脚 描述Q0Q7 15, 1, 7 并行数据输出GND 8 地Q7 9 串行数据输出MR 10 主复位(低电平)SHCP 11 移位寄存器时钟输入STCP 12 存储寄存器时钟输入OE 13 输出有效(低电平)DS 14 串行数据输入VCC 16 电源功能表输入 输出SHCP STCP OE MR DS Q7 Qn 功能 L L NC
4、 MR 为低电平时紧紧影响移位寄存器 L L L L 空移位寄存器到输出寄存器 H L L Z 清空移位寄存器,并行输出为高阻状态 L H H Q6 NC 逻辑高电平移入移位寄存器状态 0,包含所有的移位寄存器状态移入,例如,以前的状态 6(内部 Q6”)出现在串行输出位。 L H NC Qn 移位寄存器的内容到达保持寄存器并从并口输出 L H Q6 Qn 移位寄存器内容移入,先前的移位寄存器的内容到达保持寄存器并输出。H高电平状态L低电平状态上升沿下降沿Z高阻NC无变化无效当 MR 为高电平,OE 为低电平时,数据在 SHCP 上升沿进入移位寄存器,在 STCP 上升沿输出到并行端口。最后让
5、我们以一个简单的例程来帮助大家理解点阵显示的实现。 (在点阵上显示一个心形图案)#include #define uchar unsigned char#define uint unsigned intsbit E=P14; /* 输出使能 */sbit RCLK=P32; /* 移位寄存器 */sbit SRCLK=P31; /* 存储寄存器 */sbit SER=P30; /* 串行输入 */uchar a=0,b=0;uchar table8= 0x0,0x6C,0x92,0x82,0x44,0x28,0x10,0x0 ; /*所取字模 8 位逐行共阴码*/void chuanshu()
6、 /* 传输子程序 */uchar j,g,k;k=tableab;for(j=0;j1); /* 移位 */void main() uint m,n;while(1) for(a=0;a1;a+) /* 总共有 1 个数据需要传输 */for(n=0;n100;n+) /* 使每个字显示的更亮 */P1=0x00; /* P1 口控制 138 芯片 */for(b=0;b8;b+) /* 循环 8 次,行列一一对应 */chuanshu();E=0; /* 输出使能,存储寄存器数据由并口输出 */for(m=0;m300;m+); /每读一个数延时一小段P1+;E=1;分析如下:(1)、 “
7、uchar table8= 0x0,0x6C,0x92,0x82,0x44,0x28,0x10,0x0 ; ”中“0x0,0x6C,0x92,0x82,0x44,0x28,0x10,0x0 ”是心形图案所取的模,需要显示多一个图案(或字)时,只需将该字的模加进去(同样用一个大括号括着,两者间用逗号隔开) ,再把“for(a=0;a1;a+) /* 总共有 1 个数据需要传输 */ ”中的“a1”该为“a2”即可显示两个图案,以此类推(2 ) void chuanshu()/* 传输子程序 */其作用是将每一行需要显示的显示信息(二进制 8位数)如第二行的 0x6c(01101100)一位一位的移入 74HC595 的存储寄存器中(从右往左,从最低位到最高位) 。注:8*8 点阵取模软件74HC59574HC138