|
Вопрос по LCD и CodeVision |
|
|
|
Feb 16 2007, 23:01
|
Группа: Новичок
Сообщений: 8
Регистрация: 23-01-07
Пользователь №: 24 699

|
У меня есть два вопроса
Первый он же главный. Подскажите пожалуйста, как с помощью CodeVision можно создать, записать в память дисплея и потом прочитать с памяти собственный символ для HD44780 совместимых ЖКИ?
Второй. Есть ли еще команды для роботы с ЖКИ в CodeVision кроме стандартных в lcd.h, если есть, то как их можно использовать в том же CodeVision (синтаксис команды или функции)?
Заранее благодарен.
|
|
|
|
|
 |
Ответов
|
Mar 1 2007, 00:04
|
Группа: Новичок
Сообщений: 8
Регистрация: 23-01-07
Пользователь №: 24 699

|
О спасибо всем, очень помогли ваши советы. Что самое интересно что в хелпе на сvavr как и показал vooon есть пример:
/* table for the user defined character arrow that points to the top right corner */ flash byte char0[8]={ 0b0000000, 0b0001111, 0b0000011, 0b0000101, 0b0001001, 0b0010000, 0b0100000,
0b1000000};
/* function used to define user characters */ void define_char(byte flash *pc,byte char_code) { byte i,a; a=(char_code<<3) | 0x40; for (i=0; i<8; i++) lcd_write_byte(a++,*pc++); }
но он както так непонятно (тогда был) написан или я чтото недопонимаю но после ваших советов, стало все так красиво получатся, и я смог даже отобразить курсор с его разными формами (их вроде там три).
И что означают вот ети две строчки функции define_char
a=(char_code<<3) | 0x40; for (i=0; i<8; i++) lcd_write_byte(a++,*pc++);
если можно поподробней.
А сейчас я поставил себе задачу, вывести на экран бегущую строку тобишь есть строка символов которая имеет допустим 50 символов то ее нужно вывести на дисплей имеющий 20 символов в строке.
Кстати написал я вот такой код то, что первое пришло наум и явно чтото не здравое Вот
int i; char s[12]="Hello world"; ....... for(i=0;i<=19;i++) { delay_ms(500); lcd_gotoxy(i,0); lcd_puts(s); } ........
и он мне нормально сдвигал строку пока символ d не дошел до края дисплея, а потом с начала нижней строки стали отображаться исчезнувшие символы верхней строки. Почему? Я подумал что строка должна просто себе исчезать по мере продвижения.
Подскажите что я сделал не так, помогите пожалуйста ссылками или советами по поводу бегущей строки символов по строке дисплея. И как все это можна организовать на CodeVisionAVR Вот еще, дисплей у меня 4х20
Заранее благодарен.
|
|
|
|
|
Mar 1 2007, 01:09
|

Участник

Группа: Свой
Сообщений: 72
Регистрация: 27-06-06
Из: Msk
Пользователь №: 18 401

|
Цитата(Рома_С @ Mar 1 2007, 00:04)  И что означают вот ети две строчки функции define_char
a=(char_code<<3) | 0x40; for (i=0; i<8; i++) lcd_write_byte(a++,*pc++);
если можно поподробней.
А сейчас я поставил себе задачу, вывести на экран бегущую строку тобишь есть строка символов которая имеет допустим 50 символов то ее нужно вывести на дисплей имеющий 20 символов в строке. посмотрите http://electronix.ru/forum/index.php?s=&am...st&p=129947  a - это адрес куда будем писать, у 44780 есть две области памяти знакогенератор и данные, отображаемые на экране адрес первой ячейки знакогенератора 0x40, а данных - 0x80 на каждый _свой_ символ нужно 8 байт (т. е. для символа 0 это 0x40 - 0x47, соответственно для 1ого 0x48 - 0x4F, и т.д.) это делаем сдвигом номера символа на 3 влево, и побитное или с 0х40. далее в цикле записываем 8 значений из массива переданного через указатель pc Ах да! забыл сказать: у 44780 данные разделены на две строки по 40 байт у двухстрочных для удобства первая строка это первая  , а вторая - вторая Но у четырехстрочных первая строка в озу отображается на 1ой и 3ей(!) строках а вторая строка в озу - на 2ой и 4ой надеюсь понятно написал
|
|
|
|
|
Mar 1 2007, 22:25
|
Группа: Новичок
Сообщений: 8
Регистрация: 23-01-07
Пользователь №: 24 699

|
Цитата(vooon @ Mar 1 2007, 00:09)  a - это адрес куда будем писать, у 44780 есть две области памяти знакогенератор и данные, отображаемые на экране адрес первой ячейки знакогенератора 0x40, а данных - 0x80 на каждый _свой_ символ нужно 8 байт (т. е. для символа 0 это 0x40 - 0x47, соответственно для 1ого 0x48 - 0x4F, и т.д.) это делаем сдвигом номера символа на 3 влево, и побитное или с 0х40.
далее в цикле записываем 8 значений из массива переданного через указатель pc Спасибо конечно за ответ, но если чесно я еще болие запутался.  Почему мы сдвигаем номер символа именно на 3. А номер символа это что? А где можно про это поподробней прочитать? Уж больно интересно узнать принципы создания символа. Извините меня пожалуйста за мои, возможно, ламерские вопросы.
|
|
|
|
|
Mar 2 2007, 00:27
|

Участник

Группа: Свой
Сообщений: 72
Регистрация: 27-06-06
Из: Msk
Пользователь №: 18 401

|
Цитата(Рома_С @ Mar 1 2007, 22:25)  А где можно про это поподробней прочитать? Уж больно интересно узнать принципы создания символа. вот гляньте, достаточно полное описание http://www.gaw.ru/html.cgi/txt/lcd/chips/hd44780/start.htm
|
|
|
|
Сообщений в этой теме
Рома_С Вопрос по LCD и CodeVision Feb 16 2007, 23:01 Яrik Цитата(Рома_С @ Feb 16 2007, 22:01) У мен... Feb 16 2007, 23:36 Artur Nikitin Цитата(Рома_С @ Feb 16 2007, 23:01) ...ка... Feb 28 2007, 12:42 vooon Цитата(Рома_С @ Feb 16 2007, 23:01) У мен... Feb 28 2007, 22:30   Сергей Борщ Цитата(Рома_С @ Mar 1 2007, 21:25) Почему... Mar 1 2007, 23:24    Сергей Борщ Цитата(vooon @ Mar 1 2007, 23:27) вот гля... Mar 2 2007, 14:40     vooon Цитата(Сергей Борщ @ Mar 2 2007, 14:40) .... Mar 2 2007, 17:12      Wano Люди те кто будет пробовать использовать стандар... Mar 5 2007, 21:27       vooon Цитата(Wano @ Mar 5 2007, 21:27) Во вторы... Mar 6 2007, 01:04       Petka Цитата(Wano @ Mar 5 2007, 21:27) Люди т... Mar 6 2007, 01:10        Wano Кароче товарищи жаль что нельзя с вами поспорить.Х... Mar 6 2007, 21:34 megachip Использую 1.24.6, никаких проблем с библиотекой LC... Mar 6 2007, 21:48 Wano Киньте на ksotпсюкlist.ru свою версию,я посравнива... Mar 6 2007, 21:57 Рома_С Ну, наконец то разобрался я с вот этой функцией.
... Mar 6 2007, 23:32 vooon Цитатасколько можно собственных символов записать ... Mar 7 2007, 01:39
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|