Здраствуйте. Вообщем есть код для инициализации дисплея, проблема в том что не работают
Спасибо!
Раздел: STM32
#defineвставки, при компиляции пишет error: lvalue required as left operand of assignment. Кароче говоря я стал заменять эти вставки в коде просто вот такими конструкциями
GPIO_ResetBits(GPIOA,GPIO_Pin_6);, ошибки исправились. Но появилась следующая проблема с
LCD_RS=RS;, заменил на
GPIO_Pin_5= RS;и компилятор всеравно выдает эту ошибку. Как можно здесь поступить ?
#define LCD_PORT GPIOA
#define LCD_CS 3
#define LCD_RESET 4
#define LCD_RS 5
#define LCD_CLK 6
#define LCD_DATA 7
//Команда/Данные
#define CMD 0
#define DAT 1
char RS_old;
void LCD_init(void)
{
LCD_RESET = 0;
delay_ms(500);
LCD_RESET = 1;
delay_ms(500);
Send_to_lcd(CMD, 0x01); //Программный сброс
Send_to_lcd(CMD, 0x36); //Memory Access Control (Направление заполнения области дисплея (памяти): 0bVHRXXXXX, V - заполнение по вертикали (0 - сверху-вниз, 1 - снизу-вверх),
//H - заполнение по горизонтали (0 - слева-направо, 1 - справа-налево), R - меняются местами строки и столбцы (при этом заполнение остается сверху-вниз, слева-направо))
Send_to_lcd(DAT, 0x00);
Send_to_lcd(CMD, 0x11); //Выход из спящего режима
delay_ms(20);
Send_to_lcd(CMD, 0x3a); //Установка цветовой палитры
#ifdef _8_BIT_COLOR
Send_to_lcd(DAT, 0x02); //Байт на пиксель 256 цветов
#else
Send_to_lcd(DAT, 0x05); //Два байта на пиксель 65536 цветов
#endif
delay_ms(20);
Send_to_lcd(CMD, 0x29); //Включение дисплея
}
//===============================================================
//Функция записи команды/данных в LCD (RS==0 - команда, RS==1 - данные)
//===============================================================
void Send_to_lcd (unsigned char RS, unsigned char data)
{
//unsigned char count;
LCD_CLK = 0;
LCD_DATA = 0;
if ((RS_old != RS) || (!RS_old && !RS)) //проверяем старое значение RS (если поступают одни команды то дергаем CS)
{
LCD_CS=1; // Установка CS
LCD_RS=RS;
LCD_CS=0; // Сброс CS
}
******************************************************************************
запись байта в дисплей
//******************************************************************************
LCD_DATA = 0;
if ((data & 128) == 128) LCD_DATA = 1;
LCD_CLK=1;
LCD_CLK=0;
LCD_DATA = 0;
if ((data & 64) == 64) LCD_DATA = 1;
LCD_CLK=1;
LCD_CLK=0;
LCD_DATA = 0;
if ((data & 32) == 32) LCD_DATA = 1;
LCD_CLK=1;
LCD_CLK=0;
LCD_DATA = 0;
if ((data & 16) ==16) LCD_DATA = 1;
LCD_CLK=1;
LCD_CLK=0;
LCD_DATA = 0;
if ((data & 8) == 8) LCD_DATA = 1;
LCD_CLK=1;
LCD_CLK=0;
LCD_DATA = 0;
if ((data & 4) == 4) LCD_DATA = 1;
LCD_CLK=1;
LCD_CLK=0;
LCD_DATA = 0;
if ((data & 2) == 2) LCD_DATA = 1;
LCD_CLK=1;
LCD_CLK=0;
LCD_DATA = 0;
if ((data & 1) == 1) LCD_DATA = 1;
LCD_CLK=1;
LCD_CLK=0;
RS_old=RS; //запоминаю значение RS
LCD_DATA = 0;
}
Спасибо!
Раздел: STM32