|
Свои символы hd44780 |
|
|
|
Jul 29 2008, 09:23
|
Группа: Новичок
Сообщений: 6
Регистрация: 25-06-08
Пользователь №: 38 539

|
Привет. Пишу свои функции для управления дисплеем. Использую PIC, компилятор Hi-Tech C for PIC Вроде бы все работает нормально. Но как только загружаю свой символ в CGRAM у меня а дисплее абракадабра получается. Записать 4 бита RS data void mylcd_wdata4(char,char); Делаю вот так, но я не полностью понял как пользовательские символы записывать туда. Код char user_gradus[16] = {0b0000,0b1110,0b0001,0b0001,0b0001,0b0001,0b0000,0b1110,0,0,0,0,0,0,0,0}; // Цельсий
mylcd_init();
mylcd_wdata4(0,0b0100);//Пока записываю по 4 бита, дальше не делал. mylcd_wdata4(0,0b0001);//Тут я выбрал адрес в CGRAM
for (i=0; i<16; i++) mylcd_wdata4(1,user_gradus[i]); Что тут не так ?
Сообщение отредактировал Specialist - Jul 29 2008, 09:25
|
|
|
|
|
 |
Ответов
|
Jul 29 2008, 10:59
|

Местный
  
Группа: Участник
Сообщений: 355
Регистрация: 27-03-07
Из: Україна, Чуднів
Пользователь №: 26 530

|
Цитата(Specialist @ Jul 29 2008, 12:23)  Привет. Пишу свои функции для управления дисплеем. Использую PIC, компилятор Hi-Tech C for PIC Вроде бы все работает нормально. Но как только загружаю свой символ в CGRAM у меня а дисплее абракадабра получается. Что тут не так ? Может поможет дабовление нуля в конце массива? Код char user_gradus[17] = {0b0000,0b1110,0b0001,0b0001,0b0001,0b0001,0b0000,0b1110,0,0,0,0,0,0,0,0,0x00}; // Цельсий
--------------------
нельзя недооценивать предсказуемость глупости
|
|
|
|
|
Jul 29 2008, 11:28
|
Группа: Новичок
Сообщений: 6
Регистрация: 25-06-08
Пользователь №: 38 539

|
Цитата(sKWO @ Jul 29 2008, 12:59)  Может поможет дабовление нуля в конце массива? Код char user_gradus[17] = {0b0000,0b1110,0b0001,0b0001,0b0001,0b0001,0b0000,0b1110,0,0,0,0,0,0,0,0,0x00}; // Цельсий Мне нужно отправить 8 байт информации. Я их отправляю по 4 бита, значит всего будет 16 кусков данных. А если я добавлю еще 17-ю часть то это уже получиться не правильно. Вот они char user_gradus[16] = {0b0000,0b1110,0b0001,0b0001,0b0001,0b0001,0b0000,0b1110,0,0,0,0,0,0,0,0}; // Цельсий Если нарисовать то, что я отправляю получиться так: 01110 10001 10001 01110 00000 00000 00000 00000 Я уже разобрался в из-за чего у меня глюки дисплея, но не пойму почему.
|
|
|
|
|
Aug 9 2008, 04:34
|

Участник

Группа: Свой
Сообщений: 67
Регистрация: 5-02-07
Пользователь №: 25 074

|
Цитата(Specialist @ Jul 29 2008, 17:28)  Мне нужно отправить 8 байт информации. Я их отправляю по 4 бита, значит всего будет 16 кусков данных. А если я добавлю еще 17-ю часть то это уже получиться не правильно. Вот они
char user_gradus[16] = {0b0000,0b1110,0b0001,0b0001,0b0001,0b0001,0b0000,0b1110,0,0,0,0,0,0,0,0}; // Цельсий
Если нарисовать то, что я отправляю получиться так: 01110 10001 10001 01110 00000 00000 00000 00000
Я уже разобрался в из-за чего у меня глюки дисплея, но не пойму почему. Код INIT_LCD(); while (WAIT_READY()==0); WRITE_IR(0x40); while (WAIT_READY()==0); // зашиваем незакрашенный квадратик в LCD, USER-символ по адресу 0x00 WRITE_DR(0b00011111); while (WAIT_READY()==0); WRITE_DR(0b00000000); while (WAIT_READY()==0); WRITE_DR(0b00010001); while (WAIT_READY()==0); WRITE_DR(0b00000000); while (WAIT_READY()==0); WRITE_DR(0b00010001); while (WAIT_READY()==0); WRITE_DR(0b00000000); while (WAIT_READY()==0); WRITE_DR(0b00011111); while (WAIT_READY()==0); WRITE_DR(0b00000000); while (WAIT_READY()==0);
WRITE_DR(0b00011111); while (WAIT_READY()==0); // зашиваем закрашенный квадратик в LCD, USER-символ по адресу 0x01 WRITE_DR(0b00011111); while (WAIT_READY()==0); WRITE_DR(0b00011111); while (WAIT_READY()==0); WRITE_DR(0b00011111); while (WAIT_READY()==0); WRITE_DR(0b00011111); while (WAIT_READY()==0); WRITE_DR(0b00011111); while (WAIT_READY()==0); WRITE_DR(0b00011111); while (WAIT_READY()==0); WRITE_DR(0b00000000); while (WAIT_READY()==0); WRITE_IR(0x50); while (WAIT_READY()==0); // зашиваем что-то ещё в LCD (сердечко), USER-символ по адресу 0x03 WRITE_DR(0b00000000); while (WAIT_READY()==0); WRITE_DR(0b00001010); while (WAIT_READY()==0); WRITE_DR(0b00011111); while (WAIT_READY()==0); WRITE_DR(0b00011111); while (WAIT_READY()==0); WRITE_DR(0b00001110); while (WAIT_READY()==0); WRITE_DR(0b00000100); while (WAIT_READY()==0); WRITE_DR(0b00000000); while (WAIT_READY()==0); WRITE_DR(0b00000000); while (WAIT_READY()==0); Пример...
|
|
|
|
Сообщений в этой теме
Specialist Свои символы hd44780 Jul 29 2008, 09:23 Specialist Всю ночь долбался не мог понять в чем проблема, а ... Jul 29 2008, 10:57 Палыч Цитата(Specialist @ Jul 29 2008, 13:57) Х... Jul 29 2008, 12:44 Specialist Инициализацию я выполняю по даташиту и она проходи... Jul 29 2008, 13:08 rezident Цитата(Specialist @ Jul 29 2008, 19:08) И... Jul 29 2008, 16:09  &-rey микро прога для удобства перевода символов в строк... Jul 29 2008, 17:08 zksystem Привожу свой пример, может поможет:
Код//--- Допо... Sep 2 2008, 05:08 Сергей Борщ Цитата(zksystem @ Sep 2 2008, 08:08) Прив... Sep 2 2008, 07:22
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|