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

📄 blue.c

📁 本程序是汽车音响中不可缺少的LCD显示程序
💻 C
📖 第 1 页 / 共 2 页
字号:
#if USE_BLUETOOTH
/* ************************************************************ */
#include "i2c.c"
/* ************************************************************ */

typedef struct   en_char
{
unsigned char en ;
unsigned int  LCD_zhi;
}lcd_disp_en;

 const lcd_disp_en  lcd_char[]={
	'A',CHAR_A,'B',CHAR_B,'C',CHAR_C,'D',CHAR_D,
	'E',CHAR_E,'F',CHAR_F,'G',CHAR_G,'H',CHAR_H,'I',CHAR_I,'J',CHAR_J,'K',CHAR_K,
	'L',CHAR_L,'M',CHAR_M,'N',CHAR_N,'O',CHAR_O,'P',CHAR_P,'Q',CHAR_Q,'R',CHAR_R,
	'S',CHAR_S,'T',CHAR_T,'U',CHAR_U,'V',CHAR_V,'W',CHAR_W,'X',CHAR_X,'Y',CHAR_Y,
	'Z',CHAR_Z,' ',CHAR_ ,'0',CHAR_0,'1',CHAR_1,'2',CHAR_2,'3',CHAR_3,'4',CHAR_4,
	'5',CHAR_5,'6',CHAR_6,'7',CHAR_7,'8',CHAR_8,'9',CHAR_9,'_',CHAR__,
	//'*',CHAR_STAR,
	//'#',CHAR_WELL,
	'+',CHAR_ADD,
};  

void LCD_char_7Segments(unsigned char B1, unsigned char C1)
{
unsigned char i1;
unsigned char c1;
i1=0;
#if LC75817
     while(lc75817_char[i1].en!=C1){i1++;}
      if (system_state == VCD_STATE && DISPLAY_CHG == 0 || Write_VCD_Buff) {
	  	for(c1=0;c1<6;c1++){
               vcd_lcdbuff[(unsigned char)(B1*6+c1)]=lc75817_char[i1].LCD_zhi[c1];}
       }else {
		for(c1=0;c1<6;c1++){
              ShadowRam[(unsigned char)(B1*6+c1)]=lc75817_char[i1].LCD_zhi[c1];}
       }
	 		 
#else
   while(lcd_char[i1].en!=C1){i1++;}
    temp_16 = lcd_char[i1].LCD_zhi;
    set_lcd_char(B1,temp_16);
    return;
 #endif
}

void ShowTftMsg(unsigned char *Msg)
{
unsigned char  c1;
DISPLAY_CHG = 1;
count_time = 0;
VFD_processBlank(BLANK_ALL);
for(c1=0;c1<BLUE_DISP_MAX;c1++)
{
  LCD_char_7Segments(c1, (unsigned char)(Msg[c1]));
}
SetBlueDisplay = 1;
return;	
}
void  ShowTelMessage(unsigned char *Data)
{
unsigned char i;
      if(MoveNumberCount > BLUE_DISP_MAX) return;
    #if LC75817
	dial_length=12;
    #else
	dial_length = (unsigned char)(Data[0]);
    #endif		 
     for(i =0;i<dial_length;++i) {
     	AnswerDial[i] = Data[(unsigned char)(i+1)];
     }
     for(i =0;i<BLUE_DISP_MAX;++i) {
        blue_disp_buff[i] = AnswerDial[i];	
     }
     ShowTftMsg(blue_disp_buff);
     MoveNumberCount = BLUE_DISP_MAX;
     if(dial_length > BLUE_DISP_MAX)  EnableMoveNumber = 1;
     DetectBlueTimer = 30;//
return;
}
void ShowTelInputNumber(unsigned char Num)
{
unsigned char i = 0;
unsigned char MoveChar;
     if(Num <10){ MoveChar = (unsigned char)(Num + '0');}
    else{MoveChar=Num;}	 
     dial[TelNumPtr] = MoveChar;
      for(i = 0;i< BLUE_DISP_MAX-1;++i) {blue_disp_buff[i] = blue_disp_buff[i+1]; }
      blue_disp_buff[(unsigned char)(BLUE_DISP_MAX-1)] = MoveChar;
     if(TelNumPtr < 15) ++ TelNumPtr;
	 /************************************************************/
	  dial_length =TelNumPtr;
	 for(i =dial_length;i<BLUE_DISP_MAX;i++) {AnswerDial[i]=' ';}
       for(i =0;i<dial_length;i++) {AnswerDial[i] = dial[i]; }
	
	 /************************************************************/  
     ShowTftMsg(blue_disp_buff);
return;	
}
void ProcessMoveDialNumber(void)
{ 
   if(BlueToothOn == 0) return;	
   if(EnableMoveNumber) {
      unsigned char i = 0;
      unsigned char MoveChar;
	  
      if(MoveNumberCount >= dial_length) {
            for(i =0;i<BLUE_DISP_MAX;++i) {
				blue_disp_buff[i] = AnswerDial[i];	
				}
            MoveNumberCount = BLUE_DISP_MAX;
      }else {
      MoveChar = AnswerDial[MoveNumberCount];
        for(i = 0;i< BLUE_DISP_MAX-1;++i) {
          blue_disp_buff[i] = blue_disp_buff[i+1];
        }
        blue_disp_buff[(unsigned char)(BLUE_DISP_MAX-1)] = MoveChar;
        ++ MoveNumberCount;
     }  
    if(CALL_HfRepeat==0) {	  
      ShowTftMsg(blue_disp_buff);}
      DetectBlueTimer = 20; // 2s 
   }	
return;	
}
void ShowTelInit(void)
{
unsigned char i = 0;
  for(i = 0;i<12;++i) { 
    dial[i] = '_';	
  }      
  for(i = 0;i<BLUE_DISP_MAX;++i) { 
    blue_disp_buff[i] = '_'; 
  }
    TelNumPtr = 0;
    MoveNumberCount = 0;
    EnableMoveNumber = 0;	
   ShowTftMsg(blue_disp_buff);
return;	
}

unsigned char ReadBlueStatus(void)
{
unsigned char Status;	
    BlueStartCondition();
    if (BlueSendByte(I2CM_ADDR_MHFDVD)) {
         BlueStopCondition();
       return(0);  // Write address
    }	 
    if (BlueSendByte(0x00))  {
        BlueStopCondition();
    	return(0);
    } 	
    /* read data */
    BlueStartCondition();
    if (BlueSendByte((unsigned char)(I2CM_ADDR_MHFDVD | 0x01))){
         BlueStopCondition();
    	 return(0); // Read address
    } 	 
    Status = BlueReadByte(1);
    BlueStopCondition();
return(Status);	
}
void WriteBlueStatus(unsigned char sel)
{
   BlueStartCondition();
   if (BlueSendByte(I2CM_ADDR_MHFDVD)) {
       BlueStopCondition();
   	return;  // Write address
   }	
   BlueSendByte(0x00);
   BlueSendByte(sel);
   BlueStopCondition();
 return;	
}	
void WriteBlueData(void)
{
unsigned char i;
unsigned char TempData;
    for(i = 0;i<100;++i) {
      if((ReadBlueStatus() & 0x01) == 0x00) {
          break;
       }	
   } 
   if(i >=99) {
        return;
   }
    BlueStartCondition();
    /* send device ID and write data */
    BlueSendByte(I2CM_ADDR_MHFDVD);
    BlueSendByte(0x21);
    for(i = 0;i<WriteBlueDataBuf[0];++i) {
      TempData = WriteBlueDataBuf[i];		
      BlueSendByte(TempData);
    }	
    BlueStopCondition();
    WriteBlueStatus(0x07);
    //ProcessReadBlueData(0x21);
 return;	
}	
unsigned char ProcessReadBlueData(unsigned char BlueId)
{
#if 1
    unsigned char Length;	
    unsigned char i;
    unsigned char TempCnt;
    if (BLUE_DET == BLUEOFF) return(0);
    for(i = 0;i<10;++i) {
     if((ReadBlueStatus()& 0x02)){
    	 break;
     }	 
   } 
   if(i >=10) return(0);
    BlueStartCondition();
    if (BlueSendByte(I2CM_ADDR_MHFDVD)) {
         BlueStopCondition();
    	return(0);  // Write address
    }	
    if (BlueSendByte(BlueId)){
         BlueStopCondition();
    	  return(0);
   } 	  
    /* read data */
    BlueStartCondition();
    if (BlueSendByte((unsigned char)(I2CM_ADDR_MHFDVD | 0x01))) {
        BlueStopCondition();
    	return(0); // Read address
    }	
    Length = BlueReadByte(0);
    ReadBlueDataBuf[0] = Length;
    if(Length>20) Length = 20;
    TempCnt = 1;
    if(Length > 1) {
      Length -=1;	
     for(TempCnt=1;TempCnt<Length;++TempCnt) {
       ReadBlueDataBuf[TempCnt] = BlueReadByte(0);
     }
   } 
    ReadBlueDataBuf[TempCnt] = BlueReadByte(1);
    BlueStopCondition();
    //ShowTftMsg1(&ReadBlueDataBuf[0]);
    WriteBlueStatus(0x04);
#endif    
return(1);	
}
 /***************************************************************************************/
void BlueToothInit(void)
{
 WriteBlueDataBuf[0] = 3;
 WriteBlueDataBuf[1] = START_REQ;
 WriteBlueDataBuf[2] = 0xff;
 WriteBlueData();
return;	
}	
void HfPairRequest(void)
{
  WriteBlueDataBuf[0] = 3;
  WriteBlueDataBuf[1] = PAIR_REQ;
  WriteBlueDataBuf[2] = 90;
  WriteBlueData();
  ShowTftMsg((unsigned char*)("PAIR NUM"));
return;	
}
void Audiotransferreq(void)
{
   WriteBlueDataBuf[0] = 2;
   WriteBlueDataBuf[1] = AUDIO_TRANSFER_REQ;
   WriteBlueData();
return;	
}
void HfEnableCallerId(void)
{
    WriteBlueDataBuf[0] = 3;
    WriteBlueDataBuf[1] = CALLER_ID_REQ;
    WriteBlueDataBuf[2] = 1; // enable
    
   WriteBlueData();
return;   
}

void HfDisableCallerId(void)
{
    WriteBlueDataBuf[0] = 3;
    WriteBlueDataBuf[1] = CALLER_ID_REQ;
    WriteBlueDataBuf[2] = 0; // disable
    
   WriteBlueData();
return;   
}

void HfAnswer(void)
{
    WriteBlueDataBuf[1] = ANSWER_REQ;
    WriteBlueDataBuf[0] = 2;
    WriteBlueData();
    ShowTftMsg((unsigned char*)(" ANSWER"));	
return;   
}

void HfRepeat(void)
{
    WriteBlueDataBuf[1] = LAST_NUMBER_REDIAL_REQ;
    WriteBlueDataBuf[0] = 2;
    WriteBlueData();
    ClearOpDurState();
    ShowTftMsg((unsigned char*)("REP CALL"));
    CALL_HfRepeat =1;	
    MoveNumberCount = 0;
return;   
}
void HfDtmNum(unsigned char Num)
{
unsigned char i;	
 WriteBlueDataBuf[1] = SEND_DTMF_REQ;
 WriteBlueDataBuf[0] = 3;
 WriteBlueDataBuf[2] = Num;
 WriteBlueData();
 for(i = 0;i< BLUE_DISP_MAX-1;++i) {blue_disp_buff[i] = blue_disp_buff[i+1]; }
   blue_disp_buff[(unsigned char)(BLUE_DISP_MAX-1)] = Num;
  ShowTftMsg(blue_disp_buff);
return;   
}

void HfDialnumber(void)
{ 
unsigned char TempCnt,length = TelNumPtr;
       if(TelNumPtr == 0) {
          ShowTftMsg((unsigned char*)("SEND ERR"));
       	return;	
       }
        WriteBlueDataBuf[1] =  DIAL_NUMBER_REQ;
        WriteBlueDataBuf[0] = (unsigned char)(length+3);
        WriteBlueDataBuf[2] = length; 
        for (TempCnt = 0; TempCnt <length; ++TempCnt) {
            WriteBlueDataBuf[(unsigned char)(TempCnt+3)] = dial[TempCnt];
        }    
       WriteBlueData();
      // ShowTftMsg(SEND_DIAL);
return;       
}
	
void HfHangUp(void)
{
   WriteBlueDataBuf[1] = HANG_UP_REQ;
   WriteBlueDataBuf[0] = 2;
   WriteBlueData();
   EnableMoveNumber = 0;

⌨️ 快捷键说明

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