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

📄 osddisplay.c

📁 本软件为tft型液晶显示器的驱动程序 可用于车载主机显示屏等
💻 C
📖 第 1 页 / 共 3 页
字号:
            case NUM_BALANCE:
                            //Num_Disp(WINDOWDISPROWSTR+i+2,WINDOWDISPCOLSTR+10,SoundMenu[i],1);
                            SoundNum_Disp(WINDOWDISPROWSTR+i+2,WINDOWDISPCOLSTR+10,SoundMenu[i],8);
                            break;      
           } 
       }
    /*
     Window_Disp(2,1,0,GREEN,
                WINDOWDISPROWSTR+2+SoundMenuCnt,WINDOWDISPROWSTR+2+SoundMenuCnt,
                WINDOWDISPCOLSTR,WINDOWDISPCOLSTR+10);
    */
    Menu_Select(2);
}

/*

    

*/
void Usrdata_Updata(void)//osd updata
{
    Menu_Select(3); 
    switch(UsrMenuCnt)
         {
            case NUM_DATA:  
                         String_Disp(WINDOWDISPROWSTR+UsrMenuCnt+2,WINDOWDISPCOLSTR+8,
                                        OnOffStrPoint[(UsrMenu&0x01)?1:0].str,OnOffStrPoint[(UsrMenu&0x01)?1:0].n);
                          break;
            case NUM_TIME:  
                         String_Disp(WINDOWDISPROWSTR+UsrMenuCnt+2,WINDOWDISPCOLSTR+8,
                                        OnOffStrPoint[(UsrMenu&0x02)?1:0].str,OnOffStrPoint[(UsrMenu&0x02)?1:0].n);
                          break;                             
            case NUM_BEEP:          
                          String_Disp(WINDOWDISPROWSTR+UsrMenuCnt+2,WINDOWDISPCOLSTR+8,
                                        OnOffStrPoint[(UsrMenu&0x04)?1:0].str,OnOffStrPoint[(UsrMenu&0x04)?1:0].n);
                          break;
            case NUM_CCD:
                          String_Disp(WINDOWDISPROWSTR+UsrMenuCnt+2,WINDOWDISPCOLSTR+8,
                                        OnOffStrPoint[(UsrMenu&0x08)?1:0].str,OnOffStrPoint[(UsrMenu&0x08)?1:0].n);              
                          break;         
            default:      break;
          }
}
void UsrSet_Windows(void)
{
    uchar i;
    Windows_Close();
    WindowDispFlag=USR_WINDOW;
    Row_Ctrol(WINDOWDISPROWSTR,RED,0,0);    
    Window_Disp(3,1,1,BLUE,
                WINDOWDISPROWSTR,WINDOWDISPROWSTR+5,
                WINDOWDISPCOLSTR,WINDOWDISPCOLSTR+10);
    String_Disp(WINDOWDISPROWSTR,WINDOWDISPCOLSTR+3,UsrStrPoint.str,UsrStrPoint.n);
    for(i=0;i<USRMENU_NUM;i++)        
      {
         String_Disp(WINDOWDISPROWSTR+i+2,WINDOWDISPCOLSTR,UsrMenuPoint[i].str,UsrMenuPoint[i].n);
         switch(i)
         {
            case NUM_DATA:  
                            String_Disp(WINDOWDISPROWSTR+UsrMenuCnt+2,WINDOWDISPCOLSTR+8,
                                        OnOffStrPoint[(UsrMenu&0x01)?1:0].str,OnOffStrPoint[(UsrMenu&0x01)?1:0].n);
            case NUM_TIME: 
                            String_Disp(WINDOWDISPROWSTR+i+2,WINDOWDISPCOLSTR+8,
                                        OnOffStrPoint[(UsrMenu&0x02)?1:0].str,OnOffStrPoint[(UsrMenu&0x02)?1:0].n);
                            break;
                               
            case NUM_BEEP:
                            String_Disp(WINDOWDISPROWSTR+i+2,WINDOWDISPCOLSTR+8,
                                        OnOffStrPoint[(UsrMenu&0x04)?1:0].str,OnOffStrPoint[(UsrMenu&0x04)?1:0].n);
            case NUM_CCD:
                            String_Disp(WINDOWDISPROWSTR+i+2,WINDOWDISPCOLSTR+8,
                                        OnOffStrPoint[(UsrMenu&0x08)?1:0].str,OnOffStrPoint[(UsrMenu&0x08)?1:0].n);                
                            break; 
            default:          
                            break;
           } 
       } 
     Menu_Select(3);
}



/*
    Radio显示窗口,c(1)表示打开,c(0)表示关闭
    Band:                 FM(x)&AM 
    Currrent Frequency:   98.7 MHz
    注意:当显示的频率和某一个存台一致,该存台反选指示,否则不指示
---------------------------------------------------
      FM1  106.3   

          CH1  89.8     CH2  89.8
          CH3  89.8     CH4  89.8
          CH5  89.8     CH6  89.8
          CH7  89.8     CH8  89.8
---------------------------------------------------
*/
void RadioFreq_Disp(uchar row,uchar col,uchar band,uchar f)
{
    uint i;
    uchar c1,c2;
    Row_Clear(row,col,5);
    if(band<RADIO_AM)
    {
      i=875;
      i=i+f;
      c1=i/10;
      c2=i%10;
      Num_Disp(row,col+3,c1,1);
      Char_Disp(row,col+4,0xF5);
      Num_Disp(row,col+5,c2,0);
     }
    else
    {
      if(f<0x11)
        f=0x11;
      i=531;
      i=i+(f-0x11)*9;
      c1=i/10;
      c2=i%10;
      Num_Disp(row,col+4,c1,1);
      Num_Disp(row,col+5,c2,0);
     }
}

void Radiodata_Updata(void)
{
   uchar c;
   RadioFreq_Disp(RADIOROW+2,RADIOCOL+14,RadioBand,RadioFreq);
   String_Disp(RADIOROW+2,RADIOCOL+4+BandStrPoint.n,BandValPoint[RadioBand].str,BandValPoint[RadioBand].n);//FM1,2,AM 
   String_Disp(RADIOROW+2,RADIOCOL+20,HzStrPoint[(RadioBand<RADIO_AM)?0:1].str,HzStrPoint[(RadioBand<RADIO_AM)?0:1].n);//Band
   Menu_Select(4);
   if(RadioFreCH==0)
      return;
   c=RadioFreCH-1;
   FreqTab[RadioBand][c]=RadioFreq;
   
   if(c%2==0)
     {
       Char_Disp(RADIOROW+5+c/2,RADIOCOL+4,C('M'));
       Num_Disp(RADIOROW+5+c/2,RADIOCOL+5,c+1,0);
       RadioFreq_Disp(RADIOROW+5+c/2,RADIOCOL+6,RadioBand,FreqTab[RadioBand][c]);
      }
   else
     {
       Char_Disp(RADIOROW+5+c/2,RADIOCOL+15,C('M'));
       Num_Disp(RADIOROW+5+c/2,RADIOCOL+16,c+1,0);
       RadioFreq_Disp(RADIOROW+5+c/2,RADIOCOL+17,RadioBand,FreqTab[RadioBand][c]);
      }   
}

void RadioDisp_Windows(void)
{
    uchar i;
    Osd_Clear();
    Row_Ctrol(RADIOROW,RED,0,1);    
    Window_Disp(3,1,1,BLUE,
                RADIOWINDOWDISPROWSTR,RADIOWINDOWDISPROWSTR+14,
                RADIOWINDOWDISPCOLSTR,RADIOWINDOWDISPCOLSTR+29);    
    String_Disp(RADIOROW,RADIOCOL,RadioStrPoint.str,RadioStrPoint.n);//RADIO
    
   
    Window_Disp(1,1,1,PURPLE,
                RADIOROW+2,RADIOROW+2,
                RADIOCOL+4,RADIOCOL+22);
    String_Disp(RADIOROW+2,RADIOCOL+4,BandStrPoint.str,BandStrPoint.n);//Band
    String_Disp(RADIOROW+2,RADIOCOL+4+BandStrPoint.n,BandValPoint[RadioBand].str,BandValPoint[RadioBand].n);//FM1,2,AM 
    
    //RadioBand=RADIO_FM1;
    
    //RadioFreCH=1;  
    
    //RadioFreq=0x80;    
    
    RadioFreq_Disp(RADIOROW+2,RADIOCOL+14,RadioBand,RadioFreq);

    String_Disp(RADIOROW+2,RADIOCOL+20,HzStrPoint[(RadioBand<RADIO_AM)?0:1].str,HzStrPoint[(RadioBand<RADIO_AM)?0:1].n);//Band
    
    Window_Disp(2,1,1,CAMBLUE,
                RADIOROW+5,RADIOROW+8,
                RADIOCOL+4,RADIOCOL+22);    
  
    for(i=0;i<8;i++)
    {
      if(i%2==0)
       {
         Char_Disp(RADIOROW+5+i/2,RADIOCOL+4,C('M'));
         Num_Disp(RADIOROW+5+i/2,RADIOCOL+5,i+1,0);
         RadioFreq_Disp(RADIOROW+5+i/2,RADIOCOL+6,RadioBand,FreqTab[RadioBand][i]);
        }
      else
       {
         Char_Disp(RADIOROW+5+i/2,RADIOCOL+15,C('M'));
         Num_Disp(RADIOROW+5+i/2,RADIOCOL+16,i+1,0);
         RadioFreq_Disp(RADIOROW+5+i/2,RADIOCOL+17,RadioBand,FreqTab[RadioBand][i]);
        }
     }    
     Menu_Select(4);    
}


/*

    Dvd显示窗口,c(1)表示打开,c(0)表示关闭
    //待定
*/
void DvdData_Updata(uchar disc,uchar track,uchar timeH,uchar timeM,uchar timeS)
{
    String_Disp(DVCWINDOWDISPROWSTR+4,DVCWINDOWDISPCOLSTR+13,DiscTypeStrPoint[disc].str,DiscTypeStrPoint[disc].n);//DISC
    //String_Disp(DVCWINDOWDISPROWSTR+6,DVCWINDOWDISPCOLSTR+7,DiscTypeDStrPoint.str,TrackStrPoint.n);//Track
    Num16_Disp(DVCWINDOWDISPROWSTR+6,DVCWINDOWDISPCOLSTR+13,track);    
    //String_Disp(DVCWINDOWDISPROWSTR+8,DVCWINDOWDISPCOLSTR+8,TimeStrPoint.str,TimeStrPoint.n);//Time
    Num16_Disp(DVCWINDOWDISPROWSTR+8,DVCWINDOWDISPCOLSTR+13,timeH);
    Char_Disp(DVCWINDOWDISPROWSTR+8,DVCWINDOWDISPCOLSTR+15,0xF3);
    Num16_Disp(DVCWINDOWDISPROWSTR+8,DVCWINDOWDISPCOLSTR+16,timeM);
    Char_Disp(DVCWINDOWDISPROWSTR+8,DVCWINDOWDISPCOLSTR+18,0xF3);
    Num16_Disp(DVCWINDOWDISPROWSTR+8,DVCWINDOWDISPCOLSTR+19,timeS);
}
void DvdDisp_Windows(void)
{
    Osd_Clear();
    Window_Disp(1,0,0,0,0,0,0,0);//close 1  
    Window_Disp(2,0,0,0,0,0,0,0);//close 2
    Window_Disp(0,0,0,0,0,0,0,0);//close 0
    
    Row_Ctrol(DVCROW,RED,0,1);    
    Window_Disp(3,1,1,BLUE,
                DVCWINDOWDISPROWSTR,DVCWINDOWDISPROWSTR+14,
                DVCWINDOWDISPCOLSTR,DVCWINDOWDISPCOLSTR+29);    
    String_Disp(DVCROW,DVCCOL,DvdStrPoint.str,DvdStrPoint.n);//CHANGER
    
    String_Disp(DVCWINDOWDISPROWSTR+4,DVCWINDOWDISPCOLSTR+8,DiscStrPoint.str,DiscStrPoint.n);//DISC
    String_Disp(DVCWINDOWDISPROWSTR+6,DVCWINDOWDISPCOLSTR+7,TrackStrPoint.str,TrackStrPoint.n);//CHANGER
    String_Disp(DVCWINDOWDISPROWSTR+8,DVCWINDOWDISPCOLSTR+8,TimeStrPoint.str,TimeStrPoint.n);//CHANGER
}

/*
    Changer显示窗口,c(1)表示打开,c(0)表示关闭
    //待定
*/

void DvcData_Updata(uchar discnum,uchar disc,uchar track,uchar timeH,uchar timeM,uchar timeS)
{
    if(WindowDispFlag!=DVC_WINDOW)
        return;
    Char_Disp(DVCWINDOWDISPROWSTR+4,DVCWINDOWDISPCOLSTR+13,NumStr[discnum]);
    String_Disp(DVCWINDOWDISPROWSTR+4,DVCWINDOWDISPCOLSTR+15,DiscTypeStrPoint[disc].str,DiscTypeStrPoint[disc].n);//DISC
    //String_Disp(DVCWINDOWDISPROWSTR+6,DVCWINDOWDISPCOLSTR+7,DiscTypeDStrPoint.str,TrackStrPoint.n);//Track
    Num16_Disp(DVCWINDOWDISPROWSTR+6,DVCWINDOWDISPCOLSTR+13,track);    
    //String_Disp(DVCWINDOWDISPROWSTR+8,DVCWINDOWDISPCOLSTR+8,TimeStrPoint.str,TimeStrPoint.n);//Time
    Num16_Disp(DVCWINDOWDISPROWSTR+8,DVCWINDOWDISPCOLSTR+13,timeH);
    Char_Disp(DVCWINDOWDISPROWSTR+8,DVCWINDOWDISPCOLSTR+15,0xF3);
    Num16_Disp(DVCWINDOWDISPROWSTR+8,DVCWINDOWDISPCOLSTR+16,timeM);
    Char_Disp(DVCWINDOWDISPROWSTR+8,DVCWINDOWDISPCOLSTR+18,0xF3);
    Num16_Disp(DVCWINDOWDISPROWSTR+8,DVCWINDOWDISPCOLSTR+19,timeS);
}

void DvcDisp_Windows(void)
{    
    Osd_Clear();
    Window_Disp(1,0,0,0,0,0,0,0);//close 1  
    Window_Disp(2,0,0,0,0,0,0,0);//close 2
    Window_Disp(0,0,0,0,0,0,0,0);//close 0
    
    Row_Ctrol(DVCROW,RED,0,1);
    Window_Disp(3,1,1,BLUE,
                DVCWINDOWDISPROWSTR,DVCWINDOWDISPROWSTR+14,
                DVCWINDOWDISPCOLSTR,DVCWINDOWDISPCOLSTR+29);    
    String_Disp(DVCROW,DVCCOL,DvcStrPoint.str,DvcStrPoint.n);//CHANGER
    
    String_Disp(DVCWINDOWDISPROWSTR+4,DVCWINDOWDISPCOLSTR+8,DiscStrPoint.str,DiscStrPoint.n);//DISC
    String_Disp(DVCWINDOWDISPROWSTR+6,DVCWINDOWDISPCOLSTR+7,TrackStrPoint.str,TrackStrPoint.n);//CHANGER
    String_Disp(DVCWINDOWDISPROWSTR+8,DVCWINDOWDISPCOLSTR+8,TimeStrPoint.str,TimeStrPoint.n);//CHANGER
    
    WindowDispFlag=DVC_WINDOW;    
}

void Signal_Disp(void)
{  
   Row_Clear(STATUSROW,STATUSCOL,15);
   if(SourceMode>SOURCEMAX)
     return;   
   switch(SourceMode)
   {
      case SourceNoSign:  Logo_Disp();        break;
      case SourceAux1:
      case SourceAux2:
      case SourceAux3:                          
                                              break;
      case SourceRadio:   RadioDisp_Windows();break;
      case SourceDvd:     DvdDisp_Windows();  break;
      case SourceDvc:     DvcDisp_Windows();  break;
      case SourceTv:                          break;
      case SourceGps:                         break;
      default:                                break;
    }
   String_Disp(STATUSROW,STATUSCOL,SourceModeStrPoint[SourceMode].str,SourceModeStrPoint[SourceMode].n);   
}

void Volume_Disp(void)
{
   Row_Clear(STATUSROW,STATUSCOL,15);
   if(SoundVolume>0)
    { 
      String_Disp(STATUSROW,STATUSCOL,VolumeStrPoint.str,3);
      Num_Disp(STATUSROW,STATUSCOL+5,SoundVolume,1);
     }
   else
      String_Disp(STATUSROW,STATUSCOL,MuteStrPoint.str,MuteStrPoint.n);
}

void Ch_Disp(uchar c)
{
    Row_Clear(STATUSROW,STATUSCOL,15);
    if(c==0)
      { 
        Char_Disp(STATUSROW-1,STATUSCOL+1,0);//up
        Char_Disp(STATUSROW+1,STATUSCOL+1,0);//down
        Char_Disp(STATUSROW,STATUSCOL,0);//left
        Char_Disp(STATUSROW,STATUSCOL+2,0);//right
      } 
    else
      { 
        Char_Disp(STATUSROW-1,STATUSCOL+1,ChStr[0]);//up
        Char_Disp(STATUSROW+1,STATUSCOL+1,ChStr[1]);//down
        Char_Disp(STATUSROW,STATUSCOL,ChStr[2]);//left
        Char_Disp(STATUSROW,STATUSCOL+2,ChStr[3]);//right
      } 
}

void Data_Disp(uchar y,uchar m,uchar d)
{
   OsdBuf[0]=(STATUSROW+1)|0x80;
   OsdBuf[1]=21|0x40;
  
   OsdBuf[2]=NumStr[y>>4];
   OsdBuf[3]=NumStr[y&0x0F];
   OsdBuf[4]=0xEC;
   OsdBuf[5]=NumStr[m>>4];
   OsdBuf[6]=NumStr[m&0x0F];  
   OsdBuf[7]=0xEC;
   OsdBuf[8]=NumStr[d>>4];
   OsdBuf[9]=NumStr[d&0x0F]; 
   I2c_SendMData(OSDADDR,OsdBuf,10);   
}
void Time_Disp(uchar h,uchar m)
{
   OsdBuf[0]=STATUSROW|0x80;
   OsdBuf[1]=24|0x40;
   if(h>=0x10)
     OsdBuf[2]=NumStr[h>>4];
   else
     OsdBuf[2]=0;
   OsdBuf[3]=NumStr[h&0x0F];
   OsdBuf[4]=0xF3;
   OsdBuf[5]=NumStr[m>>4];
   OsdBuf[6]=NumStr[m&0x0F];   
   I2c_SendMData(OSDADDR,OsdBuf,7);   
   Char_Attrib_Set(STATUSROW,26,0x08+YELLOW);
}




⌨️ 快捷键说明

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