|
Свои символы 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
|
|
|
|
|
 |
Ответов
|
Sep 2 2008, 05:08
|

embedder
  
Группа: Свой
Сообщений: 264
Регистрация: 11-05-05
Из: Казань
Пользователь №: 4 911

|
Привожу свой пример, может поможет: Код //--- Дополнительные символы для знакогенератора LCD модуля --------------
static const unsigned char lcd_charset[]={ 0b00000000, //0 0b00010000, 0b00011000, 0b00011100, 0b00011100, 0b00011000, 0b00010000, 0b00000000,
0b00000000, //1 0b00000001, 0b00000011, 0b00000111, 0b00000111, 0b00000011, 0b00000001, 0b00000000,
0b00000000, //2 0b00011111, 0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00011111, 0b00000000,
0b00000000, //3 0b00011111, 0b00011111, 0b00011111, 0b00011111, 0b00011111, 0b00011111, 0b00000000,
0b00000000, //4 0b00000000, 0b00000000, 0b11011011, 0b11011011, 0b11011011, 0b11011011, 0b11011011};
#define lcd_udg_data = 5*8
//--- write data to LCD char,RS ---
void lcd_data(unsigned char c, unsigned char reg) { DelayMs(4); TRISD2 = 0;
LCD_RS = reg; LCD_PORT = (LCD_PORT & 0xF0) | (c >> 4); LCD_STROBE; LCD_PORT = (LCD_PORT & 0xF0) | (c & 0x0F); LCD_STROBE; } void lcd_loadchars(void) { unsigned char i;
// загрузка дополнительных символов в LCD модуль
for (i=0;i<lcd_udg_data;i++) { lcd_data(0x40+i,0); lcd_data(lcd_charset[i],1); } }
--------------------
Мечты стареют куда быстрее мечтателей… Стивен Кинг. "Ловец снов"
|
|
|
|
|
Sep 2 2008, 07:22
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(zksystem @ Sep 2 2008, 08:08)  Привожу свой пример, может поможет: Можно его немножко поправить? Код static const char lcd_charset[]={ 0b10000000, //0 0b10010000, 0b10011000, 0b10011100, 0b10011100, 0b10011000, 0b10010000, 0b10000000, //все равно старший бит не отображается, можно использовать его как признак не конца строки ........
0b10000000, //4 0b10000000, 0b10000000, 0b11011011, 0b11011011, 0b11011011, 0b11011011, 0b11011011, 0}; ........ //--- write data to LCD char,RS ---
void lcd_data(unsigned char c) { DelayMs(4); TRISD2 = 0;
LCD_PORT = (LCD_PORT & 0xF0) | (c >> 4); LCD_STROBE; LCD_PORT = (LCD_PORT & 0xF0) | (c & 0x0F); LCD_STROBE; LCD_RS = 1; } void lcd_command(unsigned char c) { LCD_RS = 0; lcd_data(c); } void lcd_putstring(char const * str) // вывод строк на экран. Полезная функция. { unsigned char c; while((c = *str++) != 0) { lcd_data(c); } }
void lcd_loadchars(void) { // загрузка дополнительных символов в LCD модуль lcd_command(0x40); lcd_putstring(lcd_charset); // не забыть после этого поставить курсор в нужную позицию, обычно это делается в конце инициализации. }
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
Сообщений в этой теме
Specialist Свои символы hd44780 Jul 29 2008, 09:23 Specialist Всю ночь долбался не мог понять в чем проблема, а ... Jul 29 2008, 10:57 Палыч Цитата(Specialist @ Jul 29 2008, 13:57) Х... Jul 29 2008, 12:44 sKWO Цитата(Specialist @ Jul 29 2008, 12:23) П... Jul 29 2008, 10:59 Specialist Цитата(sKWO @ Jul 29 2008, 12:59) Может п... Jul 29 2008, 11:28  VXDRV Цитата(Specialist @ Jul 29 2008, 17:28) М... Aug 9 2008, 04:34 Specialist Инициализацию я выполняю по даташиту и она проходи... Jul 29 2008, 13:08 rezident Цитата(Specialist @ Jul 29 2008, 19:08) И... Jul 29 2008, 16:09  &-rey микро прога для удобства перевода символов в строк... Jul 29 2008, 17:08
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|