Работа с ЖКИ на контроллере HD44780 и его аналогах
- Gudd-Head
- Друг Кота
- Сообщения: 20091
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Alexeyslav, спасибо за оперативный и содержательный ответ.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Народ собираюсь локализовать прошивку гаммы под латиницу. Есть три дисплея:
1. Руссифицированый. С ним проблем нет. Работает как с оригинальной так и с модифицированной прошивкой
http://s60.radikal.ru/i167/1305/4d/76250e298b2b.jpg
http://s005.radikal.ru/i209/1305/17/f31d31bfe2f0.jpg
http://i069.radikal.ru/1305/46/c7feffb73e64.jpg
2. Нерусифицированный с подсветкой. Отображает верхнию строку с прямоугольниками. Как я понял не инициализируется.
http://s018.radikal.ru/i521/1305/3b/98cac56dafbc.jpg
http://s019.radikal.ru/i624/1305/d6/ceb96bee37b7.jpg
http://i020.radikal.ru/1305/7d/3f3a081eaff0.jpg
3. Нерусифицированный без подсветки. C этим дисплеем иногда работает иногда нет. временами отображает непонятные символы.
http://s019.radikal.ru/i614/1305/7b/5ea058ee1d36.jpg
http://s018.radikal.ru/i525/1305/f9/42ddbfdfc3b2.jpg
http://s020.radikal.ru/i714/1305/2b/a0a3e9a7887f.jpg
http://s018.radikal.ru/i506/1305/67/3ecb0c71fb56.jpg
http://s017.radikal.ru/i436/1305/9e/f886c29be604.jpg
http://i024.radikal.ru/1305/76/3db536423476.jpg
Есть идей как пофиксить ?
Линки подправил.
1. Руссифицированый. С ним проблем нет. Работает как с оригинальной так и с модифицированной прошивкой
http://s60.radikal.ru/i167/1305/4d/76250e298b2b.jpg
http://s005.radikal.ru/i209/1305/17/f31d31bfe2f0.jpg
http://i069.radikal.ru/1305/46/c7feffb73e64.jpg
2. Нерусифицированный с подсветкой. Отображает верхнию строку с прямоугольниками. Как я понял не инициализируется.
http://s018.radikal.ru/i521/1305/3b/98cac56dafbc.jpg
http://s019.radikal.ru/i624/1305/d6/ceb96bee37b7.jpg
http://i020.radikal.ru/1305/7d/3f3a081eaff0.jpg
3. Нерусифицированный без подсветки. C этим дисплеем иногда работает иногда нет. временами отображает непонятные символы.
http://s019.radikal.ru/i614/1305/7b/5ea058ee1d36.jpg
http://s018.radikal.ru/i525/1305/f9/42ddbfdfc3b2.jpg
http://s020.radikal.ru/i714/1305/2b/a0a3e9a7887f.jpg
http://s018.radikal.ru/i506/1305/67/3ecb0c71fb56.jpg
http://s017.radikal.ru/i436/1305/9e/f886c29be604.jpg
http://i024.radikal.ru/1305/76/3db536423476.jpg
Есть идей как пофиксить ?
Линки подправил.
- Вложения
-
- 1.1s35.rar
- (187.89 КБ) 232 скачивания
Последний раз редактировалось ATtiny15 Пт май 17, 2013 18:25:27, всего редактировалось 2 раза.
-
pelia
- Родился
- Сообщения: 18
- Зарегистрирован: Ср мар 06, 2013 01:24:25
- Откуда: Ukraine
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Кроме вложения - ничего не скачивает
- Gudd-Head
- Друг Кота
- Сообщения: 20091
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Ещё бы. Все ссылки битые.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Линки подправил.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Еще бы размер вменяемый для рисунков...
У меня уже язык заболел уговаривать: отрисайзить перед отправкой ну хотя бы так :
Всего-то в 100 раз меньше
Не у всех же инет безразмерный
У меня уже язык заболел уговаривать: отрисайзить перед отправкой ну хотя бы так :
Всего-то в 100 раз меньше
Не у всех же инет безразмерный
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Извиняйте. Я новичок на этом форуме.
-
pelia
- Родился
- Сообщения: 18
- Зарегистрирован: Ср мар 06, 2013 01:24:25
- Откуда: Ukraine
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Если не проверяете бит занятости - попробуйте увеличить паузы между командами
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Можно по конкретнее, о каких паузах идёт речь, желательно тыкнуть пальцем в код.
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Между любыми отдельными командами отсылаемыми на индикатор. Может он их просто не успевает обрабатывать.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
подскажите пожалуйста... WH1604 с подсветкой - проблемы с контрастностью.. установил делителем 0.8в - вроде норм, пару раз перезапустил устройство - ничего не показывает... взял посадил контрастность на землю - начал показывать.. через какое то время стал показывать хуже... потом опять ничего не видно - вернул 0.6в - стал показывать и опять по новой...
в чем может быть причина такого поведения? еще заметил если быстро питание вкл-выкл появляющиеся куски строк и артефакты выглядят очень читабельно, а как нужная инфа - снова шляпа) заранее спасибо!!!!
в чем может быть причина такого поведения? еще заметил если быстро питание вкл-выкл появляющиеся куски строк и артефакты выглядят очень читабельно, а как нужная инфа - снова шляпа) заранее спасибо!!!!
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
А причем тут напряжение? Контраст изменяется РЕЗИСТОРОМ а не напряжением.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Alexeyslav писал(а):А причем тут напряжение? Контраст изменяется РЕЗИСТОРОМ а не напряжением.
не очень вас понял.. я между +5в и землей ставлю делитель и его среднюю точку подаю на 3 ногу (контрастность)... вот и говорю какое там напряжение... где я не прав?
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Подстроечный резистор поставь на 10кОм, и им регулируй контраст. Переменный там нужен, контраст будет от температуры зависеть.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Alexeyslav писал(а):Подстроечный резистор поставь на 10кОм, и им регулируй контраст. Переменный там нужен, контраст будет от температуры зависеть.
спасибо, попробую
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
я преспокойно регулирую контрастность дисплея напряжением, используя ШИМ, сглаженную RC-цепью. Выход RC-фильтра подключен к выводу контрастности дисплея.Alexeyslav писал(а):А причем тут напряжение? Контраст изменяется РЕЗИСТОРОМ а не напряжением.
Ставим плюсы: )
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Робята...может кто подскажет. учусь писать на асьме.
сделал инициализацию. вывел первую надпись.(и в протеусе и в железе)
захотел поставить курсор на 2 строку-ставлю на адрес 40. то есть 11000000 или даже ставил на адрес 41. 11000001.
проверяю в протеусе- курсора и в помине не видать....
попробовал команду сдвига курсора зациклить. что бы он путем поочередного перебора адресов попал таки в видимую область 2 строки.
и ничего подобного!! курсор бегает в протеусе только по первой строке- но во 2 строку не попадает!!
проверить пока в железе нет возможности..может протеус тупит?
сделал инициализацию. вывел первую надпись.(и в протеусе и в железе)
захотел поставить курсор на 2 строку-ставлю на адрес 40. то есть 11000000 или даже ставил на адрес 41. 11000001.
проверяю в протеусе- курсора и в помине не видать....
попробовал команду сдвига курсора зациклить. что бы он путем поочередного перебора адресов попал таки в видимую область 2 строки.
и ничего подобного!! курсор бегает в протеусе только по первой строке- но во 2 строку не попадает!!
проверить пока в железе нет возможности..может протеус тупит?
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Нет, ты просто не перевел индикатор в 2-строчный режим командой 0x28.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Спасибо! помучаем)
----------
попробовал. заработало! еще раз спасибо
----------
попробовал. заработало! еще раз спасибо
- Ghost in shell
- Держит паяльник хвостом
- Сообщения: 931
- Зарегистрирован: Пн июн 15, 2009 06:01:38
- Откуда: USSR
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Продолжаю разбираться с
C:\Program Files\HI-TECH Software\PICC\std\9.60\samples\LCDemo\lcd.h
додумался посмотреть в текстовом редакторе
/* write a byte to the LCD in 4 bit mode */
extern void lcd_write(unsigned char);
/* Clear and home the LCD */
extern void lcd_clear(void);
/* write a string of characters to the LCD */
extern void lcd_puts(const char * s);
/* Go to the specified position */
extern void lcd_goto(unsigned char pos);
/* intialize the LCD - call before anything else */
extern void lcd_init(void);
extern void lcd_putch(char);???
/*Set the cursor position */???
все это хорошо, но как использовать?
естественно, на extern void lcd_init вылетает с ошибками (я же не знаю, как обратиться к функции и назначить линии порта)
Build D:\Work\PIC_CI\My_program\LCD\lCD1 for device 16F72
Using driver C:\Program Files\HI-TECH Software\PICC\std\9.60\bin\picc.exe
Executing: "C:\Program Files\HI-TECH Software\PICC\std\9.60\bin\picc.exe" -q -g --asmlist --chip=16F72 "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s" -P --char=unsigned -C D:\Work\PIC_CI\My_program\LCD\LCD_sour2.c
Error [249] D:\Work\PIC_CI\My_program\LCD\LCD_sour2.c; 22.1 probable missing "}" in previous block
Error [194] D:\Work\PIC_CI\My_program\LCD\LCD_sour2.c; 22.22 ")" expected
Error [285] D:\Work\PIC_CI\My_program\LCD\LCD_sour2.c; 24.1 no identifier in declaration
Warning [374] D:\Work\PIC_CI\My_program\LCD\LCD_sour2.c; 24.1 missing basic type; int assumed
Error [314] D:\Work\PIC_CI\My_program\LCD\LCD_sour2.c; 24.1 ";" expected
Warning [361] D:\Work\PIC_CI\My_program\LCD\LCD_sour2.c; 32.1 function declared implicit int
********** Build failed! **************
вынес из объявления void Podgot функцию extern void lcd_init.
Error [194] D:\Work\PIC_CI\My_program\LCD\LCD_sour2.c; 23.22 ")" expected
C:\Program Files\HI-TECH Software\PICC\std\9.60\samples\LCDemo\lcd.h
додумался посмотреть в текстовом редакторе
/* write a byte to the LCD in 4 bit mode */
extern void lcd_write(unsigned char);
/* Clear and home the LCD */
extern void lcd_clear(void);
/* write a string of characters to the LCD */
extern void lcd_puts(const char * s);
/* Go to the specified position */
extern void lcd_goto(unsigned char pos);
/* intialize the LCD - call before anything else */
extern void lcd_init(void);
extern void lcd_putch(char);???
/*Set the cursor position */???
все это хорошо, но как использовать?
Код: Выделить всё
// MK pic16f72
// работа с LCD
//----------
#include <pic.h> // подключение хидера, чтобы дать компилятору понять описание ножек контроллера
#include <lcd.h> // подключение хидера функций работы с лсд
#include <delay.h> // при работе используется функции временной задержки DelayMs(5);5 миллисекунд
//DelayUs(200); 200 микросекунд
__CONFIG (XT & WDTDIS & PWRTDIS & BOREN & UNPROTECT); // биты конфигурации программатора
//----------
// объявление функций, используемые в файле------------------------------------------------------------------------------------------
void Podgot(void) // настройка портов и глобальная - прерываний
{
ADCON1 = 0b111; // отключение АЦП, все каналы работают как цифровые
TRISA = 0b111111; // (0/1 - выход/вход, нумерация битов в регистре справо-налево)
TRISB = 0b00000000; // (0/1 - выход/вход, нумерация битов в регистре справо-налево)
TRISC = 0b00000000; // (0/1 - выход/вход, нумерация битов в регистре справо-налево)
RBPU = 0; // выключить подтягивающие резисторы порта В
PORTA = 0;
//----------
GIE = 1; // разрешены все немаскированные прерывания
PEIE = 1; // разрешены все немаскированные прерывания от переферийных модулей
extern void lcd_init(&PORTB,3,6,0,7,2,1,4); // инициализирует порт для работы LCD, аргументы RS, EN, WR, D7 .. D4
// назначаются линиям порта 3,6,0,7,2,1,4
}
// конец объявления функций, используемые в файле----------------------------------------------------------------------------------
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void main ()
{
Podgot(); // настройка портов и таймеров
for(;;)
{
}// end for
}// end main
//----------
естественно, на extern void lcd_init вылетает с ошибками (я же не знаю, как обратиться к функции и назначить линии порта)
Build D:\Work\PIC_CI\My_program\LCD\lCD1 for device 16F72
Using driver C:\Program Files\HI-TECH Software\PICC\std\9.60\bin\picc.exe
Executing: "C:\Program Files\HI-TECH Software\PICC\std\9.60\bin\picc.exe" -q -g --asmlist --chip=16F72 "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s" -P --char=unsigned -C D:\Work\PIC_CI\My_program\LCD\LCD_sour2.c
Error [249] D:\Work\PIC_CI\My_program\LCD\LCD_sour2.c; 22.1 probable missing "}" in previous block
Error [194] D:\Work\PIC_CI\My_program\LCD\LCD_sour2.c; 22.22 ")" expected
Error [285] D:\Work\PIC_CI\My_program\LCD\LCD_sour2.c; 24.1 no identifier in declaration
Warning [374] D:\Work\PIC_CI\My_program\LCD\LCD_sour2.c; 24.1 missing basic type; int assumed
Error [314] D:\Work\PIC_CI\My_program\LCD\LCD_sour2.c; 24.1 ";" expected
Warning [361] D:\Work\PIC_CI\My_program\LCD\LCD_sour2.c; 32.1 function declared implicit int
********** Build failed! **************
вынес из объявления void Podgot функцию extern void lcd_init.
Код: Выделить всё
// объявление функций, используемые в файле------------------------------------------------------------------------------------------
void Podgot(void) // настройка портов и глобальная - прерываний
{
ADCON1 = 0b111; // отключение АЦП, все каналы работают как цифровые
TRISA = 0b111111; // (0/1 - выход/вход, нумерация битов в регистре справо-налево)
TRISB = 0b00000000; // (0/1 - выход/вход, нумерация битов в регистре справо-налево)
TRISC = 0b00000000; // (0/1 - выход/вход, нумерация битов в регистре справо-налево)
RBPU = 0; // выключить подтягивающие резисторы порта В
PORTA = 0;
//----------
GIE = 1; // разрешены все немаскированные прерывания
PEIE = 1; // разрешены все немаскированные прерывания от переферийных модулей
}
extern void lcd_init(&PORTB,3,6,0,7,2,1,4); // инициализирует порт для работы LCD, аргументы RS, EN, WR, D7 .. D4
// назначаются линиям порта 3,6,0,7,2,1,4
// конец объявления функций, используемые в файле----------------------------------------------------------------------------------Error [194] D:\Work\PIC_CI\My_program\LCD\LCD_sour2.c; 23.22 ")" expected
Кот гуляет сам по себе, но вблизи холодильника.