AntonSor 0 20 мая, 2009 Опубликовано 20 мая, 2009 · Жалоба Имею индикатор 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 МГц. Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nickolya_K 0 12 июня, 2009 Опубликовано 12 июня, 2009 · Жалоба в настоящее время ковыряю wg240128b с контроллером T6963C самый внятный документ http://cst.mi.fu-berlin.de/projects/Scatte...ld/T6963C_2.pdf пока все строго работает по написаному Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 12 июня, 2009 Опубликовано 12 июня, 2009 · Жалоба самый внятный документ... Не понять Вам проблем паскалистов в их поисках "компонентов" :(. Он-же не документ спрашивал... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AntonSor 0 12 июня, 2009 Опубликовано 12 июня, 2009 · Жалоба Спасибо! Я отложил пока этот индикатор, сначала сделаю с тем, с которым все получается (128х64), отлажу управление LMX2326. Синтезаторы и смесители уже пришли, делаю общую плату - но эта тема для другой ветки, RF. А потом уже буду запускать LM240128TCC. И делать по "документу" все равно придется :-) И не пользоваться ни той библиотекой, ни функцией T6963C_init. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 12 июня, 2009 Опубликовано 12 июня, 2009 · Жалоба И не пользоваться ни той библиотекой, ни функцией T6963C_init. Я так понял, что микропаскаль продолжает отжигать. Интересно, а в легальной версии самописные программы с плавучкой нормально собираются? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nickolya_K 0 15 июня, 2009 Опубликовано 15 июня, 2009 · Жалоба wg240128b с контроллером T6963C контроллер mega88 внутренний RC генератор у меня устойчиво работает при тактовой частоте контроллера 2 МГц и ниже Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AntonSor 0 18 августа, 2009 Опубликовано 18 августа, 2009 · Жалоба Некоторое время :-) спустя опять дошли руки до этого индикатора. Взял я этот "самый внятный документ" и проделал все описанные в нем действия: ресетнул индикатор; проверил статус, и проверял далее - два последних бита всегда были =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. Что мне следует проверить и каким образом? "Обширные исходники" прилагаю. Спасибо! 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AntonSor 0 20 августа, 2009 Опубликовано 20 августа, 2009 · Жалоба Проверил разводку проводов - не ошибся! Скажите, а можно как-нибудь ещё этот индикатор проверить? Скажем, модуль на KS0066 можно подключить к порту LPT компьютера и, запустив специальную программу, что-нибудь вывести. А для графических индикаторов есть такое? Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 20 августа, 2009 Опубликовано 20 августа, 2009 · Жалоба В руководстве написано: если вы выполнили шаги, указанные выше, вы должны видеть дисплей, полный мусора. Мусор не вижу :-( Вижу чистый экран. Мусор, помнится, уже будет, если только reset снять. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AntonSor 0 22 августа, 2009 Опубликовано 22 августа, 2009 · Жалоба Очень жаль, значит, индикатор - в морг :-( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 22 августа, 2009 Опубликовано 22 августа, 2009 · Жалоба Очень жаль, значит, индикатор - в морг :-( Или,разобраться с подключением медленно и печально. Питание, снятие reset, что подавать для регулировки контрастности... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ur5fia 0 22 августа, 2009 Опубликовано 22 августа, 2009 · Жалоба Сей дисплей можно запустить только програмно! Читайте внимательно даташит. Обратите внимание на первоначальную загрузку регистров. Вы должны САМИ расчитать некоторые величины для загрузки, именно для этого приведен пример в даташите! Там-же есть пример программы. Пока Вы не сделаете ПРАВИЛЬНУЮ ИНИЦИАЛИЗАЦИЮ Вы никакого изображения на дисплее не получите!!!! Причем ни в графической моде ни в текстовой. Небольшое обьяснение _______________________PG24064.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AntonSor 0 22 августа, 2009 Опубликовано 22 августа, 2009 · Жалоба Спасибо, изучу и этот документ и ещё раз проверю подключение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться