报这个错了,求大神(first defined here)
这是源码
/*
* led_display.c
*
* Created on: 2017年4月18日
* Author: Huang
*
* 取模方式:横向8点左高位,上到下右到左
*/
#include"led_display.h"
#include "fonts.h"
#include"delay.h"
#include"string.h"
#define LEDRowNum 16
#define LEDColumnNum 64
#define LedBoardNum 8
#define ShiftLeftSpeed 6
int display_speed=70;
bool do_gprs_thing=0;
uint8 LedDispalyBuf[210][16]={{0}};
uint8 LedTimeBuf[8][16]={{0}};
uint8 LedTimeBuf2[8][16]={{0}};
uint8 ad_dis_play_num=0;
uint8 power_on0[40][16]={
{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},
{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},
{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},
{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},
{0x00,0x00,0xFC,0x04,0x05,0x49,0x2A,0x14,0x10,0x28,0x24,0x45,0x81,0x02,0x04,0x08},
{0x80,0x80,0x80,0xFC,0x04,0x08,0x40,0x40,0x40,0xA0,0xA0,0x10,0x10,0x08,0x04,0x02},
/* (16 X 16 , 新宋体 )*/
{0x00,0x20,0x13,0x12,0x02,0x02,0xF2,0x12,0x12,0x12,0x13,0x12,0x10,0x28,0x47,0x00},
{0x00,0x80,0x3C,0x24,0x24,0x24,0x24,0x24,0x24,0xB4,0x28,0x20,0x20,0x20,0xFE,0x00},
/* (16 X 16 , 新宋体 )*/
{0x10,0x10,0x1F,0x20,0x20,0x67,0x64,0xA4,0x27,0x20,0x22,0x21,0x20,0x21,0x22,0x2C},
{0x40,0x40,0xFE,0x40,0x40,0xFC,0x44,0x44,0xFC,0x40,0x40,0x40,0x80,0x40,0x30,0x0E},
/* (16 X 16 , 新宋体 )*/
{0x00,0x3F,0x21,0x21,0x21,0x3F,0x21,0x21,0x21,0x3F,0x21,0x21,0x21,0x41,0x41,0x80},
{0x00,0xF8,0x08,0x08,0x08,0xF8,0x08,0x08,0x08,0xF8,0x08,0x08,0x08,0x08,0x28,0x10}, /* (16 X 16 , 新宋体 )*/
{0x1F,0x00,0x00,0x01,0x79,0x0F,0x09,0x11,0x17,0x21,0x21,0x4F,0x81,0x01,0x05,0x02},
{0xE0,0x40,0x80,0x04,0x28,0xF0,0x20,0x10,0xD0,0x08,0x08,0xE4,0x02,0x00,0x00,0x00},
/* (16 X 16 , 新宋体 )*/
{0x00,0x7F,0x41,0x7F,0x41,0x7F,0x08,0xFF,0x00,0x7F,0x41,0x7F,0x08,0x49,0x88,0x18},
{0x00,0x04,0x04,0x08,0x10,0x22,0x02,0xC4,0x08,0x10,0x22,0x02,0x04,0x08,0x90,0x60},
/* (16 X 16 , 新宋体 )*/
{0x08,0x1D,0xF0,0x10,0x10,0xFD,0x10,0x38,0x34,0x50,0x53,0x90,0x10,0x10,0x10,0x10},
{0x10,0x10,0x90,0x90,0x10,0x10,0x90,0x90,0x10,0x1E,0xF0,0x10,0x10,0x10,0x10,0x10},
/* (16 X 16 , 新宋体 )*/
{0x10,0x10,0x10,0x13,0xFC,0x10,0x10,0x15,0x18,0x30,0xD0,0x10,0x10,0x10,0x51,0x26},
{0x20,0x20,0x20,0xFE,0x20,0x20,0x20,0xFC,0x84,0x88,0x48,0x50,0x20,0x50,0x88,0x06},
{0x08,0x04,0x00,0x7F,0x01,0x3F,0x02,0xFF,0x04,0x08,0x34,0xC4,0x04,0x08,0x10,0x20},
{0x20,0x40,0x00,0xFC,0x00,0xF8,0x00,0xFE,0x40,0x20,0x58,0x46,0x40,0x40,0x40,0x40},
/* (16 X 16 , 新宋体 )*/
{0x00,0xFC,0x23,0x20,0x20,0x3D,0x45,0x45,0x65,0x95,0x09,0x09,0x11,0x21,0x47,0x80},
{0x20,0x20,0xFE,0x20,0x20,0xFC,0x04,0xFC,0x04,0xFC,0x04,0xFC,0x04,0x04,0xFE,0x00},
/* (16 X 16 , 新宋体 )*/
{0x00,0x7C,0x44,0x44,0x44,0x7C,0x44,0x44,0x7C,0x44,0x44,0x44,0x4E,0xF0,0x01,0x02},
{0x20,0x20,0x20,0x20,0xFC,0x24,0x24,0x24,0x24,0x24,0x24,0x44,0x44,0x84,0x28,0x10},
/* (16 X 16 , 新宋体 )*/
{0x00,0x00,0x3F,0x01,0x01,0x3F,0x01,0x01,0x01,0xFF,0x01,0x01,0x01,0x01,0x05,0x02},
{0x10,0xF8,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0xFE,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,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,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,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,0x00,0x00,0x00,0x00,0x00,0x00}
};
static void select_row(int rowNumber)
{
led_select_row_PutVal(NULL, rowNumber);
}
static void LED_phy_display(uint8 data)
{
/* 每个小LED板每行有8个LED灯 */
uint8 i;
for(i=0;i<8;i++)
{
if((data>>7)&0x01)
{
/*输出低电平*/
led_R1_PutVal(NULL, 0);
}
else
{
/*输出高电平*/
led_R1_PutVal(NULL, 1);
}
/*SCLK输出高电平*/
led_CLK_PutVal(NULL, 1);
/*移除已经处理的最高位*/
data<<= 1;
/*SCLK输出低电平*/
led_CLK_PutVal(NULL, 0);
}
}
static void led_destroy(uint8 rowNumber )
{
for(int i=0; i<8;i++)
{
LED_phy_display(0x00);
}
/* 片选 */
led_EN_PutVal(NULL, 1);
/* 锁存列信号,高电平有效 */
led_STB_PutVal(NULL, 1);
led_STB_PutVal(NULL, 0);
/* 行信号选择 */
select_row(rowNumber);
/* 片选 */
led_EN_PutVal(NULL, 0);
}
void LED_display_init(void)
{ //这个位置
/*行选择清零*/
led_select_row_PutVal(NULL, 0x00);
/*片选清零*/
led_EN_PutVal(NULL, 0);
/*锁存置1*/
led_STB_PutVal(NULL, 1);
/*CLK清零*/
led_CLK_PutVal(NULL, 0);
}
void PowerOnDisplay(void)
{ //还有这个位置
int i,rowNumber,columnNumber;
for(i=0;i<50;i++) //50表示显示的时间长度
{
/* 以行为单位,循环 */
for( rowNumber=0; rowNumber<16; rowNumber++)
{
/* 选择某一块 */
for( columnNumber=0; columnNumber<8; columnNumber++)
{
/* 以块为单位,写入列信号数据 */
LED_phy_display( power_on0[columnNumber][rowNumber]);
}
/* 片选 */
led_EN_PutVal(NULL, 1);
/* 锁存列信号,高电平有效 */
led_STB_PutVal(NULL, 1);
led_STB_PutVal(NULL, 0);
/* 行信号选择 */
select_row(rowNumber);
/* 片选 */
led_EN_PutVal(NULL, 0);
}
// led_destroy( rowNumber );
// delay_ms(0.5);
}
for (int i = 0; i < 50; ++i)
{
int i,rowNumber,columnNumber;
for (int rowNumber = 0; rowNumber < 16; rowNumber++)
{
for (int columnNumber = 1; columnNumber < 9; columnNumber++)
{
LED_phy_display( power_on0[columnNumber][rowNumber]);
}
/* 片选 */
led_EN_PutVal(NULL, 1);
/* 锁存列信号,高电平有效 */
led_STB_PutVal(NULL, 1);
led_STB_PutVal(NULL, 0);
/* 行信号选择 */
select_row(rowNumber);
/* 片选 */
led_EN_PutVal(NULL, 0);
}
// led_destroy( rowNumber );
// delay_ms(0.5);
}
for (int i = 0; i < 50; ++i)
{
int i,rowNumber,columnNumber;
for (int rowNumber = 0; rowNumber < 16; rowNumber++)
{
for (int columnNumber = 3; columnNumber < 11; columnNumber++)
{
LED_phy_display( power_on0[columnNumber][rowNumber]);
}
/* 片选 */
led_EN_PutVal(NULL, 1);
/* 锁存列信号,高电平有效 */
led_STB_PutVal(NULL, 1);
led_STB_PutVal(NULL, 0);
/* 行信号选择 */
select_row(rowNumber);
/* 片选 */
led_EN_PutVal(NULL, 0);
}
// led_destroy( rowNumber );
// delay_ms(0.5);
}
for (int i = 0; i < 50; ++i)
{
int i,rowNumber,columnNumber;
for (int rowNumber = 0; rowNumber < 16; rowNumber++)
{
for (int columnNumber = 5; columnNumber < 13; columnNumber++)
{
LED_phy_display( power_on0[columnNumber][rowNumber]);
}
/* 片选 */
led_EN_PutVal(NULL, 1);
/* 锁存列信号,高电平有效 */
led_STB_PutVal(NULL, 1);
led_STB_PutVal(NULL, 0);
/* 行信号选择 */
select_row(rowNumber);
/* 片选 */
led_EN_PutVal(NULL, 0);
}
// led_destroy( rowNumber );
// delay_ms(0.5);
}
for (int i = 0; i < 50; ++i)
{
int i,rowNumber,columnNumber;
for (int rowNumber = 0; rowNumber < 16; rowNumber++)
{
for (int columnNumber = 7; columnNumber < 15; columnNumber++)
{
LED_phy_display( power_on0[columnNumber][rowNumber]);
}
/* 片选 */
led_EN_PutVal(NULL, 1);
/* 锁存列信号,高电平有效 */
led_STB_PutVal(NULL, 1);
led_STB_PutVal(NULL, 0);
/* 行信号选择 */
select_row(rowNumber);
/* 片选 */
led_EN_PutVal(NULL, 0);
}
// led_destroy( rowNumber );
// delay_ms(0.5);
}
for (int i = 0; i < 50; ++i)
{
int i,rowNumber,columnNumber;
for (int rowNumber = 0; rowNumber < 16; rowNumber++)
{
for (int columnNumber = 9; columnNumber < 17; columnNumber++)
{
LED_phy_display( power_on0[columnNumber][rowNumber]);
}
/* 片选 */
led_EN_PutVal(NULL, 1);
/* 锁存列信号,高电平有效 */
led_STB_PutVal(NULL, 1);
led_STB_PutVal(NULL, 0);
/* 行信号选择 */
select_row(rowNumber);
/* 片选 */
led_EN_PutVal(NULL, 0);
}
// led_destroy( rowNumber );
// delay_ms(0.5);
}
for (int i = 0; i < 50; ++i)
{
int i,rowNumber,columnNumber;
for (int rowNumber = 0; rowNumber < 16; rowNumber++)
{
for (int columnNumber = 11; columnNumber < 19; columnNumber++)
{
LED_phy_display( power_on0[columnNumber][rowNumber]);
}
/* 片选 */
led_EN_PutVal(NULL, 1);
/* 锁存列信号,高电平有效 */
led_STB_PutVal(NULL, 1);
led_STB_PutVal(NULL, 0);
/* 行信号选择 */
select_row(rowNumber);
/* 片选 */
led_EN_PutVal(NULL, 0);
}
// led_destroy( rowNumber );
// delay_ms(0.5);
}
for (int i = 0; i < 50; ++i)
{
int i,rowNumber,columnNumber;
for (int rowNumber = 0; rowNumber < 16; rowNumber++)
{
for (int columnNumber = 13; columnNumber < 21; columnNumber++)
{
LED_phy_display( power_on0[columnNumber][rowNumber]);
}
/* 片选 */
led_EN_PutVal(NULL, 1);
/* 锁存列信号,高电平有效 */
led_STB_PutVal(NULL, 1);
led_STB_PutVal(NULL, 0);
/* 行信号选择 */
select_row(rowNumber);
/* 片选 */
led_EN_PutVal(NULL, 0);
}
// led_destroy( rowNumber );
// delay_ms(0.5);
}
}