大家好,欢迎来到IT知识分享网。
LED 点阵是由发光二极管排列组成的显示器件。
通常应用较多的是 8* 8 点阵,通过进行对不同位置的点亮与熄灭,构成一个图案,这一点也被应用到了电视机的显示屏上。下面是点阵屏的原理图:
它的DPa到DPh引脚分别对应了侧排的引脚(引脚为高电平,控制P0号引脚低电平即可点亮二极管),采用74HC595串转并芯片,需要在使用过程中对595的3个输入端进行控制。
跳线帽OE:OE, 输出使能控制脚,它是低电才使能输出,所以接GND,OE端会被GND下拉为0。
P34-SER:代表串行输入,我们串行输入就是把数据放到这。
P35-SCK :上升沿移位,即RCK从0-1电位变化会让数据往下移一位
P36-RCK:上升沿锁存,搬运工,即SCK从0-1电位变化会把数据搬运到芯片输出端
其中:SER负责将数据输入,SCK上升沿触发后数据插入队列,RCK则会锁存复制到输出端队列当中。
可以用取字模软件进行取模,下载链接在文末,下面是操作例图:
程序:
#include <reg52.h>
#include <intrins.h>
typedef unsigned char u8; // 重命名类型u8简化代码编写
typedef unsigned int u16;
#define MATRIX_PORT P0 // 点阵LED负极端口
sbit SCK = P3^6; // SCK上升沿移位
sbit RCK = P3^5; // RCK上升沿串行输出寄存器锁存
sbit SER = P3^4; // SER引脚送字节数据进去
// 点阵列选值,数组每个元素的值选中其中一列
u8 gLineCode[]={
0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //位选控制哪个亮、段选控制输入内容
u8 gZhong[] = {
0x00,0x3C,0x52,0x52,0x7E,0x12,0x10,0x00};/*"中",0*/
void delay(u16 i);
void Hc595SendByte(u8 dat);
void MatrixDisplay(u8 *zimo);
void delay(u16 i)
{
while(i--);
}
/********************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 参数列表 : 无 * 函数输出 : 无 *********************************************************************/
void main(void)
{
MatrixDisplay(gZhong);
}
/********************************************************************* * 函 数 名 : MatrixDisplay * 函数功能 : 循环刷新显示字模到点阵上 * 参数列表 : zimo - 待显示的字模数组 * 函数输出 : 无 *********************************************************************/
void MatrixDisplay(u8 *zimo)
{
u8 i = 0;
while (1)
{
for(i=0;i<8;i++)
{
MATRIX_PORT = gLineCode[i]; // 位选
Hc595SendByte(zimo[i]); // 发送段选数据
delay(100);
Hc595SendByte(0x00); // 消隐
}
break;
}
}
/********************************************************************* * 函 数 名 : Hc595SendByte * 函数功能 : 通过74HC595串行移位发送一个字节出去 * 参数列表 : dat - 待发送的字节数据 * 函数输出 : 无 *********************************************************************/
void Hc595SendByte(u8 dat) //从低位往高位移动数据
{
u8 i = 0, j = 0;
SCK = 0; // 将SCK置为初始状态
RCK = 0; // 将RCK置为初始状态
for (i=0; i<8; i++)
{
SER = dat & (0x01);
dat >>= 1;
SCK = 1;
j++; // 延时代码,等同于nop指令_nop_();
j++; // 延时代码,等同于nop指令
SCK = 0;
}
RCK = 1;
j++; // 延时代码,等同于nop指令
j++; // 延时代码,等同于nop指令
}
效果图:
取字模软件下载
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/15411.html