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); } }
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); } }
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; }
/***********功能描述:显示一行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); }
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)); } } } }
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]); }