|
|
  |
AVR и Siemens M55 |
|
|
|
May 10 2008, 17:20
|

Частый гость
 
Группа: Свой
Сообщений: 122
Регистрация: 26-07-05
Из: Россия, Томск
Пользователь №: 7 109

|
Не понял меня, попробуй заполнить часть экрана (допустим 100 точек) одним цветом потом эту же часть другим цветом, через некоторое время (пришли код) попробуй паузу поставить после инициализации Код void lcd_init() { unsigned char i; for (i=0;i<2;i++) { lcd_cmd(init1[i]); } delay_ms(50); for (i=0;i<10;i++) { lcd_cmd(init2[i]); } delay_ms(7); for (i=0;i<20;i++) { lcd_cmd(init3[i]); } delay_ms(30); for (i=0;i<3;i++) { lcd_cmd(init4[i]); } delay_ms(30); }
|
|
|
|
|
May 10 2008, 17:32
|
Участник

Группа: Участник
Сообщений: 44
Регистрация: 24-11-07
Пользователь №: 32 645

|
Скорее всего дело в задержках при инициализации.А еще стоит проверить процедуру ожидания окончания посылки байта в SPI канал,если таковая имеется.
|
|
|
|
|
May 11 2008, 17:04
|
Участник

Группа: Участник
Сообщений: 20
Регистрация: 18-11-07
Пользователь №: 32 418

|
Попробовал заливать по 1000 точек, ничего не изменилось - первая заливка проходит удачно, при следующей дисплей виснет. В редких случаях, заливка может идти достаточно долго(пока не отключишь питание) попеременно разными цветами. После повторного включения картина повторяется - дисплей зависает. Исходник прилагается.
|
|
|
|
|
May 12 2008, 06:08
|
Участник

Группа: Участник
Сообщений: 20
Регистрация: 18-11-07
Пользователь №: 32 418

|
Дисплей подключен через обрезанный IDE кабель длиной 20-23см. Для согласования уровней используется 74lvc245. Подсветка сделана на MC34063(5В->10.5В). Выводы контроллера и 74lvc245, а также 74lvc245 и дисплея, соединены напрямую проводами.
|
|
|
|
|
May 12 2008, 17:56
|
Участник

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

|
Цитата(anaconda @ May 12 2008, 09:08)  Дисплей подключен через обрезанный IDE кабель длиной 20-23см. Для согласования уровней используется 74lvc245. Подсветка сделана на MC34063(5В->10.5В). Выводы контроллера и 74lvc245, а также 74lvc245 и дисплея, соединены напрямую проводами. а как включена lvc245, а то у меня чото не получается ее запустить(на виходах 4.9в)?
|
|
|
|
|
May 13 2008, 10:52
|
Участник

Группа: Участник
Сообщений: 20
Регистрация: 18-11-07
Пользователь №: 32 418

|
Питаешь lvc245 от скольки вольт.
Сообщение отредактировал anaconda - May 13 2008, 10:54
|
|
|
|
|
May 13 2008, 12:47
|

Частый гость
 
Группа: Свой
Сообщений: 122
Регистрация: 26-07-05
Из: Россия, Томск
Пользователь №: 7 109

|
Цитата(anaconda @ May 13 2008, 17:52)  Питаешь lvc245 от скольки вольт. зашил твой(только порты под себя переписал) код к себе вот что получилось: верхняя часть заливается по очереди цветами нижняя как и положенно залита шумами...
Эскизы прикрепленных изображений
|
|
|
|
|
May 13 2008, 13:36
|
Участник

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

|
питаю от 3.3v
|
|
|
|
|
May 13 2008, 13:56
|

Частый гость
 
Группа: Свой
Сообщений: 122
Регистрация: 26-07-05
Из: Россия, Томск
Пользователь №: 7 109

|
Подправил код, заливай и все пойдет... Код #define COLOR_SKY 0x54fb #define COLOR_BLACK 0x0000 #define COLOR_WHITE 0xFFFF #define COLOR_GREEN 0x07E0 #define COLOR_BLUE 0x7FF0 #define COLOR_RED 0xF800 #define COLOR_YELLOW 0xDEE0 #define COLOR_ORANGE 0xAB00 #define COLOR_PINK 0xF97F #define COLOR_BROWN 0x8200 #define COLOR_GREY 0x8410 #define COLOR_VIOLET 0x91D4
const Word _int_2[] = { 0xEF00, 0xEE04, 0x1B04, 0xFEFE, 0xFEFE, 0xEF90, 0x4A04, 0x7F3F, 0xEE04, 0x4306 };
const Word _int_3[] = { 0xEF90, 0x0983, 0x0800, 0x0BAF, 0x0A00, 0x0500, 0x0600, 0x0700, 0xEF00, 0xEE0C, 0xEF90, 0x0080, 0xEFB0, 0x4902, 0xEF00, 0x7F01, 0xE181, 0xE202, 0xE276, 0xE183 };
const Word _int_4[] = { 0x8001, 0xEF90, 0x0000 };
void LCD_S65_CMD(Word Cmd) { Pin_On(Pin_LCD_S65_RS); Pin_Off(Pin_LCD_S65_CS); // SPDR = BYTES(Cmd)[1]; do{}while(!(SPSR&_Bit(SPIF))); SPDR = BYTES(Cmd)[0]; do{}while(!(SPSR&_Bit(SPIF))); // Pin_On(Pin_LCD_S65_CS); }
void LCD_S65_DATA(Word Data) { Pin_Off(Pin_LCD_S65_RS); Pin_Off(Pin_LCD_S65_CS); // SPDR = BYTES(Data)[1]; do{}while(!(SPSR&_Bit(SPIF))); SPDR = BYTES(Data)[0]; do{}while(!(SPSR&_Bit(SPIF))); // Pin_On(Pin_LCD_S65_CS); }
void LCD_S65_Init(void) { Pin_Out_On(Pin_LCD_S65_CS); Pin_Out_Off(Pin_LCD_S65_Reset); Pin_Out_On(Pin_LCD_S65_RS); // Pin_In(Pin_SPI_MISO); Pin_Out_Off(Pin_SPI_SS); Pin_Out_Off(Pin_SPI_MOSI); Pin_Out_Off(Pin_SPI_SCK); // Delay(1_ms); // Pin_Out_On(Pin_LCD_S65_Reset); // SPSR = _Bit(SPI2X); SPCR = _Bit(SPE) | _Bit(MSTR); // Pin_On(Pin_LCD_S65_CS); // LCD_S65_CMD(0xFDFD); LCD_S65_CMD(0xFDFD); // Delay(50_ms); // for(Byte i = 0; i < 10; i++) LCD_S65_CMD(_int_2[i]); // Delay(7_ms); // for(Byte i = 0; i< 20; i++) LCD_S65_CMD(_int_3[i]); // Delay(30_ms); // for(Byte i = 0; i < 3; i++) LCD_S65_CMD(_int_4[i]); // Delay(30_ms); }
void LCD_S65_SET_WINDOW(Byte Xmin, Byte Ymin, Byte Xmax, Byte Ymax) { LCD_S65_CMD(0xEF90); LCD_S65_CMD(0x0500); LCD_S65_CMD(0x0800 | Xmin); LCD_S65_CMD(0x0A00 | Ymin); LCD_S65_CMD(0x0900 | Xmax); LCD_S65_CMD(0x0B00 | Ymax); }
void LCD_S65_FILL_ALL(Word Color) { LCD_S65_SET_WINDOW(0, 0, 132, 178); // Pin_Off(Pin_LCD_S65_RS); // for(Word i = 0; i < 132*178; i++) { Pin_Off(Pin_LCD_S65_CS); SPDR = BYTES(Color)[1]; do{}while(!(SPSR&_Bit(SPIF))); SPDR = BYTES(Color)[0]; do{}while(!(SPSR&_Bit(SPIF))); Pin_On(Pin_LCD_S65_CS); } }
int main() { // LCD_S65_Init();
// for(;;) { LCD_S65_FILL_ALL(COLOR_SKY); Delay(1_s); // LCD_S65_FILL_ALL(COLOR_BLACK); Delay(1_s); // LCD_S65_FILL_ALL(COLOR_WHITE); Delay(1_s); // LCD_S65_FILL_ALL(COLOR_GREEN); Delay(1_s); // LCD_S65_FILL_ALL(COLOR_BLUE); Delay(1_s); // LCD_S65_FILL_ALL(COLOR_RED); Delay(1_s); // LCD_S65_FILL_ALL(COLOR_YELLOW); Delay(1_s); // LCD_S65_FILL_ALL(COLOR_ORANGE); Delay(1_s); // LCD_S65_FILL_ALL(COLOR_PINK); Delay(1_s); // LCD_S65_FILL_ALL(COLOR_BROWN); Delay(1_s); // LCD_S65_FILL_ALL(COLOR_GREY); Delay(1_s); // LCD_S65_FILL_ALL(COLOR_VIOLET); Delay(1_s); } }
|
|
|
|
|
May 13 2008, 20:37
|

Участник

Группа: Участник
Сообщений: 61
Регистрация: 26-04-08
Из: BY/MN
Пользователь №: 37 111

|
Экран LS020, работа регистра прокрутки экрана R11h, в который записывается значение смещения величиной от 0 до 175. Значения выше AFh (175) игнорируются. LS020_Scroll - для просмотра нужен кодек H264.
Сообщение отредактировал Juras Pr. - May 13 2008, 20:52
Эскизы прикрепленных изображений
|
|
|
|
|
May 14 2008, 06:05
|
Участник

Группа: Участник
Сообщений: 20
Регистрация: 18-11-07
Пользователь №: 32 418

|
Цитата(ZiB @ May 13 2008, 16:56)  Подправил код, заливай и все пойдет... Код #define COLOR_SKY 0x54fb #define COLOR_BLACK 0x0000 #define COLOR_WHITE 0xFFFF #define COLOR_GREEN 0x07E0 #define COLOR_BLUE 0x7FF0 #define COLOR_RED 0xF800 #define COLOR_YELLOW 0xDEE0 #define COLOR_ORANGE 0xAB00 #define COLOR_PINK 0xF97F #define COLOR_BROWN 0x8200 #define COLOR_GREY 0x8410 #define COLOR_VIOLET 0x91D4
const Word _int_2[] = { 0xEF00, 0xEE04, 0x1B04, 0xFEFE, 0xFEFE, 0xEF90, 0x4A04, 0x7F3F, 0xEE04, 0x4306 };
const Word _int_3[] = { 0xEF90, 0x0983, 0x0800, 0x0BAF, 0x0A00, 0x0500, 0x0600, 0x0700, 0xEF00, 0xEE0C, 0xEF90, 0x0080, 0xEFB0, 0x4902, 0xEF00, 0x7F01, 0xE181, 0xE202, 0xE276, 0xE183 };
const Word _int_4[] = { 0x8001, 0xEF90, 0x0000 };
void LCD_S65_CMD(Word Cmd) { Pin_On(Pin_LCD_S65_RS); Pin_Off(Pin_LCD_S65_CS); // SPDR = BYTES(Cmd)[1]; do{}while(!(SPSR&_Bit(SPIF))); SPDR = BYTES(Cmd)[0]; do{}while(!(SPSR&_Bit(SPIF))); // Pin_On(Pin_LCD_S65_CS); }
void LCD_S65_DATA(Word Data) { Pin_Off(Pin_LCD_S65_RS); Pin_Off(Pin_LCD_S65_CS); // SPDR = BYTES(Data)[1]; do{}while(!(SPSR&_Bit(SPIF))); SPDR = BYTES(Data)[0]; do{}while(!(SPSR&_Bit(SPIF))); // Pin_On(Pin_LCD_S65_CS); } void LCD_S65_Init(void) { Pin_Out_On(Pin_LCD_S65_CS); Pin_Out_Off(Pin_LCD_S65_Reset); Pin_Out_On(Pin_LCD_S65_RS); // Pin_In(Pin_SPI_MISO); Pin_Out_Off(Pin_SPI_SS); Pin_Out_Off(Pin_SPI_MOSI); Pin_Out_Off(Pin_SPI_SCK); // Delay(1_ms); // Pin_Out_On(Pin_LCD_S65_Reset); // SPSR = _Bit(SPI2X); SPCR = _Bit(SPE) | _Bit(MSTR); // Pin_On(Pin_LCD_S65_CS); // LCD_S65_CMD(0xFDFD); LCD_S65_CMD(0xFDFD); // Delay(50_ms); // for(Byte i = 0; i < 10; i++) LCD_S65_CMD(_int_2[i]); // Delay(7_ms); // for(Byte i = 0; i< 20; i++) LCD_S65_CMD(_int_3[i]); // Delay(30_ms); // for(Byte i = 0; i < 3; i++) LCD_S65_CMD(_int_4[i]); // Delay(30_ms); }
void LCD_S65_SET_WINDOW(Byte Xmin, Byte Ymin, Byte Xmax, Byte Ymax) { LCD_S65_CMD(0xEF90); LCD_S65_CMD(0x0500); LCD_S65_CMD(0x0800 | Xmin); LCD_S65_CMD(0x0A00 | Ymin); LCD_S65_CMD(0x0900 | Xmax); LCD_S65_CMD(0x0B00 | Ymax); }
void LCD_S65_FILL_ALL(Word Color) { LCD_S65_SET_WINDOW(0, 0, 132, 178); // Pin_Off(Pin_LCD_S65_RS); // for(Word i = 0; i < 132*178; i++) { Pin_Off(Pin_LCD_S65_CS); SPDR = BYTES(Color)[1]; do{}while(!(SPSR&_Bit(SPIF))); SPDR = BYTES(Color)[0]; do{}while(!(SPSR&_Bit(SPIF))); Pin_On(Pin_LCD_S65_CS); } }
int main() { // LCD_S65_Init();
// for(;;) { LCD_S65_FILL_ALL(COLOR_SKY); Delay(1_s); // LCD_S65_FILL_ALL(COLOR_BLACK); Delay(1_s); // LCD_S65_FILL_ALL(COLOR_WHITE); Delay(1_s); // LCD_S65_FILL_ALL(COLOR_GREEN); Delay(1_s); // LCD_S65_FILL_ALL(COLOR_BLUE); Delay(1_s); // LCD_S65_FILL_ALL(COLOR_RED); Delay(1_s); // LCD_S65_FILL_ALL(COLOR_YELLOW); Delay(1_s); // LCD_S65_FILL_ALL(COLOR_ORANGE); Delay(1_s); // LCD_S65_FILL_ALL(COLOR_PINK); Delay(1_s); // LCD_S65_FILL_ALL(COLOR_BROWN); Delay(1_s); // LCD_S65_FILL_ALL(COLOR_GREY); Delay(1_s); // LCD_S65_FILL_ALL(COLOR_VIOLET); Delay(1_s); } } Ок. Сегодня вечером попробую.
|
|
|
|
|
May 14 2008, 18:34
|

Участник

Группа: Участник
Сообщений: 61
Регистрация: 26-04-08
Из: BY/MN
Пользователь №: 37 111

|
Еще немного по прокрутке. Регистр R0Fh определяет стартовую позицию области прокрутки, регистр R10h - конечную позицию области прокрутки по оси, на которой 176 точек. При увеличении содержимого регистра R11h содержимое области прокрутки начинает смещаться влево. Если содержимое регистра R11h превышает содержимое регистра R10h, то прокрутка не происходит (будто бы в R11 занесено значение 00h).
LS020_Scroll_2.zip ( 118.67 килобайт )
Кол-во скачиваний: 330В архиве - видео (кодек H264).
|
|
|
|
|
May 15 2008, 12:36
|
Группа: Новичок
Сообщений: 2
Регистрация: 12-10-07
Пользователь №: 31 286

|
Доброго времени суток всем!!!! Вот тоже занялся дисплеями сотовых. Ковыряю дисплей сименса S65(L2F50126), написал уже небольшую графическую библиотеку, а теперь занялся шрифтами. Для шрифтов хочу использовать конвертер Хагена, но никак не пойму как считать данные из массива. Был бы очень признателен если бы кто-нибудь выложил код вывода символа из С-массива(без сжатия).
|
|
|
|
|
  |
16 чел. читают эту тему (гостей: 16, скрытых пользователей: 0)
Пользователей: 0
|
|
|