예제 #1
0
int main()
{
    unsigned char i=0;

    HalLcd_HW_Init();                //oled 初始化
    LCD_Fill(0xff);                  //屏全亮

    while(1)
    {
        for(i=0; i<8; i++)
        {
            LCD_P16x16Ch(i*16,0,i);  //点阵显示
            LCD_P16x16Ch(i*16,2,i+8);
            LCD_P16x16Ch(i*16,4,i+16);
            LCD_P16x16Ch(i*16,6,i+24);
        }
        HalHW_WaitMS(1000);
        LCD_CLS();
        LCD_P8x16Str(44,0,"saler");
        LCD_P8x16Str(20,2,"OLED DISPLAY");

        LCD_P8x16Str(8,4,"TEL:18588220515");
        LCD_P6x8Str(20,6,"*****@*****.**");
        LCD_P6x8Str(20,7,"2013-10-6 18:18");
        HalHW_WaitMS(1000);

        //LCD_CLS();
        //Draw_BMP(0,0,128,8,BMP);     //图片显示
        //DelayMS(1000);
    }
}
예제 #2
0
파일: main.c 프로젝트: Needrom/Freescale
void TEST_display()
{
	TEST_mode();
             if(MODE)
             {
//				printf("ldc0_val");
//				printf("%d   \t",(int)LDC_SPI0_val);
//				printf("ldc1_val");
//				printf("%d   \t",(int)LDC_SPI1_val);
//				printf("%d\r\n",(int)LDC_result);
                                LCD_P6x8Str(0,4,"ldc0_val:");
                                LCD_BL(55,4,(uint16)LDC_SPI0_val);
                                LCD_P6x8Str(0,6,"ldc1_val:");
                                LCD_BL(55,6,(uint16)LDC_SPI1_val);
                                
                                LCD_BL(90,4,(uint16)adjustment[1]);
                                LCD_BL(90,6,(uint16)adjustment[2]);
                                LCD_BL(70,2,(uint16)(divisor*100));
             }
             else
             {
                 FLOAT_SPI_Read_Buf(LDC1000_CMD_REVID,&orgVal[0],12,SPI0);//orgVal[]对应上面写入的值说明初始化正常
               
                 for(int i=0;i<3;i++)
                {
                  printf("%c0",orgVal[i]);
                  LCD_BL(0+(i*10),8,(uint16)orgVal[i]);
                }
                RPMIN_tmp_SPI0 = orgVal[2];
                systick_delay_ms(150);
                
                FLOAT_SPI_Read_Buf(LDC1000_CMD_REVID,&orgVal[0],12,SPI1);//orgVal[]对应上面写入的值说明初始化正常
               
                 for(int i=0;i<3;i++)
                {
                  printf("%c1",orgVal[i]);
                  LCD_BL(0+(i*10),9,(uint16)orgVal[i]);
                  Motor_stop();
                }
                systick_delay_ms(150);
             }
}
예제 #3
0
파일: main.c 프로젝트: Needrom/Freescale
void Out_side_collect()
{
    int count = 50;
    LCD_P6x8Str(0,6,"out side");
       while(count--)
       {
        ldc0_side=(float)filter(SPI0)/10;//左
        ldc1_side=(float)filter(SPI1)/10;//右
        LCD_BL(55,6,(uint16)ldc0_side);
        LCD_BL(90,6,(uint16)ldc1_side);
        
        if(flag) ldc1_side += adjustment[0];
        else ldc0_side += adjustment[0];
       }
       
       ldc1_side  += 50;
       ldc0_side  += 50;
}
예제 #4
0
/***********功能描述:显示一行ascii 码?无显示的点阵显示黑色,     y为页的范围0~7*****************/
void HalLcd_HW_WriteLine(unsigned char line, const char *pText)
{
    LCD_FillLine(line-1, 0);                            //先把这一行显示成黑色
    LCD_P6x8Str(0, line-1, (unsigned char *)pText);
}
예제 #5
0
파일: main.c 프로젝트: Needrom/Freescale
  void main(void)
{
	int i1=0;
	int count10S = 0;
	Device_init();
        disable_irq(PIT0_IRQn);
        systick_delay_ms(50);
        FLOAT_LDC_init(SPI1);
        systick_delay_ms(50);
        FLOAT_LDC_init(SPI0);
        systick_delay_ms(1000);
        uart_init(UART3,115200);
        key_init(0);
        key_init(1);
        key_init(2);
        //LDC_EVM_TEST();
        
        //Speed_Ctl_Init(short point_value, double dKpp, double dKii, double dKdd);
        
      while(1)
      {
        //value_collect();
    
       LCD_P6x8Str(0,2,"Rmax Lmin");
        printf("Rmax Rmin\r\n");
        systick_delay_ms(1500);
        i1=50;
        
        while(i1--)
       {
           adjustment[2]=(float)filter(SPI1)/10;//右max
           LCD_BL(55,2,(uint16)adjustment[2]);
           printf("%d\r\n",adjustment[2]);
       }
        
       i1=50;
       while(i1--)
       {
          adjustment[1]=(float)filter(SPI0)/10;//左min
          LCD_BL(90,2,(uint16)adjustment[1]);
          printf("%d\r\n",adjustment[1]);
       }
       
       LCD_BL(55,2,(uint16)adjustment[1]);
       LCD_BL(90,2,(uint16)adjustment[2]);      
        
        
    
       LCD_P6x8Str(0,4,"Lmax Rmin");
       printf("Lmax Rmin\r\n");
       systick_delay_ms(1500);
       i1=50;
       while(i1--)
       {
       adjustment[3]=(float)filter(SPI1)/10;//右min
       LCD_BL(55,4,(uint16)adjustment[3]);
       printf("%d\r\n",adjustment[3]);
       }
        
       i1=50;
       while(i1--)
       {
        adjustment[4]=(float)filter(SPI0)/10;//左max
        LCD_BL(90,4,(uint16)adjustment[4]);
        printf("%d\r\n",adjustment[4]);
       }
       
       LCD_BL(55,4,(uint16)adjustment[4]);
       LCD_BL(90,4,(uint16)adjustment[3]);
       
       if(adjustment[1]<=adjustment[3])
         adjustment[5]=adjustment[1];//次小值
       else
         adjustment[5]=adjustment[3];//次小值
       
       if(adjustment[2]>=adjustment[4])
         adjustment[6]=adjustment[2];//次大值
       else
         adjustment[6]=adjustment[4];//次大值
       
       divisor = (adjustment[2] - adjustment[3])/60;                              //48 //50
       divisor2 = (adjustment[4] - adjustment[1])/59;                             //48 //45
       
       zengfuzhi =  (adjustment[2] - adjustment[3])/(adjustment[4] - adjustment[1]);
//       for(int i=0;i<10;i++)
//       {
//         printf("%d\r\n",adjustment[i]);
//       }
//       systick_delay_ms(1000);
       
       
          
       LCD_P6x8Str(0,6,"Mid value");
        i1 = 50;
       systick_delay_ms(1500);
       while(i1--)
       {
        adjustment[7]=(float)filter(SPI0)/10;//左
        adjustment[8]=(float)filter(SPI1)/10;//右
        LCD_BL(55,6,(uint16)adjustment[7]);
        LCD_BL(90,6,(uint16)adjustment[8]);
       }
            if(adjustment[7]>=adjustment[8])
       { flag=1;
       adjustment[0]=adjustment[7]-adjustment[8];
       }
       else
       {
         flag=0;
       adjustment[0]=adjustment[8]-adjustment[7]; 
       }
       
       LCD_Fill(0x00);
       
       Out_side_collect();
       
       LCD_Fill(0x00);
       
       adjustment_change();
       
       enable_irq(PIT0_IRQn);
          while(1)
          { 
                  
                  if(PIT_1sFlag == 1)
                  {
                        gpio_turn(PTD4);
                        PIT_1sFlag = 0;
                        count10S ++;
                  }
                  if(key_check(2) == 0)
                  {
                    LCD_Fill(0x00);
                    Motor_stop();
                    break;
                  }
                  else
                  {
                    if(PIT_5msFlag == 1)
                    {
                      LDC_get();
                      PIT_5msFlag = 0;
                      Steering_Change();
                    }
                    if(count10S > 10)
                    {  
                      if(gpio_get(PTC4) == 0)
                      {
                        while(1)
                        {
                          Motor_stop();
                          Steering_Change();
                        }
                      }
                    }
                    if(PIT_10msFlag == 1)
                    {
                      Quad_count();
                      now = (float)guad_val;
                      Motor_PID(now);
                      PIT_10msFlag = 0;
                      
                    }
                    if(PIT_20msFlag == 1)
                    {

                      PIT_20msFlag = 0;
                    }
                    if(PIT_50msFlag == 1)
                    {
                      
                      //Result_collect();
                      PIT_50msFlag = 0;
                    }
 
                    
                    //printf("guad_val:%d \r\n",(guad_val));
                    
                    //TEST_display();
                    speed_control();
                    
                    //key_choice();
                    uint16 i23 = gpio_get(PTC4); 
                    
                    //LCD_BL(50,2,(uint16)(i23));
                  }
          }
      }
}
예제 #6
0
파일: main.c 프로젝트: Needrom/Freescale
void value_collect()                                            //收集得出最大值放在0 和 1 位置
{
  int i=0;
  int i1 =0;
  float max,min;
  
  LCD_P6x8Str(0,2,"Rmax Lmin");
  LCD_P6x8Str(0,4,"Lmax Rmin");
  systick_delay_ms(1500);
  
  i = 0;
  
  while(i<100)
 {
    ldcValuetemp1[i]=(float)filter(SPI1)/10;
    LCD_BL(55,2,(uint16)ldcValuetemp1[i]);
    systick_delay_ms(30);
    ldcValuetemp0[i]=(float)filter(SPI0)/10;
    LCD_BL(90,2,(uint16)ldcValuetemp0[i]);
     i++;
 }
  

 
  i = 1;
  
  max = ldcValuetemp0[0];
  min = ldcValuetemp0[0];
  while(i<100)
  {
    if(max<ldcValuetemp0[i])
      max = ldcValuetemp0[i];
    if(min>ldcValuetemp0[i]);
      min = ldcValuetemp0[i];
    
    i++;
  }
  
  adjustment[4] = max;
  adjustment[1] = min;
  
  max = ldcValuetemp1[0];
  min = ldcValuetemp1[0];
  
  i = 1;
  while(i<100)
  {
    if(max<ldcValuetemp1[i])
      max = ldcValuetemp1[i];
    if(min>ldcValuetemp1[i]);
      min = ldcValuetemp1[i];
      
    i++;
  }
  
  adjustment[2] = max;
  adjustment[3] = min;
  
 LCD_BL(55,2,(uint16)adjustment[1]);
 LCD_BL(90,2,(uint16)adjustment[2]);
 LCD_BL(55,4,(uint16)adjustment[4]);
 LCD_BL(90,4,(uint16)adjustment[3]);
}