#include "main.h" void LCD_16T202DA1EA_Init(void){ HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12, GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOD, GPIO_PIN_10, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOD, GPIO_PIN_10, GPIO_PIN_SET); } typedef struct{ uint16_t RW_PIN; uint16_t RS; uint16_t E; uint16_t Reset; uint16_t DB0; uint16_t DB1; uint16_t DB2; uint16_t DB3; uint16_t DB4; uint16_t DB5; uint16_t DB6; uint16_t DB7; GPIO_TypeDef * RW_PIN_Port; GPIO_TypeDef * RS_Port; GPIO_TypeDef * E_Port; GPIO_TypeDef * DB0_Port; GPIO_TypeDef * DB1_Port; GPIO_TypeDef * DB2_Port; GPIO_TypeDef * DB3_Port; GPIO_TypeDef * DB4_Port; GPIO_TypeDef * DB5_Port; GPIO_TypeDef * DB6_Port; GPIO_TypeDef * DB7_Port; }lcd_Pin_st; void LCD_M68_DataWrite_COMMAND_Init(void){ LCD_M68_DataWrite_COMMAND2(Line_default,Instruction_CMD,0x0F); } void LCD_M68_DataWrite_Clear(void){ LCD_M68_DataWrite_COMMAND2(Line_default,Instruction_CMD,0x01); } void LCD_M68_DataWrite_LineChage(LCD_line_t line){ if(line == First_Line) LCD_M68_DataWrite_COMMAND2(Line_default,Instruction_CMD,0x80); else LCD_M68_DataWrite_COMMAND2(Line_default,Instruction_CMD,0xC0); } uint8_t LCD_Str_Filter(uint8_t* str){ uint8_t len = 0; uint8_t temp_str[32] = {0,}; while (str[len] != NULL) // 자른 문자열이 나오지 않을 때까지 반복 { len++; } // printf("data Lenth = %d \r\n",len); return len; } void LCD_M68_DataWrite_COMMAND(LCD_line_t line,uint8_t cmd,uint8_t* data){ uint8_t len = 0; lcd_Pin_st lcdset; uint16_t temp_Pinbuf[8]={0,}; GPIO_TypeDef* temp_Portbuf[8]={0,}; lcdset.RW_PIN = GPIO_PIN_12;//pd lcdset.RS = GPIO_PIN_11;//pd lcdset.E = GPIO_PIN_13;//pd lcdset.DB0 = GPIO_PIN_14;//pd lcdset.DB1 = GPIO_PIN_15;//pd lcdset.DB2 = GPIO_PIN_2;//pg lcdset.DB3 = GPIO_PIN_3;//pg lcdset.DB5 = GPIO_PIN_4;//pg lcdset.DB4 = GPIO_PIN_5;//pg lcdset.DB6 = GPIO_PIN_6;//pg lcdset.DB7 = GPIO_PIN_7;//pg len = LCD_Str_Filter(&data[0]); for(uint8_t i = 0; i < len; i++){ if(line != Line_default) LCD_M68_DataWrite_LineChage(line); // Line feed if(line == Second_Line) line = Line_default; HAL_GPIO_WritePin(GPIOD, lcdset.E|lcdset.RS|lcdset.RW_PIN|lcdset.DB0|lcdset.DB1 , GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOG, lcdset.DB2|lcdset.DB3|lcdset.DB4|lcdset.DB5|lcdset.DB6|lcdset.DB7, GPIO_PIN_RESET); //PIN Init if(cmd == Instruction_CMD){ HAL_GPIO_WritePin(GPIOD, lcdset.RS , GPIO_PIN_RESET); // Init Instruction CMD }else{ HAL_GPIO_WritePin(GPIOD, lcdset.RS , GPIO_PIN_SET); //Init Data CMD } memcpy(&temp_Pinbuf[0] ,&lcdset.DB0 ,8); memcpy(&temp_Portbuf[0],&lcdset.DB0_Port,8); HAL_GPIO_WritePin(GPIOD, lcdset.E , GPIO_PIN_SET); if(data[i] & 0x01) HAL_GPIO_WritePin(GPIOD, lcdset.DB0, GPIO_PIN_SET); else HAL_GPIO_WritePin(GPIOD, lcdset.DB0, GPIO_PIN_RESET); if(data[i] & 0x02) HAL_GPIO_WritePin(GPIOD, lcdset.DB1, GPIO_PIN_SET); else HAL_GPIO_WritePin(GPIOD, lcdset.DB1, GPIO_PIN_RESET); if(data[i] & 0x04) HAL_GPIO_WritePin(GPIOG, lcdset.DB2, GPIO_PIN_SET); else HAL_GPIO_WritePin(GPIOG, lcdset.DB2, GPIO_PIN_RESET); if(data[i] & 0x08) HAL_GPIO_WritePin(GPIOG, lcdset.DB3, GPIO_PIN_SET); else HAL_GPIO_WritePin(GPIOG, lcdset.DB3, GPIO_PIN_RESET); if(data[i] & 0x10) HAL_GPIO_WritePin(GPIOG, lcdset.DB4, GPIO_PIN_SET); else HAL_GPIO_WritePin(GPIOG, lcdset.DB4, GPIO_PIN_RESET); if(data[i] & 0x20) HAL_GPIO_WritePin(GPIOG, lcdset.DB5, GPIO_PIN_SET); else HAL_GPIO_WritePin(GPIOG, lcdset.DB5, GPIO_PIN_RESET); if(data[i] & 0x40) HAL_GPIO_WritePin(GPIOG, lcdset.DB6, GPIO_PIN_SET); else HAL_GPIO_WritePin(GPIOG, lcdset.DB6, GPIO_PIN_RESET); if(data[i] & 0x80) HAL_GPIO_WritePin(GPIOG, lcdset.DB7, GPIO_PIN_SET); else HAL_GPIO_WritePin(GPIOG, lcdset.DB7, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOD, lcdset.E , GPIO_PIN_RESET); //Init E Line if(cmd == Instruction_CMD){ HAL_GPIO_WritePin(GPIOD, lcdset.RS , GPIO_PIN_SET); //Init Data CMD }else{ HAL_GPIO_WritePin(GPIOD, lcdset.RS , GPIO_PIN_RESET); // Init Instruction CMD } } } void LCD_M68_DataWrite_COMMAND2(LCD_line_t line,uint8_t cmd,uint8_t data){ uint8_t len = 0; lcd_Pin_st lcdset; uint16_t temp_Pinbuf[8]={0,}; GPIO_TypeDef* temp_Portbuf[8]={0,}; lcdset.RW_PIN = GPIO_PIN_12;//pd lcdset.RS = GPIO_PIN_11;//pd lcdset.E = GPIO_PIN_13;//pd lcdset.DB0 = GPIO_PIN_14;//pd lcdset.DB1 = GPIO_PIN_15;//pd lcdset.DB2 = GPIO_PIN_2;//pg lcdset.DB3 = GPIO_PIN_3;//pg lcdset.DB5 = GPIO_PIN_4;//pg lcdset.DB4 = GPIO_PIN_5;//pg lcdset.DB6 = GPIO_PIN_6;//pg lcdset.DB7 = GPIO_PIN_7;//pg len = LCD_Str_Filter(&data); if(line != Line_default) LCD_M68_DataWrite_LineChage(line); // Line feed HAL_GPIO_WritePin(GPIOD, lcdset.E|lcdset.RS|lcdset.RW_PIN|lcdset.DB0|lcdset.DB1 , GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOG, lcdset.DB2|lcdset.DB3|lcdset.DB4|lcdset.DB5|lcdset.DB6|lcdset.DB7, GPIO_PIN_RESET); //PIN Init if(cmd == Instruction_CMD){ HAL_GPIO_WritePin(GPIOD, lcdset.RS , GPIO_PIN_RESET); // Init Instruction CMD }else{ HAL_GPIO_WritePin(GPIOD, lcdset.RS , GPIO_PIN_SET); //Init Data CMD } memcpy(&temp_Pinbuf[0] ,&lcdset.DB0 ,8); memcpy(&temp_Portbuf[0],&lcdset.DB0_Port,8); HAL_GPIO_WritePin(GPIOD, lcdset.E , GPIO_PIN_SET); if(data & 0x01) HAL_GPIO_WritePin(GPIOD, lcdset.DB0, GPIO_PIN_SET); else HAL_GPIO_WritePin(GPIOD, lcdset.DB0, GPIO_PIN_RESET); if(data & 0x02) HAL_GPIO_WritePin(GPIOD, lcdset.DB1, GPIO_PIN_SET); else HAL_GPIO_WritePin(GPIOD, lcdset.DB1, GPIO_PIN_RESET); if(data & 0x04) HAL_GPIO_WritePin(GPIOG, lcdset.DB2, GPIO_PIN_SET); else HAL_GPIO_WritePin(GPIOG, lcdset.DB2, GPIO_PIN_RESET); if(data & 0x08) HAL_GPIO_WritePin(GPIOG, lcdset.DB3, GPIO_PIN_SET); else HAL_GPIO_WritePin(GPIOG, lcdset.DB3, GPIO_PIN_RESET); if(data & 0x10) HAL_GPIO_WritePin(GPIOG, lcdset.DB4, GPIO_PIN_SET); else HAL_GPIO_WritePin(GPIOG, lcdset.DB4, GPIO_PIN_RESET); if(data & 0x20) HAL_GPIO_WritePin(GPIOG, lcdset.DB5, GPIO_PIN_SET); else HAL_GPIO_WritePin(GPIOG, lcdset.DB5, GPIO_PIN_RESET); if(data & 0x40) HAL_GPIO_WritePin(GPIOG, lcdset.DB6, GPIO_PIN_SET); else HAL_GPIO_WritePin(GPIOG, lcdset.DB6, GPIO_PIN_RESET); if(data & 0x80) HAL_GPIO_WritePin(GPIOG, lcdset.DB7, GPIO_PIN_SET); else HAL_GPIO_WritePin(GPIOG, lcdset.DB7, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOD, lcdset.E , GPIO_PIN_RESET); //Init E Line if(cmd == Instruction_CMD){ HAL_GPIO_WritePin(GPIOD, lcdset.RS , GPIO_PIN_SET); //Init Data CMD }else{ HAL_GPIO_WritePin(GPIOD, lcdset.RS , GPIO_PIN_RESET); // Init Instruction CMD } } Layer_t Curr_Layer =Menu_Layer; void Layer_Set(Layer_t layer){ Curr_Layer = layer; } Layer_t Layer_Get(void){ return Curr_Layer; } Layer_t prev_layer = 0xff; void Character_Lcd_chMenu(AttenButton_t button){ static uint8_t initialize = 0; static uint8_t temp_button = 0xFF; Layer_t temp_Layer = Layer_Get(); if(initialize == 0){ switch(button){ case Power_On : LCD_M68_DataWrite_Clear(); LCD_M68_DataWrite_COMMAND(Line_default,Data_CMD,"Channel Setting"); LCD_M68_DataWrite_COMMAND(Second_Line,Data_CMD,"press any Button"); break; default: Lcd_AchSetting_Display(); initialize = 1; break; } }else{ if(button == Button_MENU || button == Button_ESC){ Lcd_AchSetting_Display(); }else{ switch(temp_Layer){ case AChSetting_Layer: if(button == Button_DOWN){ Lcd_BchSetting_Display(); } else if(button == Button_ENTER){ Lcd_Ach150M_Display(); } break; case BChSetting_Layer: if(button == Button_UP){ Lcd_AchSetting_Display(); } else if(button == Button_ENTER){ Lcd_Bch150M_Display(); } break; case AChSetting_150MLayer: if(button == Button_DOWN){ Lcd_AchWifi_Display(); }else if(button == Button_ENTER){ } break; case AChSetting_WIFIMLayer: if(button == Button_DOWN){ Lcd_Ach30G_Display(); } else if(button == Button_UP){ } break; case AChSetting_30GMLayer: if(button == Button_UP){ Lcd_AchWifi_Display(); } break; case BChSetting_150MLayer: if(button == Button_DOWN){ } break; case BChSetting_WIFIMLayer: if(button == Button_DOWN){ } break; case BChSetting_30GMLayer: if(button == Button_UP){ } break; } } } } void Lcd_AchSetting_Display(void) { LCD_M68_DataWrite_Clear(); Layer_Set(AChSetting_Layer); LCD_M68_DataWrite_COMMAND(Line_default,Data_CMD," A Channel "); LCD_M68_DataWrite_COMMAND2(Line_default,Data_CMD,0x10); LCD_M68_DataWrite_COMMAND(Second_Line,Data_CMD," Setting"); } void Lcd_Ach150M_Display(void){ LCD_M68_DataWrite_Clear(); LCD_M68_DataWrite_COMMAND(Line_default,Data_CMD,"A Ch 150MHz"); LCD_M68_DataWrite_COMMAND2(Line_default,Data_CMD,0x10); LCD_M68_DataWrite_COMMAND(Second_Line,Data_CMD," 00.0 dB"); Layer_Set(AChSetting_150MLayer); } void Lcd_AchWifi_Display(void){ LCD_M68_DataWrite_Clear(); LCD_M68_DataWrite_COMMAND2(Line_default,Data_CMD,0x11); LCD_M68_DataWrite_COMMAND(Line_default,Data_CMD," A Ch WIFI "); LCD_M68_DataWrite_COMMAND2(Line_default,Data_CMD,0x10); LCD_M68_DataWrite_COMMAND(Second_Line,Data_CMD," 00.0 dB"); Layer_Set(AChSetting_WIFIMLayer); } void Lcd_Ach30G_Display(void){ LCD_M68_DataWrite_Clear(); LCD_M68_DataWrite_COMMAND2(Line_default,Data_CMD,0x11); LCD_M68_DataWrite_COMMAND(Line_default,Data_CMD," A Ch 30G"); LCD_M68_DataWrite_COMMAND(Second_Line,Data_CMD," 00.0 dB"); Layer_Set(AChSetting_WIFIMLayer); } void Lcd_BchSetting_Display(void) { LCD_M68_DataWrite_Clear(); LCD_M68_DataWrite_COMMAND2(Line_default,Data_CMD,0x11); LCD_M68_DataWrite_COMMAND(Line_default,Data_CMD," B Channel"); LCD_M68_DataWrite_COMMAND(Second_Line,Data_CMD," Setting"); Layer_Set(BChSetting_Layer); } void Lcd_Bch150M_Display(void) { LCD_M68_DataWrite_Clear(); LCD_M68_DataWrite_COMMAND(Line_default,Data_CMD,"B Ch 150MHz"); LCD_M68_DataWrite_COMMAND2(Line_default,Data_CMD,0x10); LCD_M68_DataWrite_COMMAND(Second_Line,Data_CMD," 00.0 dB"); Layer_Set(BChSetting_150MLayer); } void Lcd_BchWifi_Display(void) { LCD_M68_DataWrite_Clear(); LCD_M68_DataWrite_COMMAND2(Line_default,Data_CMD,0x11); LCD_M68_DataWrite_COMMAND(Line_default,Data_CMD," B Ch WIFI"); LCD_M68_DataWrite_COMMAND2(Line_default,Data_CMD,0x10); LCD_M68_DataWrite_COMMAND(Second_Line,Data_CMD," 00.0 dB"); Layer_Set(BChSetting_WIFIMLayer); } void Lcd_Bch30G_Display(void) { LCD_M68_DataWrite_Clear(); LCD_M68_DataWrite_COMMAND2(Line_default,Data_CMD,0x11); LCD_M68_DataWrite_COMMAND(Line_default,Data_CMD," B Ch 30G"); LCD_M68_DataWrite_COMMAND(Second_Line,Data_CMD," 00.0 dB"); Layer_Set(BChSetting_WIFIMLayer); }