📄 vfd_disp.c
字号:
{ no[4*j+i]=(unsigned char)(abc_combi.abc_arry[j]>>rot_no)&0x0f;
rot_no-=4;
}
no[4*j+i]=(unsigned char)(abc_combi.abc_arry[j])&0x0f;
}
if(move_count == 1)
p=one_direct_data[36];
else if(move_count == 2)
p=two_direct_data[36];
else if(move_count == 3)
p= three_direct_data[36];
else if(move_count == 4)
p= four_direct_data[36];
else if(move_count == 5)
p=five_direct_data[36];
else if(move_count == 6)
p=six_direct_data[36];
for(j=0;j<12;j++)
{
i=no[j];
*p = init_abc_data[i];
p++;
}
}
/*********************************************/
/*********************************************/
void Get_37_disp_data(void)
{
unsigned char *p;
unsigned int data;
unsigned char number1,number2,number3,number4;
if(disp_empty_F != 1)
{
data = *font_dot_p ;
font_dot_p++;
}
else
{
// data=0x0000 ;
// if(disp_empty_count <= 112)
if(disp_empty_count < empty_column)
{
disp_empty_count++;
data = 0x0000;
}
else
{
Get_new_code_p();
if(*code_p != '\0') //if get next disp moment
{
disp_empty_count = 0 ;
disp_empty_F = 0 ;
Get_next_font_adr(code_p);
data = *font_dot_p;
font_dot_p++;
}
else
data = 0x0000;
}
// if(disp_empty_count >= 110)
// disp_empty_F=0;
// if(disp_empty_F == 0)
// {
// disp_empty_count=0;
// Get_new_code_p(); //sure new code_p
// }
}
Get_bit_d(data);
number1 =(unsigned char)((data>>12)&0x0f) ;
number2 =(unsigned char) (data>>8)&0x0f ;
number3 =(unsigned char) (data>>4)&0x0f ;
number4 =(unsigned char) data&0x0f ;
if(disp_mode == 1) //FIX DISP MODE
{
p=one_direct_data[37];
}
else if(disp_mode == 0)
{
switch(move_count)
{
case 1:
p=one_direct_data[37];
break;
case 2:
p=two_direct_data[37];
break;
case 3:
p=three_direct_data[37];
break;
case 4:
p=four_direct_data[37];
break;
case 5:
p=five_direct_data[37];
break;
case 6:
p=six_direct_data[37];
break;
default:
p=one_direct_data[37] ;
break ;
}
}
D_data_prc(number1,p);
D_data_prc(number2,p+3);
D_data_prc(number3,p+6);
D_data_prc(number4,p+9);
}
/*************************************************/
/*************************************************/
void D_data_prc(unsigned char number,unsigned char *pp)
{
unsigned char i;
for(i=0;i<3;i++)
*(pp+i) = init_d_data[number][i] ;
}
/************************************************/
/***2003-11-3 */
/************************************************/
/*** macro inint ******/
void Macro_interrupt_init(void)
{
CSIMMD1 = 0x08;
CSICHP1 = 0x84;
SFRP = 0x95; //sio1
MSC = 0x12; //18
SRISM1=1;
}
/*************************************************/
/*************************************************/
void Sio1_3wire_init(void)
{
CSIM1 = THREE_WIRE_MODE ; //sio_mode = 0x01;CSIE1=0 operation disablie ;transmit/receive mode
//12MHz/8
SRIF1 = 0 ; // clear interuput flag
/* PRIORITY 1 */
SRPR11 = 0 ;
SRPR10 = 1 ;
SRMK1 = 0 ;
}
/*************************************************/
/**** 25ms ***/
/*************************************************/
void Timer0_init(void)
{
TMC0 = 0x00 ; // operation stop
CRC0 = 0x00 ; //CR00 as compare register
PRM0 = 0xa1 ; //12M/16=750K Hz
CR00 = 0x5DC0 ; // (N+1)*t=50ms
TMPR001 = 1 ;
TMPR000 = 0 ;
//CR00 = 0x1500;
TMIF00 = 0 ; //clear interuput flag
TMMK00 = 0 ; // enable TM0 interuput
// TMC0 = 0x0c ;
}
/************************************************/
/************ vfd fresh frequency ******/
/******* timer 6 /8ms ******/
void Timer6_init(void)
{
TMIF6=0;
TMC6 = 0x80 ;
PRM6 = 0x07 ; /*counter clock is 23.4KHz*/ /* fxx/512 */
CR60 = TM8MS ; /* High Speed Main Timer 10 msec */
TMPR61 = 0 ;
TMPR60 = 1 ;
TMMK6 = 0 ;
TCE6 = 1 ; /*start counter*/
}
/************************************************/
/************************************************/
void Clear_disp_p(void)
{
unsigned char i ;
TMMK00 = 1 ;
for(i=0;i<5;i++)
{
one_time_disp_p[i].font_p = (unsigned char *)"" ;
one_time_disp_p[i].disp_F = 0x00 ;
}
repeat_disp_p.font_p = (unsigned char *)"" ;
repeat_disp_p.disp_F = 0x00 ;
time_disp_p.font_p = (unsigned char *)"" ;
time_disp_p.disp_F = 0 ;
TMMK00 = 0 ;
}
/************************************************/
/************************************************/
void Clear_one_time_disp_F(unsigned char i)
{
TMMK00 = 1;
one_time_disp_p[i].disp_F = 0;
TMMK00 = 0;
}
/**********vfd disp init ************************/
/************************************************/
void Vfd_disp_init(void)
{
unsigned char *disp_p;
VFD_BK = 1;
VFD_LAT = 0;
Sio1_3wire_init();
Macro_interrupt_init();
Timer0_init(); //vfd fresh frequency
Timer6_init();
G1_g2_init();
Clear_disp_p();
move_count=0;
disp_empty_count = 110 ; //2003-11-29 add
// VFD_F_CON = 1 ;
// VFD_V_CON = 1;
// VFD_BK = 0; //BRIGHT ON
VFD_LAT = 0 ; //NO LATCH
}
/************************************************/
/**************** disp ram clear **************/
void Clear_d_send_ram(void)
{
unsigned char i,j;
for(i=0;i<39;i++)
for(j=0;j<18;j++)
d_d_send_data[i][j] = 0x00;
}
/***********************************************/
/***********************************************/
void Clear_ram_buff(unsigned char *pp)
{
unsigned char i,j;
for(i=0;i<38;i++)
for(j=0;j<12;j++)
{
*pp=0x00;
pp++;
}
}
/**********************************************/
/**********************************************/
void Clrscr(void)
{
unsigned char i ;
clrscr_F = 1;
// code_p = old_code_p= (unsigned char*)"" ; //dont reset disp p
code_p = (unsigned char *)"";
font_dot_p = old_font_dot_p = (unsigned int *)"" ;
TMMK00 = 1 ; //protect clrscr correct
disp_empty_F = 0;
disp_empty_count = 110; //2003-11-29
prc_column_F = 0;
move_count = 0 ;
FIX_PRC_F = 0 ;
fix_data_prc_count = 0 ; //abc/def for one unit
// fdisp_prc_column = 0 ;
for(i=0;i<3;i++)
{
abc_combi.abc_arry[i]=0x0000;
def_combi.def_arry[i]=0x0000;
}
bit_arry.bit_combi = 0x0000;
memset(one_direct_data,0x00,456);
memset(two_direct_data,0x00,456);
memset(three_direct_data,0x00,456);
memset(four_direct_data,0x00,456);
memset(five_direct_data,0x00,456);
memset(six_direct_data,0x00,456);
TMMK00 = 0 ;
}
/****************************************************/
/****************************************************/
void Change_d_d_send_data(void)
{
unsigned char i ;
if(clrscr_F != 1) //2003-11-14
{
if(disp_mode == LIU_DISP_MODE ) //liudong disp
{
switch(move_count)
{
case 1:
for(i=0;i<38;i++)
memcpy(d_d_send_data+i,one_direct_data+i,12);
break;
case 2:
for(i=0;i<38;i++)
memcpy(d_d_send_data+i,two_direct_data+i,12);
break;
case 3:
for(i=0;i<38;i++)
memcpy(d_d_send_data+i,three_direct_data+i,12);
break;
case 4:
for(i=0;i<38;i++)
memcpy(d_d_send_data+i,four_direct_data+i,12);
break;
case 5:
for(i=0;i<38;i++)
memcpy(d_d_send_data+i,five_direct_data+i,12);
break;
case 6:
for(i=0;i<38;i++)
memcpy(d_d_send_data+i,six_direct_data+i,12);
break;
default:
break;
}
}
else if(disp_mode == FIX_DISP_MODE) //fix_disp mode
{
for(i=0;i<38;i++)
memcpy(d_d_send_data+i,one_direct_data+i,12);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -