单片机/MCU论坛
直播中

hqboy

9年用户 18经验值
擅长:可编程逻辑 嵌入式技术 光电显示
私信 关注

51单片机+74HC595+4953SS 控制16*64LED点阵问题

本帖最后由 hqboy 于 2017-5-8 20:45 编辑

1.jpg
2.jpg
3.jpg
4.jpg

手上有2块 8*8拼接的16*64点阵屏,现在想用51+74HC595来驱动屏幕显示。这些零件手上有现成的。 原来板子上的595全部是级联的,最后2个是驱动4953来控制行的。前面8个是控制列的。 现在编程的时候把我难到了,请各位老师帮忙指点下! 程序该怎么写。

回帖(9)

hqboy

2017-5-8 20:45:21
没有老师指点下么?
举报

人中狼

2017-5-8 20:49:48
在论坛里找找点阵LED的例程吧,驱动一个点阵,和驱动多个点阵没太大区别
举报

hqboy

2017-5-8 20:56:04
引用: 人中狼 发表于 2017-5-8 20:49
在论坛里找找点阵LED的例程吧,驱动一个点阵,和驱动多个点阵没太大区别

就是没找到合适的。实在不懂。也是刚刚入门。
举报

机器人工作者

2017-5-9 07:35:56
可以试试先点亮一块点阵~
举报

hqboy

2017-5-9 11:37:18
引用: 人中狼 发表于 2017-5-9 07:06
(分享设计)LED点阵经验各种点阵驱动方法讲解 https://bbs.elecfans.com/jishu_351188_1_1.html (出处: 中国电子技术论坛)[/url]
可以参考参考

感谢。!我慢慢研究下。
举报

hqboy

2017-5-9 11:38:05
引用: 机器人工作者 发表于 2017-5-9 07:35
可以试试先点亮一块点阵~

就是搞不懂这个级联咋个才能控制单片,正慢慢研究中。
举报

hqboy

2017-5-13 23:28:54
引用: 人中狼 发表于 2017-5-9 07:06
(分享设计)LED点阵经验各种点阵驱动方法讲解 https://bbs.elecfans.com/jishu_351188_1_1.html (出处: 中国电子技术论坛)[/url]
可以参考参考

#include
***it HC595_DS = P3^0;
***it HC595_STCP = P3^1;
***it HC595_SHCP = P3^2;
***it HC595_OE = P3^7;
void HC595_WriteByte(unsigned char value)
{
unsigned char i;
for(i=0;i<8;i++)
{
HC595_SHCP = 0;
HC595_DS = value&(0x80>>i);
HC595_SHCP = 1;
}
}
void Lattice_WriteData(unsigned char *buffer,unsigned char value,unsigned char value1)
{
while(*buffer)//列扫描
{
HC595_WriteByte(*buffer++);
}
HC595_WriteByte(value);//行数据低八位
HC595_WriteByte(value1);//行数据高八位
HC595_STCP = 0;
HC595_STCP = 1;
}
unsigned char buffer[8]={0x01,0,0,0,0,0,0,0};//64列
void main()
{
HC595_OE = 0;
HC595_OE = 1;
//假设行低电平有效,列高电平有效,显示效果为第一行,第一列坐标为(0,0)的像素点亮,其他均不亮
Lattice_WriteData(buffer,0xfe,0xff);
while(1);
}


请老师指点下。
举报

hqboy

2017-5-14 18:53:16
#include
***it HC595_DS = P3^0;
***it HC595_STCP = P3^1;
***it HC595_SHCP = P3^2;
***it HC595_OE = P3^7;
void HC595_WriteByte(unsigned char value)
{
unsigned char i;
for(i=0;i<8;i++)
{
HC595_SHCP = 0;
HC595_DS = value&(0x80>>i);
HC595_SHCP = 1;
}
}
void Lattice_WriteData(unsigned char *buffer,unsigned char value,unsigned char value1)
{
while(*buffer)//列扫描
{
HC595_WriteByte(*buffer++);
}
HC595_WriteByte(value);//行数据低八位
HC595_WriteByte(value1);//行数据高八位
HC595_STCP = 0;
HC595_STCP = 1;
}
unsigned char buffer[8]={0x01,0,0,0,0,0,0,0};//64列
void main()
{
HC595_OE = 0;
HC595_OE = 1;
//假设行低电平有效,列高电平有效,显示效果为第一行,第一列坐标为(0,0)的像素点亮,其他均不亮
Lattice_WriteData(buffer,0xfe,0xff);
HC595_OE = 0;
while(1);
}



//请老师们指点下。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分