Exemple #1
0
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;
	}
}
Exemple #2
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);	
    }				  */
}