Пример #1
0
void vLCDTask( void *pvParameters )
{
long x;
LCD_TypeDef *xLCD = LCD;
char *pcScrollText = "FreeRTOS Energy Micro       ";

	/* Loop through various different displays. */
	for( ;; )
	{
		/* Start by scrolling some text. */
		LCD_ScrollText( xLCD, pcScrollText );
		LCD_AllOff( xLCD );

		/* Count down from 100 on the number section of the LCD display. */
		for( x = 100; x > 0; x--)
		{
			LCD_Number( xLCD, x );
			vTaskDelay( 10 );
		}
		LCD_NumberOff( xLCD );

		/* Turn on gecko and EFM32 symbol. */
		LCD_Symbol( xLCD, LCD_SYMBOL_GECKO, 1 );
		LCD_Symbol( xLCD, LCD_SYMBOL_EFM32, 1 );
		LCD_Write( xLCD, " Gecko " );
		vTaskDelay( lcdONE_SECOND );

		LCD_AllOn( xLCD);
		vTaskDelay( lcdONE_SECOND );

		LCD_AllOff( xLCD);
		LCD_Write( xLCD, "OOOOOOO" );
		vTaskDelay( lcdSHORT_DELAY );
		LCD_Write( xLCD, "XXXXXXX" );
		vTaskDelay( lcdSHORT_DELAY );
		LCD_Write( xLCD, "+++++++" );
		vTaskDelay( lcdSHORT_DELAY );
		LCD_Write( xLCD, "@@@@@@@" );
		vTaskDelay( lcdSHORT_DELAY );
		LCD_Write( xLCD, "ENERGY " );
		vTaskDelay( lcdQUARTER_SECOND );
		LCD_Write( xLCD, "@@ERGY " );
		vTaskDelay( lcdSHORT_DELAY );
		LCD_Write( xLCD, " @@RGY " );
		vTaskDelay( lcdSHORT_DELAY );
		LCD_Write( xLCD, " M@@GY " );
		vTaskDelay( lcdSHORT_DELAY );
		LCD_Write( xLCD, " MI@@Y " );
		vTaskDelay( lcdSHORT_DELAY );
		LCD_Write( xLCD, " MIC@@ " );
		vTaskDelay( lcdSHORT_DELAY );
		LCD_Write( xLCD, " MICR@@" );
		vTaskDelay( lcdSHORT_DELAY );
		LCD_Write( xLCD, " MICRO@" );
		vTaskDelay( lcdSHORT_DELAY );
		LCD_Write( xLCD, " MICRO " );
		vTaskDelay( lcdQUARTER_SECOND );
		LCD_Write( xLCD, "-EFM32-" );
		vTaskDelay( lcdQUARTER_SECOND );
	}
}
Пример #2
0
int32_t main(void)							   
{
	int32_t bLoop = true;
	uint32_t com, seg, onoff;
	uint8_t u8Item;
	char input;
	char text[LCD_DIGIT_NUM]="";
	int32_t idx = 0, blinkfreq, ret;
	long long num;
	S_LCD_INIT lcdinit;
	STR_UART_T param;	
	
	SYS_SetChipClockSrc((CLK_PWRCTL_HXT_EN | CLK_PWRCTL_LXT_EN), 1);

	// Wait HXT and LXT stable
	while(SYS_CheckChipClockSrc(CLK_CLKSTATUS_LXT_STB | CLK_CLKSTATUS_HXT_STB) != 0) ;

	/* Select UART Clock Source From 12MHz */
	SYS_SelectIPClockSource_1(CLK_CLKSEL1_UART_MASK, CLK_CLKSEL1_UART_HXT);

	MFP_UART0_TO_PORTA();
	
    param.u32BaudRate         = 115200;
    param.u32cDataBits        = DRVUART_DATABITS_8;
    param.u32cStopBits        = DRVUART_STOPBITS_1;
    param.u32cParity          = DRVUART_PARITY_NONE;
    param.u32cRxTriggerLevel  = DRVUART_FIFO_1BYTES;
    param.u8TimeOut        	  = 0;
    UART_Init(UART0, &param);

	/* Select LCD Clock Source From 32KHz */
	SYS_SelectIPClockSource_1(CLK_CLKSEL1_LCD_MASK, CLK_CLKSEL1_LCD_LXT);

	/* Select LCD Clock Source From 10KHz */
	//SYS_SelectIPClockSource_1(CLK_CLKSEL1_LCD_MASK, CLK_CLKSEL1_LCD_LIRC);

	/* Select LCD COMs, SEGs, V1 ~ V3, DH1, DH2 */
	MFP_LCD_TYPEA();
	
	/* LCD Initialize */
	lcdinit.cpump_enable = true;
	lcdinit.internal_bias = false;
	lcdinit.cpump_freqdiv = LCD_CPUMP_DIV1;
	lcdinit.cpump_voltage = LCD_CPVOl_3V;
	lcdinit.bias = LCD_BIAS_THIRD;
	lcdinit.mux = LCD_MUX_ONE_FOURTH;
	lcdinit.freqdiv = LCD_FREQ_DIV64;
	LCD_Init(&lcdinit);

	while(bLoop)
	{
		idx = 0;
		strcpy(text, "");	// clear buffer
			
		TestItem();
		u8Item = getchar();
		printf("%c\n", u8Item);
		
		switch(u8Item)
		{
			case '0':
			{					
				printf("Input text: ");
				while(1)
				{
					input = getchar();
					printf("%c", input);
					if(input == 0xD) break;
					strcat( text, &input);
					idx++;
					if(idx >= LCD_ALPHABET_NUM) break;
				}
				printf("\n");
				printf("%s \n", text);

				LCD_Write(text);						

				break;
			}
			case '1':
			{
				printf("Input number: ");
				while(1)
				{
					input = getchar();
					printf("%c", input);
					if(input == 0xD) break;
					strcat( text, &input);
					idx++;
					if(idx >= LCD_DIGIT_NUM) break;
				}
				printf("\n");

				//num = atof(text);
				num = local_atoi(text);

				LCD_Number(num);						
								
				break;				
			}
			case '2':
			{
				//DrvLCD_Write("NUVOTON");
				LCD_Number(8888888888888);
input:					
				printf("Input the frequency of blinking (ms): ");
				blinkfreq = sysGetNum();
				printf("\n");
				ret = LCD_BlinkFrequency(blinkfreq);
				if(ret == ERR_LCD_CAL_BLINK_FAIL)
				{
					printf("Over the time range and input again...\n");
					goto input;
				}
				LCD_EnableInt(LCD_FRAMECOUNT_INT);
				LCD_EnableBlink();

				printf("Any key to end Blinking display...");
				getchar();
				LCD_DisableBlink();
				break;
			}
			case '3':
				printf("Pixel On/Off (1:On, 0:Off): ");
				onoff = sysGetNum();
				printf("\n");
				if(onoff>1) continue;

				printf("Input Com: ");
				com = sysGetNum();

				printf("\nInput Segment: ");
				seg = sysGetNum();

				if(onoff)
					LCD_EnableSegment(com, seg);
				else
					LCD_DisableSegment(com, seg);
				break;
			case '4':
				bLoop = false;
				break;
			default:
				printf("Wrong Item\n");
				break;			
		}
			
	}	

	LCD_Disable();
		
	return true;

}