高级会员
主题
帖子
积分330
阅读权限30
注册时间2013-9-11
最后登录1970-1-1
在线时间 小时
|
#include "delay.h"
#include "sys.h"
#define SH_CP PAout(0)
#define ST_CP PAout(1)
#define DR1 PAout(2)
#define DR2 PAout(3)
#define DG1 PAout(4)
#define DG2 PAout(5)
#define Data4094 PAout(6)
#define CLK4094 PAout(7)
#define EN4094 PAout(8)
unsigned char DataR1[8];
unsigned char DataR2[8];
unsigned char DataG1[8];
unsigned char DataG2[8];
unsigned char DataHang[2];
unsigned char ArrayNum16x16[352] = {
/*0 CA3B0 */
0x00,0x00,0x07,0xE0,0x0C,0x30,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x0C,0x30,0x07,0xE0,0x00,0x00,
/*1 CA3B1 */
0x00,0x00,0x01,0x80,0x03,0x80,0x07,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x07,0xE0,0x00,0x00,
/*2 CA3B2 */
0x00,0x00,0x07,0xE0,0x0C,0x30,0x18,0x18,0x18,0x18,0x00,0x18,0x00,0x18,0x00,0xF0,0x03,0x80,0x06,0x00,0x0C,0x00,0x18,0x00,0x18,0x18,0x18,0x18,0x1F,0xF8,0x00,0x00,
/*3 CA3B3 */
0x00,0x00,0x0F,0xF0,0x18,0x18,0x18,0x18,0x00,0x18,0x00,0x30,0x00,0x60,0x01,0xC0,0x00,0x60,0x00,0x30,0x00,0x18,0x00,0x18,0x18,0x18,0x18,0x30,0x0F,0xE0,0x00,0x00,
/*4 CA3B4 */
0x00,0x00,0x01,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x06,0xC0,0x06,0xC0,0x0C,0xC0,0x0C,0xC0,0x18,0xC0,0x30,0xC0,0x3F,0xF8,0x00,0xC0,0x00,0xC0,0x03,0xF0,0x00,0x00,
/*5 CA3B5 */
0x00,0x00,0x1F,0xF8,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x1F,0xE0,0x1C,0x30,0x18,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x18,0x18,0x18,0x30,0x0F,0xE0,0x00,0x00,
/*6 CA3B6 */
0x00,0x00,0x07,0xE0,0x0C,0x30,0x18,0x18,0x18,0x18,0x18,0x00,0x18,0x00,0x1F,0xE0,0x1C,0x30,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x0C,0x30,0x07,0xE0,0x00,0x00,
/*7 CA3B7 */
0x00,0x00,0x1F,0xF8,0x18,0x18,0x18,0x18,0x00,0x30,0x00,0x30,0x00,0x60,0x00,0xC0,0x00,0xC0,0x01,0x80,0x01,0x80,0x01,0x80,0x03,0x00,0x03,0x00,0x03,0x00,0x00,0x00,
/*8 CA3B8 */
0x00,0x00,0x07,0xE0,0x0C,0x30,0x18,0x18,0x18,0x18,0x18,0x18,0x0C,0x30,0x07,0xE0,0x0C,0x30,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x0C,0x30,0x07,0xE0,0x00,0x00,
/*9 CA3B9 */
0x00,0x00,0x07,0xE0,0x0C,0x30,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x0C,0x38,0x07,0xF8,0x00,0x18,0x00,0x18,0x18,0x18,0x18,0x18,0x0C,0x30,0x07,0xE0,0x00,0x00,
/*null */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
void LEDPort_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能PA端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1 | GPIO_Pin_2 |GPIO_Pin_3 |GPIO_Pin_4 |GPIO_Pin_5 |GPIO_Pin_6 |GPIO_Pin_7 |GPIO_Pin_8; //LED0-->PB.5 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOA, &GPIO_InitStructure); //根据设定参数初始化GPIOB.5
}
void Write4094()
{
unsigned char i,j;
for( i = 0; i < 2; i++)
{
for( j = 0; j < 8; j++ )
{
if( DataHang[i] & 0x80 )
Data4094 = 1;
else
Data4094 = 0;
CLK4094 = 0;
delay_us(2);
CLK4094 = 1;
DataHang[i] <<= 1;
}
}
}
void Write595(void)
{
unsigned char i,j;
for( i = 0; i < 8; i++)
{
for( j = 0; j < 8; j++)
{
if( DataR1[i] & 0x80 )
DR1 = 0;
else
DR1 = 1;
if( DataR2[i] & 0x80 )
DR2 = 0;
else
DR2 = 1;
if( DataG1[i] & 0x80 )
DG1 = 0;
else
DG1 = 1;
if( DataG2[i] & 0x80 )
DG2 = 0;
else
DG2 = 1;
SH_CP = 0;
delay_us(2);
SH_CP = 1;
DataR1[i] <<=1;
DataR2[i] <<=1;
DataG1[i] <<=1;
DataG2[i] <<=1;
}
}
}
int main(void)
{
unsigned char i,j,k;
delay_init(); //延时函数初始化
LEDPort_Init();
EN4094 = 0;
while(1)
{
for(k=0;k<200;k++)
{
for( i = 0 ;i < 16; i++)
{
for( j = 0; j < 8; j++) //发送列 数据
{
// DataR1[j]=0xff;
DataG2[j]=0xff;
}
Write595();
ST_CP = 0;
ST_CP = 1;
if(i<8) //行扫描
DataHang[0] = 0;
else
DataHang[0] = 1<<(i-8);
DataHang[1] = 1 << i;
Write4094();
}
}
for(k=0;k<200;k++)
{
for( i = 0 ;i < 16; i++)
{
for( j = 0; j < 8; j++) //发送列 数据
{
DataR1[j]=0x55;
// DataG2[j]=0xff;
}
Write595();
ST_CP = 0;
ST_CP = 1;
if(i<8) //行扫描
DataHang[0] = 0;
else
DataHang[0] = 1<<(i-8);
DataHang[1] = 1 << i;
Write4094();
}
}
for(k=0;k<200;k++)
{
for( i = 0 ;i < 16; i++)
{
for (j=0;j<4;j++)
{
DataG1[0+(j<<1)]=ArrayNum16x16[j*32+0+(i<<1)];
DataG1[1+(j<<1)]=ArrayNum16x16[j*32+1+(i<<1)];
DataR2[0+(j<<1)]=ArrayNum16x16[(j+4)*32+0+(i<<1)];
DataR2[1+(j<<1)]=ArrayNum16x16[(j+4)*32+1+(i<<1)];
}
Write595();
ST_CP = 0;
ST_CP = 1;
if(i<8) //行扫描
DataHang[0] = 0;
else
DataHang[0] = 1<<(i-8);
DataHang[1] = 1 << i;
Write4094();
}
}
}
}
试试这个代码,STM32的,可以照样画葫芦改成51的, |
|