void Oled_Displayinit() { OLED_Fill(0); OLED_ShowStr(16,0,"Select mode",2); OLED_ShowStr(0,2," Fixed line ",2); OLED_ShowStr(0,7,"OK NEST",1); }
void mode3_Display(u8 angle) { OLED_ShowStr(0,4," ",2); OLED_ShowStr(0,4,"angle: du",2); OLED_ShowNum(angle); }
int main() { UART_InitTypeDef UART_InitStructure; SystemInit(); /* Configure UART2 */ S_UART_Init(115200); conf.scl = I2C_PA_9; conf.sda = I2C_PA_10; I2C_Init(&conf); OLED_Init(); OLED_Fill(0xFF); delay_ms(20); OLED_Fill(0x00); delay_ms(10); OLED_ShowStr(0,3,"Welcome to",1); OLED_ShowStr(0,4,"WIznet ^^",2); }
void OLED_ShowNum(u8 num) { u8 data[3]={48,48,48},i; for(i=0;num;i++) { data[2-i]=num%10+0x30; num/=10; } for(;i!=3;i++) { data[2-i]=0x20; } if(data[2]==0x20)data[2]=0x30; OLED_ShowStr(60, 4, data, 2); }
void Oled_Display() { switch(mode) { case 0:OLED_ShowStr(0,2," Fixed line ",2);break; //第一步任务:不短于50cm直线段 case 1:OLED_ShowStr(0,2," change Length ",2);break; //第二部任务:固定方向30-60cm直线 case 2:OLED_ShowStr(0,2,"change direction",2);break; //第三部任务:任意方向,大于20cm直线 case 3:OLED_ShowStr(0,2," Standstill ",2);break; //第四步任务:拉起角度,可以达到静止 case 4:OLED_ShowStr(0,2," Draw a circle ",2);break; //第五步任务: 重复三次可设置半径15-35的圆环内 case 5:OLED_ShowStr(0,2," Draw a circle2",2);break; // case 6:OLED_ShowStr(0,2," Other ",2);break; } }
void clear() { OLED_ShowStr(0,4," ",2); }
void mode5_Display(u8 r) { OLED_ShowStr(0,4," cm",2); OLED_ShowStr(0,4,"R:",2); OLED_ShowNum(r); }
void mode2_Display(u8 lenth) { OLED_ShowStr(0,4," ",2); OLED_ShowStr(0,4,"lenth: cm",2); OLED_ShowNum(lenth); }
void fct_stc_opt(void) { int i = 0; switch(function) { case 0: //off { OLED_OFF(); for (i = 1; i > 0; i--) { P4OUT |= BIT7; Delay_ms(50); P4OUT &= ~BIT7; Delay_ms(50); } } break; case 1: { switch(mode) { case 0: { // mode = 1; OLED_ON(); OLED_Clear(0x00); OLED_ShowStr(0,0,"Current_bt",11,1); //6*8 } break; case 1: { // function = 2; OLED_ON(); OLED_Clear(0x00); OLED_ShowStr(0,0,"Current_Pot",11,1); //6*8 } break; } } break; case 2: //R_test { // function = 1; // mode = 0; OLED_ON(); OLED_Clear(0x00); OLED_ShowStr(0,0,"R_test",11,1); //6*8 } break; case 3: //sleep { OLED_OFF(); for (i = 3; i > 0; i--) { P4OUT |= BIT7; Delay_ms(50); P4OUT &= ~BIT7; Delay_ms(50); } } break; } fct_stc_flag = 0; }
int main(void) { // double Datav=123.4; str = a; int i; // char *str_1 = "abc" ; WDTCTL = WDTPW + WDTHOLD; // Stop WDT //Timer0 TA0CCTL0 = CCIE; // CCR0 interrupt enabled TA0CCR0 = 5000; TA0CTL = TASSEL_2 + MC_1 + TACLR; // SMCLK, upmode, clear TAR //GPIO P4DIR |= BIT7; // Set P4.7 to output direction P1DIR |= BIT0; // Set P1.0 to output direction P1DIR |= 0x3C; P3DIR |= BIT5+BIT6; P1OUT |= BIT5+BIT4; //buttom P2REN |= BIT1; P2OUT |= BIT1; P2IES |= BIT1; P2IFG &= ~BIT1; P2IE |= BIT1; P1REN |= BIT1; P1OUT |= BIT1; P1IES |= BIT1; P1IFG &= ~BIT1; P1IE |= BIT1; //IIC OLED_Init(); OLED_ShowStr(0,2,"Please Set:",99,2); // Delay_ms(100); // OLED_Clear(0x00); //end of IIC DMAInit(); ADCInit(); //启动需要在增加 enable //UART UART_Init(UARTA0); //bluetooth UART_Init(UARTB0); //SPI UCA0IE |= UCRXIE; // Enable USCI_A0 RX interrupt // UCB0IE |= UCRXIE; // Enable USCI_B0 RX interrupt //SPI P2OUT |= BIT5; // reset slave P2OUT &= ~BIT5; // Now with SPI signals initialized, for(i=50;i>0;i--); // Wait for slave to initialize MST_Data = 0x8FFF; // Initialize data values SLV_Data = 0x00; // while (!(UCB0IFG&UCTXIFG)); // USCI_B0 TX buffer ready? //end of SPI __bis_SR_register(LPM3_bits + GIE); // Enter LPM0, enable interrupts while(1) { // OLED_ShowStr(12,2,(unsigned char *)F2S(Datav,tstr),6,1); //6*8 // UartTX_Send("Done!\r\n",7); if(buttom_fct_flag != 0) { buttom_fct_stc_opt(); buttom_fct_flag = 0; } if(buttom_fct_flags != 0) { buttom_fct_stcs_opt(); buttom_fct_flags = 0; } // OLED_ShowStr(0,0,(unsigned char *)F2S(DMA_A1,tstr),8,1); //6*8 if(fct_stc_flag != 0) { fct_stc_flag = 0; fct_stc_opt(); } if(function!=0) // not off { ADC12CTL0 |= ADC12SC; // Start sampling/conversion } switch(function) { case 0: { // OLED_OFF(); __bis_SR_register(LPM3_bits + GIE); // Enter LPM3, interrupts enabled; } break; case 1: { if(mode == 0) { if(set_ack_flag == 1) { // OLED_ON(); // OLED_Clear(0x00); set_ack_flag = 0; MST_Data = (u16)(Datavin); MST_Data |= 0x8000; SPISend(MST_Data); OLED_ShowStr(0,1,"I:",2,1); //6*8 OLED_ShowStr(16,1,(unsigned char *)F2S(Datai,tstr),8,1); //6*8 OLED_ShowStr(0,2,"stalls:",7,1); //6*8 OLED_ShowStr(42,2,(unsigned char *)I2S(stalls,tstr),6,1); //6*8 } } else // current_pot { Datavin = (double)DMA_A1*4/3.3; MST_Data = (u16)(Datavin*4095/4); MST_Data |= 0x8000; SPISend(MST_Data); I_out = (double)DMA_A2*3.3/4095*10; OLED_ShowStr(0,2,"stalls:",7,1); //6*8 OLED_ShowStr(42,2,(unsigned char *)I2S(stalls,tstr),6,1); //6*8 // OLED_ShowStr(0,2,"I_out:",6,1); //6*8 // OLED_ShowStr(36,2,(unsigned char *)F2S(I_out,tstr),6,1); //6*8 if(!((Pre_A3 - ADC12MEM3)<40 | (ADC12MEM3 - Pre_A3)<40)) { OLED_ShowStr(24,6,(unsigned char *)F2S(ADC12MEM3,tstr),4,1); //6*8 } Pre_A3 = ADC12MEM3; } } break; case 2: { if(set_ack_flag == 1) { OLED_ON(); set_ack_flag = 0; } } break; case 3: //off { // OLED_OFF(); //shutdown the circuit __bis_SR_register(LPM3_bits + GIE); // Enter LPM3, interrupts enabled; } break; }//end of function switch; OLED_ShowStr(0,4,(unsigned char *)F2S(DMA_A0,tstr),4,1); //6*8 OLED_ShowStr(0,5,(unsigned char *)F2S(DMA_A1,tstr),4,1); //6*8 OLED_ShowStr(0,6,(unsigned char *)F2S(DMA_A2,tstr),4,1); //6*8 OLED_ShowStr(0,7,(unsigned char *)F2S(ADC12MEM3,tstr),4,1); //6*8 // Delay_ms(200); // if(strcmp(str_1,str)==0) // { // P1OUT |= BIT0; // UartTX_Send("Great!\r\n",8); // Delay_ms(200); // } // else P1OUT &= ~BIT0; } //end of while }