Esempio n. 1
0
//OLED_Write_Char(0,15,'a'); 0234行,0~15列
void OLED_Write_Char(unsigned char x,unsigned char y,signed char Asc) 
{
  signed char Temp_String[2];
	y=y*8;        
	Temp_String[0]=Asc;	
	Temp_String[1]='\0';			                  //字母占一个字节
	OLED_Write_String(x,y,Temp_String);	        //显示字母
}
Esempio n. 2
0
File: isr.c Progetto: oldjohnh/car
void NMI_Handler(void)//??????
{
	OLED_Clear();
	FTM_PWM_ChangeDuty(FTM0_CH3_PA6,0);
	FTM_PWM_ChangeDuty(FTM0_CH4_PA7,0);
//	FTM_PWM_ChangeDuty(FTM1_CH0_PA8,0);
//	FTM_PWM_ChangeDuty(FTM1_CH1_PA9,0);

	OLED_Write_String(0,0,(uint8_t *)"The Chip");
	
	OLED_Write_String(0,2,(uint8_t *)"have big");	
	
	OLED_Write_String(0,4,(uint8_t *)"error");
	#if(CHIP_DEBUG==ON)	
	wait();
	#endif
	while(1);
}
Esempio n. 3
0
File: isr.c Progetto: oldjohnh/car
void HardFault_Handler(void)//?????????
{
	OLED_Clear();
	FTM_PWM_ChangeDuty(FTM0_CH3_PA6,0);
	FTM_PWM_ChangeDuty(FTM0_CH4_PA7,0);
//	FTM_PWM_ChangeDuty(FTM1_CH0_PA8,0);
//	FTM_PWM_ChangeDuty(FTM1_CH1_PA9,0);
	OLED_Write_String(0,0,(uint8_t *)"The memory");
	
	OLED_Write_String(0,2,(uint8_t *)"or Stacks");	
	
	OLED_Write_String(0,4,(uint8_t *)"overflows");
	
	#if(CHIP_DEBUG==ON)
	wait();
	#endif
	while(1);
}
Esempio n. 4
0
File: menu.c Progetto: oldjohnh/car
/******************************主界面显示********************************/
void Menu_Init(void)
{
	OLED_Write_Char(0, yiwei(i,i), 43);
	OLED_Write_String(2,yiwei(0,i),"AI ");
	OLED_Write_String(2,yiwei(2,i),"BI ");
	OLED_Write_String(2,yiwei(4,i),"CI ");
	OLED_Write_String(2,yiwei(6,i),"DI ");
	OLED_Write_String(2,yiwei(8,i),"EI ");
	OLED_Write_String(2,yiwei(10,i),"F1 ");
	OLED_Write_String(2,yiwei(12,i),"F2 ");
	OLED_Write_String(2,yiwei(14,i),"SD ");
	OLED_Write_Num2(7,yiwei(0,i),a1);
	OLED_Write_Num2(7,yiwei(2,i),a2);
	OLED_Write_Num2(7,yiwei(4,i),a3);
	OLED_Write_Num2(7,yiwei(6,i),a4);
	OLED_Write_Num2(7,yiwei(8,i),a5);
	OLED_Write_Num4(7,yiwei(10,i),FTMDuty_1);
	OLED_Write_Num4(7,yiwei(12,i),FTMDuty_2);
	OLED_Write_String(7,yiwei(14,i),"    ");
	OLED_Write_String(9,yiwei(8,i),"    ");
	OLED_Write_String(9,yiwei(6,i),"    ");
	OLED_Write_String(9,yiwei(4,i),"    ");
	OLED_Write_String(9,yiwei(2,i),"    ");
	
	//上移
	if(Key_up == 0)
	{
		DelayMs(100);
		if(Key_up == 0)
		{
			OLED_Write_Char(0,yiwei(i,i), ' ');
			i -= 2;
			if(i == -2) i = 14;
		}
	}
	
	//下移
	if(Key_down == 0)
	{
		DelayMs(100);
		if(Key_down == 0)
		{
			OLED_Write_Char(0,yiwei(i,i), ' ');
			i += 2;
			if(i == 16) i = 0;
		}
	}
	
	//a1
	if(yiwei(i,i) == yiwei(0,i))
	{
		//加
		if(Key_right == 0)
		{
			DelayMs(50);
			if(Key_right == 0)
			{
				a1++;
				if(a1 >= 30) a1 = 0;
			}
		}
		//减
		if(Key_left == 0)
		{
			DelayMs(50);
			if(Key_left == 0)
			{
				a1--;
				if(a1 <= 0) a1 = 30;
			}
		}
	}
	//a2
	if(yiwei(i,i) == yiwei(2,i))
	{
		//加
		if(Key_right == 0)
		{
			
			DelayMs(50);
			if(Key_right == 0)
			{
				a3++;
				if(a3 >= 50) a3 = 0;
			}
		}
		//减
		if(Key_left == 0)
		{
			DelayMs(50);
			if(Key_left == 0)
			{
				a3--;
				if(a3 <= 0) a3 = 50;
			}
		}
	}
	//a4
	if(yiwei(i,i) == yiwei(6,i))
	{
		//加
		if(Key_right == 0)
		{
			DelayMs(50);
			if(Key_right == 0)
			{
				a4++;
				if(a4 >= 50) a4 = 0;
			}
		}
		//减
		if(Key_left == 0)
		{
			DelayMs(50);
			if(Key_left == 0)
			{
				a4--;
				if(a4 <= 0) a4 = 50;
			}
		}
	}
	
	//a5
	if(yiwei(i,i) == yiwei(8,i))
	{
		//加
		if(Key_right == 0)
		{
			DelayMs(50);
			if(Key_right == 0)
			{
				a5++;
				if(a5 >= 50) a5 = 0;
			}
		}
		//减
		if(Key_left == 0)
		{
			DelayMs(50);
			if(Key_left == 0)
			{
				a5--;
				if(a5 <= 0) a5 = 50;
			}
		}
	}

	//FTMDuty_1
	if(yiwei(i,i) == yiwei(10,i))
	{
		//加
		if(Key_right == 0)
		{
			DelayMs(50);
			if(Key_right == 0)
			{
				FTMDuty_1 += 50;
				if(FTMDuty_1 >= 3000) FTMDuty_1 = 3000;
			}
		}
		//减
		if(Key_left == 0)
		{
			DelayMs(50);
			if(Key_left == 0)
			{
				FTMDuty_1 -= 50;
				if(FTMDuty_1 <= 0) FTMDuty_1 = 0;
			}
		}
	}
	
	//FTMDuty_2
	if(yiwei(i,i) == yiwei(12,i))
	{
		//加
		if(Key_right == 0)
		{
			DelayMs(50);
			if(Key_right == 0)
			{
				FTMDuty_2 += 50;
				if(FTMDuty_2 >= 3000) FTMDuty_2 = 3000;
			}
		}
		//减
		if(Key_left == 0)
		{
			DelayMs(50);
			if(Key_left == 0)
			{
				FTMDuty_2 -= 50;
				if(FTMDuty_2 <= 0) FTMDuty_2 = 0;
			}
		}
	}
	
	//SD
	if(yiwei(i,i) == yiwei(14,i))
	{
		if(Key_right == 0)
		{
			DelayMs(50);
			if(Key_right == 0)
			{
				OLED_Clear();
				OLED_Write_String(0,0,"SD reading");
				SD_D = 0; //扇区
				SD_Flag = 1;
			}
		}
	}
	//打开ccd测试
	if(Key_2 == 0)
	{
		DelayMs(100);
		if(Key_2 == 0)
		{
			OLED_Clear();
			CCD_Flag = 1;
			SD_X = 0;
			PIT_Start(PIT1);
		}
	}
	//发车
	if(Key_1 == 0)
	{
		DelayMs(50);
		if(Key_1 == 0)
		{
			OLED_Clear();
			Run_Flag = 1;
			PIT_Start(PIT1);
		}
	}
}
Esempio n. 5
0
File: menu.c Progetto: oldjohnh/car
/******************************主界面显示********************************/
void Menu_Init(void)
{
	OLED_Write_Char(0, yiwei(i,i), 43);
	OLED_Write_String(2,yiwei(0,i),"AI ");
	OLED_Write_String(2,yiwei(2,i),"BI ");
	OLED_Write_String(2,yiwei(4,i),"CI ");
	OLED_Write_String(2,yiwei(6,i),"DI ");
	OLED_Write_String(2,yiwei(8,i),"F1 ");
	OLED_Write_String(2,yiwei(10,i),"F2 ");
	OLED_Write_String(2,yiwei(12,i),"SD ");
	OLED_Write_Num2(7,yiwei(0,i),a1);
	OLED_Write_String(9,yiwei(0,i),"  ");
	OLED_Write_Num2(7,yiwei(2,i),a2);
	OLED_Write_String(9,yiwei(2,i),"  ");
	OLED_Write_Num2(7,yiwei(4,i),a3);
	OLED_Write_String(9,yiwei(4,i),"  ");
	OLED_Write_Num2(7,yiwei(6,i),a4);
	OLED_Write_String(9,yiwei(6,i),"  ");
	OLED_Write_Num4(7,yiwei(8,i),FTMDuty_1);
	OLED_Write_Num4(7,yiwei(10,i),FTMDuty_2);
	OLED_Write_String(7,yiwei(12,i),"    ");
	
	//上移
	if(Key_up == 0)
	{
		DelayMs(100);
		if(Key_up == 0)
		{
			OLED_Write_Char(0,yiwei(i,i), ' ');
			i = i - 2;
			if(i == -2) i = 12;
		}
	}
	
	//下移
	if(Key_down == 0)
	{
		DelayMs(100);
		if(Key_down == 0)
		{
			OLED_Write_Char(0,yiwei(i,i), ' ');
			i = i + 2;
			if(i == 14) i = 0;
		}
	}
	
	//a1
	if(yiwei(i,i) == yiwei(0,i))
	{
		//加
		if(Key_right == 0)
		{
			DelayMs(50);
			if(Key_right == 0)
			{
				a1++;
				if(a1 >= 50) a1 = 0;
			}
		}
		//减
		if(Key_left == 0)
		{
			DelayMs(50);
			if(Key_left == 0)
			{
				a1--;
				if(a1 <= 0) a1 = 50;
			}
		}
	}
	//a2
	if(yiwei(i,i) == yiwei(2,i))
	{
		//加
		if(Key_right == 0)
		{
			DelayMs(50);
			if(Key_right == 0)
			{
				a2++;
				if(a2 >= 50) a2 = 0;
			}
		}
		//减
		if(Key_left == 0)
		{
			DelayMs(50);
			if(Key_left == 0)
			{
				a2--;
				if(a2 <= 0) a2 = 50;
			}
		}
	}
	//a3
	if(yiwei(i,i) == yiwei(4,i))
	{
		//加
		if(Key_right == 0)
		{
			DelayMs(50);
			if(Key_right == 0)
			{
				a3++;
				if(a3 >= 50) a3 = 0;
			}
		}
		//减
		if(Key_left == 0)
		{
			DelayMs(50);
			if(Key_left == 0)
			{
				a3--;
				if(a3 <= 0) a3 = 50;
			}
		}
	}
	//a4
	if(yiwei(i,i) == yiwei(6,i))
	{
		//加
		if(Key_right == 0)
		{
			DelayMs(50);
			if(Key_right == 0)
			{
				a4++;
				if(a4 >= 50) a4 = 0;
			}
		}
		//减
		if(Key_left == 0)
		{
			DelayMs(50);
			if(Key_left == 0)
			{
				a4--;
				if(a4 <= 0) a4 = 50;
			}
		}
	}

	//FTMDuty_1
	if(yiwei(i,i) == yiwei(8,i))
	{
		//加
		if(Key_right == 0)
		{
			DelayMs(50);
			if(Key_right == 0)
			{
				FTMDuty_1 += 50;
				if(FTMDuty_1 >= 3000) FTMDuty_1 = 3000;
			}
		}
		//减
		if(Key_left == 0)
		{
			DelayMs(50);
			if(Key_left == 0)
			{
				FTMDuty_1 -= 50;
				if(FTMDuty_1 <= 0) FTMDuty_1 = 0;
			}
		}
	}
	
	//FTMDuty_2
	if(yiwei(i,i) == yiwei(10,i))
	{
		//加
		if(Key_right == 0)
		{
			DelayMs(50);
			if(Key_right == 0)
			{
				FTMDuty_2 += 50;
				if(FTMDuty_2 >= 3000) FTMDuty_2 = 3000;
			}
		}
		//减
		if(Key_left == 0)
		{
			DelayMs(50);
			if(Key_left == 0)
			{
				FTMDuty_2 -= 50;
				if(FTMDuty_2 <= 0) FTMDuty_2 = 0;
			}
		}
	}
	
	//SD
	if(yiwei(i,i) == yiwei(12,i))
	{
		if(Key_right == 0)
		{
			DelayMs(50);
			if(Key_right == 0)
			{
				OLED_Clear();
				SD_D = 0;
				flag_sd_d = 1;
			}
		}
	}
	//打开ccd测试
	if(Key_2 == 0)
	{
		DelayMs(100);
		if(Key_2 == 0)
		{
			OLED_Clear();
			flag_test = 1;
			SD_X = 0;
			PIT_Start(PIT1);
			FTM_PWM_ChangeDuty(FTM0_CH3_PA6,FTMDuty_1);
		}
	}
	//发车
	if(Key_1 == 0)
	{
		DelayMs(50);
		if(Key_1 == 0)
		{
			OLED_Clear();
			flag_run = 1;
			PIT_Start(PIT1);
			FTM_PWM_ChangeDuty(FTM0_CH3_PA6,FTMDuty_1);
		}
	}
	
}
Esempio n. 6
0
File: main.c Progetto: oldjohnh/car
int main(void)
{

	SystemClockSetup(ClockSource_EX50M,CoreClock_100M);
	DelayInit();
	OLED_Init();
	Sd_Init();
	chuinit_Init();
	DataInit();
	Data_Uart_Init();
	
	while(1)
	{
		Menu_Init();
		//ccd测试
		while(Flag == 1)
		{
			if(TIME1flag_20ms == 1)
			{
				TIME1flag_20ms = 0;
				ImageCapture(P1);
//				Sd_X();
//				Sd_D();
//				UART_Send_Con();
				oled_collect();
				oled_show();
			}
			CCD_HeiXian();
			OLED_ZhongXian();
			OLED_Write_Num3(4,0,Center);
			OLED_Write_Num3(0,0,Left);
			OLED_Write_Num3(9,0,Right);
			OLED_Write_Num3(0,2,AverageValue);

			if(Key_1 == 0) //发车
			{
				DelayMs(100);
				if(Key_1 == 0)
				{
					OLED_Clear();
					Flag = 2;
					SD_X = 0;
					PIT_Start(PIT1);
				}
			}
			if(Key_down == 0) //菜单
			{
				DelayMs(100);
				if(Key_down == 0)
				{
					OLED_Clear();
					Flag = 0;
					PIT_Stop(PIT1);
					FTM_PWM_ChangeDuty(FTM1_CH0_PB0,0);
					FTM_PWM_ChangeDuty(FTM1_CH1_PB1,0);
				}
			}
			if(Key_up == 0) //SD 发车
			{
				DelayMs(100);
				if(Key_up == 0)
				{
					SD_Flag = !SD_Flag;
					if(SD_Flag) OLED_Write_String(2,2,"SD running");
					else 				OLED_Write_String(2,2,"SD stopping");
				}
			}
			if(Key_right == 0) //上位机
			{
				DelayMs(100);
				if(Key_right == 0)
				{
					while(1)
					{
						OLED_Clear();
						Sd_D();
						UART_Send_Con();
					}
				}
			}
		}
		
	//发车
		while(Flag == 2)
		{
			if(TIME1flag_20ms == 1)
			{
				TIME1flag_20ms = 0;
				ImageCapture(P1);
				Sd_X();
			}
			CCD_HeiXian();
			if(leixin == 0)
			{
				if (jiasuflag <= jiasu_Num) FTM_PWM_ChangeDuty(FTM1_CH0_PB0,5000);
				else 								 				FTM_PWM_ChangeDuty(FTM1_CH0_PB0,FTMDuty_1);
			}
			if(leixin == 1) 
			{
				if (jiansuflag <= jiansu_Num)
				{
					FTM_PWM_ChangeDuty(FTM1_CH0_PB0,0);
					FTM_PWM_ChangeDuty(FTM1_CH1_PB1,100);
				}
//				else if(zhidaoflag_save < 200 && jiansuflag <= a6)
//				{
//					FTM_PWM_ChangeDuty(FTM1_CH0_PB0,0);
//				}
				else FTM_PWM_ChangeDuty(FTM1_CH0_PB0,FTMDuty_2);
			}
			if(Key_down == 0) //菜单
			{
				DelayMs(100);
				if(Key_down == 0)
				{
					OLED_Clear();
					Flag = 0;
					PIT_Stop(PIT1);
					FTM_PWM_ChangeDuty(FTM1_CH0_PB0,0);
					FTM_PWM_ChangeDuty(FTM1_CH1_PB1,0);
				}
			}
		}
	}
}
Esempio n. 7
0
void OLED_Write_Float(unsigned char x,unsigned char y,float Number)
{
  signed char Temp_Buf[17];
  (void)Float_To_String(Number,Temp_Buf);
  OLED_Write_String(x,y,Temp_Buf);   
}
Esempio n. 8
0
void OLED_Write_Int(unsigned char x,unsigned char y,signed int Number)
{
  signed char Temp_Buf[17];
  (void)Int_To_String(Number,Temp_Buf);
  OLED_Write_String(x,y,Temp_Buf);   
}