接口是HUB08
芯片有 74HC245D 74HC595 74hc138 4953s
我的代码是这样的:main.c
#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "led.h"
int main(void)
{
delay_init(168);
LED_08_GPIO_Config();
while(1)
{
Text1_Led();
delay_ms(1000);
}
}
led.c
#include "led.h"
#include "sys.h"
//LED IO3õê¼»ˉ
void LED_08_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);//ê1ÄüGPIOFê±Öó
//GPIOF3õê¼»ˉéèÖÃ
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 |GPIO_Pin_5 |GPIO_Pin_3 ;//
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//ÆÕí¨êä3öÄ£ê½
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//íÆíìêä3ö
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//éÏà-
//A B R0 R1 STB CLK¶Ôó|IO¿ú
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_15|GPIO_Pin_13|GPIO_Pin_9|GPIO_Pin_7| GPIO_Pin_10|GPIO_Pin_4 ;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//ÆÕí¨êä3öÄ£ê½
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//íÆíìêä3ö
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;//ÏÂà-
GPIO_Init(GPIOF, &GPIO_InitStructure);//3õê¼»ˉGPIO
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);//ê1ÄüGPIOCê±Öó
//GPIOC3õê¼»ˉéèÖÃ
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_2;//
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//ÆÕí¨êä3öÄ£ê½
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//íÆíìêä3ö
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//éÏà-
//C G0 G1 OE¶Ôó|μÄIO¿ú
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5| GPIO_Pin_3| GPIO_Pin_1| GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//ÆÕí¨êä3öÄ£ê½
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//íÆíìêä3ö
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;//ÏÂà-
GPIO_Init(GPIOC, &GPIO_InitStructure);//3õê¼»ˉGPIO
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);//ê1ÄüGPIOBê±Öó
//GPIOB3õê¼»ˉéèÖÃ
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;//
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//ÆÕí¨êä3öÄ£ê½
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//íÆíìêä3ö
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//éÏà-
GPIO_Init(GPIOB, &GPIO_InitStructure);//3õê¼»ˉGPIO
GPIO_SetBits(GPIOB,GPIO_Pin_2);//GPIOBéèÖøߣ¬μÆÃe
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);//ê1ÄüGPIOAê±Öó
//GPIOA3õê¼»ˉéèÖÃ
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;//
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//ÆÕí¨êä3öÄ£ê½
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//íÆíìêä3ö
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;//ÏÂà-
GPIO_Init(GPIOA, &GPIO_InitStructure);//3õê¼»ˉGPIO
}
/***************************************************************
*oˉêyÃû£oLed_Light
*DÎ2Î:void
*·μ»ØÖμ:void
*oˉêy1|Äü£oμãááÖ÷3ìDò£¬ÏèÇåÆᣬè»oóèÃoìμÆè«áá
****************************************************************/
void Led_Light(void)
{
OE(1);
Clean_595();
while(1)
{
WriteDataToFirstHalScreen();
SetRowLight();
}
}
/***************************************************************
*:Clean_595
*:void
*:void
****************************************************************/
void Clean_595(void)
{
int columnarr[8]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
int send_data[64]={0};
int i,j;
STB(0);
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
send_data[j+i*8]=columnarr%2;
columnarr=columnarr/2;
}
}
for(i=0;i<64;i++)
{
CLK(0);
R0(send_data);
G0(send_data);
CLK(1);
}
STB(1);
CLK(0);
STB(0);
}
/***************************************************************
*:WriteDataToFirstHalScreen
*:void
*:void
****************************************************************/
void WriteDataToFirstHalScreen(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%2;
columnarr=columnarr/2;
}
}
for(i=0;i<64;i++)
{
CLK(0);
R0(send_data);
CLK(1);
}
STB(1);
CLK(0);
STB(0);
}
/***************************************************************
*SetRowLight
*:void
*:void
*
****************************************************************/
void SetRowLight(void)
{
// u8 weixuan[16]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
int rowarr[4] = {0};
int i=0,rownum;
for(rownum=0;rownum<16;rownum++)
{
OE(0);
while(rownum>0)
{
rowarr = rownum%2;
rownum = rownum/2;
i++;
}
A(rowarr[0]);
B(rowarr[1]);
C(rowarr[2]);
D(rowarr[3]);
OE(1);
}
}
void Text1_Led(void)
{
LED_08_GPIO_Config();
Led_Light();
}
led.h
#ifndef _LED_SCREEN_
#define _LED_SCREEN_
#include "sys.h"
//ÖÃ1¸ßμçƽ£¬ÖÃ0μíμçƽ
#define A(x) x?GPIO_SetBits(GPIOF,GPIO_Pin_15):GPIO_ResetBits(GPIOF,GPIO_Pin_15)
#define B(x) x?GPIO_SetBits(GPIOF,GPIO_Pin_13):GPIO_ResetBits(GPIOF,GPIO_Pin_13)
#define C(x) x?GPIO_SetBits(GPIOC,GPIO_Pin_5):GPIO_ResetBits(GPIOC,GPIO_Pin_5)
#define D(x) x?GPIO_SetBits(GPIOA,GPIO_Pin_7):GPIO_ResetBits(GPIOA,GPIO_Pin_7)
//R0 G0 ¿ØÖÆéÏ°ëÆáμÄoìÂ죬R1 G1¿ØÖÆÏ°ëÆáμÄoìÂ죬1μÄê±oò¸ßμçƽ£¬2»áá
#define R0(x) x?GPIO_SetBits(GPIOF,GPIO_Pin_9):GPIO_ResetBits(GPIOF,GPIO_Pin_9)
#define R1(x) x?GPIO_SetBits(GPIOF,GPIO_Pin_7):GPIO_ResetBits(GPIOF,GPIO_Pin_7)
#define G0(x) x?GPIO_SetBits(GPIOC,GPIO_Pin_3):GPIO_ResetBits(GPIOC,GPIO_Pin_3)
#define G1(x) x?GPIO_SetBits(GPIOC,GPIO_Pin_1):GPIO_ResetBits(GPIOC,GPIO_Pin_1)
//OEê1Äü
#define OE(x) x?GPIO_SetBits(GPIOC,GPIO_Pin_0):GPIO_ResetBits(GPIOC,GPIO_Pin_0)
//STBËø′æ¿ú
#define STB(x) x?GPIO_SetBits(GPIOF,GPIO_Pin_10):GPIO_ResetBits(GPIOF,GPIO_Pin_10)
//CLKê±Öó¿ú
#define CLK(x) x?GPIO_SetBits(GPIOF,GPIO_Pin_4):GPIO_ResetBits(GPIOF,GPIO_Pin_4)
/*--------------------------1--------------------------*/
void LED_08_GPIO_Config(void);
void Led_Light(void);
void Clean_595(void);
void WriteDataToFirstHalScreen(void);
void SetRowLight(void);
void Text1_Led(void);
#endif
线都接好过后,LED板子没反应,重启单片机过后,LED板子只有两排闪了4下(重复启动也是4下)然后就没反应了,求助啊。
一周热门 更多>