comper 0 17 ноября, 2008 Опубликовано 17 ноября, 2008 · Жалоба я же написал, что читаю и по английски...мне от перевода легче не стало...=) кто-нить может популярно объяснить как работают эти биты? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
petrd 0 17 ноября, 2008 Опубликовано 17 ноября, 2008 · Жалоба я же написал, что читаю и по английски...мне от перевода легче не стало...=) кто-нить может популярно объяснить как работают эти биты? Не надо нервничать - это я к тому, что никто давиться в очереди не будет, чтобы разъяснить Вам все детали этого ЖКИ, это один из немногих топиков на русском, где хоть что-то говорят про этот контроллер. Если Вам не нравятся мои слова, то читайте и эксперементируйте. Я тоже в свое время здесь задавал вопрос когда взял в руки этот индикатор, какой ответ я получил можете найти. Но все же. Из собственного опыта: DM1= DM2=OV= 0. Текстовый режим - верхний слой текстовый, второй слой графический, третьего слоя не будет. DM1=DM2=OV=1: Графический режим - может быть до трех графических слоев, по Вашему желанию, но текста не будет. Если делать по другому, то начинаются фокусы. Все что я говорил это о полном экране, а не о блочном. И почувствуйте разницу между Screen blocks и layer, это к - Note 1: Screen blocks 2 and 4 can only display graphics. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BelTech 0 18 ноября, 2008 Опубликовано 18 ноября, 2008 · Жалоба А какой ток потребляет сей прибор в рабочем режиме? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
petrd 0 19 ноября, 2008 Опубликовано 19 ноября, 2008 · Жалоба А какой ток потребляет сей прибор в рабочем режиме? По datasheet 100 mA без подсветки, сам не мерил. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BelTech 0 19 ноября, 2008 Опубликовано 19 ноября, 2008 · Жалоба Подскажите, пожалуйста, где в Москве лучше всего купить lcd, плис, mcu, ацп и fifo для этого осцика? Я сам из Беларуси, но сейчас мой друг в Москве, хочу его попросить купить детальки, но хочется, что бы это был один магазин и другу не пришлось ездить с одного конца города в другой. Ну и конечно где подешевле. За проделанную работу :a14: . Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rostislav78 0 20 ноября, 2008 Опубликовано 20 ноября, 2008 · Жалоба Подскажите, пожалуйста, где в Москве лучше всего купить lcd, плис, mcu, ацп и fifo для этого осцика? Я сам из Беларуси, но сейчас мой друг в Москве, хочу его попросить купить детальки, но хочется, что бы это был один магазин и другу не пришлось ездить с одного конца города в другой. Ну и конечно где подешевле. За проделанную работу :a14: . Магазинов в Москве, где можно купить детальки, не так много. Вот, например, Чип и Дип (_ww.chip-dip.ru). Через интернет можно оформить заказ. :) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BelTech 0 20 ноября, 2008 Опубликовано 20 ноября, 2008 · Жалоба В чип-дип нет экрана и других микросхем, так что нужны ещё варианты. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andreichk 0 22 ноября, 2008 Опубликовано 22 ноября, 2008 · Жалоба ///////////////////////////////////////////////////////////////////////// //// SED1335_MOD.c //// //// Модифицированный модуль управления ЖКИ 320х240 пикселей //// //// Example drivers for the SED1335 LCD controller //// ///////////////////////////////////////////////////////////////////////// #ifndef SED1335_VERSION #define SED1335_VERSION 0x0000 #ifndef GLCD_WIDTH #define GLCD_WIDTH 320 #endif #ifndef GLCD_HEIGHT #define GLCD_HEIGHT 240 #endif #ifndef LCD_RESET #define LCD_RESET PIN_E3// #endif #ifndef LCD_RD #define LCD_RD PIN_E0// #endif #ifndef LCD_WR #define LCD_WR PIN_E1// #endif #ifndef LCD_A0 #define LCD_A0 PIN_E2// #endif #ifndef LCD_CS #define LCD_CS PIN_C3// #endif //############################################################################## VOID LCD_init_Grafik( void ); void OVERLAY( unsigned int ovlay ); void display_off( void ); void enable_display( void ); void write_data( unsigned char Data ); void send_msg( unsigned char Data, unsigned char A0, unsigned char WR, unsigned char RD, unsigned char CS ); void text_cursor_pos( unsigned INT16 Position ); void clear_text( void ); void clear_graphic(void ); void setCursorAddress(int16 addr); int8 lcd_readByte(); int8 getData(int16 addr); void setData(int16 addr, int8 data); void pixel(int16 x, int16 y, int1 color); void pixel_(int16 x, int16 y, int1 color); void write_char( unsigned char Zeichen ); void flash_textcursor( unsigned char flashing ); //############################################################################## // ----- Level 1 Funktionen ---------------------------------------------- VOID LCD_init_Grafik( void ) { SET_TRIS_E (0); SET_TRIS_D (0);// LCD_TRIS = 0x00; Output_bit(LCD_RESET,0); delay_ms(200); Output_bit(LCD_RESET,1); // --- SEND SYSTEM SET --- // // A0 WR RD CS send_msg( 0x40, 1, 0, 1, 0 ); // C SYSTEM SET instruction send_msg( 0x30, 0, 0, 1, 0 ); // P1 // single panel drive // define display resolution: physical 320pixel / 8 = 40 char-cols ??? // virtual display resolution: 40*8= 320 pixels (X) // 0х86- двухкадровое управление, 0х06- 16ти строчное управление send_msg( 0x87, 0, 0, 1, 0 ); // P2 (FX) - ширина символа (7 pixels) /86 /06 //Установите FY в "0" (вертикальный размер равняется единице) в графическом режиме. send_msg( 0x00, 0, 0, 1, 0 ); // P3 (FY) - высота символа (8 pixels) /0x0 for grafik // allocate 39 bytes for one line адресный диапазон, занимаемый одной строкой дисплея send_msg( 0x27, 0, 0, 1, 0 ); // P4 (c/r) - address range (39) (40 chars) //2b //11 send_msg( 0x39, 0, 0, 1, 0 ); // P5 (tc/r) - length of 1 line (43) (c/r+4) //9f //ef //delay_us(2);//Установка высоты кадра, в линиях. send_msg( 0xef, 0, 0, 1, 0 ); // P6 (l/f) - height (in lines) of a frame (239) //28 //Определяет горизонтальный адресный диапазон виртуального экрана. //APL - младший значащий байт адреса. зона очистки виртуального экрана send_msg( 0x28, 0, 0, 1, 0 ); // P7 (apl) - horiz. addr. range - LOW (40) send_msg( 0x00, 0, 0, 1, 0 ); // P8 (aph) - horiz. addr. range - HIGH //################################################################################ ##### // --- SEND SCROLL PARAMS --- // //Установка начального адреса дисплея и участков дисплея send_msg( 0x44, 1, 0, 1, 0 ); // C (start SCROLL settings) //первый текстовый слой стартовый адрес- 0000 send_msg( 0x00, 0, 0, 1, 0 ); // P1 (SAD 1L) - layer1 start addr. LOW send_msg( 0x00, 0, 0, 1, 0 ); // P2 (SAD 1H) - layer1 start addr. HIGH send_msg( 0xEF, 0, 0, 1, 0 ); // P3 (SL1) -Отображаемых строк в первом экранном блоке - 30 no. of pixels of screen 1 (239) //ef //второй графический слой , нач. адрес- 1200 (dec) 0х040В send_msg( 0x81, 0, 0, 1, 0 ); // P4 (SAD 2L) - layer2 start addr. LOW //b0 send_msg( 0x25, 0, 0, 1, 0 ); // P5 (SAD 2H) - layer2 start addr. HIGH //04 send_msg( 0xEF, 0, 0, 1, 0 ); // P6 (SL2) - no. of pixel rows per screen 2 239 pixels (Y) //ef send_msg( 0x81, 0, 0, 1, 0 ); // P7 (SAD 3L) мл. адрес третьего экранного блока 32 10802 send_msg( 0x25, 0, 0, 1, 0 ); // P8 (SAD 3H) ст. адрес третьего экранного блока 2a send_msg( 0x00, 0, 0, 1, 0 ); // P9 (SAD 4L) (disabled) send_msg( 0x00, 0, 0, 1, 0 ); // P10 (SAD 4H) (disabled) // --- set cursor form (CSRFORM) --- // //Установка типа курсора send_msg( 0x5D, 1, 0, 1, 0 ); // C (start CSRFORM settings) send_msg( 0x03, 0, 0, 1, 0 ); // P1 (CRX) - cursor length толщина курсора send_msg( 0x88, 0, 0, 1, 0 ); // P2 (CM,CRY) - cur. shape, cursor height // --- set character gen. RAM addr (CGRAM ADR) --- // //Установка начального адреса генератора символов RAM // send_msg( 0x5C, 1, 0, 1, 0 ); // C (start CGRAM ADR settings) // send_msg( 0x00, 0, 0, 1, 0 ); // P1 (SAGL) - start addr. LOW 81 // send_msg( 0x00, 0, 0, 1, 0 ); // P2 (SAGH) - start addr. HIGH25 // --- set default auto cursor direction (CSDIR) ---// //Установка направления движения курсора send_msg( 0x4C, 1, 0, 1, 0 ); // C (start CSRDIR settings) - right // --- set horiz. scrolling (HDOT SCR) --- // //Установка позиции горизонтальной прокрутки send_msg( 0x5A, 1, 0, 1, 0 ); // C (start HDOT SCR settings) send_msg( 0x00, 0, 0, 1, 0 ); // P1 number of pixels to scroll down (1) //-------------------------------------------------------------------------------- // Выбор метода композиции(OVLAY) //Выбирает композицию наслоённого экрана и текстовый.графический режим экрана. //MX1 MX2 Функция Метод композиции Применение // 0 0 L1ИL2ИL3 ИЛИ Подчёркивание, инструкции, смешанные текст и графика // 0 1 (L1ЕL2)ИL3 ИСКЛЮЧАЮЩЕЕ ИЛИ Инвертированные символы, мерцающие области, подчёркивание // 1 0 (L1ЗL2)ИL3 И Простая анимация, трёхмерный вид // 1 1 L1>L2>L3 ПРИОРИТЕТНОЕ ИЛИ // 00,01,02,03,10,11,12,13,0c,0d,0e,0f,1c,1d,1e,1f //0d инвертирует картинку send_msg( 0x5B, 1, 0, 1, 0 ); // C (start OVLAY settings) send_msg( 0x0d, 0, 0, 1, 0 ); // P1 screen mode (text), style, 2 layers //-------------------------------------------------------------------------------- display_off( ); clear_graphic(); clear_text(); enable_display(); // DISP ON }//OK //##################################################################### void OVERLAY( unsigned int8 ovlay ) { send_msg( 0x5B, 1, 0, 1, 0 ); // C (start OVLAY settings) switch( ovlay ) { case 1: send_msg( 0x01, 0, 0, 1, 0 );break; // P1 screen mode (text), style, 2 layers case 2: send_msg( 0x10, 0, 0, 1, 0 );break; // P1 screen mode (grafik), style, 2 layers } }//--------------------------OK //#################################################################### void enable_display( void ) { //установить мерцание блоков и курсора send_msg( 0x59, 1, 0, 1, 0 ); // разрешение instruction // send_msg( 0x34, 1, 0, 1, 0 ); //представления двух наложенных графиков на экране // send_msg( 0x56, 0, 0, 1, 0 ); // parameters (no flashing) send_msg( 0x16, 0, 0, 1, 0 );//два блока ,нет мерцания //send_msg( 0x55, 0, 0, 1, 0 );//три блока ,нет мерцания //send_msg( 0xac, 0, 0, 1, 0 );//три блока , мерцание 16Гц // send_msg( 0x3c, 0, 0, 1, 0 );//2 блока , мерцание 16Гц // send_msg( 0x58, 0, 0, 1, 0 );//2 блока , мерцание 16Гц }//OK //##################################################################### void display_off( void ) { //установить мерцание блоков и курсора send_msg( 0x58, 1, 0, 1, 0 ); // разрешение instruction // send_msg( 0x59, 1, 0, 1, 0 ); // запрет instruction // send_msg( 0x56, 0, 0, 1, 0 ); // parameters (no flashing) //send_msg( 0x55, 0, 0, 1, 0 );//3 блока ,нет мерцания send_msg( 0x16, 0, 0, 1, 0 );//два блока ,нет мерцания //send_msg( 0xac, 0, 0, 1, 0 );//три блока , мерцание 16Гц // send_msg( 0x3c, 0, 0, 1, 0 );//2 блока , мерцание 16Гц // send_msg( 0x58, 0, 0, 1, 0 );//2 блока , мерцание 16Гц }//OK //##################################################################### void clear_text( void ) { unsigned long cnt = 0x00; send_msg( 0x42, 1, 0, 1, 0 ); Output_bit(LCD_A0, 0); for( cnt = 0x00; cnt < 1200; cnt++ ) // 680 { write_data( 0x00 ); } }//OK //##################################################################### void clear_graphic( ) { unsigned int16 cnt = 0x0000; send_msg( 0x42, 1, 0, 1, 0 ); #asm BCF 0x0F8D,2 //замена Output_bit(LCD_A0 ,0); #endasm for( cnt = 0x0000;cnt < 9600; cnt++ ) // всё чистит { write_data( 0x00 );//негатив } }//OK //##################################################################### void write_data( unsigned char Data ) { Output_d(Data); #asm BCF 0x0F8B,3//Output_bit(LCD_CS,0);// замена BCF 0x0F8D,1//Output_bit(LCD_WR,0); // BSF 0x0F8D,1//Output_bit(LCD_WR,1);// BSF 0x0F8B,3//Output_bit(LCD_CS,1);// #endasm }//OK //##################################################################### void send_msg( unsigned char Data, unsigned char A0, unsigned char WR, unsigned char RD, unsigned char CS ) { Output_bit(LCD_A0,A0); Output_bit(LCD_WR,WR); Output_bit(LCD_RD,RD); Output_bit(LCD_CS,CS); write_data( Data ); }//OK //##################################################################### // Purpose: Set the cursor address // Inputs: A 16 bit integer containing the new cursor address void setCursorAddress(unsigned int16 addr) { //CSRW Установка адреса курсора send_msg( 0x46, 1, 0, 1, 0 ); #asm BCF 0x0F8D,2//Output_bit(LCD_A0 ,0); #endasm write_data( (addr) & 0x00ff ); write_data( (addr >> 8) & 0x00ff ); }//OK //##################################################################### int8 lcd_readByte() {char data; set_tris_d(0xFF); #asm BCF 0x0F8B,3//Output_bit(LCD_CS,0); BSF 0x0F8D,2//Output_bit(LCD_A0,1); // new line дополнен #endasm delay_us(1); #asm BCF 0x0F8D,0// Output_bit(LCD_RD,0); #endasm delay_us(2); data = input_d(); #asm BSF 0x0F8D,0//Output_bit(LCD_RD,1); BSF 0x0F8B,3//Output_bit(LCD_CS,1); #endasm return data; }//--------------------------OK //#################################################################### int8 getData(unsigned int16 addr) { setCursorAddress(addr); send_msg( 0x43, 1, 0, 1, 0 );//MREAD чтение из памяти дисплея #asm BCF 0x0F8D,2//Output_bit(LCD_A0 ,0); #endasm return lcd_readByte(); }//--------------------------OK //#################################################################### // Purpose: Set a byte of display data at an address // Inputs: 1) A 16 bit address // 2) 8 bits worth //MWRITE 1 0 1 0 1 0 0 0 0 1 0 42 Запись в память дисплея void setData(unsigned int16 addr,unsigned int8 data) { setCursorAddress(addr); send_msg( 0x42, 1, 0, 1, 0 );// #asm BCF 0x0F8D,2//Output_bit(LCD_A0 ,0); #endasm write_data(data); }//--------------------------OK //#################################################################### // Purpose: Turn a pixel on a graphic LCD on or off // Inputs: x - the x coordinate of the pixel // y - the y coordinate of the pixel // color - ON or OFF void pixel(unsigned int16 x,unsigned int16 y, int1 color) { unsigned int8 data; unsigned int16 addr; // расчитать байт адреса, содержащего пиксель // addr = GLCD_GRAPHICS_ADDR + (GLCD_WIDTH/8 * y + x/8); // addr =1200 + (40 * y + x/8);//если первый слой текстовый addr = 40 * y + x/8 + 9601;//если первый слой графический data = getData(addr);//считать байт данных в адресе if(color == 1) bit_set(data, 7 - x%8);//нарисовать пиксель else bit_clear(data, 7 - x%8);//стереть пиксель setData(addr , data); //записать новый байт данных в память дисплея }// //##################################################################### void pixel_(unsigned int16 x,unsigned int16 y, int1 color) { unsigned int8 data; unsigned int16 addr; // расчитать байт адреса, содержащего пиксель addr = 40 * y + x/8;// data = getData(addr);//считать байт данных в адресе if(color == 1) bit_set(data, 7 - x%8);//нарисовать пиксель else bit_clear(data, 7 - x%8);//стереть пиксель setData(addr , data); //записать новый байт данных в память дисплея }// //##################################################################### void flash_textcursor( unsigned char flashing ) { switch( flashing ) { case 1: { send_msg( 0x59, 1, 0, 1, 0 ); Output_bit(LCD_A0,0); write_data( 0x05 ); }break; case 2: { send_msg( 0x59, 1, 0, 1, 0 ); Output_bit(LCD_A0, 0); write_data( 0x06 ); }break; case 3: { send_msg( 0x59, 1, 0, 1, 0 ); Output_bit(LCD_A0,0); write_data( 0x07 ); }break; } }//OK //##################################################################### #endif тут полный проект с рисунком печатной платы в СПРИНТе5.0 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dosikus 0 23 ноября, 2008 Опубликовано 23 ноября, 2008 (изменено) · Жалоба Долго мучался как научить ваш CCS иметь прямой доступ к регистрам, и наконец-то у меня получилось!!!! Вот бы я этим писателям компилятора :smile3009: !!!! Все приходиться делать через задний проход... :maniac: :twak: Ни причем здесь писатели компилятора... -Дело было не в бобине... ------ #byte LATD =0xF8C #bit LED = LATD.3 ------ LED=0; LED=1; "Исчо" пример: .................... SDA=test; 04B0: BCF F8C.7 04B2: BTFSC 31.7 04B4: BSF F8C.7 .................... SCLK=1; 04B6: BSF F8C.6 .................... SCLK=0; 04B8: BCF F8C.6 .................... buf<<=1; 04BA: BCF FD8.0 04BC: RLCF 31,F Изменено 23 ноября, 2008 пользователем dosikus Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
flann 0 19 декабря, 2008 Опубликовано 19 декабря, 2008 · Жалоба Ни причем здесь писатели компилятора... -Дело было не в бобине... ------ #byte LATD =0xF8C #bit LED = LATD.3 ------ LED=0; LED=1; Пасибо за пример - буду знать на будующее. сходу такого трюка мне найти не удалось - а с компилятором этим я ни разу в жизни не работал. И сейчас не работаю. - Просто хотелось человеку помочь :) - ну нашел же всетаки способ решить проблему :beer: Но все-таки! Как ни крутите, но директивы #bit и #byte нифига не являются классическими, и посто догадаться о них - невозможно (без изучения компилятора). Так что определение "через задний проход" - остается в силе. :) (ведь можно же было сделать по человечески....) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Herz 5 20 декабря, 2008 Опубликовано 20 декабря, 2008 · Жалоба Отличная тема. Снимаю шляпу - немало сделано за год энтузиастами. Как раз вовремя попалась на глаза - сейчас в руки мне попало несколько LCD модулей Olimex DMF-628 с контроллерами на SED1330. Немножко не такие (256х128) и немножко устаревшие, но практически бесплатно. По большому счёту совместимы с рассматриваемыми.Тоже хотелось бы разобраться и запустить, так что последуют вопросы. Вот первый: в ds насчёт подсветки сказано - 100V RMS, 400 Hz (максимум 150V RMS, 800 Hz). Уже собрался было запитать лампу стандартным DC-AC инвертором (как у автора) но обнаружил, что частота преобразования - 30 KHz, назначение: CCFL - лампы. Видимо, в моём случае (EL - лампа) это нечто другое. Просветите вкратце, насколько существенны различия. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Herz 5 30 декабря, 2008 Опубликовано 30 декабря, 2008 · Жалоба Большое спасибо, понял, сделал, увидел.... Есть вопросы конкретно по схеме. Всё нарисовал на вашей же схеме. Если не затруднит прошу ответить. У меня не такой большой опыт в электронике, так что задаю кучу глупых вопросов :05: ОБЪЯСНИТЕ ДИТЮ НЕРАЗУМНОМУ Действительно, на этот вопрос так ответа и не последовало. Выложите, пожалуйста, реальную схемку. А то не понятно, например, откуда у PIC18F4550 на порте D взялось 8 разрядов. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
petrd 0 31 декабря, 2008 Опубликовано 31 декабря, 2008 · Жалоба А то не понятно, например, откуда у PIC18F4550 на порте D взялось 8 разрядов. Сколько Microchip сделал, столько и есть. Что Новый год наступил раньше или перетрудились? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Herz 5 3 января, 2009 Опубликовано 3 января, 2009 · Жалоба Сколько Microchip сделал, столько и есть. Что Новый год наступил раньше или перетрудились?Видимо, что-то вроде. :) И всё-таки, подробности хотелось бы увидеть на окончательном варианте схемы. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Fire Starter 0 3 января, 2009 Опубликовано 3 января, 2009 · Жалоба День добрый и с новым годом всех. Спасибо создателю этого проекта за такие старания и классный код. Если я правильно вижу то выложенные files не имеют реальной схемы. На картинках есть схема в которой кое-чего не хватает. Просьба для аndreichk: если вы не будете вылаживать схемы то сообщите это в форуме что-бы не было ненужных запросов. Без реальной схемы трудно расчитать стоимость всего и вообще построить. Fire Starter Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться