OpenVINOTM,给你看得见的未来!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 开源硬件 » 使用两片74HC595驱动点阵LED的问题

共5条 1/1 1 跳转至

使用两片74HC595驱动点阵LED的问题

工程师
2021-03-02 23:00:52    评分

驱动点阵有很多方法,比如单用HC138,单用HC595以及它两混用均可,本坛也有许多例子供大家参考,但是它们都是采用级联的方式来做,出于好奇心,我想用一片595控制列,一片控制行,而不采用级联,然而程序无法运行。不知是程序问题还是硬件本身不支持这种接法? 请高手们指教!




我的源程序如下:


#include <reg51.H>
//#define uint unsigned int
//#define uchar unsigned char
typedef unsigned char u8;
typedef unsigned int u16;
sbit ds1  =P2^0;
sbit shcp = P2^1;
sbit stcp = P2^2;
sbit ds2  = P2^3;

u8 code display[]={
0x66,0x99,0x81,0x81,0x42,0x24,0x18,0x00};//“心”图案

u8 code wei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
void delay(u8 b)//延时
{
        while(b--);
}
/**************** 向HC595发送一个字节函数 ******************/
void Send1(u8 dat)
{               
        u8 i;
        for(i=0;i<8;i++)
        {
                ds1 =dat&0x01;
                dat>>=1;        
                shcp = 1;
                shcp = 0;        
        }
                stcp = 1;
        stcp = 0;
}
void Send2(u8 ddat)
{               
        u8 j;
        for(j=0;j<8;j++)
        {
                ds2 =ddat&0x80;
                ddat<<=1;        
                shcp = 1;
                shcp = 0;               
        }
        stcp = 1;
        stcp = 0;
}

void main()
{
        u8 k;
        while(1)
        {        
                for(k=0;k<8;k++)
                {
                        Send2(wei[k]);
                        Send1(display[k]);        
                delay(100);
                }
        }
}




关键词: 74HC595     LED点阵     LED驱动    

工程师
2021-03-02 23:09:29    评分
2楼

两片74HC595分别驱动点阵LED行/列完全可以,但要多用1个IO口。接法如下,程序也要修改。


工程师
2021-03-02 23:14:12    评分
3楼
100%程序的问题,我们量产的点阵模块就是两片595驱动列,两片595驱动行。



工程师
2021-03-02 23:18:53    评分
4楼

595好像是总线控制吧,你要想一个控制行或列用573好些吧!


高工
2021-03-02 23:49:32    评分
5楼

问题真的提的蛮好的


共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]