//=================================== //发送字符串到串口 // 5a a5 05 82 void LCD_putstring(u8 *puts,u8 datalength) { u8 length; // OSTimeDlyHMSM(0, 0,0,20); length = datalength; for( ;length>0 ; puts++, length--) { LCD_putbyte(*puts); } } //--------------------切换页面 LCD----------- void LCD_Jump_PageID(u16 PageID) //SendToLcdREG(0); { INT8U err; OSMutexPend( App_Sem_Mutex_LCD,0,&err); u8 Send[7]; Send[0]=0x5a ; Send[1]=0xa5; Send[2]=4; Send[3]=0x80; Send[4]= 0x03; Send[5]= (u16)PageID/256; Send[6]= (u16)PageID%256; LCD_putstring(Send,7); OSMutexPost( App_Sem_Mutex_LCD ); /*释放LCD使用权*/ } //======================================================= void ReadSendToLcdREG(u8 REGaddr) { INT8U err; OSMutexPend( App_Sem_Mutex_LCD,0,&err); u8 Send[6]={0x5a,0xa5,3,0x81,0,7}; Send[4]= REGaddr; LCD_putstring(Send,6); OSMutexPost( App_Sem_Mutex_LCD ); /*释放LCD使用权*/ } //-------发送寄存器值到LCD----------- void SendToLcdREG(u8 REGaddr,u16 PageID) { INT8U err; OSMutexPend( App_Sem_Mutex_LCD,0,&err); u8 Send[7]={0x5a,0xa5,4,0x80,0,0,0}; Send[4]= REGaddr; Send[5]= (u16)PageID/256; Send[6]= (u16)PageID%256; LCD_putstring(Send,7); OSMutexPost( App_Sem_Mutex_LCD); /*释放LCD使用权*/ } //--------发送变量值到LCD显示----------- void SendToLcd(unsigned int addr,short int Variable) { INT8U err; OSMutexPend( App_Sem_Mutex_LCD,0,&err); u8 Send[8]={0x5a,0xa5,5,0x82,0,0,0,0}; Send[4]= addr/256; Send[5]= addr%256; Send[6]= (u16)Variable/256; Send[7]= (u16)Variable%256; LCD_putstring(Send,8); OSMutexPost( App_Sem_Mutex_LCD); /*释放LCD使用权*/ } //------发送变量值到LCD显示----------- void SendToLcdTw0Byte(unsigned int addr, int Variable) { INT8U err; OSMutexPend( App_Sem_Mutex_LCD,0,&err); u8 Send[10]={0x5a,0xa5,7,0x82,0,0,0,0,0,0}; Send[4]= addr/256; Send[5]= addr%256; Send[6]= (u32)Variable/256/256/256; Send[7]= (u32)Variable/256/256; Send[8]= (u32)Variable/256; Send[9]= (u32)Variable%256; LCD_putstring(Send,10); OSMutexPost( App_Sem_Mutex_LCD); /*释放LCD使用权*/ } /*================================== 读出存储的参数发送至LCD,初始化所有LCD变量 =================================*/ void INTI_LCD(void) { //0x0010 ---0x00ff;0x0200--0x02ff INT8U err; OSMutexPend( App_Sem_Mutex_LCD,0,&err); u8 p[8]={0x5a,0xa5,5,0x82,0x00,0x00,0,0}; u16 buff=0x0; for( ;buff<0xff;buff++)// 0x0~0xff { //读出存储的参数发送至LCD p[6]=AT24CXX_ReadOneByte(buff*2); p[7]=AT24CXX_ReadOneByte(buff*2+1); LCD_putstring(p,8); p[5]++; } OSMutexPost( App_Sem_Mutex_LCD); /*释放LCD使用权*/ // ----清显示变量显示为 0------ // SendToLcd(ATest_GR1Tempr,0); // SendToLcd(ATest_GRJGTime,0); } //=================================================================== bool Get_DateTime_ok = FALSE; bool bit_ReTestDisableKey =FALSE; u8 TASK_Uart4buff[20]={0}; void Task_KEY_LCD (void) { INT8U err; u16 CommandAddr=0x0; u8 buffcount=0; u8 Keydata=0; OSTimeDlyHMSM(0, 0,2,0); INTI_LCD();/*初始化LCD*/ OSTimeDlyHMSM(0, 0,1,0); LCD_Jump_PageID(0);//复位后跳转至0起始页面 //SendToLcd_quxianValeDeleteAll(); while (DEF_TRUE) { bit_ReTestDisableKey =TRUE; //OSTimeDlyHMSM(0, 0,0,100); OSSemPend (App_TouchSem_ISRtoLCD, 0, &err); /*等待中断中LCD触摸屏发送的信号量*/ // OSTimeDlyHMSM(0, 0,0,100); if( ( TASK_Uart4buff[0]==0x5a)&&( ( TASK_Uart4buff[1])==0xa5 ) ) { if(TASK_Uart4buff[3]==0x83) { CommandAddr = (((u16)(TASK_Uart4buff[4]))<<8 )+ TASK_Uart4buff[5]; switch(CommandAddr) { case 0x00df://0x00df为键盘返回数据 { Keydata= TASK_Uart4buff[8]; switch(Keydata) { case 0xcc: { NVIC_SystemReset(); NVIC_SystemReset(); NVIC_SystemReset(); //==== 软件强制复位======== }break; case 0x10:{ if(!ATestIsStart) { ATestIsStart=TRUE; bit_StartTestTimecount=TRUE; StartTestTimecount = TestPara.TestTime; StartTestTimecount *=60; } }break; //start case 0x11:{ ATestIsStart =FALSE; SendToLcdTw0Byte(Test_TestTime,0); } break;//stop case 0x12:{ bit_CapBack =TRUE; }break; //采集背景 case 0x13:{ bit_CapSample =TRUE; } break;//采集样品 default:{}break; } }break; default: { if(TASK_Uart4buff[2]==8) { AT24CXX_WriteOneByte(CommandAddr*2,TASK_Uart4buff[7]); AT24CXX_WriteOneByte(CommandAddr*2+1,TASK_Uart4buff[8]); AT24CXX_WriteOneByte(CommandAddr*2+2,TASK_Uart4buff[9]); AT24CXX_WriteOneByte(CommandAddr*2+3,TASK_Uart4buff[10]); SendToLcdTw0Byte(CommandAddr,(int)((u32)TASK_Uart4buff[7]*256*256*256 +(u32)TASK_Uart4buff[8]*256*256 +(u16)TASK_Uart4buff[9]*256 +TASK_Uart4buff[10])); } else { SendToLcd(CommandAddr,(short int)((u16)TASK_Uart4buff[7]*256+TASK_Uart4buff[8])); AT24CXX_WriteOneByte(CommandAddr*2,TASK_Uart4buff[7]); AT24CXX_WriteOneByte(CommandAddr*2+1,TASK_Uart4buff[8]); } //--------------------更新参数--------------------- ReadATESTpara(); if(CommandAddr==0x01)//设置TEC温度 { SendComID_TECTempra((u8)(abs(TestPara.CCD_Temperature))); } }break; } } else if(TASK_Uart4buff[3]==0x81) { Get_DateTime_ok = TRUE; DateTime.Year = TASK_Uart4buff[buffcount+6]; DateTime.Month = TASK_Uart4buff[buffcount+7]; DateTime.Day = TASK_Uart4buff[buffcount+8]; DateTime.Hour = TASK_Uart4buff[buffcount+10]; DateTime.Min = TASK_Uart4buff[buffcount+11]; DateTime.Sec = TASK_Uart4buff[buffcount+12]; } } } }