|
2黑幣
點陣屏是32*64的 接口是 hun08 芯片有74HC138 74HC245D 74HC595 源碼我發(fā)一下
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
|
|