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

 
 
> Народ поделитесь библиотекой 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
 
Start new topic
Ответов
asf
сообщение Dec 6 2006, 19:08
Сообщение #2


Участник
*

Группа: Новичок
Сообщений: 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

Сообщений в этой теме
- TamTam   Народ поделитесь библиотекой SED1520 для дисплея MT-12232   Jun 8 2006, 09:48
- - prottoss   Цитата(TamTam @ Jun 8 2006, 17:48) Ну или...   Jun 8 2006, 11:09
- - TamTam   Цитата(prottoss @ Jun 8 2006, 15:09) Цита...   Jun 8 2006, 16:44
|- - prottoss   Цитата(TamTam @ Jun 9 2006, 00:44) Цитата...   Jun 8 2006, 16:59
- - TamTam   Цитата(prottoss @ Jun 8 2006, 20:59) Цита...   Jun 8 2006, 22:13
- - TamTam   Результатом поиска стали бве библы, но они к сожал...   Jun 8 2006, 22:53
- - TamTam   Может есть у кого библа для CVAVR, для любого друг...   Jun 8 2006, 23:06
- - otrog   Цитата с сайта МЭЛТ: ЦитатаА нет ли примера програ...   Jun 9 2006, 07:02
- - ROC   Что-то было на www.8052.com.... http://www.8052.co...   Jun 9 2006, 07:25
- - proba   для GCC но легко переделать, : схема самого просто...   Jun 10 2006, 07:39
|- - prottoss   Цитата(proba @ Jun 10 2006, 15:39) для GC...   Jun 10 2006, 08:07
|- - prottoss   Цитата(asf @ Dec 6 2006, 23:08) Кодvoid W...   Dec 6 2006, 19:36
- - asf   Смотрел, пробовал уже все, что-то не так...... рас...   Dec 7 2006, 12:26
- - prottoss   А зачем ресетом рулить? ИМХО где то здесь косяк мо...   Dec 7 2006, 13:09
|- - asf   Цитата(prottoss @ Dec 7 2006, 13:09) А за...   Dec 7 2006, 13:28
|- - prottoss   Цитата(asf @ Dec 7 2006, 17:28) пофиг ...   Dec 7 2006, 13:42
- - asf   //************************************************...   Dec 7 2006, 17:43
- - prottoss   не пойму надобность демонстрировать один и тот же ...   Dec 7 2006, 18:01
- - asf   Цитата(prottoss @ Dec 7 2006, 18:01) не п...   Dec 7 2006, 18:15
- - prottoss   Цитата(asf @ Dec 7 2006, 22:15) Цитата(pr...   Dec 7 2006, 18:34
- - asf   Цитата(prottoss @ Dec 7 2006, 18:34) Цита...   Dec 7 2006, 18:45


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 17:56
Рейтинг@Mail.ru


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