Библиотека для дисплея.

szek
Offline
Зарегистрирован: 21.01.2012

Всем привет! Что нужно для успешного старта дисплея не имея для него библиотеки? Есть дисплей от сименса м55 - LPH8731-3C. Подключил его как тут, дисплей там другой и библиотека не подошла, чему я и не удивился... В интернете находил как подключали такой дисплей к другим МК, но там вроде язык отличный от ардуино. Примеры инициализации там есть, но как это перенести в среду ардуино? И что еще нужно кроме инициализации? 

whoim
Offline
Зарегистрирован: 03.11.2011

 Что нужно для успешного старта дисплея не имея для него библиотеки?

написать для него библиотеку

но как это перенести в среду ардуино?

разобраться и переписать

И что еще нужно кроме инициализации?

а что нужно Вам от дисплея?

szek
Offline
Зарегистрирован: 21.01.2012

Для начала мне хочется просто его включить и вывести что ни будь простейшее, например температуру. Какие составные части нужны для такой библиотеки? Вот пример инициализации:

RESET:=0;
delay_ms(100);
RESET:=1;
delay_ms(1000);
write(cmd,0x01); //reset sw
delay_ms(50);
write(cmd,0x03); //Booster voltage ON
delay_ms(40);
Write(cmd,0x11); //sleep out
delay_ms(40);
Write(cmd,0xc6); //initial escape
delay_ms(40);
Write(cmd,0xb9); //Refresh set
write(dat,0x00);
write(cmd,0xb6); //Display control
Write(dat,0x80); //
Write(dat,0x04); //
Write(dat,0x8a); //
write(dat,0x54); //
write(dat,0x45); //
Write(dat,0x52); //
Write(dat,0x43); //
write(cmd,0xb3); //Gray scale position set 0
Write(dat,0x02); //
Write(dat,0x0a); //
Write(dat,0x15); //
write(dat,0x1f); //
write(dat,0x28); //
Write(dat,0x30); //
Write(dat,0x37); //
Write(dat,0x3f); //
Write(dat,0x47); //
Write(dat,0x4c); //
write(dat,0x54); //
write(dat,0x65); //
Write(dat,0x75); //
Write(dat,0x80); //
Write(dat,0x85); //
write(cmd,0xb5); //Gamma curve
Write(dat,0x01); //
write(cmd,0xb7); //Temperature gradient
Write(dat,0x00); //
Write(dat,0x00); //
Write(dat,0x00); //
write(dat,0x00); //
write(dat,0x00); //
Write(dat,0x00); //
Write(dat,0x00); //
Write(dat,0x00); //
Write(dat,0x00); //
Write(dat,0x00); //
write(dat,0x00); //
write(dat,0x00); //
Write(dat,0x00); //
Write(dat,0x00); //
write(cmd,0xbd); //Common driver output select
Write(dat,0x00); //
write(cmd,0x36); //Memory access control
Write(dat,0x48); //
write(cmd,0x2d); //Colour set
Write(dat,0x00); //
Write(dat,0x03); //
Write(dat,0x05); //
write(dat,0x07); //
write(dat,0x09); //
Write(dat,0x0b); //
Write(dat,0x0d); //
Write(dat,0x0f); //
Write(dat,0x00); //
Write(dat,0x03); //
write(dat,0x05); //
write(dat,0x07); //
write(dat,0x09); //
Write(dat,0x0b); //
Write(dat,0x0d); //
Write(dat,0x0f); //
Write(dat,0x00); //
Write(dat,0x05); //
write(dat,0x0b); //
write(dat,0x0f); //
write(cmd,0xba); //Voltage control
Write(dat,0x2f); //
Write(dat,0x03); //
write(cmd,0x25); //Write contrast
Write(dat,0x7f); //
write(cmd,0xbe); //Power control
Write(dat,0x59); //
write(cmd,0x3a); //interfase pixel format
Write(dat,0x03); //

write(cmd,0x29); //Display ON
end;

 

whoim
Offline
Зарегистрирован: 03.11.2011

 Это пример инициализации для контроллера Вашего дисплея? Если нет, он вам не поможет. Нужно либо искать готовые решения для контроллера, либо читать даташит на дисплей и разбираться, что на него надо послать чтобы он заработал.

szek
Offline
Зарегистрирован: 21.01.2012

 Даташита на дисплей я не нашел. Пример именно для этого дисплея.

whoim
Offline
Зарегистрирован: 03.11.2011
szek
Offline
Зарегистрирован: 21.01.2012

К сожалению на этом сайте рассматривается другой контроллер и ссылку Вы дали совсем на другой дисплей. Вот тема где прикручивают мой дисплей к МК, там же пример инициализации. Но что нужно ардуине для запуска дисплея? Точнее, что нужно включить в библиотеку и как это сделать? Можно ли просто отредактировать библиотеку от похожего дисплея, но с другим контроллером? 

whoim
Offline
Зарегистрирован: 03.11.2011

 Для того чтобы ответить на ваши вопросы нужно иметь этот дисплей под рукой, даташит на него и немало познаний.. В общем - ждите пока гуру в той теме разрулят и создадут библиотеку)

szek
Offline
Зарегистрирован: 21.01.2012

К сожалению гуру в той теме не интересуются ардуиной... Значит отправлю дисплей в ящик. 

 

mitos
Offline
Зарегистрирован: 11.12.2011

http://mindaugas.hostzi.com/?p=723&lang=en погляди тут .может быть получится . 

не сразу заметил ссылку в первом сообщении .

у меня такой экран не заработал .

step962
Offline
Зарегистрирован: 23.05.2011

szek пишет:

К сожалению гуру в той теме не интересуются ардуиной... Значит отправлю дисплей в ящик. 

Ну, если есть библиотека для какого-нибудь другого контроллера, да еще на C, то ситуация - по сравнению с нынешним вариантом отсутствия какоц бы то ни было тнформации - будет выглядеть гораздо оптимистичнее.

Почитайте-ка вот эту ветку на electronix.ru - может быть наступит просветление

szek
Offline
Зарегистрирован: 21.01.2012

Просветление может и будет по не многу наступать, но не ранее чем я узнаю, что мне нужно кроме инициализации) И самый животрепещущий вопрос как это все перевести в язык ардуины, где про это можно почитать? Ссылку изучаю, спасибо! Уже нашел еще один пример инициализации для моего дисплея...но мне это мало что дало:(

whoim
Offline
Зарегистрирован: 03.11.2011

 szek в ардуиноиде работаю все основные команды СИ без вопросов. Другое дело - библиотеки, но и их как я понял можно подключить почти всегда.

Так что чаще всего переводить ничего не нужно.

А вот разобраться в коде пошагово все равно придется, скорее всего. Иначе возникнут непреодолимые трудности )))

Может, для начала поискать дисплей попроще? Нокиа 3110 к примеру очень простой, использовать просто. Ну не говоря про текстовые.

step962
Offline
Зарегистрирован: 23.05.2011

szek пишет:

Просветление может и будет по не многу наступать, но не ранее чем я узнаю, что мне нужно кроме инициализации) И самый животрепещущий вопрос как это все перевести в язык ардуины, где про это можно почитать? Ссылку изучаю, спасибо! Уже нашел еще один пример инициализации для моего дисплея...но мне это мало что дало:(

Кроме инициализации вам потребуются всего две дополнительные команды - выбор адреса и отправка по выбранному адресу байта данных. На экране уже начнет что-то появляться - отличная база для экспериментов и выяснения что да как даже без даташита.

А перевести в язык Ардуины, например с "языка AVR" - это как с "пацанского" на литературный русский. Усилия потребуются минимальные. с Си-программы для PIC-ов или 6800-х посложнее, как с украинского на русский. Главное иметь всю цепочку (см. "#include") бмблиотек.

szek
Offline
Зарегистрирован: 21.01.2012

 

whoim пишет:

 Может, для начала поискать дисплей попроще? Нокиа 3110 к примеру очень простой, использовать просто. Ну не говоря про текстовые.

Сейчас проблема найти такой дисплей, телефону то уже черти сколько лет... Текстовые в местных радиомагазинах, что то больно дороги:(

step962 пишет:

А перевести в язык Ардуины, например с "языка AVR" - это как с "пацанского" на литературный русский. Усилия потребуются минимальные. с Си-программы для PIC-ов или 6800-х посложнее, как с украинского на русский. Главное иметь всю цепочку (см. "#include") бмблиотек.

Для новичка в программировании это сложно:( Вот сверху пример инициализации, если вам не трудно, хотя бы пару строчек сможете перевести?

И еще вопрос, ведь можно например инициализацию провести в самом скейтче, а не в подключенной библиотеке?

 

step962
Offline
Зарегистрирован: 23.05.2011

szek пишет:

Для новичка в программировании это сложно:( Вот сверху пример инициализации, если вам не трудно, хотя бы пару строчек сможете перевести?

И еще вопрос, ведь можно например инициализацию провести в самом скейтче, а не в подключенной библиотеке?

 

 

Лехххко:

RESET=0; // присвоение переменной RESET значения 0
delay(100); // ждем 100 миллисекунд
RESET=1;
delay(1000);
write(cmd,0x01); //reset sw // обращение к функции write
delay(50);
write(cmd,0x03); //Booster voltage ON
delay(40);
Write(cmd,0x11); //sleep out
delay(40);
Write(cmd,0xc6); //initial escape
delay(40);
// и так далее ...

В приведенном коде инициализации переводить, собственно, нечего - только заменить delay_ms() на более знакомую Arduino IDE функцию delay().

А вот функцию write/Write (в Delphi это одна и та же функция, в Си регистр имеет значение) "перевести" надо было бы, но для этого требуется ее определение, которое в приведенном куску кода отсутствует.

Что-то плагин кодовых вставок рюски буква калечит. Повторю открытым текстом:

RESET=0; // присвоение переменной RESET значения 0
delay(100); // ждем 100 миллисекунд
RESET=1;
delay(1000);
write(cmd,0x01); //reset sw // обращение к функции write

...

// и так далее ...

step962
Offline
Зарегистрирован: 23.05.2011

 И еще что можно сказать по приведенному коду:

write(cmd,0x25); //Write contrast
Write(dat,0x7f); //

Функция write() используется как для передачи команд на дисплей (write(cmd,...);), так и для записи в его память данных (write(dat,...);). А внутри функции, соответственно, будет иметься логическое ветвление - в зависимости от значения первого операнда будут исполняться последовательности необходимые для отправки команд (в т.ч. дергаться соответствующие ножки дисплея), либо засылаться данные.

Но это пока что лишь предположение - для обретения твердой уверенности необходимо посмотреть на объявление этой функции.

szek
Offline
Зарегистрирован: 21.01.2012

Вот еще пример от этого дисплея... я совсем запутался:(

А как вообще указать куда что слать? 

Нашел даташит на контроллер!

void LCD_init (void) //Инициализация
{
asm("cli");
SPI_high();
PORTE|=0x08;
LCD_CS;
LCD_COM;
_delay_ms(20);
LCD_COM;
write_SPI(0x01); //Software Reset
_delay_ms(60);
write_SPI(0xC6); //INIESC - Initialize the Settings inside the IC
_delay_ms(12);
write_SPI(0xB9); //REFSET - Set the states inside the IC
LCD_DAT;
write_SPI(0x00);
LCD_COM;
write_SPI(0xB6); //Display Control -
LCD_DAT;
write_SPI(0x57); //Generator Frequency
write_SPI(0x80); //N-line inversion OFF
write_SPI(0x96); //2 Div osc on idle, Bias 1/7, place on bottom, 104x82, Display Duty 1/82
write_SPI(0x00); //Duty 1/84
write_SPI(0x00);
write_SPI(0xFF); //Duty 1/82
write_SPI(0x00);
LCD_COM;
write_SPI(0xB3); //Gray Scale position set 0
LCD_DAT;
LCD_UNCS_CS;
write_SPI(0x07);
write_SPI(0x0E);
write_SPI(0x15);
write_SPI(0x1C);
write_SPI(0x23);
write_SPI(0x2A);
write_SPI(0x31);
write_SPI(0x38);
write_SPI(0x3F);
write_SPI(0x46);
write_SPI(0x4D);
write_SPI(0x54);
write_SPI(0x5B);
write_SPI(0x62);
write_SPI(0x69);
LCD_COM;
write_SPI(0xB4); //Gray scale position set 1
LCD_DAT;
LCD_UNCS_CS;
write_SPI(0x1F);
write_SPI(0x2F);
write_SPI(0x3F);
write_SPI(0x4F);
write_SPI(0x5F);
write_SPI(0x6F);
write_SPI(0x7F);
write_SPI(0x8F);
write_SPI(0x9F);
write_SPI(0xAF);
write_SPI(0xBF);
write_SPI(0xCF);
write_SPI(0xDF);
write_SPI(0xEF);
write_SPI(0xFF);
LCD_COM;
write_SPI(0xB5); //Set the Gray scale position set by default
LCD_DAT;
write_SPI(0x02); //SET1
LCD_COM;
write_SPI(0xBD); //Common output driver select
LCD_DAT;
write_SPI(0x00); //
LCD_COM;
write_SPI(0xBE); //Power Control
LCD_DAT;
write_SPI(0x1C);
LCD_COM;
write_SPI(0x11); //Sleep Mode OFF
_delay_ms(1);
write_SPI(0xBA); //LCD drive voltage
LCD_DAT;
write_SPI(0x6D); //Цифровое значение напряжения - 108
write_SPI(0x03); //всегда 0x03
LCD_COM;
write_SPI(0x25); //Write Contrast
LCD_DAT;
write_SPI(0x39); //Уровень контрастности - 57
LCD_COM;
write_SPI(0xB7); //Temperature gradient for LCD
LCD_DAT;
LCD_UNCS_CS;
write_SPI(0x03); //-0.2%/C
write_SPI(0x00);
write_SPI(0x00);
write_SPI(0x00);
write_SPI(0x00);
write_SPI(0x00);
write_SPI(0x00);
write_SPI(0x00);
write_SPI(0x00);
write_SPI(0x00);
write_SPI(0x00);
write_SPI(0x00);
write_SPI(0x00);
write_SPI(0x00);
LCD_COM;
write_SPI(0x03); //Display Booster ON
_delay_ms(60);
write_SPI(0x20); //Inversion OFF
//write_SPI(0x30); //Set the partial area
//LCD_DAT;
//write_SPI(0x00); //Начало - 0
//write_SPI(0x00); //Конец - 0
//LCD_COM;
//write_SPI(0x33); //Vertical scroll definition
//LCD_DAT;
//write_SPI(0x00); //Верхняя не прокручиваемая область
//write_SPI(0x00); //Количество линий для прокрутки
//write_SPI(0x53); //Нижняя не прокручиваемая область
//LCD_COM;
//write_SPI(0x37); //Vertical scroll start address
//LCD_DAT;
//write_SPI(0x00);
//write_SPI(0x00);
//LCD_COM;
write_SPI(0x3A); //Interface Pixel Format
LCD_DAT;
write_SPI(0x03); //12 bit/pixel
VideoMode=LCD_4096CL;
LCD_COM;
write_SPI(0x2D); //Set colors for 256 colors mode
LCD_DAT;
write_SPI(0x00); //RED 0
write_SPI(0x0F); //RED 1
write_SPI(0x3F); //RED 3
write_SPI(0x6F); //RED 4
write_SPI(0x9F); //RED 5
write_SPI(0xCF); //RED 6
write_SPI(0xFF); //RED 7
write_SPI(0x00); //GREEN 0
write_SPI(0x0F); //GREEN 1
write_SPI(0x3F); //GREEN 3
write_SPI(0x6F); //GREEN 4
write_SPI(0x9F); //GREEN 5
write_SPI(0xCF); //GREEN 6
write_SPI(0xFF); //GREEN 7
write_SPI(0x00); //BLUE 4
write_SPI(0x55); //BLUE 5
write_SPI(0xAA); //BLUE 6
write_SPI(0xFF); //BLUE 7
LCD_COM;
write_SPI(0x36); //Memory access method
LCD_DAT;
write_SPI(0x00); //Default memory access method
LCD_COM;
write_SPI(0x2B); //Page address set
LCD_DAT;
write_SPI(0x00); //Start page at 0x00
write_SPI(0x51); //End page at 81
LCD_COM;
write_SPI(0x2A); //Column address set
LCD_DAT;
write_SPI(0x00); //Start page at 0x00
write_SPI(0x64); //End page at 100
LCD_COM;
write_SPI(0x2C); //Write data into display RAM
LCD_DAT;
write_SPI(0x00);
write_SPI(0x00);
write_SPI(0x00);
write_SPI(0x00);
write_SPI(0x00);
write_SPI(0x00);
LCD_COM;
write_SPI(0x00); //NOP
write_SPI(0x29); //Display ON
LCD_UNCS;
asm("sei");

 

LALOV
Offline
Зарегистрирован: 05.02.2012

 Если еще интересно - сегодня наваял скетч для ардуины для дисплея LPH8731 с  Siemens A60, C60, .... Долго мучился, но работает. Код не оптимизирован. Библиотеки пока не использовал. На данный  момент еще экпериментирую с контрастностью - не удовлетворяют  цвета.  Буду рад любым советам по поводу доработки скетча.

 

//Определяем пины для подключения дисплея
#define LCD_CS 2
#define LCD_RESET 3
#define LCD_RS 4
#define LCD_CLK 5
#define LCD_DATA 6

//Определяем значения  вкл/выкл пинов
#define LCD_CLK_ON       digitalWrite(LCD_CLK,HIGH); 
#define LCD_CLK_OFF      digitalWrite(LCD_CLK,LOW);
#define LCD_RS_ON       digitalWrite(LCD_RS,HIGH); 
#define LCD_RS_OFF      digitalWrite(LCD_RS,LOW);
#define LCD_CS_OFF      digitalWrite(LCD_CS,LOW);
#define LCD_CS_ON       digitalWrite(LCD_CS,HIGH);
#define LCD_RESET_ON    digitalWrite(LCD_RESET,HIGH);
#define LCD_RESET_OFF   digitalWrite(LCD_RESET,LOW);

int i,j; //переменная для цикла

//Пины выходные
void setup ()
{
  pinMode (LCD_CS, OUTPUT);
  pinMode (LCD_RESET, OUTPUT);
  pinMode (LCD_RS, OUTPUT);
  pinMode (LCD_CLK, OUTPUT);
  pinMode (LCD_DATA, OUTPUT);
}

void loop ()
{
  digitalWrite(LCD_DATA,LOW);
  LCD_RESET_OFF;
  delay(100);
  LCD_RESET_ON;
  delay(250);
  delay(250);
  LCD_CS_ON;
  delay(5);
  LCD_CS_OFF;


  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x01);  //софтовый сброс дисплея
  delay(50);

  
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0xc6); //
  delay(50);
  
  
  
  //command
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0xb9);
 
  //data
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x00);
  
  //command
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0xb6);
 
  
  //data
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x80);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x04);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x8a);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x54);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x45);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x52);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x43);
  
  //command
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0xb3); //УРОВЕНЬ СЕРОГО
 
  //data
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x02);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x0a);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x15);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x1f);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x28);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x30);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x37);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x3f);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x47);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x4c);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x54);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x65);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x75);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x80);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x85);
  
  
  //command
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0xb5); // КРИВАЯ ГАММЫ
 
  //data
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x01);
  
 //command
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0xb7);
  
  //data
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x00);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x00);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x00);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x00);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x00);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x00);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x00);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x00);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x00);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x00);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x00);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x00);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x00);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x00);

  //command
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0xbd);
  //data
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x00);
  
  //command
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x36);
 
  //data
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x48);
  
  
  //command
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x2d);
 
  //data
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x00);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x03);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x05);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x07);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x09);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x0b);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x0d);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x0f);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x00);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x03);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x05);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x07);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x09);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x0b);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x0b);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x0f);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x00);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x05);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x0b);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x0f);

//command
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0xba);
  
  //data
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x6d);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x03);
  
  
  //command
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x25); //УСТАНОВИТЬ КОНТРАСТ
 
  //data
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x29);
 // shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x61;
  
  //command
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0xbe);
  
  //data
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x58);
  
  //command
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x3a);
 
  //data
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x02);
  
  //command
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x03);
  delay(40);
   
  //command
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x11);
   delay(20);
  
  //command
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x29);


   for (i = 0; i < 101; i++) {  //закрасить дисплей в черный цвет
      for (j = 0; j < 80; j++) {
         
    //command
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x2a);
   //data
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, i);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 100);
  
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x2b);
  //data
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, j+1);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 80);
  
   LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x2c);
  //data
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x00);
 
      
      }
   }
   
   
    for (i = 0; i < 101; i++) {  //закрасить дисплей в черный цвет
      for (j = 0; j < 80; j++) {
         
    //command
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x2a);
   //data
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, i);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 100);
  
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x2b);
  //data
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, j+1);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 80);
  
   LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x2c);
  //data
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x03);
 
      
      }
   }
   
    for (i = 0; i < 101; i++) {  //закрасить дисплей в черный цвет
      for (j = 0; j < 80; j++) {
         
    //command
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x2a);
   //data
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, i);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 100);
  
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x2b);
  //data
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, j+1);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 80);
  
   LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x2c);
  //data
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x1c);
 
      }
   }
  }







 

szek
Offline
Зарегистрирован: 21.01.2012

Скейтч работает. Но дисплей походу полумертвый, полосы имеюсться:(

Буду рад видить новые версии скейтча!) 

ЮриБас
Offline
Зарегистрирован: 13.01.2012

Принесли мне два сименса один А65..  другой такой же похожий, а в них дисплеи LPH8731-3C и LPH9116-1 Как я понял,  контролер у них один..  S1D15G14 ..  Есть желание использовать их с Ардуиной, (есть Мега 1280) .. Три дня и ночи читал форумы и всякие примеры..   но пока туман в голове..  вроде как бы люди их используют, но как бы не совсем.. в основном темы переходят на другие модели..  Хорошо бы, если библиотеки и прочее было бы..  чтобы можно было с ними (с дисплеями) поработать...  заказал себе  еще дисплей нокия 5110.. и ЖК индикатор WH1602B  надо наверное сперва поучиться на простых .. 

tw911
Offline
Зарегистрирован: 22.10.2013

А не подскажите, как переписать данное на использование SPI.

void Send_to_lcdBase (unsigned char RS, unsigned char data)//портирована
{
 if (RS==HIGH){
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, data);
 }
 else
 {
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, data);
 }
}

Вот функция отправки на экран, но хотелось бы использовать SPI.

 

 

kssk
Offline
Зарегистрирован: 27.04.2015

Тема давняя, но всё же интересно псмотреть как всё устроенно без библиотек

Спасибо LALOV, огромную работу проделал!

Могу добавить, что можно передавать данные подряд указав область 0-80, и 0-100,

а потом подряд только передача данных (цвета) 8080 раз

так и зальём весь экран, цвет можно передавать разный

будет работать намного быстрее

Ещё вынес часть кода в две подпрограммы:  инициализацию и заливку.

Привожу переделанный код , может кому поможет:

//Определяем пины для подключения дисплея
#define LCD_CS 2
#define LCD_RESET 3
#define LCD_RS 4
#define LCD_CLK 5
#define LCD_DATA 6
 
//Определяем значения  вкл/выкл пинов
#define LCD_CLK_ON       digitalWrite(LCD_CLK,HIGH); 
#define LCD_CLK_OFF      digitalWrite(LCD_CLK,LOW);
#define LCD_RS_ON       digitalWrite(LCD_RS,HIGH); 
#define LCD_RS_OFF      digitalWrite(LCD_RS,LOW);
#define LCD_CS_OFF      digitalWrite(LCD_CS,LOW);
#define LCD_CS_ON       digitalWrite(LCD_CS,HIGH);
#define LCD_RESET_ON    digitalWrite(LCD_RESET,HIGH);
#define LCD_RESET_OFF   digitalWrite(LCD_RESET,LOW);
 
int i; //переменная для цикла

void setup ()
{
  //Пины выходные
  pinMode (LCD_CS, OUTPUT);
  pinMode (LCD_RESET, OUTPUT);
  pinMode (LCD_RS, OUTPUT);
  pinMode (LCD_CLK, OUTPUT);
  pinMode (LCD_DATA, OUTPUT);
  
LcdInitt( ); 
LcdFill (0); 
            
}
 
// ------------------------------------------------------------------------
void loop ()
{
 
LcdFill (0);
delay (1000);
LcdFill (255);
delay (1000);


  }

// -----------------------------------------------------------------------------
// Моя подпрограмм инициализации LCD дисплея
void LcdInitt( ) { 
  digitalWrite(LCD_DATA,LOW);
  LCD_RESET_OFF;
  delay(100);
  LCD_RESET_ON;
  delay(250);
  delay(250);
  LCD_CS_ON;
  delay(5);
  LCD_CS_OFF;
 
 
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x01);  //софтовый сброс дисплея
  delay(50);
 
   
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0xc6); //
  delay(50);
   
   
   
  //command
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0xb9);
  
  //data
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x00);
   
  //command
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0xb6);
  
   
  //data
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x80);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x04);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x8a);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x54);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x45);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x52);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x43);
   
  //command
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0xb3); //УРОВЕНЬ СЕРОГО
  
  //data
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x02);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x0a);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x15);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x1f);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x28);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x30);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x37);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x3f);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x47);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x4c);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x54);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x65);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x75);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x80);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x85);
   
   
  //command
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0xb5); // КРИВАЯ ГАММЫ
  
  //data
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x01);
   
 //command
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0xb7);
   
  //data
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x00);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x00);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x00);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x00);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x00);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x00);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x00);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x00);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x00);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x00);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x00);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x00);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x00);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x00);
 
  //command
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0xbd);
  //data
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x00);
   
  //command
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x36);
  
  //data
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x48);
   
   
  //command
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x2d);
  
  //data
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x00);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x03);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x05);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x07);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x09);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x0b);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x0d);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x0f);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x00);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x03);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x05);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x07);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x09);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x0b);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x0b);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x0f);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x00);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x05);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x0b);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x0f);
 
//command
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0xba);
   
  //data
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x6d);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x03);
   
   
  //command
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x25); //УСТАНОВИТЬ КОНТРАСТ было 25
  
  //data
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x25);
 // shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x61;
   
  //command
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0xbe);
   
  //data
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x58);
   
  //command
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x3a);
  
  //data
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x02);
   
  //command
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x03);
  delay(40);
    
  //command
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x11);
   delay(20);
   
  //command
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x29);
  }

// -----------------------------------------------------------------------------
// Моя подпрограмма для рисования точки
void LcdPixel(int PosX, int PosY, int Collor ) { 
 
  //command
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x2a);
   //data
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, PosX);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 100);
   
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x2b);
  //data
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, PosY);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 80);
   
   LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x2c);
  //data
  
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, Collor);
  
}


// ----------------------------------------------------------------
// Моя подпрограмма для закрашивания всего экрана, цвет 0-255
void LcdFill( int Collor ) { 
 
  //command
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x2a);

   //data
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 100);

  //command   
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x2b);

  //data
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0);
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 80);
   
  //command
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x2c);


  //data Подряд передаем данные в нашем случае одни и теже 8080 раз
  LCD_RS_ON;
  LCD_CLK_OFF;
        for (i = 1; i < 8081; i++) {

  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, Collor);
        }
}


 

LRRR
Offline
Зарегистрирован: 28.06.2015

Объясните мне пожалуйста как обычный текст можно вывести?

RA9YOM
Offline
Зарегистрирован: 04.09.2015

Подскажите как выводить текст на экран ? Хочу взять за основу вариант на СИ но как реализовать это на ARDUINO не знаю! Помогите!

Вот сылка на библиотек на си http://cxem.net/mc/mc218.php

kssk
Offline
Зарегистрирован: 27.04.2015

Чужую библиотеку переделывать нет желания :(

Вывод буковок делал сам, мне их не много надо было ;)

Вот подпрограммку навоял для вывода одного символа, может кому поможет

Ей надо передать: (символ, позицию Х, позиция Y, цвет буквы, цвет фона)

Понимаю, что хочеться выводить словами и через библиотеки,

Но мне надо было быстро и всего несколько символов

На поиски убил много времени, так рабочего ничего не нашел

 

/ ----------------------------------------------------------------
// Моя подпрограмма для рисования буковки 5x8
void LcdCharPrint( int Chh, int PosX, int PosY, int CharCollor, int CharFon ) { 

  //command
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x2a);
   //data
  LCD_RS_ON;
  LCD_CLK_OFF;

  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, (PosX * 5));
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, (PosX * 5 + 4));
   
  LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x2b);
  //data
  LCD_RS_ON;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, (PosY * 8 + 1));
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, (PosY * 8 + 7 +1 ));
   
   LCD_CS_ON;
  LCD_RS_OFF;
  LCD_CS_OFF;
  LCD_CLK_OFF;
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, 0x2c);


    //data
  LCD_RS_ON;
  LCD_CLK_OFF;

        for (i = 0; i < 40; i++) {

j = i / 5;
k = i - (j * 5);

bbb = byte (CHR [Chh][k]);
myChar =  bitRead(bbb, j); 

  
   if(myChar == 0){ 
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, CharFon);
  }
  else {
  shiftOut(LCD_DATA, LCD_CLK, MSBFIRST, CharCollor);
 }

        }

}

А это табличка с шрифтом 5х8
/********************************************************************************************/
static const byte CHR[256][5] = {
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  0
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  1
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  2
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  3
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  4
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  5
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  6
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  7
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  8
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  9
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  10
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  11
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  12
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  13
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  14
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  15
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  16
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  17
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  18
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  19
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  20
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  21
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  22
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  23
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  24
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  25
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  26
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  27
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  28
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  29
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  30
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  31
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  32
{0x00, 0x00, 0x5F, 0x00, 0x00},	// !        33
{0x00, 0x07, 0x00, 0x07, 0x00},	// "        34
{0x14, 0x7F, 0x14, 0x7F, 0x14},	// #        35
{0x24, 0x2A, 0x7F, 0x2A, 0x12},	// $        36
{0x23, 0x13, 0x08, 0x64, 0x62},	// %        37
{0x36, 0x49, 0x55, 0x22, 0x50},	// &        38
{0x00, 0x05, 0x03, 0x00, 0x00},	// '        39
{0x00, 0x1C, 0x22, 0x41, 0x00},	// (        40
{0x00, 0x41, 0x22, 0x1C, 0x00},	// )        41
{0x08, 0x2A, 0x1C, 0x2A, 0x08},	// *        42
{0x08, 0x08, 0x3E, 0x08, 0x08},	// +        43
{0x00, 0x50, 0x30, 0x00, 0x00},	// 44
{0x08, 0x08, 0x08, 0x08, 0x08},	// -        45
{0x00, 0x30, 0x30, 0x00, 0x00},	// .        46
{0x20, 0x10, 0x08, 0x04, 0x02},	// /        47
{0x3E, 0x51, 0x49, 0x45, 0x3E},	// 0        48
{0x00, 0x42, 0x7F, 0x40, 0x00},	// 1        49
{0x42, 0x61, 0x51, 0x49, 0x46},	// 2        50
{0x21, 0x41, 0x45, 0x4B, 0x31},	// 3        51
{0x18, 0x14, 0x12, 0x7F, 0x10},	// 4        52
{0x27, 0x45, 0x45, 0x45, 0x39},	// 5        53
{0x3C, 0x4A, 0x49, 0x49, 0x30},	// 6        54
{0x01, 0x71, 0x09, 0x05, 0x03},	// 7        55
{0x36, 0x49, 0x49, 0x49, 0x36},	// 8        56
{0x06, 0x49, 0x49, 0x29, 0x1E},	// 9        57
{0x00, 0x36, 0x36, 0x00, 0x00},	// :        58
{0x00, 0x56, 0x36, 0x00, 0x00},	// ;        59
{0x00, 0x08, 0x14, 0x22, 0x41},	// <        60
{0x14, 0x14, 0x14, 0x14, 0x14},	// =        61
{0x41, 0x22, 0x14, 0x08, 0x00},	// >        62
{0x02, 0x01, 0x51, 0x09, 0x06},	// ?        63
{0x32, 0x49, 0x79, 0x41, 0x3E},	// @        64
{0x7E, 0x11, 0x11, 0x11, 0x7E},	// A        65
{0x7F, 0x49, 0x49, 0x49, 0x36},	// B        66
{0x3E, 0x41, 0x41, 0x41, 0x22},	// C        67
{0x7F, 0x41, 0x41, 0x22, 0x1C},	// D        68
{0x7F, 0x49, 0x49, 0x49, 0x41},	// E        69
{0x7F, 0x09, 0x09, 0x01, 0x01},	// F        70
{0x3E, 0x41, 0x41, 0x51, 0x32},	// G        71
{0x7F, 0x08, 0x08, 0x08, 0x7F},	// H        72
{0x00, 0x41, 0x7F, 0x41, 0x00},	// I        73
{0x20, 0x40, 0x41, 0x3F, 0x01},	// J        74
{0x7F, 0x08, 0x14, 0x22, 0x41},	// K        75
{0x7F, 0x40, 0x40, 0x40, 0x40},	// L        76
{0x7F, 0x02, 0x04, 0x02, 0x7F},	// M        77
{0x7F, 0x04, 0x08, 0x10, 0x7F},	// N        78
{0x3E, 0x41, 0x41, 0x41, 0x3E},	// O        79
{0x7F, 0x09, 0x09, 0x09, 0x06},	// P        80
{0x3E, 0x41, 0x51, 0x21, 0x5E},	// Q        81
{0x7F, 0x09, 0x19, 0x29, 0x46},	// R        82
{0x46, 0x49, 0x49, 0x49, 0x31},	// S        83
{0x01, 0x01, 0x7F, 0x01, 0x01},	// T        84
{0x3F, 0x40, 0x40, 0x40, 0x3F},	// U        85
{0x1F, 0x20, 0x40, 0x20, 0x1F},	// V        86
{0x7F, 0x20, 0x18, 0x20, 0x7F},	// W        87
{0x63, 0x14, 0x08, 0x14, 0x63},	// X        88
{0x03, 0x04, 0x78, 0x04, 0x03},	// Y        89
{0x61, 0x51, 0x49, 0x45, 0x43},	// Z        90
{0x00, 0x00, 0x7F, 0x41, 0x41},	// [        91
{0x02, 0x04, 0x08, 0x10, 0x20},	// "\"      92
{0x41, 0x41, 0x7F, 0x00, 0x00},	// ]        93
{0x04, 0x02, 0x01, 0x02, 0x04},	// ^        94
{0x40, 0x40, 0x40, 0x40, 0x40},	// _        95
{0x00, 0x01, 0x02, 0x04, 0x00},	// `        96
{0x20, 0x54, 0x54, 0x54, 0x78},	// a        97
{0x7F, 0x48, 0x44, 0x44, 0x38},	// b        98
{0x38, 0x44, 0x44, 0x44, 0x20},	// c        99
{0x38, 0x44, 0x44, 0x48, 0x7F},	// d        100
{0x38, 0x54, 0x54, 0x54, 0x18},	// e        101
{0x08, 0x7E, 0x09, 0x01, 0x02},	// f        102
{0x08, 0x14, 0x54, 0x54, 0x3C},	// g        103
{0x7F, 0x08, 0x04, 0x04, 0x78},	// h        104
{0x00, 0x44, 0x7D, 0x40, 0x00},	// i        105
{0x20, 0x40, 0x44, 0x3D, 0x00},	// j        106
{0x00, 0x7F, 0x10, 0x28, 0x44},	// k        107
{0x00, 0x41, 0x7F, 0x40, 0x00},	// l        108
{0x7C, 0x04, 0x18, 0x04, 0x78},	// m        109
{0x7C, 0x08, 0x04, 0x04, 0x78},	// n        110
{0x38, 0x44, 0x44, 0x44, 0x38},	// o        111
{0x7C, 0x14, 0x14, 0x14, 0x08},	// p        112
{0x08, 0x14, 0x14, 0x18, 0x7C},	// q        113
{0x7C, 0x08, 0x04, 0x04, 0x08},	// r        114
{0x48, 0x54, 0x54, 0x54, 0x20},	// s        115
{0x04, 0x3F, 0x44, 0x40, 0x20},	// t        116
{0x3C, 0x40, 0x40, 0x20, 0x7C},	// u        117
{0x1C, 0x20, 0x40, 0x20, 0x1C},	// v        118
{0x3C, 0x40, 0x30, 0x40, 0x3C},	// w        119
{0x44, 0x28, 0x10, 0x28, 0x44},	// x        120
{0x0C, 0x50, 0x50, 0x50, 0x3C},	// y        121
{0x44, 0x64, 0x54, 0x4C, 0x44},	// z        122
{0x00, 0x08, 0x36, 0x41, 0x00},	// {        123
{0x00, 0x00, 0x7F, 0x00, 0x00},	// |        124
{0x00, 0x41, 0x36, 0x08, 0x00},	// }        125
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  126
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  127
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  128
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  129
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  130
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  131
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  132
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  133
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  134
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  135
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  136
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  137
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  138
{0x08, 0x1C, 0x2A, 0x08, 0x08},	// <-      139
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  140
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  141
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  142
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  143
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  144
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  145
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  146
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  147
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  148
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  149
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  150
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  151
{127, 65, 65, 65, 127},          //Пустой квадрат  152
{127, 127, 127, 127, 127},      //Заполн квадрат  153
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  154
{28, 127, 62, 28, 8},              // ->       155
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  156
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  157
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  158
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  159
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  160
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  161
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  162
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  163
{184, 69, 95, 85, 184},  // Значек будильника  164, 
{16, 30, 31, 62, 16},         //Колокольчик     165, 
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  166
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  167
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  168
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  169
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  170
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  171
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  172
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  173
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  174
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  175
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  176
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  177
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  178
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  179
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  180
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  181
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  182
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  183
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  184
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  185
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  186
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  187
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  188
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  189
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  190
{0x00, 0x00, 0x00, 0x00, 0x00},	// (space)  191
{0x7E, 0x11, 0x11, 0x11, 0x7E},	// A        192
{0x7F, 0x45, 0x45, 0x45, 0x39},	// Б        193
{0x7F, 0x49, 0x49, 0x49, 0x36},	// B        194
{0x7F, 0x01, 0x01, 0x01, 0x03},	// Г        195
{0xC0, 0x7E, 0x41, 0x7F, 0xC0},	// Д        196
{0x7F, 0x49, 0x49, 0x49, 0x41},	// E        197
{119, 8, 127, 8, 119},                 // Ж        198
{34, 73, 73, 73, 54},                  // З        199
{127, 32, 16, 8, 127},                 // И        200
{127, 32, 19, 8, 127},                 // Й        201
{0x7F, 0x08, 0x14, 0x22, 0x41},	// K        202
{64, 62, 1, 1, 127},                   // Л        203
{0x7F, 0x02, 0x04, 0x02, 0x7F},	// M        204
{0x7F, 0x08, 0x08, 0x08, 0x7F},	// H        205
{0x3E, 0x41, 0x41, 0x41, 0x3E},	// O        206
{127, 1, 1, 1, 127},                   // П        207
{0x7F, 0x09, 0x09, 0x09, 0x06},	// P        208
{0x3E, 0x41, 0x41, 0x41, 0x22},	// C        209
{0x01, 0x01, 0x7F, 0x01, 0x01},	// T        210
{39, 72, 72, 72, 63},                  // У        211
{30, 33, 127, 33, 30},                 // Ф        212
{0x63, 0x14, 0x08, 0x14, 0x63},	// X        213
{127, 64, 64, 127, 192},               // Ц        214
{15, 16, 16, 16, 127},                 // Ч        215
{127, 64, 124, 64, 127},               // Ш        216
{127, 64, 124, 64, 255},               // Щ        217
{1, 127, 72, 72, 48},                  // Ъ        218
{127, 72, 48, 0, 127},                 // Ы        219
{127, 72, 72, 72, 48},                 // Ь        220
{34, 73, 73, 73, 62},                  // Э        221
{127, 8, 62, 65, 62},                  // Ю        222
{118, 9, 9, 9, 127},                   // Я        223
{0x20, 0x54, 0x54, 0x54, 0x78},	// a        224
{124, 84, 84, 84, 36},             // б        225
{124, 84, 84, 84, 40},             // в        226
{124, 4, 4, 4, 12},                // г        227
{192, 120, 68, 124, 192},          // д        228
{0x38, 0x54, 0x54, 0x54, 0x18},	// e        229
{108, 16, 124, 16, 108},           // ж        230
{40, 68, 84, 84, 40},              // з        231
{124, 32, 16, 8, 124},             // и        232
{124, 33, 18, 8, 124},             // й        233
{124, 16, 16, 40, 68},             // к        234
{64, 56, 4, 4, 124},               // л        235
{124, 8, 16, 8, 124},              // м        236
{124, 16, 16, 16, 124},       // н        237
{0x38, 0x44, 0x44, 0x44, 0x38},	// o        238
{124, 4, 4, 4, 124},               // п        239
{0x7C, 0x14, 0x14, 0x14, 0x08},	// p        240
{0x38, 0x44, 0x44, 0x44, 0x20},	// c        241
{4, 4, 124, 4, 4},                 // т        242
{0x0C, 0x50, 0x50, 0x50, 0x3C},	// y        243
{24, 36, 124, 36, 24},             // ф        244
{0x44, 0x28, 0x10, 0x28, 0x44},	// x        245
{124, 64, 64, 124, 192},           // ц        246
{12, 16, 16, 16, 124},             // ч        247
{124, 64, 120, 64, 124},           // ш        248
{124, 64, 120, 64, 252},           // щ        249
{124, 84, 80, 80, 32},             // ъ        250
{124, 80, 32, 0, 124},                 // ы        251
{124, 80, 80, 80, 32},             // ь        252
{40, 68, 84, 84, 56},               //э        253
{124, 16, 56, 68, 56},             // ю        254
{72, 52, 20, 20, 124}      // я        255
};
// ---------------------------------------------------------------

 

satelit 2
Offline
Зарегистрирован: 04.12.2016

табличку со шрифтом я так понимаю в библиотеку сувать?

 

kssk
Offline
Зарегистрирован: 27.04.2015

Я тогда все в одном делал, с подпрограммами
Шрифты в начале кода вставить, где константы
Подпрограмму с выводом символа 5х8 в хвост
Код проги с инициализацией смотрите в моем собщении от 27/04/2015

zik1988
Offline
Зарегистрирован: 09.04.2017

Вечер добрый.
Загрузил скетч(Шрифты в начале кода вставить, где константы. Подпрограмму с выводом символа 5х8 в хвост. Код проги с инициализацией в собщении от 27/04/2015), меняется белый на черный экран.

в скетче после
bb = byte (CHR [Chh][k]);
myChar =  bitRead(bbb, j); 
дописал
LcdCharPrint(127,20,4,255,0); 
Ничего не происходит. Поставил делэй в 2 секунды, тоже самое. Менял координаты, цвета символа и фона, буквы - такой же результат.
скетч в сообщении от 05/02/2012 - 21:04 меняет на 3 цвета. Пробовал туда функцию добавить на вывод текста - также ничего не меняется...
Диплей от А75. Мне нужен он для вывода инфы на экран с датчика DS1802 температуры для начала... Потом планирую в авто с uarta вывести показания бортовика(не особо далеко в будущем).
 
Помогите наводкой хотя бы, что написать в коде чтоб заветные\й символ\ы увидеть. Потом конечно хотелось бы помощи как всё это использовать с далласом)
Спасибо заранее! 
 
kssk
Offline
Зарегистрирован: 27.04.2015

А "заливка экрана" работает?

Закиньте скетч из моего сообщения от "Пнд, 27/04/2015 - 14:17"

Раз в 1 сек перекрашивать дисплей будет

Если нет - то спаяли что-то не так

 

zik1988
Offline
Зарегистрирован: 09.04.2017

закинул - работает.

Schneider
Offline
Зарегистрирован: 15.04.2017

достал такой дисплей из сименс с60. значит есть шанс прикрутить к ардуино? У меня mega2560 первой версии. До кучи в тему, здесь один немец основываясь на этой статье запилил свой драйвер. на видео работает шустро. Тоже так хочу. чтобы устройство не казалось таким меееедлееееннным. А то даже сам телефон на этом дисплее не отличается скоростью.

PS. у меня Arduino Mega2560 + этот дисплей из сименс с60.

MacSim
Offline
Зарегистрирован: 28.11.2012

что-то я не увидел у немца собственного драйвера дисплея. вы видимо не совсем понимаете что такое драйвер дисплея.

программу для пересчета картинки он написал.

Schneider
Offline
Зарегистрирован: 15.04.2017

я понимаю что такое драйвер. просто он так свой труд назвал :) но работает здорово. буду копать его код.

kssk
Offline
Зарегистрирован: 27.04.2015

Цитата из ваших ссылок "Библиотека (для CodeVisionAVR)"

Вы понимаете, что это значит?

В этой ветке обсуждается Ардуино

И да! Дисплей LPH8731-3C таки работал у меня с Ардуино

Schneider
Offline
Зарегистрирован: 15.04.2017

kssk пишет:

Цитата из ваших ссылок "Библиотека (для CodeVisionAVR)"

Вы понимаете, что это значит?

В этой ветке обсуждается Ардуино

И да! Дисплей LPH8731-3C таки работал у меня с Ардуино

Эээ. ну я только вчера узнал что Arduino это обвешанный Atmel процессор с загрузчиком от arduino и т.п. и что производитель этих процессоров предлагает свою среду разработки. но с Си я знаком не понаслышке, вот и собираюсь копать. У вас я смотрю после некоторых пассов получилось разобраться в отличиях в функциях тех и этих. вот и мне интересно.

PS. на правильное направление указали, спасибо. начну ка я с avr-gcc, потому, что не зря ж я учился :) а arduino -язык более высокого уровня (в правильном смысле! - поверх базиса AVR). Мне функционал нужен, а с include define и fuses я разберусь как-нибудь. всем добра.

Novi4ek
Offline
Зарегистрирован: 07.07.2018
Здравствуйте помогите пожалуйста вывести на дисплей LPH8731-3C данные DS18B20 и bmp280 с помощью ProMini 3.3v
Вот мои наработки

https://drive.google.com/open?id=1bCkKSV9zpPAAtMq3zAqMvIk7so0ys60c

renoshnik
Offline
Зарегистрирован: 11.04.2013

szek пишет:

Всем привет! Что нужно для успешного старта дисплея не имея для него библиотеки? Есть дисплей от сименса м55 - LPH8731-3C. Подключил его как тут, дисплей там другой и библиотека не подошла, чему я и не удивился... В интернете находил как подключали такой дисплей к другим МК, но там вроде язык отличный от ардуино. Примеры инициализации там есть, но как это перенести в среду ардуино? И что еще нужно кроме инициализации? 

http://cxem.net/mc/mc218.php

Novi4ek
Offline
Зарегистрирован: 07.07.2018

подскажите пожалуйста что здесь неправильно и как оптимизировать код:

#include "LPH8731-3C.h"
 
#include <OneWire.h>
 
#include <DallasTemperature.h> 
 
#define ONE_WIRE_BUS 2 //pin DQ z czujnika DS18B20
char *str;
unsigned char *symbol;
 
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
 
int ods = 600; //czas w jakim temperatura ma być pobierana z czujnika (domyślnie 60000ms = 60sek.)
 
  
 void setup() {
  Serial.begin(9600);
  //введите здесь свой код установки, чтобы запустить его один раз:
  pinMode(LCD_CS,OUTPUT);
  pinMode(LCD_RESET,OUTPUT);
  pinMode(LCD_RS,OUTPUT);
  pinMode(LCD_CLK,OUTPUT);
  pinMode(LCD_DATA,OUTPUT);
 
 reset ();
 LCD_init ();
  
  symbol=0;
   LCD_FillScreen (0x1f);//заливка экрана
   delay(500);
   sensors.begin();
}
 
void loop()
{
 
 
  // Zapętlona instrukcja odświeżająca temperaturę
  while( 2 > 1 )
  {
    LCD_Putsf_Shadow("Temp",1, 2, 0x00, 1, 1, 0);
    Term();
    delay(ods);
 
     }
 
  
}
// Функция, которая берет данные от датчика и посылает значение температуры на дисплей
//
void Term(){
  sensors.requestTemperatures(); // Wysyła komendę do pobrania temperatury
  delay(100); // Opóźnienie 1sek. Czeka na poprawne pobranie temperatury. Bez tego odczyty wariowały.
  char buffer[5];
  dtostrf(sensors.getTempCByIndex(0), 5, 1, buffer);
  LCD_FillRect (42, 30, 23, 7, 0x1f);         //удалить предыдущие изображения с помощью прямоугольника
 
  LCD_Puts_Shadow(str, 42, 30, 0xE0, 1, 1, 0);//записывает на ЖК-дисплее значение переменной «датчик»
  LCD_Putsf_Shadow(buffer, 35, 30, 0xE0, 1, 1, 0); //Wysyła wartość temperatury na wyświetlacz
 delay(500);
}

 

Novi4ek
Offline
Зарегистрирован: 07.07.2018

Поделитесь пожалуйста библиотекой и тем как подключать датчики к дисплею.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Novi4ek пишет:

подскажите пожалуйста что здесь неправильно и как оптимизировать код:

 
 
Оптимизировать то, что неправильно - это в перлы!

 

Novi4ek
Offline
Зарегистрирован: 07.07.2018

Спасибо я в этом не очень разбираюсь , собираю проекты в flprog по видео урокам!Поэтому решил спросить! 

 

kssk
Offline
Зарегистрирован: 27.04.2015

to Novi4ek

Вы написали :  #include "LPH8731-3C.h"

А в следующем посте просите библиотеку

!?

я рабочую библиотеку так и не нашел. Искал дольше, чем сам написал пару строк.

Давно это было, смотрите выше

 

Novi4ek
Offline
Зарегистрирован: 07.07.2018

Эту библиотеку я переименовал так чтобы не путаться, а так она называлась вот так : LPH9116

Я только методом тыка, добавил эти строчки:
#define LCD_CS    11
#define LCD_RESET 5
#define LCD_RS    4
#define LCD_CLK   6
#define LCD_DATA  13
 
Novi4ek
Offline
Зарегистрирован: 07.07.2018

kssk пишет:

to Novi4ek

Вы написали :  #include "LPH8731-3C.h"

А в следующем посте просите библиотеку

!?

я рабочую библиотеку так и не нашел. Искал дольше, чем сам написал пару строк.

Давно это было, смотрите выше

 

Если не сложно , cкиньте пожалуйста мне библиотеку на электронную адрес:

kssk
Offline
Зарегистрирован: 27.04.2015

Посмотрите мой пост - Ср, 09/09/2015 - 11:56 номер 25

Там все понятно расписано

написал пару строк вовсе не значит, что я написал или нашел библиотеку

 

ojierr
Offline
Зарегистрирован: 12.05.2019
error: 'j' was not declared in this scope
 j = i / 5;
error: 'k' was not declared in this scope
k = i - (j * 5);
error: 'bbb' was not declared in this scope
bbb = byte (CHR [Chh][k]);
error: 'myChar' was not declared in this scope
myChar =  bitRead(bbb, j); 
как их задекларировать?
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

ojierr пишет:

как их задекларировать?

http://www.c-cpp.ru/books/obyavlenie-peremennyh

ojierr
Offline
Зарегистрирован: 12.05.2019

С целыми понятно и так. Меня интересует конкретно этот пример. И переменная bbb.

nik182
Offline
Зарегистрирован: 04.05.2015

Напишите пере bbb слово  byte. 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

ojierr пишет:
С целыми понятно и так. Меня интересует конкретно этот пример. И переменная bbb.
Вам нужно, чтобы кто-то сделал за Вас конкретно этот пример (Вы даже текст программы не привели!)? Тогда в "ищу исполнителя". А нет, так читайте K&R.