Files
xdeSpace/code/led3number/led3number_original.c

277 lines
5.2 KiB
C

const unsigned char Code_Number_16_12[17][32]={ //16点阵高,12点阵宽
{0x00, 0x00,
0x3F, 0x02,
0x3F, 0x02,
0x31, 0x02,
0x31, 0x02,
0x31, 0x02,
0x31, 0x02,
0x31, 0x02,
0x31, 0x02,
0x31, 0x02,
0x31, 0x02,
0x31, 0x02,
0x31, 0x02,
0x3F, 0x02,
0x3F, 0x02,
0x00, 0x00}, //0
{0x00, 0x00,
0x01, 0x02,
0x01, 0x02,
0x01, 0x02,
0x01, 0x02,
0x01, 0x02,
0x01, 0x02,
0x01, 0x02,
0x01, 0x02,
0x01, 0x02,
0x01, 0x02,
0x01, 0x02,
0x01, 0x02,
0x01, 0x02,
0x01, 0x02,
0x00, 0x00}, //1
{0x00, 0x00,
0x3F, 0x02,
0x3F, 0x02,
0x01, 0x02,
0x01, 0x02,
0x01, 0x02,
0x01, 0x02,
0x3F, 0x02,
0x3F, 0x02,
0x30, 0x00,
0x30, 0x00,
0x30, 0x00,
0x30, 0x00,
0x3F, 0x02,
0x3F, 0x02,
0x00, 0x00}, //2
{0x00, 0x00,
0x3F, 0x02,
0x3F, 0x02,
0x01, 0x02,
0x01, 0x02,
0x01, 0x02,
0x01, 0x02,
0x3F, 0x02,
0x3F, 0x02,
0x01, 0x02,
0x01, 0x02,
0x01, 0x02,
0x01, 0x02,
0x3F, 0x02,
0x3F, 0x02,
0x00, 0x00}, //3
{0x00, 0x00,
0x31, 0x02,
0x31, 0x02,
0x31, 0x02,
0x31, 0x02,
0x31, 0x02,
0x31, 0x02,
0x3F, 0x02,
0x3F, 0x02,
0x01, 0x02,
0x01, 0x02,
0x01, 0x02,
0x01, 0x02,
0x01, 0x02,
0x01, 0x02,
0x00, 0x00}, //4
{0x00, 0x00,
0x3F, 0x02,
0x3F, 0x02,
0x30, 0x00,
0x30, 0x00,
0x30, 0x00,
0x30, 0x00,
0x3F, 0x02,
0x3F, 0x02,
0x01, 0x02,
0x01, 0x02,
0x01, 0x02,
0x01, 0x02,
0x3F, 0x02,
0x3F, 0x02,
0x00, 0x00}, //5
{0x00, 0x00,
0x3F, 0x02,
0x3F, 0x02,
0x30, 0x00,
0x30, 0x00,
0x30, 0x00,
0x30, 0x00,
0x3F, 0x02,
0x3F, 0x02,
0x31, 0x02,
0x31, 0x02,
0x31, 0x02,
0x31, 0x02,
0x3F, 0x02,
0x3F, 0x02,
0x00, 0x00}, //6
{0x00, 0x00,
0x3F, 0x02,
0x3F, 0x02,
0x01, 0x02,
0x01, 0x02,
0x01, 0x02,
0x01, 0x02,
0x01, 0x02,
0x01, 0x02,
0x01, 0x02,
0x01, 0x02,
0x01, 0x02,
0x01, 0x02,
0x01, 0x02,
0x01, 0x02,
0x00, 0x00}, //7
{0x00, 0x00,
0x3F, 0x02,
0x3F, 0x02,
0x31, 0x02,
0x31, 0x02,
0x31, 0x02,
0x31, 0x02,
0x3F, 0x02,
0x3F, 0x02,
0x31, 0x02,
0x31, 0x02,
0x31, 0x02,
0x31, 0x02,
0x3F, 0x02,
0x3F, 0x02,
0x00, 0x00}, //8
{0x00, 0x00,
0x3F, 0x02,
0x3F, 0x02,
0x31, 0x02,
0x31, 0x02,
0x31, 0x02,
0x31, 0x02,
0x3F, 0x02,
0x3F, 0x02,
0x01, 0x02,
0x01, 0x02,
0x01, 0x02,
0x01, 0x02,
0x3F, 0x02,
0x3F, 0x02,
0x00, 0x00}, //9
{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 read_code(void)
{
static uint16_t roll;
uint8_t i,j;
uint8_t cc,cd;
static uint16_t ROW_8BIT = 0;
static uint8_t code12_ram[48][16];
uint8_t move_reg1 = 0;
uint8_t move_reg2 = 0;
ROW_8BIT = 0;
if(Screen.Uart.First_Receive_Data)
{
if(Screen.Set.High==16 || Screen.DisplayMode.Work_Mode==2)
{
if(Screen.Para.Data_LEN%(Screen.Set.Width/8))
{
Screen.Para.Num = (Screen.Para.Data_LEN/(Screen.Set.Width/8))+1; //
}
else
Screen.Para.Num = Screen.Para.Data_LEN/(Screen.Set.Width/8);
}
else
{
if((Screen.Para.Data_LEN)%(Screen.Set.Width/16))
{
Screen.Para.Num = (Screen.Para.Data_LEN/(Screen.Set.Width/16))+1; //
}
else
Screen.Para.Num = Screen.Para.Data_LEN/(Screen.Set.Width/16);
}
}
else
{
Screen.Para.Num = 1;
}
if(Screen.Para.Num == 1)
{
Screen.Para.Single_Line_Direct_Display_Flag = 0;
}
if(!Screen.Uart.First_Receive_Data)
{
for(roll=0;roll<Screen.Para.Data_LEN;roll++)
{
cc = Display_data[roll];
for(i=0;i<16;i++)
{
if(cc==0x20) //空格
CodeRAM[roll][i] = Code_Number_16[16][i];
else
CodeRAM[roll][i] = Code_Number_16[cc-0X30][i];
}
}
}
else
{
for(roll=0;roll<4;roll++)
{
cc = Display_data[32- Screen.Uart.Receive_ID_Number*4+roll];
for(i=0;i<16;i++)
{
if(cc==0x20) //空格
{
code12_ram[roll*2][i]=Code_Number_16_12[10][i*2];
code12_ram[roll*2+1][i]=Code_Number_16_12[10][i*2+1];
}
else
{
code12_ram[roll*2][i]=Code_Number_16_12[cc-0X30][i*2] ;
code12_ram[roll*2+1][i]=Code_Number_16_12[cc-0X30][i*2+1] << 6;
}
}
}
for(i=0;i<16;i++)
{
move_reg1 = code12_ram[5][i];
code12_ram[4][i]=(code12_ram[4][i]<<1) | (move_reg1>>7);
code12_ram[5][i]=code12_ram[5][i]<<1; //第二个数左移一位
move_reg1 = code12_ram[4][i];
code12_ram[3][i]=code12_ram[3][i] | (move_reg1>>4);
move_reg1 = code12_ram[4][i];
move_reg2 = code12_ram[5][i];
code12_ram[4][i]= move_reg1<<4 | move_reg2>>4;
move_reg1 = code12_ram[6][i];
code12_ram[4][i] |= move_reg1>>6;
move_reg1 = code12_ram[6][i];
code12_ram[5][i] = (move_reg1<<2) | (code12_ram[7][i]>>6);
}
// TODO: 新的移位要求 LED最左边和最右边的一列不亮;每个数字 左边有两列不亮,右侧一列不亮,也就是说 每个数字单元有10个点阵宽,左侧有两列不亮,右侧有一列不亮。
memcpy(&CodeRAM[32- Screen.Uart.Receive_ID_Number*4][0],&code12_ram[2][0],64);
}
memcpy(CodeRAM_Display,CodeRAM,sizeof(CodeRAM));
memcpy(CodeRAM2_Display,CodeRAM2,sizeof(CodeRAM2));
}