Работа с ЖКИ на контроллере HD44780 и его аналогах

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Аватара пользователя
Ghost in shell
Держит паяльник хвостом
Сообщения: 931
Зарегистрирован: Пн июн 15, 2009 06:01:38
Откуда: USSR

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Ghost in shell »

Всем спасибо за ответы.
Как использовать функцию sprintf в микро-С?
Чем отличаются lcd_puts и lcd_putch?
Кот гуляет сам по себе, но вблизи холодильника.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Аlex »

А почему используется нигде не объявленная функция sprintf?
http://yandex.ru/yandsearch?clid=9582&text=sprintf&lr=5
Чем отличаются lcd_puts и lcd_putch?
puts - это вывод строки. putch- это вывод символа.
Почему с их помощью нельзя вывести 25,5?
Из вышесказанного, думаю, что сами догадаетесь почему.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Аlex »

Как использовать функцию sprintf в микро-С?
Эта библиотека не для МикроС. По МикроС читайте хелп, там должна она быть описана.
Аватара пользователя
Ghost in shell
Держит паяльник хвостом
Сообщения: 931
Зарегистрирован: Пн июн 15, 2009 06:01:38
Откуда: USSR

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Ghost in shell »

Alex, спасибо за ответ.
Читаю хелп по микроС: там сказано, что для PIC16 эта функция не работет. В Сети я нарыл 2 взаимоисключающих описания, после чего спросил тут.

Код: Выделить всё

int sprintf (
  char *buffer,         /* буфер сохранения */
  const char *fmtstr,   /* строка форматирования */
  ... );                       /* дополнительные аргументы */

Функция форматирует последовательность строк и численных значений и сохраняет результирующие строки в buffer.
Примечание: строка форматирования должна быть в области CONST, поэтому функция sprintf не поддерживается для семейств PIC12 и PIC16.
Кот гуляет сам по себе, но вблизи холодильника.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Аlex »

Значит это большой минус в МикроС. Т.к. хайтек и хс8 спокойно выполняет эти функции. Живой пример по моей ссылке.
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Alexeyslav »

Не поддерживается понятно почему, т.к. sprintf это довольно жирненький монстр который не попадает под идеологию "Микро". "строка форматирования должна быть в области CONST" это лишь означает что строка форматирования должна быть константой, и следовательно не может быть переменной. Думаю, это обусловлено тем что sprintf в данном случае какой-то макрос и компилятор не генерирует вызов какой-то определенной функции а генерирует целую программу на основании строки форматирования из более простых и конкретных функций достигая тем самым минимальный размер кода.
Аватара пользователя
Ghost in shell
Держит паяльник хвостом
Сообщения: 931
Зарегистрирован: Пн июн 15, 2009 06:01:38
Откуда: USSR

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Ghost in shell »

Мне пока не до sprintf: при компиляции на вылетает DelayMs(10);
Warning [361] D:\Work\PIC_CI\My_program\LCD\main.c; 39.1 function declared implicit int
Error [800] ; 0. undefined symbol "LVPDIS"
Error [800] ; 0. undefined symbol "MCLREN"

Вот исходник

Код: Выделить всё

// MK pic16f72
// работа с LCD
#include <pic.h>
#include <stdio.h>
#include <string.h>
//----------
__CONFIG (XT & WDTDIS & PWRTDIS & BOREN & UNPROTECT);   // биты конфигурации программатора
//----------
/* Биты конфигурации ************/
#if     defined(__PICC__)
    __CONFIG ( WDTDIS & HS & MCLREN & UNPROTECT & LVPDIS );
#elif   defined(__PICC18__)
    __CONFIG(1, HS);
    __CONFIG(2, BORDIS & PWRTEN & WDTDIS);
    __CONFIG(4, LVPDIS);
#elif   defined(__18CXX)
    #pragma config FOSC = HSMP, PLLCFG = ON     // High speed x4
    #pragma config LVP = OFF                    // Single-Supply ICSP disabled
    #pragma config PRICLKEN = OFF               // Primary clock can be disabled
    #pragma config PWRTEN = OFF                 // Power up timer disabled 
    #pragma config BOREN = OFF                  // Brown-out Reset disabled 
    #pragma config PBADEN = OFF                 // PORTB<5:0> pins are configured as digital I/O on Reset 
    #pragma config MCLRE = EXTMCLR              // MCLR pin enabled, RE3 input pin disabled 
    #pragma config DEBUG = OFF                  //
    #pragma config WDTEN = OFF                  // Watch dog timer is always disabled
#endif
/********************************/
// объявление функций, используемые в файле-----------------------------------------------------------------
extern void lcd_init(void);
extern void lcd_clear(void);   
extern void lcd_gotoxy(char, char);
extern void lcd_puts(char *);
extern void lcd_putch(char);
extern void lcd_cgram(char *, unsigned char); // Добавляет массив строк из arr в CGRAM, по адресу adr.
// конец объявления функций, используемые в файле---------------------------------------------------------
////////////////////////////////////////////////////////////////////////////////////////////////////////////
void main ()
{
DelayMs(10);
lcd_init();
lcd_clear();
lcd_gotoxy(0,0);
DelayMs(10);
lcd_putch('C');
}// end main
//----------
Кот гуляет сам по себе, но вблизи холодильника.
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Alexeyslav »

Он у тебя ругается на биты конфигурации... откуда ты их подсмотрел? Они просто не определены у тебя

И зачем в твоей программе универсальная конфигурация, если ты пишешь под конкретный контроллер?
Аватара пользователя
Ghost in shell
Держит паяльник хвостом
Сообщения: 931
Зарегистрирован: Пн июн 15, 2009 06:01:38
Откуда: USSR

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Ghost in shell »

Биты конфигурации не влияют на функции, только на программатор. Убрал все, кроме

Код: Выделить всё

__CONFIG (XT & WDTDIS & PWRTDIS & BOREN & UNPROTECT);

Все равно ругается:
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.c
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\main.c
Warning [361] D:\Work\PIC_CI\My_program\LCD\main.c; 21.1 function declared implicit int
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 -olCD1.cof -mlCD1.map lcd.obj main.obj
Error [499] ; . undefined symbol:
Кот гуляет сам по себе, но вблизи холодильника.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Аlex »

Error [499] ; . undefined symbol:
Щёлкните по этой строке 2 раза, курсор перейдёт на строку с ошибкой.
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Alexeyslav »

Ну так посмотри на строчку, куда тебе компилятор показывает. Где-то нарушен синтаксис, лишние символы или в неожиданном месте.
Аватара пользователя
Ghost in shell
Держит паяльник хвостом
Сообщения: 931
Зарегистрирован: Пн июн 15, 2009 06:01:38
Откуда: USSR

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Ghost in shell »

Щёлкните по этой строке 2 раза, курсор перейдёт на строку с ошибкой.

Если бы... Не переходит!
Компилятор ругаестся на DelayMs(10); — Warning [361] D:\Work\PIC_CI\My_program\LCD\main.c; 21.1 function declared implicit int
Кот гуляет сам по себе, но вблизи холодильника.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Аlex »

Warning - это не ошибка, а предупреждение.
А ошибка у Вас вот - "Error [499] ; . undefined symbol:"
Аватара пользователя
Ghost in shell
Держит паяльник хвостом
Сообщения: 931
Зарегистрирован: Пн июн 15, 2009 06:01:38
Откуда: USSR

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Ghost in shell »

Блокирую DelayMs(10); - все нормально компилируется!
Кот гуляет сам по себе, но вблизи холодильника.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Аlex »

А какой компилятор то ? МикроС ? Читайте в хелпе про задержки, там должно быть всё это.

Зы: Учитесь пользоваться документацией и форум будет практически не нужен.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение dosikus »

Ghost in shell писал(а):Мне пока не до sprintf: при компиляции на вылетает DelayMs(10);


В старых Hi tech насколько помниться, не было задержек в встроенных либах , а всего лишь пример .
Со всеми вытекающими - то есть и хэдер включить надобно и исходник + дефайн частоты кварца.
В новых вроде есть , но нет смысла юзать ибо глюк на глюке...
Последний раз редактировалось dosikus Пт авг 02, 2013 15:10:55, всего редактировалось 1 раз.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Аlex »

Если ХайТек, то у него нет встроенных либ для задержек. Пример Delay_Ms и Delay_Us находится в папке с примерами (Samles).
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение dosikus »

Аlex писал(а):А какой компилятор то ? МикроС ?

В Микрос нет ни конфигов ни

Код: Выделить всё

#include <pic.h>

А это еще одна жЫрная свинья подсунутая юзерам . :)))

Так какой компиль то ?
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Аlex »

Вообще, не понятно какой компиль юзает Ghost in shell. Вопросы то по МикроС, то по ХайТек, ....
Вы хоть определитесь с одним компилятором, ато просто сами запутаетесь в синтаксисе. Т.к. это 2 совершенно разных компилятора.
Аватара пользователя
Ghost in shell
Держит паяльник хвостом
Сообщения: 931
Зарегистрирован: Пн июн 15, 2009 06:01:38
Откуда: USSR

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Ghost in shell »

Компилятор у меня HI-TECH Software\PICC\std\9.60. Дока там на ангельском, который не берет ни одна прога-переводчик. Если бы я мог перевести, то воистину, сам разобрался. Но чего нет, того нет.
Вот и приходится читать все, что попадается на русском.
Сейчас поиском не нашел Delay. Получается, HI-TECH 9.60 ее не поддерживает? Сотворю задержку через таймер.
Кот гуляет сам по себе, но вблизи холодильника.
Ответить

Вернуться в «Периферия»