lcd.c
#include "lcd.h"
void LCD_GPIO_init(void)
{
GPIO_Init(LCD_PORT, LCD_RS, GPIO_MODE_OUT_PP_HIGH_FAST);
GPIO_Init(LCD_PORT, LCD_EN, GPIO_MODE_OUT_PP_HIGH_FAST);
GPIO_Init(LCD_PORT, LCD_DB4, GPIO_MODE_OUT_PP_HIGH_FAST);
GPIO_Init(LCD_PORT, LCD_DB5, GPIO_MODE_OUT_PP_HIGH_FAST);
GPIO_Init(LCD_PORT, LCD_DB6, GPIO_MODE_OUT_PP_HIGH_FAST);
GPIO_Init(LCD_PORT, LCD_DB7, GPIO_MODE_OUT_PP_HIGH_FAST);
delay_ms(10);
}
void LCD_init(void)
{
LCD_GPIO_init();
toggle_EN_pin();
GPIO_WriteLow(LCD_PORT, LCD_RS);
GPIO_WriteLow(LCD_PORT, LCD_DB7);
GPIO_WriteLow(LCD_PORT, LCD_DB6);
GPIO_WriteHigh(LCD_PORT, LCD_DB5);
GPIO_WriteHigh(LCD_PORT, LCD_DB4);
toggle_EN_pin();
GPIO_WriteLow(LCD_PORT, LCD_DB7);
GPIO_WriteLow(LCD_PORT, LCD_DB6);
GPIO_WriteHigh(LCD_PORT, LCD_DB5);
GPIO_WriteHigh(LCD_PORT, LCD_DB4);
toggle_EN_pin();
GPIO_WriteLow(LCD_PORT, LCD_DB7);
GPIO_WriteLow(LCD_PORT, LCD_DB6);
GPIO_WriteHigh(LCD_PORT, LCD_DB5);
GPIO_WriteHigh(LCD_PORT, LCD_DB4);
toggle_EN_pin();
GPIO_WriteLow(LCD_PORT, LCD_DB7);
GPIO_WriteLow(LCD_PORT, LCD_DB6);
GPIO_WriteHigh(LCD_PORT, LCD_DB5);
GPIO_WriteLow(LCD_PORT, LCD_DB4);
toggle_EN_pin();
LCD_send((_4_pin_interface | _2_row_display | _5x7_dots), CMD);
LCD_send((display_on | cursor_off | blink_off), CMD);
LCD_send(clear_display, CMD);
LCD_send((cursor_direction_inc | display_no_shift), CMD);
}
void LCD_send(unsigned char value, unsigned char mode)
{
switch(mode)
{
case DAT:
{
GPIO_WriteHigh(LCD_PORT, LCD_RS);
break;
}
case CMD:
{
GPIO_WriteLow(LCD_PORT, LCD_RS);
Need help?
Do you have a question about the STM8 and is the answer not in the manual?
Questions and answers