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

📄 main.c

📁 单片机开发环境 windows+ads+hjtag
💻 C
📖 第 1 页 / 共 2 页
字号:
	pdata = pdata;

	while( (ret = LCD_CreateViewPort()) == ERROR_NO_VIEWPORT_AVAILABLE ) {
		OSTimeDly( OS_DLY_100MS );
	}
	viewPortIndex = ret;

	LCD_ActiveViewPort( viewPortIndex );
	LCD_SetViewPortSize( 0, 30, 159, 159 );
	LCD_ClrVP();
	LCD_SetFont( Fnt_GB11x12 );
	LCD_SetPixelPos( 50, 0 );
	LCD_PutStr( (INT8U*)"显示测试" );
	LCD_Button( 100, 109, 50, 20, (INT8U*)"返回",  LCD_INVERT_COPY);


		LCD_SetOutputStyle( LCD_COPY );
		LCD_SetFont( Fnt_GB11x12);
		LCD_SetPixelPos( 20, 20);
		LCD_PutStr( (INT8U*)"帅" );
		LCD_SetFont( Fnt_GB15x16);
		LCD_SetPixelPos( 20, 40);
		LCD_PutStr( (INT8U*)"帅" );
		LCD_SetFont( Fnt_GB24x24 );
		LCD_SetPixelPos( 20, 60);
		LCD_PutStr( (INT8U*)"帅" );
		LCD_SetFont( Fnt_GB32x32);
		LCD_SetPixelPos( 20, 90);
		LCD_PutStr( (INT8U*)"帅" );

		LCD_SetOutputStyle( LCD_INVERT_COPY );
		LCD_SetFont( Fnt_GB11x12);
		LCD_SetPixelPos( 40, 20);
		LCD_PutStr( (INT8U*)"帅" );
		LCD_SetFont( Fnt_GB15x16);
		LCD_SetPixelPos( 40, 40);
		LCD_PutStr( (INT8U*)"帅" );
		LCD_SetFont( Fnt_GB24x24 );
		LCD_SetPixelPos( 50, 60);
		LCD_PutStr( (INT8U*)"帅" );
		LCD_SetFont( Fnt_GB32x32);
		LCD_SetPixelPos( 60, 90);
		LCD_PutStr( (INT8U*)"帅" );

		LCD_SetOutputStyle( LCD_COPY );
		LCD_SetFont( Fnt_GB32x32 );
		LCD_SetPixelPos( 120, 20 );
		LCD_PutStr( (INT8U*)"丑" );
		LCD_SetFont( Fnt_GB24x24 );
		LCD_SetPixelPos( 120, 60);
		LCD_PutStr( (INT8U*)"丑" );
		
		LCD_SetOutputStyle( LCD_INVERT_COPY );
		LCD_SetFont( Fnt_GB32x32 );
		LCD_SetPixelPos( 80, 20 );
		LCD_PutStr( (INT8U*)"丑" );
		LCD_SetFont( Fnt_GB24x24 );
		LCD_SetPixelPos( 90, 60);
		LCD_PutStr( (INT8U*)"丑" );

	LCD_DeactiveViewPort( viewPortIndex );

	while (1) {
		switch( Key_GetCode() ) {
			case KEY_F2:
				LCD_DeleteViewPort( viewPortIndex );
				OSTaskResume( START_TASK_PRIO );		
				OSTaskDel( OS_PRIO_SELF );
				break;
		}
		OSTimeDly( OS_DLY_100MS );  
	}
}
   






void  KeyTask(void *pdata)
{
	INT16U key=KEY_NONE;
	INT8U str[30];
	INT8U viewPortIndex;
	INT16S ret;
	INT8U keyType;
	
	pdata = pdata;


	while( (ret = LCD_CreateViewPort()) == ERROR_NO_VIEWPORT_AVAILABLE ) {
		OSTimeDly( OS_DLY_100MS );
	}
	viewPortIndex = ret;
	LCD_ActiveViewPort( viewPortIndex );
	LCD_SetViewPortSize( 0, 30, 159, 159 );
	LCD_ClrVP();
	LCD_SetFont( Fnt_GB11x12 );
	LCD_SetPixelPos( 50, 0 );
	LCD_PutStr( (INT8U*)"按键测试" );
	LCD_Button( 100, 109, 50, 20, (INT8U*)"返回",  LCD_INVERT_COPY);
	LCD_Button( 10, 109, 50, 20, (INT8U*)"数字",  LCD_INVERT_COPY);
	LCD_SetViewPortSize( 1, 45, 159, 135 );
	LCD_DeactiveViewPort( viewPortIndex );

	keyType = KEYSET_NUMBER;
	Key_SetKeySet( KEYSET_NUMBER );
	while (1) {
		OSTimeDly( OS_DLY_100MS );  
		key = Key_GetCode();
		if( key == KEY_NONE ) continue;
		if( key < 0xA0A0 ) {
			switch( key & 0xFF ) {
				case KEY_F1:
					LCD_ActiveViewPort( viewPortIndex );
					LCD_SetViewPortSize( 0, 30, 159, 159 );
					keyType++;
					if( keyType > KEYSET_CHINESE ) {
						keyType = KEYSET_NUMBER;
					}
					if( keyType == KEYSET_NUMBER ) {
						LCD_Button( 10, 109, 50, 20, (INT8U*)"数字",  LCD_INVERT_COPY);
						LCD_SetViewPortSize( 1, 45, 159, 135 );
					}
					else if( keyType == KEYSET_LETTER ) {
						LCD_Button( 10, 109, 50, 20, (INT8U*)"字母",  LCD_INVERT_COPY);
						LCD_SetViewPortSize( 1, 45, 159, 135 );
					}
					else {
						LCD_Button( 10, 109, 50, 20, (INT8U*)"中文",  LCD_INVERT_COPY);
						LCD_SetViewPortSize( 1, 45, 159, 100 );
					}
					LCD_ClrVP();
					LCD_DeactiveViewPort( viewPortIndex );
					Key_SetKeySet( keyType );
					continue;
				case KEY_F2:
					Key_SetKeySet( KEYSET_NUMBER );
					LCD_DeleteViewPort( viewPortIndex );
					OSTaskResume( START_TASK_PRIO );		
					OSTaskDel( OS_PRIO_SELF );
					break;
				case KEY_SEND:
					sprintf( (char*)str, "Send " );
					break;
				case KEY_ON_OFF:
					sprintf( (char*)str, "ON/OFF" );
					break;
				case KEY_ENTER:
					sprintf( (char*)str, "Enter" );
					break;
				case KEY_UP:
					sprintf( (char*)str, "Up" );
					break;
				case KEY_DOWN:
					sprintf( (char*)str, "Down" );
					break;
				case KEY_LEFT:
					sprintf( (char*)str, "Left" );
					break;
				case KEY_RIGHT:
					sprintf( (char*)str, "Right" );
					break;
				default:
					sprintf( (char*)str, "%c", key );
					break;
			}
		}
		else {
			sprintf( (char*)str, "%c%c", (INT8U)(key>>8), (INT8U)key );
		}
		LCD_ActiveViewPort( viewPortIndex );
		LCD_PutStr( str );
		LCD_DeactiveViewPort( viewPortIndex );
	}
}

   



void  CableComTask(void *pdata)
{
	INT8U ch;
	INT8U viewPortIndex;
	INT16S ret;
	INT8U waitForComm;
	INT8U buff[1000];
	
	pdata = pdata;


	while( (ret = LCD_CreateViewPort()) == ERROR_NO_VIEWPORT_AVAILABLE ) {
		OSTimeDly( OS_DLY_100MS );
	}
	viewPortIndex = ret;
	LCD_ActiveViewPort( viewPortIndex );
	LCD_SetViewPortSize( 0, 30, 159, 159 );
	LCD_ClrVP();
	LCD_SetFont( Fnt_GB11x12 );
	LCD_SetPixelPos( 50, 0 );
	LCD_PutStr( (INT8U*)"有线通讯测试" );
	LCD_Button( 10, 109, 50, 20, (INT8U*)"不等待",  LCD_INVERT_COPY);
	LCD_Button( 100, 109, 50, 20, (INT8U*)"返回",  LCD_INVERT_COPY);

	LCD_SetPixelPos( 20, 30 );
	LCD_PutStr( (INT8U*)"将串口收到的数据发回" );
	LCD_DeactiveViewPort( viewPortIndex );

	waitForComm = FALSE;
	SCI_Open( COM0, SCICFG_Baud9600, SCICFG_8DataBit, SCICFG_ParityNone, SCICFG_1StopBit);
	while (1) {
		switch( Key_GetCode() ) {
			case KEY_F1:
				LCD_ActiveViewPort( viewPortIndex );
				LCD_ClrVP();
				if( waitForComm == TRUE ) {
					waitForComm = FALSE;
					LCD_Button( 10, 109, 50, 20, (INT8U*)"不等待",  LCD_INVERT_COPY);
					LCD_Button( 100, 109, 50, 20, (INT8U*)"返回",  LCD_INVERT_COPY);
					LCD_SetPixelPos( 20, 30 );
					LCD_PutStr( (INT8U*)"将串口收到的数据发回" );
				}
				else {
					waitForComm = TRUE;
					LCD_Button( 10, 109, 50, 20, (INT8U*)"等待",  LCD_INVERT_COPY);
					LCD_Button( 100, 109, 50, 20, (INT8U*)"返回",  LCD_INVERT_COPY);
					LCD_SetPixelPos( 0, 30 );
					LCD_PutStr( (INT8U*)"   等待串口数据\r\n   满1k后从串口发回\r\n   连续3秒无数据则超时退出" );
				}
				LCD_DeactiveViewPort( viewPortIndex );
				break;
			case KEY_F2:
				LCD_DeleteViewPort( viewPortIndex );
				OSTaskResume( START_TASK_PRIO );		
				OSTaskDel( OS_PRIO_SELF );
				break;
		}


		if( waitForComm == TRUE ) {
			ret = SCI_WaitForGet( COM0, buff, 1000, 3000 );
			SCI_WaitForSend( COM0, buff, ret );
		}
		else {
			do {
				ret = SCI_Get( COM0, &ch, 1 );
				if( ret == 1 ) {
					SCI_Send( COM0, &ch, 1 );
				}
			} while( ret == 1 );
		}
		OSTimeDly( OS_DLY_50MS );  
	}
}

   



void  WirelessTask(void *pdata)
{
	INT8U ch;
	INT8U viewPortIndex;
	INT16S ret;
	INT8U usingRF;
	INT8U key;
	
	

	pdata = pdata;

	while( (ret = LCD_CreateViewPort()) == ERROR_NO_VIEWPORT_AVAILABLE ) {
		OSTimeDly( OS_DLY_100MS );
	}
	viewPortIndex = ret;
	LCD_ActiveViewPort( viewPortIndex );
	LCD_SetViewPortSize( 0, 30, 159, 159 );
	LCD_ClrVP();
	LCD_SetFont( Fnt_GB11x12 );
	LCD_SetPixelPos( 50, 0 );
	LCD_PutStr( (INT8U*)"无线通讯测试" );
	LCD_SetPixelPos( 10, 30 );
	LCD_PutStr( (INT8U*)"发送按键" );
	LCD_Button( 10, 109, 50, 20, (INT8U*)"测红外",  LCD_INVERT_COPY);
	LCD_Button( 100, 109, 50, 20, (INT8U*)"返回",  LCD_INVERT_COPY);
	LCD_SetViewPortSize( 0, 50, 159, 130 );

	LCD_DeactiveViewPort( viewPortIndex );



	
	usingRF = TRUE;
	//RF_PowerOn();
	SET_RF_PWR;
	SCI_Open( COM1, SCICFG_Baud9600, SCICFG_8DataBit, SCICFG_ParityNone, SCICFG_1StopBit);
	while (1) {
		OSTimeDly( OS_DLY_100MS );  
		key = Key_GetCode();
		switch( key ) {
			case KEY_F1:
				if( usingRF ) {
					SCI_Close( COM1 );
					SCI_Open( COM1, SCICFG_Baud1200, SCICFG_8DataBit, SCICFG_ParityEven, SCICFG_1StopBit);
					IR_PowerOn();
					usingRF = FALSE;
					LCD_ActiveViewPort( viewPortIndex );
					LCD_SetViewPortSize( 0, 30, 159, 159 );
					LCD_SetPixelPos( 50, 0 );
					LCD_PutStr( (INT8U*)"红外通讯测试" );
					LCD_Button( 10, 109, 50, 20, (INT8U*)"测无线",  LCD_INVERT_COPY);
					LCD_SetViewPortSize( 0, 50, 159, 130 );
					LCD_DeactiveViewPort( viewPortIndex );
				}
				else {
					SCI_Close( COM1 );
					SCI_Open( COM1, SCICFG_Baud9600, SCICFG_8DataBit, SCICFG_ParityNone, SCICFG_1StopBit);
					RF_PowerOn();
					usingRF = TRUE;
					LCD_ActiveViewPort( viewPortIndex );
					LCD_SetViewPortSize( 0, 30, 159, 159 );
					LCD_SetPixelPos( 50, 0 );
					LCD_PutStr( (INT8U*)"无线通讯测试" );
					LCD_Button( 10, 109, 50, 20, (INT8U*)"测红外",  LCD_INVERT_COPY);
					LCD_SetViewPortSize( 0, 50, 159, 130 );
					LCD_DeactiveViewPort( viewPortIndex );
				}
				break;
			case KEY_F2:
				LCD_DeleteViewPort( viewPortIndex );
				SCI_Close( COM1 );
				//RF_PowerOff();
				CLEAR_RF_PWR;
				IR_PowerOff();
				OSTaskResume( START_TASK_PRIO );		
				OSTaskDel( OS_PRIO_SELF );
				break;
			case KEY_NONE:
				break;
			default: 
				SCI_Send( COM1, &key, 1 );
				if( !usingRF ) {
					while( 1 ) {
						if( SCI_SendComplete( COM1 ) == TRUE ) {
							break;
						}
						OSTimeDly( OS_DLY_20MS );
					} 
					SCI_Flush( COM1 );
				}
				break;
		}
		do {
			ret = SCI_Get( COM1, &ch, 1 );
			if( ret == 1 ) {
				//SCI_Send( COM1, &ch, 1 );
				LCD_ActiveViewPort( viewPortIndex );
				LCD_PutCh( ch );
				LCD_DeactiveViewPort( viewPortIndex );
			}
		} while( ret == 1 );
	}
}

   



void FlashTask(void *pdata)
{

	INT8U buff[50];
	INT8U i;
	INT8U res;
	INT32U addr;
	INT8U y;
	
	INT8U viewPortIndex;
	INT16S ret;
	

	pdata = pdata;

	while( (ret = LCD_CreateViewPort()) == ERROR_NO_VIEWPORT_AVAILABLE ) {
		OSTimeDly( OS_DLY_100MS );
	}
	viewPortIndex = ret;
	LCD_ActiveViewPort( viewPortIndex );
	LCD_SetViewPortSize( 0, 30, 159, 159 );
	LCD_ClrVP();
	LCD_SetFont( Fnt_GB11x12 );
	LCD_SetPixelPos( 50, 0 );
	LCD_PutStr( (INT8U*)"数据存储" );
	LCD_Button( 100, 109, 50, 20, (INT8U*)"返回",  LCD_INVERT_COPY);


	y = 20;
	LCD_SetPixelPos( 10, y );
	LCD_PutStr( (INT8U*)"正在擦除。。。" );
	addr = 12345; // for 16M bit addr < 0x1FFFFF, for 32M bit addr < 3FFFFF. if over range, the address will wrap back to 0.
	W25x_SectorErase( addr );	//one sector = 4096 bytes
	W25x_SectorErase( addr+4096 );	//erase 2 sector, for the data may on the boundary


	y += 15;
	LCD_SetPixelPos( 10, y );
	LCD_PutStr( (INT8U*)"正在写数据。。。" );
	for( i=0; i<50; i++ ) {
		buff[i] = i+' ';
	}
	W25x_WriteData( addr, buff, 50 );
	
	y += 15;
	LCD_SetPixelPos( 10, y );
	LCD_PutStr( (INT8U*)"正在读数据。。。" );
	for( i=0; i<50; i++ ) {
		buff[i] = 0;
	}
	W25x_ReadData( addr, buff, 50 );
	
	y += 15;
	LCD_SetPixelPos( 10, y );
	LCD_PutStr( (INT8U*)"正在校验。。。" );
	res = TRUE;
	for( i=0; i<50; i++ ) {
		if( buff[i] != i+' ' ) {
			res = FALSE;
			break;
		}
	}

	y += 15;
	LCD_SetPixelPos( 10, y );
	if( res == TRUE ) {
		LCD_PutStr( (INT8U*)"数据存储测试成功!" );
	}
	else {
		LCD_PutStr( (INT8U*)"数据存储测试失败!" );
	}

	LCD_DeactiveViewPort( viewPortIndex );
	LCD_DeleteViewPort( viewPortIndex );

	while (1) {
		switch( Key_GetCode() ) {
			case KEY_F2:
				OSTaskResume( START_TASK_PRIO );		
				OSTaskDel( OS_PRIO_SELF );
				break;
		}
		OSTimeDly( OS_DLY_100MS );  
	}
}

   





void  SetTimeTask(void *pdata)
{
	INT8U key;
	INT8U str1[20], str2[20];
	INT8U viewPortIndex;
	INT16S ret;
	RTCTime time;
	
	pdata = pdata;

	while( (ret = LCD_CreateViewPort()) == ERROR_NO_VIEWPORT_AVAILABLE ) {
		OSTimeDly( OS_DLY_100MS );
	}
	viewPortIndex = ret;
	LCD_ActiveViewPort( viewPortIndex );
	LCD_SetViewPortSize( 0, 30, 159, 159 );
	LCD_ClrVP();
	LCD_SetFont( Fnt_GB11x12 );
	LCD_SetPixelPos( 50, 0 );
	LCD_PutStr( (INT8U*)"设置时间" );
	LCD_SetPixelPos( 10, 30 );
	LCD_PutStr( (INT8U*)"YYYYMMDDHHMMSS" );
	LCD_Button( 10, 109, 50, 20, (INT8U*)"确定",  LCD_INVERT_COPY);
	LCD_Button( 100, 109, 50, 20, (INT8U*)"返回",  LCD_INVERT_COPY);


	LCD_DeactiveViewPort( viewPortIndex );


	str1[0] = 0;
	str2[0] = 0;
	while (1) {
		OSTimeDly( OS_DLY_100MS );  
		key = Key_GetCode();
		switch( key ) {
			case KEY_F1:
				time.tm_year = (str1[0]-'0')*1000 + (str1[1]-'0')*100 + (str1[2]-'0')*10 + (str1[3]-'0');
				time.tm_mon = (str1[4]-'0')*10 + (str1[5]-'0');
				time.tm_mday = (str1[6]-'0')*10 + (str1[7]-'0');
				time.tm_hour = (str1[8]-'0')*10 + (str1[9]-'0');
				time.tm_min = (str1[10]-'0')*10 + (str1[11]-'0');
				time.tm_sec = (str1[12]-'0')*10 + (str1[13]-'0');
				RTCSetDateTime( time );
			case KEY_F2:
				LCD_DeleteViewPort( viewPortIndex );
				OSTaskResume( START_TASK_PRIO );		
				OSTaskDel( OS_PRIO_SELF );
				break;
			default:
				if( key>= KEY_0 && key <= KEY_9 ) {
					sprintf( (char*)str2, "%s", str1 );
					sprintf( (char*)str1, "%s%c", str2, key );
					LCD_ActiveViewPort( viewPortIndex );
					LCD_SetPixelPos( 10, 50 );
					LCD_PutStr( str1 );
					LCD_DeactiveViewPort( viewPortIndex );
				}
				break;
		}
	}
}


⌨️ 快捷键说明

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