Example #1
0
File: gui.c Project: nvero/fmhobby
//选择菜单
void Select_Menu(u8 M_Type,u8 Cnt,u8 En)
{
	u8 tx;
	u16 ty;
	u8 t;	
	ty=10; 
	if(M_Type==0)//主菜单
	{	  
		tx=80*(Cnt%3)+10;//10,90,170			
		
		if(Cnt>5)ty=216;
		else if(Cnt>2)ty=113;	
		//显示外框部分 
		if(En)POINT_COLOR=BLUE;
		else POINT_COLOR=WHITE;
		for(t=0;t<4;t++)
		{
			LCD_DrawRectangle(tx-7+t,ty-7+t,tx+66-t,ty+67-t); 
		} 
		//显示字体,反白
		if(En)//选中当前的菜单
		{	  
			POINT_COLOR=WHITE;//白色字体
			BACK_COLOR=LBBLUE;  //蓝色背景      
		}else
		{
			POINT_COLOR=DARKBLUE;//深蓝色字体
			BACK_COLOR=WHITE; //白色背景   
		}	 												  
		Show_Str(tx-3,ty+74,(u8*)Menu[Cnt],16,0);	
	}
}
Example #2
0
void main()
{
  unsigned char i;
  Init_CLK();
  LCD_Init();   //TFT³õʼ»¯
  LCD_Clear(BLACK); //ÇåÆÁ
 /* LCD_Clear(RED);
  delay_s(1);
  LCD_Clear(GREEN);
  delay_s(2);
  LCD_Clear(BLUE);
  delay_s(2);
 
  
  //showimage(); */
  POINT_COLOR=GREEN;
  LCD_DrawRectangle(0,0, 479, 271);
  POINT_COLOR=BLUE;
  LCD_DrawRectangle(5,5, 474, 266);
   POINT_COLOR=RED;
  Draw_Circle(100,100,100);
  LCD_DrawPicture(0,0,160,160, gImage_fg);
  while(1)
  {
    POINT_COLOR=RED;
     for(i=100;i>0;i--)
  {
    Draw_Circle(100,100,i);
    Draw_Circle(100,200,i);
    Draw_Circle(200,200,i);
    Draw_Circle(300,100,i);
    Draw_Circle(300,200,i);
    delay_ms(50);
  }
  POINT_COLOR=BLACK;
       for(i=0;i<101;i++)
  {
    Draw_Circle(100,100,i);
    Draw_Circle(100,200,i);
    Draw_Circle(200,200,i);
    Draw_Circle(300,100,i);
    Draw_Circle(300,200,i);
    delay_ms(50);
  }
  }
}
Example #3
0
void Windows_DrawMenu( void )
{
  //Draw Frame
  LCD_DrawRectangle(0, 0, Frame_L-1, Frame_H-1, WHITE);
  LCD_DrawRectangle(1, 1, Frame_L-3, Frame_H-3, WHITE);
  //Draw Button and Strings
	Windows_DrawButton(SelMenu_1, WINDOW_H-ButMenu_L-3, WHITE);
	LCD_PutStr(SelMenu_1+2+(ButMenu_W>>1)-16,WINDOW_H-(ButMenu_L>>1)-8-2, (u8*)"INIT", ASCII1608, WHITE, BLACK);
	Windows_DrawButton(SelMenu_2, WINDOW_H-ButMenu_L-3, WHITE);
	LCD_PutStr(SelMenu_2+2+(ButMenu_W>>1)-24,WINDOW_H-(ButMenu_L>>1)-8-2, (u8*)"SDCARD", ASCII1608, WHITE, BLACK);
	Windows_DrawButton(SelMenu_3, WINDOW_H-ButMenu_L-3, WHITE);
	LCD_PutStr(SelMenu_3+2+(ButMenu_W>>1)-16,WINDOW_H-(ButMenu_L>>1)-8-2, (u8*)"WAVE", ASCII1608, WHITE, BLACK);
	Windows_DrawButton(SelMenu_4, WINDOW_H-ButMenu_L-3, WHITE);
	LCD_PutStr(SelMenu_4+2+(ButMenu_W>>1)-16,WINDOW_H-(ButMenu_L>>1)-8-2, (u8*)"INFO", ASCII1608, WHITE, BLACK);
  
  Windows_SelMenu(1);
}
Example #4
0
//显示串口收到的数据
//comdata:要显示的数据
void com_statusBar(char * comdata){
	static u8 rec_count = 0;
	LCD_DrawRectangle(1,lcddev.height-40,lcddev.width-1,lcddev.height-1); //屏幕底部画一个矩形	
	LCD_DrawLine(1,lcddev.height-20,lcddev.width,lcddev.height-20);		//画线
	LCD_ShowString(2,lcddev.height-39,500,16,16,"Received data from srialport:"); //标题
	
	LCD_Fill(2,lcddev.height-19,lcddev.width-2,lcddev.height-2,WHITE);
	LCD_ShowString(2,lcddev.height-19,500,16,16,(u8*)comdata); //内容
	
	//状态条尾部蓝绿色闪烁:表示系统串口任务正在接收数据
	LCD_Fill(lcddev.width-19,lcddev.height-39,lcddev.width,lcddev.height-21,lcd_discolor[10-rec_count%2]); //填充状态信号
}
Example #5
0
/*******************************************************************************
* Refresh page 2 draws screen graphics and headers.
*
*******************************************************************************/
void Refresh_page2()
{
    LCD_Clear(field_color);        //Clear the screen with field color

    POINT_COLOR = border_color;
    LCD_DrawRectangle(2, 2, 317, 237);                  // Screen Border
    LCD_Fill(3,3,316,18,heading_color);                 // Heading Fill
    POINT_COLOR = char_rev_color;
    BACK_COLOR = heading_color;
    LCD_8x16_String(50,3,"ADVANCED SETTINGS 2");   // Heading
    POINT_COLOR = char_norm_color;
    BACK_COLOR = char_hglt_color;
    Refresh_Parameter_Name();
    BACK_COLOR = field_color;
    Refresh_Parameter_Value();
}
Example #6
0
//主函数
int main(void)
{
	OS_ERR err;
	CPU_SR_ALLOC();
	
	delay_init(168);  	//时钟初始化
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//中断分组配置
	uart_init(115200);  //串口初始化
	LED_Init();         //LED初始化	
	LCD_Init();			//LCD初始化	
	KEY_Init();			//按键初始化
	FSMC_SRAM_Init();	//初始化SRAM
	my_mem_init(SRAMIN);//初始化内部RAM
	
	POINT_COLOR = RED;
	LCD_ShowString(30,10,200,16,16,"Explorer STM32F4");	
	LCD_ShowString(30,30,200,16,16,"UCOSIII Examp 13-1");
	LCD_ShowString(30,50,200,16,16,"Pend Multi");
	LCD_ShowString(30,70,200,16,16,"ATOM@ALIENTEK");
	LCD_ShowString(30,90,200,16,16,"2015/5/20");
	
	POINT_COLOR = BLACK;
	LCD_DrawRectangle(5,110,234,314);	
	LCD_DrawLine(5,130,234,130);
	POINT_COLOR = RED;
	LCD_ShowString(50,111,200,16,16,"ObjRdy_NUM: 0");
	POINT_COLOR = BLUE;
	
	OSInit(&err);		    	//初始化UCOSIII
	OS_CRITICAL_ENTER();	//进入临界区			 
	//创建开始任务
	OSTaskCreate((OS_TCB 	* )&StartTaskTCB,		//任务控制块
				 (CPU_CHAR	* )"start task", 		//任务名字
                 (OS_TASK_PTR )start_task, 			//任务函数
                 (void		* )0,					//传递给任务函数的参数
                 (OS_PRIO	  )START_TASK_PRIO,     //任务优先级
                 (CPU_STK   * )&START_TASK_STK[0],	//任务堆栈基地址
                 (CPU_STK_SIZE)START_STK_SIZE/10,	//任务堆栈深度限位
                 (CPU_STK_SIZE)START_STK_SIZE,		//任务堆栈大小
                 (OS_MSG_QTY  )0,					//任务内部消息队列能够接收的最大消息数目,为0时禁止接收消息
                 (OS_TICK	  )0,					//当使能时间片轮转时的时间片长度,为0时为默认长度,
                 (void   	* )0,					//用户补充的存储区
                 (OS_OPT      )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR, //任务选项
                 (OS_ERR 	* )&err);				//存放该函数错误时的返回值
	OS_CRITICAL_EXIT();	//退出临界区	 
	OSStart(&err);      //开启UCOSIII
}
Example #7
0
void root_page(void)
{
	int8_t root_page_index = 0;
	int8_t page_reflash = 1;

	sysParam.delay = 10;
	sysParam.interval = 10;
	sysParam.uartFlag = 0;
	sysParam.GRB[0] = 1;
	sysParam.GRB[1] = 1;
	sysParam.GRB[2] = 1;
	sysParam.start = 0;
	sysParam.end = 8;

	while(1)
	{
		if(page_reflash)
		{
			page_reflash = 0;
			LCD_Clear(BLACK);
			
			LCD_DrawRectangle(0, 0, 127, 127, YELLOW);
			LCD_ShowString(1, 1,  (char *)"     PIXELSTICK      ", BLACK, YELLOW);
			
			if(SD_Init() != SD_OK)	//初始化失败
				LCD_ShowString(10, 16, (char *)"SD Card", RED, BLACK);
			else	//初始化成功了
				LCD_ShowString(10, 16, (char *)"SD Card", GREEN, BLACK);	

			LCD_ShowString(10, 32, (char *)"Wifi", RED, BLACK);
			LCD_ShowString(10, 48, (char *)"Lamp", WHITE, BLACK);
			LCD_ShowString(10, 64, (char *)"Settings", WHITE, BLACK);
			LCD_ShowString(10, 80, (char *)"About Me", WHITE, BLACK);
			LCD_ShowString(10, 96, (char *)"Gradient Ramp", WHITE, BLACK);
		}
		
		LCD_ShowIcon(2, 16 +root_page_index*16, 0, RED, BLACK);	//先清除之前的光标

		/* button LEFT */
		if(button_state[LEFT] == BUTTON_PRESS_UP)
		{
			button_state[LEFT] = BUTTON_NOT_PRESSED;
			;
		}

		/* button RIGHT */
		if(button_state[RIGHT] == BUTTON_PRESS_UP)
		{
			button_state[RIGHT] = BUTTON_NOT_PRESSED;
			;
		}

		/* button UP */
		if(button_state[UP] == BUTTON_PRESS_UP)
		{
			button_state[UP] = BUTTON_NOT_PRESSED;

			root_page_index--;
			if(root_page_index < 0)
				root_page_index = ROOT_PAGE_OPTION_NUM - 1;
		}

		/* button DOWN */
		if(button_state[DOWN] == BUTTON_PRESS_UP)
		{
			button_state[DOWN] = BUTTON_NOT_PRESSED;

			root_page_index++;
			if(root_page_index == ROOT_PAGE_OPTION_NUM)
				root_page_index = 0;
		}

		LCD_ShowIcon(2, 16+root_page_index*16, 2, WHITE, BLACK);

		/* button MIDDLE */
		if(button_state[MIDDLE] == BUTTON_PRESS_UP)	//选中或者确认
		{
			button_state[MIDDLE] = BUTTON_NOT_PRESSED;

			switch(root_page_index)
			{
				case SD_CARD_PAGE:	/* SD card browser */
					show_files();
					page_reflash = 1;
					break;
								
				case WIFI_PAGE:	/* esp8266 settings */
					wifi_page();
					page_reflash = 1;
					break;
				
				case LAMP_PAGE:	/* param settings */
					lamp_page();
					page_reflash = 1;
					break;

				case SETTING_PAGE:	/* param settings */
					setting_page();
					page_reflash = 1;
					break;

				case INFO_PAGE:	/* informations */
					info_page();
					page_reflash = 1;
					break;
				
				case GRADIENT_RAMP_PAGE:	/* informations */
					gradient_ramp_page();
					page_reflash = 1;
					break;
				
				default:
					break;
			}
		}
		
		delay_ms(20);
	}
}
Example #8
0
void show_files(void)
{
	FRESULT f_res;			//FatFs通用结果码
	char c_path[50] = {"SD:"};
	char bmp_path[50];
	char temp[15];

	volatile uint32_t file_num = 0;
	volatile uint8_t update_file = 1, update_dir = 1;
	volatile uint8_t show_start = 1, show_end = ROW_PER_PAGE;
	volatile uint16_t image_height = 0 ,height_offset = 0;
	volatile uint8_t image_flag = 0;
	int8_t i;
	
	file_index.dir_depth = 1;
	file_index.page = 1;
	file_index.row = 1;
	file_index.file = 1;

	f_res = f_mount(&FatFs[0], "SD:", (BYTE)0);	//挂载SD卡
	f_res = f_res;

	while(file_index.dir_depth)
	{
		LCD_ShowIcon(2, file_index.row*8, 0, RED, BLACK);	//先清除之前的光标

		/* button LEFT */
		if(button_state[LEFT] == BUTTON_PRESS_UP)
		{
			button_state[LEFT] = BUTTON_NOT_PRESSED;

			file_index.page--;	//向左翻页显示,不能再翻时便是退回到上一级目录
			update_file = 1;
			file_index.row = 1;

			if(file_index.page < 1)	//左翻到头,则返回上一级目录
			{
				update_dir = 1;
				file_index.page = 1;
				file_index.dir_depth--;

				for(i=FILE_NAME_LEN-1;i>1;i--)	//清除 目录字符串中当前文件夹的名字,即得到上一级目录的路径
				{
					if((c_path[i]) == '/')
					{
						c_path[i] = 0;
						for(;i<FILE_NAME_LEN;i++)
							c_path[i] = 0;
						break;
					}
				}
				
				update_dir = 1;	//由于目录更改,需要更新目录的所有信息
				
				if(file_index.dir_depth == 0)	//若为根目录,则无需更新
				{
					update_file = 0;
					update_dir = 0;	//由于目录更改,需要更新目录的所有信息
				}
			}
		}

		/* button RIGHT */
		if(button_state[RIGHT] == BUTTON_PRESS_UP)
		{
			button_state[RIGHT] = BUTTON_NOT_PRESSED;

			if((file_num/ROW_PER_PAGE)<file_index.page)	//右翻到头,则留在当前页面上
			{
				;
			}
			else
			{
				update_file = 1;
				file_index.row = 1;
				file_index.page++;	//向右翻页显示
			}
		}

		/* button UP */
		if(button_state[UP] == BUTTON_PRESS_UP)
		{
			button_state[UP] = BUTTON_NOT_PRESSED;

			file_index.row--;	//光标上移
			if(file_index.row < 1 )	//翻过上界转到最后一行
			{
				file_index.row = file_num - ROW_PER_PAGE*(file_index.page-1);
				if(ROW_PER_PAGE < file_index.row)
					file_index.row = ROW_PER_PAGE;
			}
		}

		/* button DOWN */
		if(button_state[DOWN] == BUTTON_PRESS_UP)
		{
			button_state[DOWN] = BUTTON_NOT_PRESSED;

			file_index.row++;	//光标下移
			if( (file_num - ROW_PER_PAGE*(file_index.page-1)) < file_index.row 
					||  ROW_PER_PAGE < file_index.row)	//翻过下界返回到第一行
				file_index.row = 1;
		}

		/* button MIDDLE */
		if(button_state[MIDDLE] == BUTTON_PRESS_UP)	//选中或者确认
		{
			button_state[MIDDLE] = BUTTON_NOT_PRESSED;

			if(all_file_name[file_index.row][0] & AM_DIR)	//选中文件夹,则更新当前路径以及当前页面
			{
				file_index.dir_depth++;
				
				for(i=0;i<FILE_NAME_LEN-1;i++)
				{
					temp[i] = all_file_name[file_index.row + ROW_PER_PAGE*(file_index.page-1)][i+1];
				}
				sprintf(c_path, "%.*s%.*s%.*s", strlen(c_path),c_path,strlen("/"), "/", strlen(temp), temp);
				update_dir = 1;
				update_file = 1;
				file_index.row = 1;
			}
			else if(all_file_name[file_index.row][0] & AM_ARC)	//选中文图片,则显示图片
			{
				image_flag = 1;
				for(;;)
				{
					if(image_flag)
					{
						image_flag = 0;
						if(all_file_name[file_index.row][0] & AM_ARC)
						{
							for(i=0;i<50;i++)
							{
								bmp_path[i] = 0;
							}
							for(i=0;i<FILE_NAME_LEN-1;i++)
							{
								temp[i] = all_file_name[file_index.row + ROW_PER_PAGE*(file_index.page-1)][i+1];
							}
							sprintf(bmp_path, "%.*s%.*s%.*s", strlen(c_path),c_path,strlen("/"), "/", strlen(temp), temp);

							if(height_offset > 10000)
								height_offset = 0;

							if(height_offset > image_height - 128)
								height_offset = image_height - 129;
								
							if(image_height < 128)
								height_offset = 0;
							
							image_height = show_bmp_center(bmp_path);
						}
					}
					
					/* button UP */
					if(button_state[LEFT] == BUTTON_PRESS_UP)
					{
						button_state[LEFT] = BUTTON_NOT_PRESSED;

						file_index.row--;	//向左翻图片
						image_flag = 1;
						height_offset = 0;
						if(file_index.row < 1 )	//翻过上界转到最后一行
						{
							file_index.row = file_num - ROW_PER_PAGE*(file_index.page-1);
							if(ROW_PER_PAGE < file_index.row)
								file_index.row = ROW_PER_PAGE;
						}
					}

					/* button DOWN */
					if(button_state[RIGHT] == BUTTON_PRESS_UP)
					{
						button_state[RIGHT] = BUTTON_NOT_PRESSED;

						file_index.row++;	//向右翻图片
						image_flag = 1;
						height_offset = 0;
						if( (file_num - ROW_PER_PAGE*(file_index.page-1)) < file_index.row 
								||  ROW_PER_PAGE < file_index.row)	//翻过下界返回到第一行
							file_index.row = 1;
					}
					
					if(button_state[UP] == BUTTON_PRESS_UP)
					{
						button_state[UP] = BUTTON_NOT_PRESSED;

						height_offset+=30;
						image_flag = 1;
					}
					if(button_state[DOWN] == BUTTON_PRESS_UP)
					{
						button_state[DOWN] = BUTTON_NOT_PRESSED;

						height_offset-=30;
						image_flag = 1;
					}
					
					if(button_state[START] == BUTTON_PRESS_UP)	//选中或者确认
					{
						button_state[START] = BUTTON_NOT_PRESSED;

						led_blink(5,100);
						paint_bmp(bmp_path);
					}
					
					if(button_state[MIDDLE] == BUTTON_PRESS_UP)	//长按退出看图模式
					{
						button_state[MIDDLE] = BUTTON_NOT_PRESSED;

						update_dir = 1;
						update_file = 1;
						break;
					}

				}
			}
		}

		LCD_ShowIcon(2, file_index.row*8, 2, WHITE, BLACK);
		
		if(update_dir)
		{
			update_dir = 0;

			for(i=FILE_NAME_LEN-1;i>1;i--)
			{
				if( ((c_path[i]) == '/') && ((c_path[i+1]) == 0) )
				{
					c_path[i] = 0;
					break;
				}
			}
			scan_files(c_path, &file_num);

			LCD_DrawRectangle(0, 0, 127, 127, YELLOW);
			LCD_Fill(0, 0, 127, 8, YELLOW);
			LCD_ShowString(0, 0, &all_file_name[0][0], BLACK, YELLOW);
			LCD_ShowNum(100, 0, file_num, 2, BLACK, YELLOW);
		}
		
		if(update_file)
		{
			update_file = 0;
			show_start = ((file_index.page-1)*ROW_PER_PAGE)+1;
			show_end = show_end + ROW_PER_PAGE;
			if(show_end > file_num)
				show_end = file_num+1;
			show_menu(c_path, show_start, show_end);
		}
		delay_ms(20);
	}
}
Example #9
0
File: gui.c Project: nvero/fmhobby
//加载游戏界面
//size:3,3*3图片
//     4,4*4图片
//     5,5*5图片
//#define FRAME1 0XBC40 //棕色
void Load_Game_ICO(u8 size)
{
	u8 i;
	LCD_Clear(LGRAY);//清屏
	for(i=0;i<4;i++)//画大边框
	{		
		POINT_COLOR=FRAME1;
		LCD_DrawRectangle(i,i,239-i,239-i);
	}
	if(size==3)
	{
		for(i=0;i<4;i++)//画小边框
		{		
			POINT_COLOR=FRAME1;
			LCD_DrawRectangle(154+i,235+i,239-i,316-i);
		}									 
	    LCD_Fill(158,235,235,239,WHITE);//把多余的去掉	
		POINT_COLOR=RED;
		LCD_DrawRectangle(158,235,235,312);//画空的方框,事先不放图片
		LCD_DrawRectangle(4,4,235,235); //画最大的红框

		LCD_DrawLine(81,4,81,235);  //画内部红框
		LCD_DrawLine(158,4,158,235);//画内部红框
		LCD_DrawLine(4,81,235,81);  //画内部红框
		LCD_DrawLine(4,158,235,158);//画内部红框
	}else if(size==4)
	{
		for(i=0;i<4;i++)//画小边框
		{		
			POINT_COLOR=FRAME1;
			LCD_DrawRectangle(174+i,236+i,239-i,298-i);
		}									 
	    LCD_Fill(178,236,236,240,WHITE);//把多余的去掉	
		POINT_COLOR=RED;
		LCD_DrawRectangle(178,236,236,294);//画空的方框,第十六格
		LCD_DrawRectangle(4,4,236,236);    //画最大的红框

		for(i=0;i<size;i++)LCD_DrawLine(4,4+58*i,236,4+58*i);  //画内部横网格线
		for(i=0;i<size;i++)LCD_DrawLine(4+58*i,4,4+58*i,236);  //画内部竖网格线	   										  
	}else if(size==5)
	{
		for(i=0;i<4;i++)//画小边框
		{		
			POINT_COLOR=FRAME1;
			LCD_DrawRectangle(184+i,234+i,239-i,284-i);
		}	
		LCD_DrawLine(4,235,236,235);  //误差横线填充线
		LCD_DrawLine(235,4,235,281);  //误差竖线填充线
										 
	    LCD_Fill(188,234,234,239,WHITE);//把多余的去掉	
		POINT_COLOR=RED;
		LCD_DrawRectangle(188,234,234,280);//画空的方框,第十六格
		LCD_DrawRectangle(4,4,234,234);    //画最大的红框

		for(i=0;i<size;i++)LCD_DrawLine(4,4+46*i,234,4+46*i);  //画内部横网格线
		for(i=0;i<size;i++)LCD_DrawLine(4+46*i,4,4+46*i,234);  //画内部竖网格线
	}	  		  								    	  		  
	LCD_DrawRectangle(2,241,79,318);//包括预览图片
	
	BACK_COLOR=WHITE;
	POINT_COLOR=BLUE;//画笔颜色
	Show_Str(81,242,"等级:",16,0x01);
	POINT_COLOR=RED;//画笔颜色
	if(size==3)Show_Str(121,242,"简单",16,0x01);
	else if(size==4)Show_Str(121,242,"一般",16,0x01);
	else Show_Str(121,242,"困难",16,0x01);
	POINT_COLOR=BLUE;//画笔颜色
	Show_Str(81,258,"步数:",16,0x01);
	Show_Str(81,274,"用时:",16,0x01);   
	GUI_Draw_Button(98,298,37,20,"退出",BLACK);		  					     
} 		 	 
Example #10
0
void Windows_DrawButton( u16 CoordiX, u16 CoordiY, u32 Color )
{
	LCD_DrawRectangle(CoordiX, CoordiY, ButMenu_W, ButMenu_L, Color);
	LCD_DrawRectangle(CoordiX+1, CoordiY+1, ButMenu_W-2, ButMenu_L-2, Color);
}
Example #11
0
void KEY_Test(void)
{
	u8 i = 0;
	
	unsigned char key_flag = 0;
	unsigned char read_val = 0;
	LCD_Clear(BLACK);
	LCD_DrawRectangle(0,5, 479, 271);
	LCD_DrawRectangle(5,18, 474, 266);
	LCD_ShowString(150, 6, "--STC51 Platform--");  // 实验开发平台
	LCD_ShowString(150,60, "Step 1:Key and Led Testing");
	LCD_ShowString(150, 100,"Press K1,K2,K3,K4,Seee the LED"); 		 
	
	while(key_flag != 0x0F)
	{					
		
		LCD_ShowNum(150, 80,uart_flag, 0);
		
		if(strstr((const char*)gsm_ch, "OK"))
			LCD_ShowString(200, 150, "GSM_OK!"); 
		
		if(KEY4 == 0)				// K1   1110 0111
		{
			delayms(20);
			if(KEY4 == 0)
			{
				//Uart1_SendData('1');
				while(!KEY4);
				key_flag |= 0x01;
				PCF8574_Single_WriteI2C(UD_PCF8574_SlaveAddress, 0xE7);	
				
				Uart2_SendString("AT\r\n");					//GSM test
				
				//Uart1_SendString(mode_FLASH);	  		//MP3 test
				//Delay5ms();
				Uart1_SendString(play);	  		//MP3 test
			}
		}
	read_val = PCF8574_Single_ReadI2C(UD_PCF8574_SlaveAddress);	
/////////////////////////////////////////			
		if((read_val & 0x80) == 0)	//OUTC1				   K2  1110 0101
		{
			key_flag |= 0x08;	
			Uart1_SendData('2');			
			PCF8574_Single_WriteI2C(UD_PCF8574_SlaveAddress, 0xE5);	///led2 buzzer  1111 0011
		}
/////////////////////////////////////////
	
/////////////////////////////////////////
		if((read_val & 0x40) == 0)	//OUTC2				   K3  1110 0001 
		{
			Uart1_SendData('3');
			key_flag |= 0x04;		
			PCF8574_Single_WriteI2C(UD_PCF8574_SlaveAddress, 0xE1);	///led1  buzzer   1110 0111
		}
/////////////////////////////////////////		
		if((read_val & 0x20) == 0)	//OUTC5         K4  LED2 1111 0111
		{
			Uart1_SendData('4');	
			key_flag |= 0x02;			
			PCF8574_Single_WriteI2C(UD_PCF8574_SlaveAddress, 0xF7);	//led off!  1111 0101
			
		}
		
		if(strstr((const char*)gsm_ch, "OK"))
			LCD_ShowString(200, 150, "GSM_OK!"); 

	}           
		for(i; i < GSM_length; i++)
		gsm_ch[i] = 0;
		
	for(i=0;i<BufferCount;i++)
			BufferA[i]=0x00;
	
		BufferCount=0;
		uart_flag = 0;

}
Example #12
0
void Lcd_Init(void)
{

//调用一次这些函数,免得编译的时候提示警告
    LCD_CS =1;
    if(LCD_CS==0)
    {
        LCD_WR_REG_DATA(0,0);
        LCD_ShowString(0,0," ");
        LCD_ShowNum(0,0,0,0);
        LCD_Show2Num(0,0,0,0);
        LCD_DrawPoint_big(0,0);
        LCD_DrawRectangle(0,0,0,0);
        Draw_Circle(0,0,0);
    }
    LCD_REST=0;
    delayms(20);
    LCD_REST=1;
    delayms(20);
    LCD_CS =0;  //打开片选使能

    LCD_WR_REG(0xCB);
    LCD_WR_DATA8(0x39);
    LCD_WR_DATA8(0x2C);
    LCD_WR_DATA8(0x00);
    LCD_WR_DATA8(0x34);
    LCD_WR_DATA8(0x02);

    LCD_WR_REG(0xCF);
    LCD_WR_DATA8(0x00);
    LCD_WR_DATA8(0XC1);
    LCD_WR_DATA8(0X30);

    LCD_WR_REG(0xE8);
    LCD_WR_DATA8(0x85);
    LCD_WR_DATA8(0x00);
    LCD_WR_DATA8(0x78);

    LCD_WR_REG(0xEA);
    LCD_WR_DATA8(0x00);
    LCD_WR_DATA8(0x00);

    LCD_WR_REG(0xED);
    LCD_WR_DATA8(0x64);
    LCD_WR_DATA8(0x03);
    LCD_WR_DATA8(0X12);
    LCD_WR_DATA8(0X81);

    LCD_WR_REG(0xF7);
    LCD_WR_DATA8(0x20);

    LCD_WR_REG(0xC0);    //Power control
    LCD_WR_DATA8(0x23);   //VRH[5:0]

    LCD_WR_REG(0xC1);    //Power control
    LCD_WR_DATA8(0x10);   //SAP[2:0];BT[3:0]

    LCD_WR_REG(0xC5);    //VCM control
    LCD_WR_DATA8(0x3e); //对比度调节
    LCD_WR_DATA8(0x28);

    LCD_WR_REG(0xC7);    //VCM control2
    LCD_WR_DATA8(0x86);  //--

    LCD_WR_REG(0x36);    // Memory Access Control
    LCD_WR_DATA8(0x48); //	   //48 68竖屏//28 E8 横屏

    LCD_WR_REG(0x3A);
    LCD_WR_DATA8(0x55);

    LCD_WR_REG(0xB1);
    LCD_WR_DATA8(0x00);
    LCD_WR_DATA8(0x18);

    LCD_WR_REG(0xB6);    // Display Function Control
    LCD_WR_DATA8(0x08);
    LCD_WR_DATA8(0x82);
    LCD_WR_DATA8(0x27);

    LCD_WR_REG(0xF2);    // 3Gamma Function Disable
    LCD_WR_DATA8(0x00);

    LCD_WR_REG(0x26);    //Gamma curve selected
    LCD_WR_DATA8(0x01);

    LCD_WR_REG(0xE0);    //Set Gamma
    LCD_WR_DATA8(0x0F);
    LCD_WR_DATA8(0x31);
    LCD_WR_DATA8(0x2B);
    LCD_WR_DATA8(0x0C);
    LCD_WR_DATA8(0x0E);
    LCD_WR_DATA8(0x08);
    LCD_WR_DATA8(0x4E);
    LCD_WR_DATA8(0xF1);
    LCD_WR_DATA8(0x37);
    LCD_WR_DATA8(0x07);
    LCD_WR_DATA8(0x10);
    LCD_WR_DATA8(0x03);
    LCD_WR_DATA8(0x0E);
    LCD_WR_DATA8(0x09);
    LCD_WR_DATA8(0x00);

    LCD_WR_REG(0XE1);    //Set Gamma
    LCD_WR_DATA8(0x00);
    LCD_WR_DATA8(0x0E);
    LCD_WR_DATA8(0x14);
    LCD_WR_DATA8(0x03);
    LCD_WR_DATA8(0x11);
    LCD_WR_DATA8(0x07);
    LCD_WR_DATA8(0x31);
    LCD_WR_DATA8(0xC1);
    LCD_WR_DATA8(0x48);
    LCD_WR_DATA8(0x08);
    LCD_WR_DATA8(0x0F);
    LCD_WR_DATA8(0x0C);
    LCD_WR_DATA8(0x31);
    LCD_WR_DATA8(0x36);
    LCD_WR_DATA8(0x0F);

    LCD_WR_REG(0x2A);
    LCD_WR_DATA8(0x00);
    LCD_WR_DATA8(0x00);
    LCD_WR_DATA8(0x00);
    LCD_WR_DATA8(0xEF);

    LCD_WR_REG(0x2B);
    LCD_WR_DATA8(0x00);
    LCD_WR_DATA8(0x00);
    LCD_WR_DATA8(0x01);
    LCD_WR_DATA8(0x3F);
    LCD_WR_REG(0x11);    //Exit Sleep
    delayms(120);

    LCD_WR_REG(0x29);    //Display on
    LCD_WR_REG(0x2c);

}
Example #13
0
void LCD_Init(void)
{
  P3OUT|=(BIT1+BIT2+BIT3+BIT6+BIT7);
  P4OUT=0xFF;
  P2OUT=0xFF;
  P1OUT|=BIT2;
  P3DIR|=(BIT1+BIT2+BIT3+BIT6+BIT7);
  P4DIR=0xFF;
  P2DIR=0xFF;
  P1DIR|=BIT2;
  P1OUT|=BIT2;
  
  SET_LCD_CS;
  if(GET_LCD_CS==0)
  {
      LCD_WR_REG_DATA(0,0);
      LCD_ShowString(0,0," ");
      LCD_ShowNum(0,0,0,0);
      LCD_Show2Num(0,0,0,0);
      LCD_DrawPoint_big(0,0);
      LCD_DrawRectangle(0,0,0,0);
      Draw_Circle(0,0,0);
  }

  SET_LCD_REST;
  delay_ms(5);	
  CLR_LCD_REST;
  delay_ms(5);
  SET_LCD_REST;
  SET_LCD_CS;
  SET_LCD_RD;
  SET_LCD_WR;
  delay_ms(5);
  CLR_LCD_CS ;  //打开片选使能

  LCD_WR_REG(0x00E2);	//PLL multiplier, set PLL clock to 120M
  LCD_WR_DATA(0x002d);	//N=0x36 for 6.5M, 0x23 for 10M crystal
  LCD_WR_DATA(0x0002);
  LCD_WR_DATA(0x0004);
  LCD_WR_REG(0x00E0);  // PLL enable
  LCD_WR_DATA(0x0001);
  delay_ms(1);
  LCD_WR_REG(0x00E0);
  LCD_WR_DATA(0x0003);
  delay_ms(5);
  LCD_WR_REG(0x0001);  // software reset
  delay_ms(5);
  LCD_WR_REG(0x00E6);	//PLL setting for PCLK, depends on resolution
  LCD_WR_DATA(0x0000);
  LCD_WR_DATA(0x00ff);
  LCD_WR_DATA(0x00be);

  LCD_WR_REG(0x00B0);	//LCD SPECIFICATION
  LCD_WR_DATA(0x0020);
  LCD_WR_DATA(0x0000);
  LCD_WR_DATA((HDP>>8)&0X00FF);  //Set HDP
  LCD_WR_DATA(HDP&0X00FF);
  LCD_WR_DATA((VDP>>8)&0X00FF);  //Set VDP
  LCD_WR_DATA(VDP&0X00FF);
  LCD_WR_DATA(0x0000);
  delay_ms(5);
  LCD_WR_REG(0x00B4);	//HSYNC
  LCD_WR_DATA((HT>>8)&0X00FF);  //Set HT
  LCD_WR_DATA(HT&0X00FF);
  LCD_WR_DATA((HPS>>8)&0X00FF);  //Set HPS
  LCD_WR_DATA(HPS&0X00FF);
  LCD_WR_DATA(HPW);			   //Set HPW
  LCD_WR_DATA((LPS>>8)&0X00FF);  //SetLPS
  LCD_WR_DATA(LPS&0X00FF);
  LCD_WR_DATA(0x0000);

  LCD_WR_REG(0x00B6);	//VSYNC
  LCD_WR_DATA((VT>>8)&0X00FF);   //Set VT
  LCD_WR_DATA(VT&0X00FF);
  LCD_WR_DATA((VPS>>8)&0X00FF);  //Set VPS
  LCD_WR_DATA(VPS&0X00FF);
  LCD_WR_DATA(VPW);			   //Set VPW
  LCD_WR_DATA((FPS>>8)&0X00FF);  //Set FPS
  LCD_WR_DATA(FPS&0X00FF);

  LCD_WR_REG(0x0036); //rotation
  LCD_WR_DATA(0x0000);
  LCD_WR_REG(0x00F0); //pixel data interface
  LCD_WR_DATA(0x0003);
  
  delay_ms(5);
  LCD_WR_REG(0x0029); //display on
  LCD_WR_REG(0x00BE); //set PWM for B/L
  LCD_WR_DATA(0x0006);
  LCD_WR_DATA(0x00f0);
  LCD_WR_DATA(0x0001);
  LCD_WR_DATA(0x00f0);
  LCD_WR_DATA(0x0000);
  LCD_WR_DATA(0x0000);

  LCD_WR_REG(0x00d0); 
  LCD_WR_DATA(0x000d);
  //----------LCD RESET---GPIO0-------------------//
  LCD_WR_REG(0x00B8);
  LCD_WR_DATA(0x0000);    //GPIO3=input, GPIO[2:0]=output
  LCD_WR_DATA(0x0001);    //GPIO0 normal
  LCD_WR_REG(0x00BA);
  LCD_WR_DATA(0x0000);  
}
Example #14
0
/*
*********************************************************************************************************
* Description: 	Main function
* Arguments  : 	None
* Returns    : 	None
*********************************************************************************************************
*/
int main (void)                       
{
  u8 key;
	
	u8 x0,y0,x1,y1,x2,y2;
	u8 r,a,b;
	unsigned char flag;
	tccolor=Blue;
  SystemInit();
	UART0_Init();
  LCD_Init   ();
	LPC_GPIO0->FIODIR |= 0x00002C0;  										//P0.6 0.7 0.9 Output
	LPC_GPIO2->FIODIR |= 0x00000FF;  										//P2.13 input P2.0...P2.7 Output	 
	Touch_Init();
	LCD_Color(0,0,239,239,White);
	Load_Drow_Dialog();
	LCD_Color(279,0,40,40,White);
	while(1)
	{
		if(len==8)
		{
				len=0;
				flag=data[6];
				switch(flag)
				{
							case 0x01:
								x0=data[0];y0=data[1];x1=data[2];y1=data[3];
								pencolor=colorchange(data[7]);
								LCD_Color(0,0,239,239,pencolor);
								LCD_DrawLine(x0,y0,x1,y1);
								break;
							case 0x02:
								x0=data[0];y0=data[1];x1=data[2];y1=data[3];x2=data[4];y2=data[5];
								pencolor=colorchange(data[7]);
								LCD_Color(0,0,239,239,pencolor);
								LCD_DrawTriangle(x0,y0,x1,y1,x2,y2);
								break;
							case 0x03:
								x0=data[0];y0=data[1];x1=data[2];y1=data[3];
								pencolor=colorchange(data[7]);
								LCD_Color(0,0,239,239,pencolor);
								LCD_DrawRectangle(x0,y0,x1,y1);
								break;
							case 0x04:
								x0=data[0];y0=data[1];r=data[2];
								pencolor=colorchange(data[7]);
								LCD_Color(0,0,239,239,pencolor);
								LCD_DrawCircle(x0,y0,r);
								break;
							case 0x05:
								x0=data[0];y0=data[1];a=data[2];b=data[3];
								pencolor=colorchange(data[7]);
								LCD_Color(0,0,239,239,pencolor);
								LCD_DrawEllipse(x0,y0,a,b);
			}
		}
		key =  KEY_Scan();
		if(Pen_Point.Key_Sta==Key_Down)										//Touch screen is pressed 
		{
			Pen_Int_Set(0);													//Closed interrupt
			do
			{
				Convert_Pos();
				Pen_Point.Key_Sta=Key_Up;
//				Draw_Big_Point(Pen_Point.X0,Pen_Point.Y0);				//Drawing	
				if(Pen_Point.Y0>=240)
				{
					Load_Drow_Dialog();
					switch(Pen_Point.X0/40)
					{
						case 0:LCD_Color(279,0,40,40,White);tccolor=Blue;break;
						case 1:LCD_Color(279,40,40,40,White);tccolor=Yellow;break;
						case 2:LCD_Color(279,80,40,40,White);tccolor=Green;break;
						case 3:LCD_Color(279,120,40,40,White);tccolor=Red;break;
						case 4:LCD_Color(279,160,40,40,White);tccolor=Purple;break;
						case 5:LCD_Color(279,200,40,40,White);tccolor=Cyan;break;
					}
				}
		/*		else
				{
						LCD_Color(0,0,239,239,tccolor);
				}*/
						
			}while(PEN==0);                                                  //While the Touch screen is pressing
			Pen_Int_Set(1);													 //Opene the interrupt
		}
		else
			delay1ms(1);
	}
}