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

📄 sino_mos_disp.c

📁 我个人编写的车载dvd上的程序
💻 C
字号:
#include "public.h"
unsigned char Seg7_Num_Array[]={
      CHAR_NUM_0,
      	CHAR_NUM_1,
      	CHAR_NUM_2,
      	CHAR_NUM_3,
      	CHAR_NUM_4,
      	CHAR_NUM_5,
      	CHAR_NUM_6,
      	CHAR_NUM_7,
      	CHAR_NUM_8,
      	CHAR_NUM_9,
};
unsigned char Seg7_Offset[]={
	SEG7_A_ADDR,
	SEG7_B_ADDR,
	SEG7_C_ADDR,
	SEG7_D_ADDR,
	SEG7_E_ADDR,
	SEG7_F_ADDR,
	SEG7_G_ADDR
};
unsigned int Seg_Offseg[]={
      M_SEG_A_OFFSET,
      M_SEG_B_OFFSET,
      M_SEG_C_OFFSET,
      M_SEG_D_OFFSET,
      M_SEG_E_OFFSET,
      M_SEG_F_OFFSET,
      M_SEG_H_OFFSET,
      M_SEG_I_OFFSET,
      M_SEG_J_OFFSET,
      M_SEG_K_OFFSET,
      M_SEG_L_OFFSET,
      M_SEG_M_OFFSET,
      M_SEG_N_OFFSET,
};
 unsigned char  Char_Addr[MAX_CHAR_NUM] ={
   TITLE_HIGH_ADDR, TITLE_LOW_ADDR, HOUR_HIGH_ADDR,HOUR_LOW_ADDR ,
 MIN_HIGH_ADDR, MIN_LOW_ADDR,SEC_HIGH_ADDR, SEC_LOW_ADDR   
};
 unsigned int  Num_Array[]={
	M_CHAR_NUM_0,
	M_CHAR_NUM_1,
	M_CHAR_NUM_2,
	M_CHAR_NUM_3,
	M_CHAR_NUM_4,
	M_CHAR_NUM_5,
	M_CHAR_NUM_6,
	M_CHAR_NUM_7,
	M_CHAR_NUM_8,
	M_CHAR_NUM_9,
	
};
 unsigned int Char_Array[]={
	M_CHAR_A,
	M_CHAR_B,
	M_CHAR_C,
	M_CHAR_D,
	M_CHAR_E,
	M_CHAR_F,
	M_CHAR_G,
	M_CHAR_H,
	M_CHAR_I,
	M_CHAR_J,
	M_CHAR_K,
	M_CHAR_L,
	M_CHAR_M,
	M_CHAR_N,
	M_CHAR_O,
	M_CHAR_P,
	M_CHAR_Q,
	M_CHAR_R,
	M_CHAR_S,
	M_CHAR_T,
	M_CHAR_U,
	M_CHAR_V,
	M_CHAR_W,
	M_CHAR_X,
	M_CHAR_Y,
	M_CHAR_Z
	
};
#ifdef SINO_MOS


void DisplayUpdate()
{
unsigned char i;
    SetSPICE;
    SetSPICLK;
    SetSPIDATA;
  //  ClearSPIINH;
      NOP;
      NOP;
      NOP;
    ClearSPICE;
      NOP;
      NOP;
      NOP;
    
      for(i = 0;i< 8;i++)
      	{
      	  ClearSPICLK;
         NOP;
         NOP;
             if(CCB_ADDR & (0x01 << i))
             	    SetSPIDATA;
             else
             	    ClearSPIDATA;
             NOP;
             NOP;
             NOP;
             SetSPICLK;
             NOP;
             NOP;
             	 
      	}
    SetSPICE;
      NOP;
      NOP;
      NOP;
       for(i = 0;i< 160;i++)
      	{
      	 ClearSPICLK;
         NOP;
         NOP;
            if(DisplayBuff[i/8] & ((0x01) << (i%8)))
             	   SetSPIDATA;
             else
             	    ClearSPIDATA;
             NOP;
             NOP;
             NOP;
             SetSPICLK;
             NOP;
             NOP;
             	 
      	}
    ClearSPICE;
    ClearSPICLK;
    ClearSPIDATA;
     NOP;
     NOP;
     NOP;
     //SetSPIINH;
     NOP;
     NOP;
    // SetSPIINH;
      
      
}

void DisplayInit(void)
{
 int i;
 /***********Add a led for instruct***/
 PD_LED = 1;
 PCR1_LED  =  1;
 PCR2_LED = 0;
 Pin_LED  = 1;
 /*******************/
	Wait1ms(20);
	SPICESETUP
	SPICLKSETUP
	SPIDATASETUP
	SPIINHSETUP
	//ClearSPIINH;
       SetSPIINH;
     for(i = 0; i< 20;i++)
      	 DisplayBuff[i] = 0x00;
    
      
     DisplayUpdate();
    #ifdef SINO_MOS_TEST_PANNEL 
     for(i = 0;i < 156;i++){
     	DisplayBuff[i/8] |= 0x01 << (i %8);
     	DisplayUpdate();
     	}
     #endif
    //PrintLine("  Init  ");
	Wait1ms(1);
	
}
unsigned char  DisplayChar(unsigned char pos,unsigned char pstr)
{

unsigned char nums;
unsigned int tmp;
unsigned char addrs;
unsigned char cur_addrs;
int i;
     if(pos >  MAX_CHAR_NUM +1)   return 0;
     if(pstr <= 'z' &&  pstr >= 'a' )
     	{
     	      nums = pstr  - 'a';
     	      tmp  = Char_Array[nums];
     	         
     	}else if (pstr >= 'A' &&  pstr <= 'Z'){
     	       nums  = pstr  - 'A';
     	        tmp  = Char_Array[nums];
     		}else if(pstr >= '0' && pstr <= '9'){
     		 nums  = pstr - '0';
     		 tmp  = Num_Array[nums];
     			}else if(pstr >= 0 && pstr <= 9) tmp  = Num_Array[pstr];
     		else tmp = 0x0000;
     		
     		addrs =  Char_Addr[pos]-1;
     	for(i =  0; i <=  13 ;i ++)
     		{
     		  cur_addrs =  addrs + Seg_Offseg[i] ;
     		  DisplayBuff[cur_addrs/8] &= ~(0x01 <<(cur_addrs%8));
     		   if(tmp & (0x0001 << i))
     		   	   DisplayBuff[cur_addrs /8] |= (0x01 << (cur_addrs %8));
     		   	
     		}
    
//Display7Seg(6);
     	
}
void Display7Seg(unsigned char datas)
{
          unsigned char i;
          unsigned char tmp,tmp2;
          if(datas >= 0 && datas <=9)
          tmp = Seg7_Num_Array[datas];
          else
          tmp = 0; 	
          
          for(i = 0;i< 7;i++)
           DisplayBuff[Seg7_Offset[i] /8] &= ~(0x01 <<(Seg7_Offset[i] %8));
         #if 1
          for(i = 0; i< 7; i++)
          	{
          	     
          	      if(tmp & (0x01 << i))
          	      	{
          	      	      DisplayBuff[Seg7_Offset[i]/8] |= (0x01 << (Seg7_Offset[i]%8));
          	      	}
          	}
         #endif 
}
void ClearDisplay()
{
   unsigned char i;
   for(i = 0; i< 156;i++)
   	  DisplayBuff[i/8] =  0x00;
}
void WheelShow()
{
   unsigned char i;
   for(i = S1_ICON;i <= S3_ICON;i++)
   	  DisplayBuff[i/8] &= ~(0x01 <<(i%8));
   switch(TempShowTime){
   	  case 0:
   	  	  DisplayBuff[S1_ICON/8] |= (0x01 <<(S1_ICON%8));
   	  	  break;
   	  case 1:
   	  	DisplayBuff[S2_ICON/8] |= (0x01 <<(S2_ICON%8));
   	  	  break;
   	  case 2:
   	  	DisplayBuff[S3_ICON/8] |= (0x01 <<(S3_ICON%8));
   	  	  break;
   	}
}
void VolDisplay(unsigned char  vol)
{
    unsigned char i;
              for(i = VOL_S1;i <= VOL_S6;i++)
              	DisplayBuff[i/8] &= ~(0x01 << (i%8));
             #if 1
             if(vol < 7)
             	  return ;
              else if(vol <14 )
              {
              	DisplayBuff[VOL_S1/8] |= (0x01 << (VOL_S1%8));
              	//DisplayBuff[VOL_S2/8] |= (0x01 << (VOL_S2%8));
              }else if(vol <21){
                     DisplayBuff[VOL_S1/8] |= (0x01 << (VOL_S1%8));
              	DisplayBuff[VOL_S2/8] |= (0x01 << (VOL_S2%8));
              	//DisplayBuff[VOL_S3/8] |= (0x01 << (VOL_S3%8));
              }else if(vol < 28 ){
                     DisplayBuff[VOL_S1/8] |= (0x01 << (VOL_S1%8));
              	DisplayBuff[VOL_S2/8] |= (0x01 << (VOL_S2%8));
              	DisplayBuff[VOL_S3/8] |= (0x01 << (VOL_S3%8));
                  //  DisplayBuff[VOL_S4/8] |= (0x01 << (VOL_S4%8));
              }else if(vol < 35 ){
                    DisplayBuff[VOL_S1/8] |= (0x01 << (VOL_S1%8));
              	DisplayBuff[VOL_S2/8] |= (0x01 << (VOL_S2%8));
              	DisplayBuff[VOL_S3/8] |= (0x01 << (VOL_S3%8));
                    DisplayBuff[VOL_S4/8] |= (0x01 << (VOL_S4%8));
                  //  DisplayBuff[VOL_S5/8] |= (0x01 << (VOL_S5%8));
              	}else if(vol < 42){
              	DisplayBuff[VOL_S1/8] |= (0x01 << (VOL_S1%8));
              	DisplayBuff[VOL_S2/8] |= (0x01 << (VOL_S2%8));
              	DisplayBuff[VOL_S3/8] |= (0x01 << (VOL_S3%8));
                     DisplayBuff[VOL_S4/8] |= (0x01 << (VOL_S4%8));
                     DisplayBuff[VOL_S5/8] |= (0x01 << (VOL_S5%8));
                    // DisplayBuff[VOL_S6/8] |= (0x01 << (VOL_S6%8));
              		}else if(vol <= 46){
              		DisplayBuff[VOL_S1/8] |= (0x01 << (VOL_S1%8));
              	DisplayBuff[VOL_S2/8] |= (0x01 << (VOL_S2%8));
              	DisplayBuff[VOL_S3/8] |= (0x01 << (VOL_S3%8));
                     DisplayBuff[VOL_S4/8] |= (0x01 << (VOL_S4%8));
                     DisplayBuff[VOL_S5/8] |= (0x01 << (VOL_S5%8));
                     DisplayBuff[VOL_S6/8] |= (0x01 << (VOL_S6%8));
                    	}
              	#endif
}
void   DisplayIcon(unsigned char icon,unsigned char on)
{
           
       if(on)
            DisplayBuff[icon/8] |=  (0x01 << (icon%8));
       else
            DisplayBuff[icon/8] &= ~(0x01 << (icon %8));
}
void  Display_Info(unsigned char *pstr)
{
    unsigned char len = 0;
    for(len =  0; len < MAX_CHAR_NUM;len++)
    DisplayChar(len,pstr[len]);
}

void MovChar()
{
    unsigned char str[]="WELCOME SINOMOS";
    unsigned char backup[8]="        ";
    static unsigned char times = 1;
    unsigned char i;
    for(i = 0; i< ((times <8)?times:8);i++)
    	{
    	     if((times - i -1) > 14)
    	     backup[7-i] = ' ';
    	     else
    	      backup[7 -i] = str[times - i - 1];
    	}
#if 0
    unsigned char str[37]= "       WelCome Power on Please       ";
    unsigned char backup[8]="       ";
    static unsigned char times= 0;
   
    unsigned char i;
   for(i = 0; i< 8;i++)
   	 backup[i] = str[i+times];
 #endif  
    times ++;
    if(times > 23)
    	times  = 0;
    PrintLine(backup);
}
void DisplayMain(void)
{    
      
	 DisplayUpdate();
	
}
void PrintLine( unsigned char *pStr1)
{
     Display_Info(pStr1);
     DisplayUpdate();
}
unsigned char ReturnDispNum(unsigned int inputnum,unsigned int pos)
{
   
}
void DisplayRefresh(void){
}
void Display(unsigned char command){
}
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -