void InitialzeLCD(void){ sbi(DDR(LCD_BACKLIGHT_PORT),LCD_BACKLIGHT_PIN); //setting the LCD backlight pin and port sbi(LCD_BACKLIGHT_PORT,LCD_BACKLIGHT_PIN); glcd_init(); // initializes the LCD glcd_set_contrast(50); // sets constrast to default value glcd_clear(); // clears screen and buffer }
void glcd_init(void) { #if defined(GLCD_CONTROLLER_PCD8544) /* Initialisation for PCD8544 controller */ /* Declare GPIO and SPI init structures */ GPIO_InitTypeDef GPIO_InitStructure; SPI_InitTypeDef SPI_InitStructure; //NVIC_InitTypeDef NVIC_InitStructure; /* Initialise structures (which we will overide later) */ GPIO_StructInit(&GPIO_InitStructure); SPI_StructInit(&SPI_InitStructure); /* Need to make start up the correct peripheral clocks */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE); /* SS pin */ GPIO_InitStructure.GPIO_Pin = CONTROLLER_SPI_SS_PIN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_Level_3; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_Init(CONTROLLER_SPI_SS_PORT, &GPIO_InitStructure); /* DC pin */ GPIO_InitStructure.GPIO_Pin = CONTROLLER_SPI_DC_PIN; GPIO_Init(CONTROLLER_SPI_DC_PORT, &GPIO_InitStructure); /* RESET pin */ GPIO_InitStructure.GPIO_Pin = CONTROLLER_SPI_RST_PIN; GPIO_Init(CONTROLLER_SPI_RST_PORT, &GPIO_InitStructure); /* Make sure chip is de-selected by default */ GLCD_DESELECT(); /* Set up GPIO for SPI pins */ GPIO_InitStructure.GPIO_Pin = CONTROLLER_SPI_SCK_PIN | CONTROLLER_SPI_MISO_PIN | CONTROLLER_SPI_MOSI_PIN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_Level_3; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_Init(CONTROLLER_SPI_PORT, &GPIO_InitStructure); /* Configure alternate function mode for SPI pins */ GPIO_PinAFConfig(GPIOA,CONTROLLER_SPI_SCK_PINSRC,GPIO_AF_0); GPIO_PinAFConfig(GPIOA,CONTROLLER_SPI_MOSI_PINSRC,GPIO_AF_0); GPIO_PinAFConfig(GPIOA,CONTROLLER_SPI_MISO_PINSRC,GPIO_AF_0); /* Initialise SPI */ SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; SPI_InitStructure.SPI_Mode = SPI_Mode_Master; SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_32; /* Set clock speed! */ SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; SPI_InitStructure.SPI_CRCPolynomial = 7; SPI_Init(CONTROLLER_SPI_NUMBER, &SPI_InitStructure); /* Enable SPI interupts */ /* SPI_I2S_ITConfig(CONTROLLER_SPI_NUMBER, SPI_I2S_IT_TXE, ENABLE); NVIC_InitStructure.NVIC_IRQChannel = SPI1_IRQn; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_InitStructure.NVIC_IRQChannelPriority = 0x00; NVIC_Init(&NVIC_InitStructure); */ /* Enable SPI */ SPI_Cmd(CONTROLLER_SPI_NUMBER, ENABLE); /* Initialisation sequence of controller */ glcd_reset(); /* Get into the EXTENDED mode! */ glcd_command(PCD8544_FUNCTION_SET | PCD8544_EXTENDED_INSTRUCTION); /* LCD bias select (4 is optimal?) */ glcd_command(PCD8544_SET_BIAS | 0x2); /* Set VOP */ glcd_command(PCD8544_SET_VOP | 50); // Experimentally determined /* Back to standard instructions */ glcd_command(PCD8544_FUNCTION_SET); /* Normal mode */ glcd_command(PCD8544_DISPLAY_CONTROL | PCD8544_DISPLAY_NORMAL); glcd_select_screen((uint8_t *)&glcd_buffer,&glcd_bbox); glcd_set_contrast(50); glcd_clear(); #else #error "Controller not supported by STM32F0xx" #endif }
void initHardware() { Switch_Backlight_StartEx(Switch_Backlight_Custom); CyGlobalIntEnable; glcd_init(); glcd_set_contrast(72); }