51单片机+74HC595+4953SS 控制16*64LED点阵问题
手上有2块 8*8拼接的16*64点阵屏,现在想用51+74HC595来驱动屏幕显示。这些零件手上有现成的。 原来板子上的595全部是级联的,最后2个是驱动4953来控制行的。前面8个是控制列的。 现在编程的时候把我难到了,请各位老师帮忙指点下! 程序该怎么写。
没有老师指点下么?
在论坛里找找点阵LED的例程吧,驱动一个点阵,和驱动多个点阵没太大区别
就是没找到合适的。实在不懂。也是刚刚入门。
。
(分享设计)LED点阵经验各种点阵驱动方法讲解 [url]http://bbs.elecfans.com/jishu_351188_1_1.html (出处: 中国电子技术论坛)[/url]
可以参考参考
可以试试先点亮一块点阵~
感谢。!我慢慢研究下。
就是搞不懂这个级联咋个才能控制单片,正慢慢研究中。
#include<reg52.h>
sbit HC595_DS = P3^0;
sbit HC595_STCP = P3^1;
sbit HC595_SHCP = P3^2;
sbit 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);
}
请老师指点下。
#include<reg52.h>
sbit HC595_DS = P3^0;
sbit HC595_STCP = P3^1;
sbit HC595_SHCP = P3^2;
sbit 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);
}
//请老师们指点下。