void main(void) { unsigned char k; unsigned char ret; unsigned int *p; M8C_EnableGInt ; // Uncomment this line to enable Global Interrupts // Insert your main routine code here. RES_WDT = 0; Init_IIC(); delay_us(200); //wait for the LCD driver power on HT1621B_Init(); //back light CurrentBackLight = 3; PWM8_BL_WritePeriod(255); // Set period to eight clocks PWM8_BL_WritePulseWidth(3); // Set pulse width to generate a 50% duty PWM8_BL_Start(); //WriteAll_1621(0,a,16); //在起始地址为0 处连续写入16个字节数据 UART_Board_Start(UART_PARITY_NONE); // UART_Board_EnableInt(); UART_Board_IntCntl(UART_Board_ENABLE_RX_INT | UART_Board_DISABLE_TX_INT); UART_Sensor_Start(UART_PARITY_NONE); // UART_Sensor_EnableInt(); UART_Sensor_IntCntl(UART_Sensor_ENABLE_RX_INT | UART_Sensor_DISABLE_TX_INT); Timer16_WritePeriod(3200); Timer16_WriteCompareValue(3200); Timer16_EnableInt(); Timer16_Start(); // UART_Board_CPutString("Woody is a genius!"); PMSFrameFlag = 0; HeadFlag = 0; DataPtr = 0; SAR10_SetClk(SAR10_SYSCLK_16); // Set clock source - system clock/64 SAR10_SetRunMode(SAR10_ONESHOT); // Set running method - one-shot SAR10_SetADCChannel(SAR10_CHS_AMUX0); // Set Port_0_5 as input SAR10_DisableInt(); // Enable SAR10 interrupt SAR10_Start(); // Start conversion #ifdef USE_SI7020 Si7020Init(); #else HumiChipInit(); #endif LCD_Init(); RES_WDT = 0; while(1) { if (!RecTimeoutTimer) { PMSFrameFlag = 0; HeadFlag = 0; DataPtr = 0; } if (PMSFrameFlag) { PMSFrameFlag = 0; if (FrameCheck()) { data_pm2_5 = MyPMSUnion.MyPMFrame.PM2_5_US; data_pm1_0 = MyPMSUnion.MyPMFrame.PM1_0_US; // UART_Board_CPutString("PM2.5:"); // UART_Board_PutSHexInt(data_pm2_5); // UART_Board_PutCRLF(); } else { // UART_Board_CPutString("Checksum fail"); } } if (!one_sec_timer) { one_sec_timer = ONE_SECOND_TIMER_RELOAD; /* k++; if (k>9) k = 0; a[0] = Digit[k]; a[1] = Digit[k]; a[2] = Digit[k]; WriteAll_1621(0,a,3); */ MUX_CR2 |= 0X02; //connect P2.1 Analog bus SAR10_Trigger(); //Trigger new sample while(SAR10_fIsDataAvailable()==0);//Wait while data is not ready LightADCValue = SAR10_iGetData(); // Read result MUX_CR2 &= ~0X02; //disconnect P2.1 Analog bus // UART_Board_CPutString("Light: "); // UART_Board_PutSHexInt(LightADCValue); // UART_Board_PutCRLF(); // PWM8_BL_WritePulseWidth(LightRank(LightADCValue)); DstBackLight = LightRank(LightADCValue); } if(!rh_sample_timer) { rh_sample_timer = ONE_SECOND_TIMER_RELOAD; #ifdef USE_SI7020 if (!RHSampleStep) { ret = Si7020SendCommand(MRH_NHMM); // send the command(Measure RH, No Hold Master Mode) if(ret) { RHSampleStep = 1; } } else { Si7020Read_RH_NHM(RecBuf); Si7020Data = *(unsigned int *)RecBuf; if (CRC8Check()) { // UART_Board_CPutString("RH: "); // UART_Board_PutSHexInt(Si7020Data); // UART_Board_PutCRLF(); Humidity = Si7020CalcRH(Si7020Data); // UART_Board_PutSHexByte(Humidity); // UART_Board_PutCRLF(); } Si7020Read_Temp_after_RHM(RecBuf); Si7020Data = *(unsigned int *)RecBuf; // UART_Board_CPutString("Temperature: "); // UART_Board_PutSHexInt(Si7020Data); // UART_Board_PutCRLF(); Temperature = Si7020CalcTemp(Si7020Data); // UART_Board_PutSHexByte(Temperature); // UART_Board_PutCRLF(); RHSampleStep = 0; } #else HumiChipRdHnT(); /*print the data to the PC*/ /* UART_Board_CPutString("HumiChip: "); UART_Board_PutSHexByte(HumiChipData[0]); UART_Board_PutChar(' '); UART_Board_PutSHexByte(HumiChipData[1]); UART_Board_PutChar(' '); UART_Board_PutSHexByte(HumiChipData[2]); UART_Board_PutChar(' '); UART_Board_PutSHexByte(HumiChipData[3]); UART_Board_PutChar(' '); UART_Board_PutSHexByte(HumiChipData[4]); UART_Board_PutChar(' '); UART_Board_PutSHexByte(HumiChipData[5]); UART_Board_PutCRLF();*/ if (HumiChipCheckSum()) { Humidity = HumiChipData[4]; Temperature = HumiChipData[1]; } #endif } if (!LcdUpdateTimer) { LcdUpdateTimer = HALF_SECOND_TIMER_RELOAD; LCDOuputAll(); } if (!DataUploadTimer) { DataUploadTimer = TWO_SECOND_TIMER_RELOAD; B2BSendData(); } if (B2BFrameFlag) { B2BFrameFlag = 0; if (B2BFrameCheck()) { // UART_Board_CPutString("B2B OK"); // UART_Board_PutCRLF(); HeapLife = myRxUnion.myRxFrame.HepaLife; CarbonLife = myRxUnion.myRxFrame.CarbonLife; SpeedLvl = myRxUnion.myRxFrame.Speed; Odor = myRxUnion.myRxFrame.Odor; Plasma = myRxUnion.myRxFrame.Plasma; LockStatus = myRxUnion.myRxFrame.Lock; mode = myRxUnion.myRxFrame.Mode; Timer = myRxUnion.myRxFrame.Timer; } else { // UART_Board_CPutString("B2B fail"); // UART_Board_PutCRLF(); } } RES_WDT = 0; } }
int main(void) { /////////////////////////////////////////// uint8_t Key; int i; //////////////////////////////////////////////// brightness = 0x40;//亮度 contrast = 0x70;//对比度 saturation = 0x40;//饱和度 memset(outbuf,0,64); SystemInit(); //GPIOInit(); //chumo改版加入 //Touch_Initializtion(); Init_NVIC(); //中断向量表注册函数 Init_LED(); //LED初始化 Init_KEY(); //按键初始化 Init_IIC(); //24LC02初始化 Init_TOUCH(); // 触摸屏配置 //Touch_Initializtion(); ////////// UART3_Init(115200); PrintStr("=========12345========\r\n"); //ADC_Init_Ex(); //Tim3_ETR_Init(); //Tim4_Init(); //CAN1_Init(250); // USB_Init(); // RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE); /* Configure FSMC Bank1 NOR/SRAM3 */ //FSMC_SRAM_Init(); DelayMs(300); //InitSSD1963(); //LcdInitTest(); LcdInit(); LcdClear(GRAY0); DispButton(button2); DisplayButtonUp(2, 2,400,25); LcdPrintStr("版权所有(C)mmmmmmmmmmmmmmmmmmmm",4,4,BLUE,GRAY0); DisplayButtonUp(402,2,478,25); LcdPrintf(410,4,BLACK,GRAY0,"%02d:%02d:%02d",12,12,12); DisplayButtonDownColor(200, 410, 290, 470, RED); DisplayButtonDownColor(412, 410, 502, 470, GREEN); LcdPrintStr("删除",230,432,WHITE,RED); LcdPrintStr("确认",442,432,BLACK,GREEN); LcdFillRec(200,100,502,190,DGREEN); DisplayButtonUp(190,90,512,475); DelayMs(1000); LcdFillRec(190,90,512,475,RED); DelayMs(1000); LcdFillRec(190,90,512,475,GRAY0); DispButton(button2); DisplayButtonDownColor(200, 410, 290, 470, RED); DisplayButtonDownColor(412, 410, 502, 470, GREEN); LcdPrintStr("删除",230,432,WHITE,RED); LcdPrintStr("确认",442,432,BLACK,GREEN); LcdFillRec(200,100,502,190,DGREEN); DisplayButtonUp(190,90,512,475); // Pen_Point.Key_Sta==Key_Up; //LcdPrint16bitBmp(gImage, 16, 16, 490, 368 ); while(1) { // if(Pen_Point.Key_Sta==Key_Down) // { // LcdPrintf( 16,16,BLUE,WHITE,"%d",ADS_Read_AD(CMD_RDX)); // LcdPrintf( 16,32,BLUE,WHITE,"%d",ADS_Read_AD(CMD_RDY)); // } //LcdPrintf( 16,32,BLUE,WHITE,"%d",Touch_GetPhyY()); //LcdPrintf( 16,16,BLUE,WHITE,"%d",Touch_GetPhyX()); // DelayMs(200); // LED1 = ~LED1; //LED1=~LED1; //DelayMs(50); //////////////////////////////////////// Key=KEY_Scan(); if(Pen_Point.Key_Sta==Key_Down)//触摸屏被按下 { Pen_Int_Set(0); //关闭中断 do { LcdPrintf( 16,16,BLUE,WHITE,"%d",ADS_Read_AD(CMD_RDX)); LcdPrintf( 16,32,BLUE,WHITE,"%d",ADS_Read_AD(CMD_RDY)); Convert_Pos(); Pen_Point.Key_Sta=Key_Up; //GPIOC->ODR|=1<<5;//临时添加 // LcdPrintf(16,16,BLUE,BLACK,"%d\n",Pen_Point.X); // LcdPrintf(16,32,BLUE,BLACK,"%d\n",Pen_Point.Y); if(Pen_Point.X0>216&&Pen_Point.Y0<48)LcdClear(RED);//清除 else { Draw_Big_Point(Pen_Point.X0,Pen_Point.Y0);//画图 GPIOC->ODR|=1<<5; //PC5 上拉 } }while(PEN==0);//如果PEN一直有效,则一直执行 Pen_Int_Set(1);//开启中断 } else DelayMs(1); if(Key==USER)//USER按下,则执行校准程序 { LcdClear(BlackColor);//清屏 Touch_Adjust(); //屏幕校准 Save_Adjdata(); LcdClear(RED); } i++; if(i==1) { i=0; LED1=~LED1; } } /////////////////////////////////// /* if(_SEC_) { _SEC_ = 0; GPIO_WriteBit(GPIOC, GPIO_Pin_6, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_6))); LcdPrintf(300,460,BLACK,GRAY0,"%03d",i); //i += 10; SetSensors(); for(u8 i=1; i<=16; i++) Printf("No.%d=%d,",i,GetSensorVoltage(i)); PrintStr("\r\n"); } UART1_SendByte(0x55); DelayMs(1); } */ }