⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vfd_disp.c

📁 日本FAMILY按摩椅W-1用的配套操作器程序。带VFD显示
💻 C
📖 第 1 页 / 共 3 页
字号:
         { 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 + -