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

 
 
 
Reply to this topicStart new topic
> Как запустить T6963C, библиотечная функция MicroPascal
AntonSor
сообщение May 20 2009, 19:45
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 10-05-09
Из: Видное, МО
Пользователь №: 48 875



Имею индикатор LM240128TCC производства Topway. Собираюсь использовать его для вот этого прибора: http://electronix.ru/forum/index.php?showtopic=62661 в качестве дисплея. Подключил я этот индикатор к плате BIGAVR2 (atmega128) и загрузил пример с диска платы (паскалевского компилятора). Включаю - на индикаторе вместо фигур из примера одна горизонтальная линия. Читаю внимательно даташит индикатора и вижу пометку: Logical Display Size in not equal Physical Display Size и указание вместо размера 240х128 инициализировать его как 320х64. Странно - ведь 320*64 меньше, чем 240*128! Часть точек не будет показываться.
Но на 320 точек этот "микропаскаль" не может инициализировать индикатор - у него размер в процедуре инициализации T6963C_init имеет тип byte, т.е. до 255 точек.
---
procedure T6963C_init(width, height, fntW : byte);
width: width of the GLCD panel
height: height of the GLCD panel
fntW: font width
---
Кто-нибудь сталкивался с таким индикатором? Как его запускали - как 240х128 или как 320х64? Что посоветуете мне сделать?
Исходник для MicroPascal 1.25 прилагаю. Кварц 10 МГц.
Спасибо!
Причина редактирования: Обширные "исходники" удалены

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Nickolya_K
сообщение Jun 12 2009, 10:23
Сообщение #2





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



в настоящее время ковыряю wg240128b с контроллером T6963C
самый внятный документ http://cst.mi.fu-berlin.de/projects/Scatte...ld/T6963C_2.pdf
пока все строго работает по написаному
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 12 2009, 17:02
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Nickolya_K @ Jun 12 2009, 13:23) *
самый внятный документ...

Не понять Вам проблем паскалистов в их поисках "компонентов" sad.gif. Он-же не документ спрашивал...


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
AntonSor
сообщение Jun 12 2009, 19:17
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 10-05-09
Из: Видное, МО
Пользователь №: 48 875



Спасибо! Я отложил пока этот индикатор, сначала сделаю с тем, с которым все получается (128х64), отлажу управление LMX2326. Синтезаторы и смесители уже пришли, делаю общую плату - но эта тема для другой ветки, RF. А потом уже буду запускать LM240128TCC. И делать по "документу" все равно придется :-) И не пользоваться ни той библиотекой, ни функцией T6963C_init.
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Jun 12 2009, 22:02
Сообщение #5


;
******

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



Цитата(AntonSor @ Jun 12 2009, 22:17) *
И не пользоваться ни той библиотекой, ни функцией T6963C_init.

Я так понял, что микропаскаль продолжает отжигать. Интересно, а в легальной версии самописные программы с плавучкой нормально собираются?
Go to the top of the page
 
+Quote Post
Nickolya_K
сообщение Jun 15 2009, 14:19
Сообщение #6





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



wg240128b с контроллером T6963C
контроллер mega88
внутренний RC генератор
у меня устойчиво работает при тактовой частоте контроллера 2 МГц и ниже
Go to the top of the page
 
+Quote Post
AntonSor
сообщение Aug 18 2009, 18:11
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 10-05-09
Из: Видное, МО
Пользователь №: 48 875



Некоторое время :-) спустя опять дошли руки до этого индикатора.
Взял я этот "самый внятный документ" и проделал все описанные в нем действия:
ресетнул индикатор;
проверил статус, и проверял далее - два последних бита всегда были =1! т.е. STA0 и STA1 =1, готов к получению новых данных и команд;
послал graphics home address = 0800h;
послал graphics area set = 1eh;
послал text home adress = 0;
послал text area set = 1eh;
послал mode set = 81h (XOR);
послал display mode = 9f (все, включая blink, включено).
В руководстве написано: если вы выполнили шаги, указанные выше, вы должны видеть дисплей, полный мусора. Мусор не вижу :-( Вижу чистый экран.

Наконец, послал Address pointer =0, записал в память командой c4h байт 21h и попробовал считать его обратно командой c5h.
На линии данных вижу не 21h, а c5h! С ума сойти! :-)
Что я делаю не так?
В программе повставлял вывод статуса на дисплей, имеющийся в отладочной плате, и добавлял (вернее, раскомментировал) процедуры отправки данных по одной. Статус выдается "хороший" - STA0 и STA1 =1, после посылки команд с4h и STA3 =1, после c5h STA2 = 1.

Что мне следует проверить и каким образом?
"Обширные исходники" прилагаю.
Спасибо!

CODE
program t240x128test;

{ Declarations section }

uses __Lib_T6963C_Consts, __Lib_T6963C;

// T6963C module connections
var T6963C_ctrlPort : byte at PORTE; // CONTROL port
var T6963C_dataPort : byte at PORTD; // DATA port
var T6963C_ctrlPort_Direction : byte at DDRE; // CONTROL direction register
var T6963C_dataPort_Direction : byte at DDRD; // DATA direction register

var T6963C_ctrlwr : sbit at PORTE.B0; // WR write signal
var T6963C_ctrlrd : sbit at PORTE.B1; // RD read signal
var T6963C_ctrlcd : sbit at PORTE.B3; // CD command/data signal
var T6963C_ctrlrst : sbit at PORTE.B4; // RST reset signal
var T6963C_ctrlwr_Direction : sbit at DDRE.B0; // WR write signal direction
var T6963C_ctrlrd_Direction : sbit at DDRE.B1; // RD read signal direction
var T6963C_ctrlcd_Direction : sbit at DDRE.B3; // CD command/data signal direction
var T6963C_ctrlrst_Direction : sbit at DDRE.B4; // RST reset signal direction

// Signals not used by library, they are set in main function
var T6963C_ctrlce : sbit at PORTE.B2; // CE signal
var T6963C_ctrlfs : sbit at PORTE.B5; // FS signal
var T6963C_ctrlmd : sbit at PORTE.B6; // MD signal
var T6963C_ctrlce_Direction : sbit at DDRE.B2; // CE signal direction
var T6963C_ctrlfs_Direction : sbit at DDRE.B5; // FS signal direction
var T6963C_ctrlmd_Direction : sbit at DDRE.B6; // MD signal direction
// End T6963C module connections

var LCD_RS : sbit at PORTC.B2;
var LCD_EN : sbit at PORTC.B3;
var LCD_D4 : sbit at PORTC.B4;
var LCD_D5 : sbit at PORTC.B5;
var LCD_D6 : sbit at PORTC.B6;
var LCD_D7 : sbit at PORTC.B7;

var LCD_RS_Direction : sbit at DDRC.B2;
var LCD_EN_Direction : sbit at DDRC.B3;
var LCD_D4_Direction : sbit at DDRC.B4;
var LCD_D5_Direction : sbit at DDRC.B5;
var LCD_D6_Direction : sbit at DDRC.B6;
var LCD_D7_Direction : sbit at DDRC.B7;


Procedure Status(var txtx:string[15]);
var ttt:byte; txt:string[7];
begin
//читаем статус и пишем его на дисплей
T6963C_dataPort_Direction:=0;
T6963C_ctrlwr:=1;
T6963C_ctrlcd:=1;
T6963C_ctrlrd:=0;
T6963C_ctrlce:=0;
delay_us(1);
lcd_out(1,1,txtx);
ttt:=PIND;
inttostr(ttt,txt);
//процiдурка для разгребания статусных бит
if(ttt and 1) then lcd_out(2,8,'1') else lcd_out(2,8,'0');
if(ttt and 2) then lcd_out(2,7,'1') else lcd_out(2,7,'0');
if(ttt and 4) then lcd_out(2,6,'1') else lcd_out(2,6,'0');
if(ttt and 8) then lcd_out(2,5,'1') else lcd_out(2,5,'0');
if(ttt and 16) then lcd_out(2,4,'1') else lcd_out(2,4,'0');
if(ttt and 32) then lcd_out(2,3,'1') else lcd_out(2,3,'0');
if(ttt and 64) then lcd_out(2,2,'1') else lcd_out(2,2,'0');
if(ttt and 128) then lcd_out(2,1,'1') else lcd_out(2,1,'0');
lcd_out(2,9,txt);

T6963C_ctrlce:=1;
end;

Procedure WriteData(Datas:byte);
begin
T6963C_dataPort_Direction:=255;
T6963C_dataPort:=Datas;
T6963C_ctrlcd:=0;
T6963C_ctrlrd:=1;
T6963C_ctrlwr:=0;
delay_us(1);
T6963C_ctrlce:=0;
delay_us(1);
T6963C_ctrlce:=1;
T6963C_dataPort_Direction:=0;
end;
Procedure WriteCommand(Datas:byte);
begin
T6963C_dataPort_Direction:=255;
T6963C_dataPort:=Datas;
T6963C_ctrlcd:=1;
T6963C_ctrlrd:=1;
T6963C_ctrlwr:=0;
delay_us(1);
T6963C_ctrlce:=0;
delay_us(1);
T6963C_ctrlce:=1;
T6963C_dataPort_Direction:=0;
end;

Function ReadData():byte;
begin
T6963C_dataPort_Direction:=0;
T6963C_ctrlcd:=0;
T6963C_ctrlwr:=1;
T6963C_ctrlrd:=0;
T6963C_ctrlce:=0;
delay_us(1);
ReadData:=T6963C_dataPort;
T6963C_ctrlce:=1;
end;

Procedure Init();
begin
//по-своему
//ресетим контроллер
T6963C_ctrlrst:=0;
delay_us(10);
T6963C_ctrlrst:=1;
delay_us(10);
T6963C_ctrlce:=1;
Status('s');
//теперь шлем graphics home address
//data
WriteData(0);
//статус
Status('s gha 1');
WriteData(0x08);
Status('s gha 2');
WriteCommand(0x42);
// проверяем...
Status('s ');
//теперь шлем graphics area set
//data
WriteData(0x1e);
//статус
Status('s gas 1');
WriteData(0);
Status('s gas 2');
WriteCommand(0x43);
// проверяем...
Status('s ');
//теперь шлем text home adress
//data
WriteData(0x00);
//статус
Status('s tha 1');
WriteData(0x00);
Status('s tha 2');
WriteCommand(0x40);
// проверяем...
Status('s ');
//теперь шлем text area set
//data
WriteData(0x1e);
//статус
Status('s tas 1');
WriteData(0x00);
Status('s tas 2');
WriteCommand(0x41);
// проверяем...
Status('s ');

//теперь шлем mode set
WriteCommand(0x81); //xor
// проверяем...
Status('s ms ');
//теперь шлем display mode
WriteCommand(0x9f); //все включено
// проверяем...
Status('s dm ');

end;

var {panel : byte; // current panel
i : word; // general purpose register
curs : byte; // cursor visibility
cposx,
cposy : word; // cursor x-y position
txtcols : byte; // number of text coloms }
txt, txt1 : string[16];
ttt:byte;




begin
Lcd_Init(); // Initialize LCD
Lcd_Cmd(LCD_CLEAR); // Clear display
Lcd_Cmd(LCD_CURSOR_OFF); // Cursor off
T6963C_ctrlce_Direction := 1;
T6963C_ctrlce := 0; // Enable T6963C
T6963C_ctrlfs_Direction := 1;
T6963C_ctrlfs := 0; // Font Select 8x8
T6963C_ctrlmd_Direction := 1;
T6963C_ctrlmd := 0; // Column number select
T6963C_ctrlcd_Direction := 1;
T6963C_ctrlcd := 0; // Cd
T6963C_ctrlrst_Direction := 1;
T6963C_ctrlrst := 0; // reset
T6963C_ctrlwr_Direction:=1;
T6963C_ctrlrd_Direction:=1;

//начнем
Init();

//теперь шлем address pointer
//data
WriteData(0x0);
//статус
Status('s tap 1');
WriteData(0x00);
Status('s tap 2');
WriteCommand(0x24);
// проверяем...
Status('s ');
WriteData(0x21);
Status('s 21 ');
WriteCommand(0xc4); //записали

Status('s c4 '); //считываем то, что записали
WriteCommand(0xc5);
Status('s c5 ');
ByteToStr(ReadData,txt);
lcd_out(2,1,txt);





repeat
lcd_out(1,16,'x'); //признак конца
until false;
end.
Go to the top of the page
 
+Quote Post
AntonSor
сообщение Aug 20 2009, 18:05
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 10-05-09
Из: Видное, МО
Пользователь №: 48 875



Проверил разводку проводов - не ошибся!
Скажите, а можно как-нибудь ещё этот индикатор проверить? Скажем, модуль на KS0066 можно подключить к порту LPT компьютера и, запустив специальную программу, что-нибудь вывести. А для графических индикаторов есть такое?
Спасибо.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 20 2009, 19:35
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(AntonSor @ Aug 18 2009, 20:11) *
В руководстве написано: если вы выполнили шаги, указанные выше, вы должны видеть дисплей, полный мусора. Мусор не вижу :-( Вижу чистый экран.

Мусор, помнится, уже будет, если только reset снять.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
AntonSor
сообщение Aug 22 2009, 16:09
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 10-05-09
Из: Видное, МО
Пользователь №: 48 875



Очень жаль, значит, индикатор - в морг :-(
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 22 2009, 16:26
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(AntonSor @ Aug 22 2009, 18:09) *
Очень жаль, значит, индикатор - в морг :-(

Или,разобраться с подключением медленно и печально. Питание, снятие reset, что подавать для регулировки контрастности...


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Александр T
сообщение Aug 22 2009, 17:59
Сообщение #12





Группа: Участник
Сообщений: 10
Регистрация: 25-07-07
Пользователь №: 29 359



Сей дисплей можно запустить только програмно!
Читайте внимательно даташит.
Обратите внимание на первоначальную загрузку регистров.
Вы должны САМИ расчитать некоторые величины для загрузки, именно для этого приведен пример в даташите!
Там-же есть пример программы.
Пока Вы не сделаете ПРАВИЛЬНУЮ ИНИЦИАЛИЗАЦИЮ Вы никакого изображения на дисплее не получите!!!!
Причем ни в графической моде ни в текстовой.


    Небольшое обьяснение
    Прикрепленные файлы
    Прикрепленный файл  _______________________PG24064.pdf ( 191.78 килобайт ) Кол-во скачиваний: 4156
     
    Go to the top of the page
     
    +Quote Post
    AntonSor
    сообщение Aug 22 2009, 18:06
    Сообщение #13


    Участник
    *

    Группа: Участник
    Сообщений: 30
    Регистрация: 10-05-09
    Из: Видное, МО
    Пользователь №: 48 875



    Спасибо, изучу и этот документ и ещё раз проверю подключение.
    Go to the top of the page
     
    +Quote Post

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

     


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


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