277 lines
5.2 KiB
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));
|
|
}
|
|
|
|
|
|
|