找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5062|回复: 2
打印 上一主题 下一主题
收起左侧

我有个32*64的LED点阵屏,用的STM32控制,总点不亮,求助。

[复制链接]
跳转到指定楼层
楼主
ID:192634 发表于 2017-4-23 12:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
2黑币
点阵屏是32*64的 接口是 hun08 芯片有74HC138 74HC245D 74HC595  源码我发一下
main。c
#include "stm32f4xx.h"
#include "KZYJ.h"
#include "delay.h"


int main(void)
{
        int i;
        OE=1;
    void Clean_595();

        while(1)
        {
                for(i=0;i<16;i++)
                {
                     void HC595_Send_Date_Up();
                      void  HC_138();
                       void HC595_Send_Date_Down();
                        HC_138();
                }
        }
       
}



KZYJ.C
#include "KZYJ.h"
#include "sys.h"


//òy½Å3õê¼»ˉoˉêy
void LED_GPIO_INIT(void)
{
        GPIO_InitTypeDef   GPIO_InitStructure;
       
       
        //OE½ó38òëÂëÆ÷μÄE1£¨μíμçƽóDD§£©
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);//ê1ÄüGPIOA
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;
        GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;
        GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;//Ï轫OEê1Äü¿úà-¸ß
        GPIO_Init(GPIOA,&GPIO_InitStructure);
       
       
       
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);//ê1ÄüGPIOF
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9|GPIO_Pin_7|GPIO_Pin_3|GPIO_Pin_5;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;
        GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;
        GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;//ÏèG0 G1½«Ñ¡Æá¡¢F3Ëø′æ¡¢ê±F5Öó¿úà-μí
        GPIO_Init(GPIOF,&GPIO_InitStructure);
       
       

        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC,ENABLE);//ê1ÄüGPIOC
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;
        GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;
        GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;//Ï轫c1 c3Ñ¡Æá c4 c2 c0 B C Dà-μí
        GPIO_Init(GPIOC,&GPIO_InitStructure);



        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);//ê1ÄüGPIOB
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;
        GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;
        GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;//½«B2 Aà-μí
        GPIO_Init(GPIOB,&GPIO_InitStructure);
       
       
}
//Ïò595ÖDêäèëêy¾Y
void HC595_Send_Date_Up(void)
{      
              CLK=0;
              STB=0;
        int i,j;
        int send_data[64]={0};
  for(i=0;i<8;i++)
        {
        for(j=0;j<8;j++)
        {
                R0=send_data[j+i*8];
                STB=1;
                STB=0;
        }
        }
        CLK=1;
        CLK=0;

}

void HC595_Send_Date_Down(void)
{
        int i,j;
        int columnarr[8]={0};
        int send_data[64]={0};

        STB=0;
        for(i=0;i<8;i++)
        {
                for(j=0;j<8;j++)
                {
                        send_data[j+i*8]=columnarr[i]%2;
                        columnarr[i]=columnarr[i]/2;
                }
        }

        for(i=0;i<64;i++)
        {
                R1=send_data[i];
                CLK=1;
                CLK=0;

        }

        STB=1;
        STB=0;
}


void HC_138(void)
{
        int rowarr[4] = {0};
        int i=0,j,rownum;

                OE=0;
                for(j=0;j<4;j++)
                {
                        rowarr[i] = rownum%2;
                        rownum = rownum/2;
                        i++;
                }

                A=rowarr[0];
                B=rowarr[1];
                C=rowarr[2];
                D=rowarr[3];
                OE=1;
}

void Clean_595(void)
{
        int columnarr[8]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
        int send_data[64]={0};                              
        int i,j;
                                CLK=0;
        STB=0;
        for(i=0;i<8;i++)
        {
                for(j=0;j<8;j++)
                {
                        send_data[j+i*8] = columnarr[i]%2;
                        columnarr[i] = columnarr[i]/2;
                }
        }

        for(i=0;i<64;i++)
        {
                R0=send_data[i];
                G0=send_data[i];
                R1=send_data[i];
                G1=send_data[i];
                                              STB=1;
                STB=0;

        }
        CLK=1;
        CLK=0;
}



KZYJ.H
#ifndef _LED_H
#define _LED_H
#include "sys.h"


#define A   PCout(4)
#define B   PCout(1)
#define C   PCout(2)
#define D   PCout(0)
#define G0  PFout(9)
#define G1  PFout(7)
#define STB PFout(3)
#define CLK PFout(5)
#define R0  PCout(3)
#define R1  PCout(1)
#define OE  PAout(7)
#endif

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:251047 发表于 2018-12-4 17:23 | 只看该作者
EN拉低,时钟频率200K
回复

使用道具 举报

板凳
ID:575716 发表于 2019-8-26 11:10 | 只看该作者
解决了吗 需要请教
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表