реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Народ поделитесь библиотекой SED1520 для дисплея MT-12232
TamTam
сообщение Jun 8 2006, 09:48
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 293
Регистрация: 14-03-06
Пользователь №: 15 254



Ну или сурцом желательно для CVAVR
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jun 8 2006, 11:09
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(TamTam @ Jun 8 2006, 17:48) *
Ну или сурцом желательно для CVAVR




Смотри подпись ниже, есть и платный, есть и безплатный)))


--------------------
Go to the top of the page
 
+Quote Post
TamTam
сообщение Jun 8 2006, 16:44
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 293
Регистрация: 14-03-06
Пользователь №: 15 254



Цитата(prottoss @ Jun 8 2006, 15:09) *
Цитата(TamTam @ Jun 8 2006, 17:48) *
Ну или сурцом желательно для CVAVR

Смотри подпись ниже, есть и платный, есть и безплатный)))


чет я там ничего не нашол.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jun 8 2006, 16:59
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(TamTam @ Jun 9 2006, 00:44) *
Цитата(prottoss @ Jun 8 2006, 15:09) *

Цитата(TamTam @ Jun 8 2006, 17:48) *
Ну или сурцом желательно для CVAVR

Смотри подпись ниже, есть и платный, есть и безплатный)))


чет я там ничего не нашол.




Да Вы, скорее всего, и не искали)

http://pinokio3000.narod.ru/sourches/sed1520.htm


--------------------
Go to the top of the page
 
+Quote Post
TamTam
сообщение Jun 8 2006, 22:13
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 293
Регистрация: 14-03-06
Пользователь №: 15 254



Цитата(prottoss @ Jun 8 2006, 20:59) *
Цитата(TamTam @ Jun 9 2006, 00:44) *
Цитата(prottoss @ Jun 8 2006, 15:09) *

Цитата(TamTam @ Jun 8 2006, 17:48) *
Ну или сурцом желательно для CVAVR

Смотри подпись ниже, есть и платный, есть и безплатный)))


чет я там ничего не нашол.




Да Вы, скорее всего, и не искали)

http://pinokio3000.narod.ru/sourches/sed1520.htm


с огромным удовольствием приобрелбы библу, новот былаб она под CVAVR
Go to the top of the page
 
+Quote Post
TamTam
сообщение Jun 8 2006, 22:53
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 293
Регистрация: 14-03-06
Пользователь №: 15 254



Результатом поиска стали бве библы, но они к сожалению не под CVAVR, посмотрел, и понял что сам с переводом на CVAVR я не справлюсь, мож кто чем подмогнет

AVR_and_SED1520.rar - из протеуса,

MT12864_drv__1_.zip - любезно предоставлена "Alechin" за что ему огромный a14.gif
Прикрепленные файлы
Прикрепленный файл  AVR_and_SED1520.rar ( 21.55 килобайт ) Кол-во скачиваний: 213
Прикрепленный файл  MT12864_drv__1_.zip ( 27.4 килобайт ) Кол-во скачиваний: 194
 
Go to the top of the page
 
+Quote Post
TamTam
сообщение Jun 8 2006, 23:06
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 293
Регистрация: 14-03-06
Пользователь №: 15 254



Может есть у кого библа для CVAVR, для любого другого графического индекатора ???
Go to the top of the page
 
+Quote Post
otrog
сообщение Jun 9 2006, 07:02
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 232
Регистрация: 22-02-06
Из: Воронеж
Пользователь №: 14 589



Цитата с сайта МЭЛТ:
Цитата
А нет ли примера программы для вывода на ЖК индикатор?

Есть, вот архив с примерами программ для вывода на наши ЖК индикаторы. Программы написаны на подобии языка C и предназначены для пояснения алгоритмов работы с ЖКИ. Они подробно прокомментированы, но компилиться не будут - нужно доопределить функцию задержки времени и имена сигналов управления ЖКИ.

Архив:
http://melt.com.ru/files/file2032.zip


--------------------
Истина рождается в спорах; но когда страсти кипят, истина испаряется.
Go to the top of the page
 
+Quote Post
ROC
сообщение Jun 9 2006, 07:25
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 157
Регистрация: 14-11-04
Из: Санкт-Петербург
Пользователь №: 1 125



Что-то было на www.8052.com....
http://www.8052.com/codelib/lcd12864.rar - для AVR! не пугайтесь названия сайта . И даже по-моему под CodeVision smile.gif


--------------------
WBR,
ROC.
Go to the top of the page
 
+Quote Post
proba
сообщение Jun 10 2006, 07:39
Сообщение #10


Местный
***

Группа: Участник
Сообщений: 358
Регистрация: 29-05-05
Пользователь №: 5 526



для GCC но легко переделать, :
схема самого простого генератора нег. напряжения с програмнои регулировкои контрастности.
Эскизы прикрепленных изображений
Прикрепленное изображение
 

Прикрепленные файлы
Прикрепленный файл  lcd_dip122_1.1.tar.gz ( 168.79 килобайт ) Кол-во скачиваний: 111
 
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jun 10 2006, 08:07
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(proba @ Jun 10 2006, 15:39) *
для GCC но легко переделать, :
схема самого простого генератора нег. напряжения с програмнои регулировкои контрастности.




М-да, на счет самого простого Вы загнули)))

Вот простой...http://pinokio3000.narod.ru/sourches/sed1520.htm Боюсь слова самый, а вдруг кто проще придумает)))


--------------------
Go to the top of the page
 
+Quote Post
asf
сообщение Dec 6 2006, 19:08
Сообщение #12


Участник
*

Группа: Новичок
Сообщений: 29
Регистрация: 19-12-05
Пользователь №: 12 407



Новых примеров нет?
А то что-то не запускается зараза (AVR Studio+GCC) перепробовал все варианты, вкл. datasheet...

#define LCD_DISP_OFF 0xAE /* turn LCD panel OFF */
#define LCD_DISP_ON 0xAF /* turn LCD panel ON */
#define LCD_SET_LINE 0xC0 /* set line for COM0 (4 lsbs = ST3:ST2:ST1:ST0) */
#define LCD_SET_PAGE 0xB8 /* set page address (2 lsbs = P1:P0) */
#define LCD_SET_COL 0x00 /* set column address (6 lsbs = Y4:Y4:Y3:Y2:Y1:Y0) */
#define LCD_SET_ADC_NOR 0xA0 /* ADC set for normal direction */
#define LCD_SET_ADC_REV 0xA1 /* ADC set for reverse direction */
#define LCD_STATIC_OFF 0xA4 /* normal drive */
#define LCD_STATIC_ON 0xA5 /* static drive (power save) */
#define LCD_DUTY_16 0xA8 /* driving duty 1/16 */
#define LCD_DUTY_32 0xA9 /* driving duty 1/32 */
#define LCD_SET_MODIFY 0xE0 /* start read-modify-write mode */
#define LCD_CLR_MODIFY 0xEE /* end read-modify-write mode */
#define LCD_RESET 0xE2 /* soft reset command */
/* SED1520 is used with reverse direction (ADC_REV).
This value is the address of the leftmost column: */
#define LCD_STARTCOL_REVERSE 19
/* LCD screen and bitmap image array consants */
#define LCD_X_BYTES 122
#define LCD_Y_BYTES 3

#define LCD_PORT_DATA PORTC
#define LCD_DDR_DATA DDRC

#define LCD_PORT_CTRL PORTA
#define LCD_DDR_CTRL DDRA
#define LCD_A0 PA3
#define LCD_CMD LCD_A0
#define LCD_RW PA4
#define LCD_E PA5
#define LCD_RES PA6
#define LCD_CS PA7
#define LCD_CMD_MODE() LCD_PORT_CTRL &= ~(1<<LCD_CMD)
#define LCD_DATA_MODE() LCD_PORT_CTRL |= (1<<LCD_CMD)
#define LCD_ENABLE_E() LCD_PORT_CTRL &= ~(1<<LCD_E )
#define LCD_DISABLE_E() LCD_PORT_CTRL |= (1<<LCD_E )



void LCDinit(void)
{

// Переводим в исходное состояние линии управления ЖКИ:
// все выходы в нулевом состоянии, только CS1 и CS2 = "1".
LCD_DDR_CTRL |= (1 << LCD_CS) | (1 << LCD_RES) | (1 << LCD_E) | (1 << LCD_RW) | (1 << LCD_A0) ;
LCD_PORT_CTRL &= ~((1 << LCD_CS) | (1 << LCD_RES) | (1 << LCD_E) | (1 << LCD_RW) | (1 << LCD_A0) );
LCD_PORT_CTRL |= (1 << LCD_CS);
// Выполняем аппаратный сброс модуля. Паузы формируем программно, так как
// прерывания еще могут быть не разрешены.

LCD_PORT_CTRL |= ( (1<<LCD_CMD) | (1<<LCD_E) );
lcd_out_ctl(0);
lcd_out_ctl(LCD_RESET);
_delay_ms(100);
lcd_out_ctl(LCD_DISP_ON);
lcd_out_ctl(LCD_SET_ADC_REV); // !
lcd_out_ctl(LCD_SET_LINE+0);
lcd_out_ctl(LCD_SET_PAGE+0);
lcd_out_ctl(LCD_SET_COL+LCD_STARTCOL_REVERSE);

LCD_PORT_CTRL |= _BV(LCD_E);
LCD_PORT_CTRL &= ~_BV(LCD_RES);
_delay_loop_2(40);
LCD_PORT_CTRL |= _BV(LCD_RES);
_delay_loop_2(40);
WriteCodeL(0xE2);//Reset
_delay_loop_2(40);
WriteCodeR(0xE2);//Reset
_delay_loop_2(40);
WriteCodeL(0xEE);//ReadModifyWrite off
_delay_loop_2(40);
WriteCodeR(0xEE);//ReadModifyWrite off
_delay_loop_2(40);
WriteCodeL(0xA4);//Включить обычный режим
_delay_loop_2(40);
WriteCodeR(0xA4);//Включить обычный режим
_delay_loop_2(40);
WriteCodeL(0xA9);//Мультиплекс 1/32
_delay_loop_2(40);
WriteCodeR(0xA9);//Мультиплекс 1/32
_delay_loop_2(40);
WriteCodeL(0xC0);//Верхнюю строку на 0
_delay_loop_2(40);
WriteCodeR(0xC0);//Верхнюю строку на 0
_delay_loop_2(40);
WriteCodeL(0xA1);//Invert scan RAM
_delay_loop_2(40);
WriteCodeR(0xA0);//NonInvert scan RAM
_delay_loop_2(40);
WriteCodeL(0xAF);//Display on
_delay_loop_2(40);
WriteCodeR(0xAF);//Display on
_delay_loop_2(40);

}


void WriteByte(char b, int cd, int lr)
{
//При необходимости настроить здесь шину данных на вывод
LCD_PORT_CTRL &= ~_BV(LCD_RW);// LCD.RW=0;
if (cd==1) LCD_PORT_CTRL |= _BV(LCD_A0); else LCD_PORT_CTRL &= ~_BV(LCD_A0);// LCD.A0=cd; //Выдача байта в индикатор как данных или команды
if (lr==1) LCD_PORT_CTRL |= _BV(LCD_CS); else LCD_PORT_CTRL &= ~_BV(LCD_CS);// LCD.CS=lr;
LCD_PORT_DATA = b;// LCD.D=b; //Выбрать кристалл индикатора и выдать байт на шину данных индикатора
_delay_loop_2(70); //Это время предустановки адреса (tAW)
LCD_PORT_CTRL &= ~_BV(LCD_E); // LCD.E=0;
_delay_loop_2(240); //Длительность сигнала E=0 (время предустановки данных попало сюда (tDS))
LCD_PORT_CTRL |= _BV(LCD_E); // LCD.E=1;
_delay_ms(10); //Минимально допустимый интервал между сигналами E=0
}


void WriteCodeL(char cool.gif { WriteByte(b,0,1); }//Команду в левый кристалл индикатора
void WriteCodeR(char cool.gif { WriteByte(b,0,0); }//Команду в правый кристалл индикатора

void WriteDataL(char cool.gif { WriteByte(b,1,1); }//Данные в левую половину индикатора
void WriteDataR(char cool.gif { WriteByte(b,1,0); }//Данные в правую половину индикатора


ну и в main

LCDinit();
for(p=0; p<4; p++) {//Цикл по всем 4-м страницам индикатора
WriteCodeL(p|0xB8);//Установка текущей страницы для левого кристалла индикатора
WriteCodeL(0x13);//Установка текущего адреса для записи данных в левую отображаемую позицию левой половины индикатора
for(c=0; c<61; c++) {//Цикл вывода данных в левую половину индикатора
WriteDataL(Logo122[p][c]);//Вывод очередного байта в индикатор
}
WriteCodeR(p|0xB8);//Установка текущей страницы для правого кристалла индикатора
WriteCodeR(0x00);//Установка текущего адреса для записи данных в левую отображаемую позицию правой половины индикатора
for(c=61; c<122; c++) {//Цикл вывода данных в правую половину индикатора
WriteDataR(Logo122[p][c]);//Вывод очередного байта в индикатор
}
}

----
может хня какая-то с задержками опять? у меня atmega16 8Mhz

ни у кого нет работающего минимального кода для GCC ? а то может быть что с МЭЛТом?
Go to the top of the page
 
+Quote Post
prottoss
сообщение Dec 6 2006, 19:36
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(asf @ Dec 6 2006, 23:08) *
Код
void WriteByte(char b, int cd, int lr)
{
//При необходимости настроить здесь шину данных на вывод
LCD_PORT_CTRL &= ~_BV(LCD_RW);// LCD.RW=0;
if (cd==1) LCD_PORT_CTRL |= _BV(LCD_A0); else LCD_PORT_CTRL &= ~_BV(LCD_A0);// LCD.A0=cd; //Выдача байта в индикатор как данных или команды
if (lr==1) LCD_PORT_CTRL |= _BV(LCD_CS); else LCD_PORT_CTRL &= ~_BV(LCD_CS);// LCD.CS=lr;
LCD_PORT_DATA = b;// LCD.D=b; //Выбрать кристалл индикатора и выдать байт на шину данных индикатора
_delay_loop_2(70); //Это время предустановки адреса (tAW)
LCD_PORT_CTRL &= ~_BV(LCD_E); // LCD.E=0;
_delay_loop_2(240); //Длительность сигнала E=0 (время предустановки данных попало сюда (tDS))
LCD_PORT_CTRL |= _BV(LCD_E); // LCD.E=1;
_delay_ms(10); //Минимально допустимый интервал между сигналами E=0
}

----
может хня какая-то с задержками опять? у меня atmega16 8Mhz
ни у кого нет работающего минимального кода для GCC ? а то может быть что с МЭЛТом?




70 и 240 - это в микросекундах??? Откуда такие цифры? По моему, есть время цикла (по МЭЛТовскому даташиту), которое равно 1000 НС, и время предустановки адреса - 20 НС - это время вообще можно игнорировать...

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


--------------------
Go to the top of the page
 
+Quote Post
asf
сообщение Dec 7 2006, 12:26
Сообщение #14


Участник
*

Группа: Новичок
Сообщений: 29
Регистрация: 19-12-05
Пользователь №: 12 407



Смотрел, пробовал уже все, что-то не так......
распаял кабель на LPT, проверил с компа - живет.....
может глаза замылились?

#define LCD_PORTDATA PORTC
#define LCD_DDRDATA DDRC
#define LCD_PINDATA PINC

#define LCD_PORTCONTROL PORTA
#define LCD_DDRCONTROL DDRA
#define LCD_wire_A0 PA3
#define LCD_wire_RW PA4
#define LCD_wire_E PA5
#define LCD_RES PA6
#define LCD_wire_CS PA7

LCD_PORTDATA = 0x00;
LCD_DDRDATA = 0xFF;
LCD_PORTCONTROL = 0x00;
LCD_DDRCONTROL = 0xFF;

LCD_PORTCONTROL |= _BV(LCD_wire_E); // LCD.E=1;//Начальное значение сигнала индикатору
LCD_PORTCONTROL &= ~_BV(LCD_RES); // LCD.RES=0;//Выдать сигнал RES=0 индикатору
_delay_us(100); // Задержка на время больше 10 мкс
LCD_PORTCONTROL |= _BV(LCD_RES); // LCD.RES=1;//Снять сигнал RES
_delay_ms(5); // Delay(>1ms);//Задержка на время больше 1 мс
WriteCodeL(0xE2);//Reset
WriteCodeR(0xE2);//Reset
WriteCodeL(0xEE);//ReadModifyWrite off
WriteCodeR(0xEE);//ReadModifyWrite off
WriteCodeL(0xA4);//Включить обычный режим
WriteCodeR(0xA4);//Включить обычный режим
WriteCodeL(0xA9);//Мультиплекс 1/32
WriteCodeR(0xA9);//Мультиплекс 1/32
WriteCodeL(0xC0);//Верхнюю строку на 0
WriteCodeR(0xC0);//Верхнюю строку на 0
WriteCodeL(0xA1);//Invert scan RAM
WriteCodeR(0xA0);//NonInvert scan RAM
WriteCodeL(0xAF);//Display on
WriteCodeR(0xAF);//Display on


for(p=0; p<4; p++) {//Цикл по всем 4-м страницам индикатора
WriteCodeL(p|0xB8);//Установка текущей страницы для левого кристалла индикатора
WriteCodeL(0x13);//Установка текущего адреса для записи данных в левую отображаемую позицию левой половины индикатора
for(c=0; c<61; c++) {//Цикл вывода данных в левую половину индикатора
WriteDataL(Logo122[p][c]);//Вывод очередного байта в индикатор
}
WriteCodeR(p|0xB8);//Установка текущей страницы для правого кристалла индикатора
WriteCodeR(0x00);//Установка текущего адреса для записи данных в левую отображаемую позицию правой половины индикатора
for(c=61; c<122; c++) {//Цикл вывода данных в правую половину индикатора
WriteDataR(Logo122[p][c]);//Вывод очередного байта в индикатор
}
}

// Установка цикла обмена по шине данных
#define LCD_StrCYC() (LCD_PORTCONTROL |= LCD_wire_E) // начало цикла обмена данными
#define LCD_EndCYC() (LCD_PORTCONTROL &= ~LCD_wire_E) // окончание цикла обмена данными

//Процедура выдачи байта в индикатор
void WriteByte(char b, int cd, int lr)
{
//При необходимости настроить здесь шину данных на вывод
// LCD.RW=0; LCD.A0=cd; //Выдача байта в индикатор как данных или команды
LCD_PORTCONTROL &= ~_BV(LCD_wire_RW);
if (cd) LCD_PORTCONTROL |= _BV(LCD_wire_A0); else LCD_PORTCONTROL &= ~_BV(LCD_wire_A0);
// LCD.CS=lr; LCD.D=b; //Выбрать кристалл индикатора и выдать байт на шину данных индикатора
if (lr) LCD_PORTCONTROL |= _BV(LCD_wire_CS); else LCD_PORTCONTROL &= ~_BV(LCD_wire_CS);
LCD_PORTDATA = b;
_delay_us(100); //Это время предустановки адреса (tAW)
LCD_StrCYC(); // начало строба
LCD_EndCYC(); // конец строба
}

void WriteCodeL(char cool.gif { WriteByte(b,0,1); }//Команду в левый кристалл индикатора
void WriteCodeR(char cool.gif { WriteByte(b,0,0); }//Команду в правый кристалл индикатора

void WriteDataL(char cool.gif { WriteByte(b,1,1); }//Данные в левую половину индикатора
void WriteDataR(char cool.gif { WriteByte(b,1,0); }//Данные в правую половину индикатора
Go to the top of the page
 
+Quote Post
prottoss
сообщение Dec 7 2006, 13:09
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



А зачем ресетом рулить? ИМХО где то здесь косяк может быть, я когда начинал с граф. ЖКИ работать помнится тоже траблы были, пока не пришпилил его жестко через RC-цепь... Если все же хочется контроллером рулить RESET, то надо все равно предусмотреть установку этой линии в исходное состояние автоматом...


--------------------
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 06:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.01563 секунд с 7
ELECTRONIX ©2004-2016