Работа с ЖКИ на контроллере HD44780 и его аналогах
- Ghost in shell
- Держит паяльник хвостом
- Сообщения: 931
- Зарегистрирован: Пн июн 15, 2009 06:01:38
- Откуда: USSR
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Всем спасибо за ответы.
Как использовать функцию sprintf в микро-С?
Чем отличаются lcd_puts и lcd_putch?
Как использовать функцию sprintf в микро-С?
Чем отличаются lcd_puts и lcd_putch?
Кот гуляет сам по себе, но вблизи холодильника.
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
http://yandex.ru/yandsearch?clid=9582&text=sprintf&lr=5А почему используется нигде не объявленная функция sprintf?
puts - это вывод строки. putch- это вывод символа.Чем отличаются lcd_puts и lcd_putch?
Из вышесказанного, думаю, что сами догадаетесь почему.Почему с их помощью нельзя вывести 25,5?
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Эта библиотека не для МикроС. По МикроС читайте хелп, там должна она быть описана.Как использовать функцию sprintf в микро-С?
- Ghost in shell
- Держит паяльник хвостом
- Сообщения: 931
- Зарегистрирован: Пн июн 15, 2009 06:01:38
- Откуда: USSR
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Alex, спасибо за ответ.
Читаю хелп по микроС: там сказано, что для PIC16 эта функция не работет. В Сети я нарыл 2 взаимоисключающих описания, после чего спросил тут.
Читаю хелп по микроС: там сказано, что для PIC16 эта функция не работет. В Сети я нарыл 2 взаимоисключающих описания, после чего спросил тут.
Код: Выделить всё
int sprintf (
char *buffer, /* буфер сохранения */
const char *fmtstr, /* строка форматирования */
... ); /* дополнительные аргументы */
Функция форматирует последовательность строк и численных значений и сохраняет результирующие строки в buffer.
Примечание: строка форматирования должна быть в области CONST, поэтому функция sprintf не поддерживается для семейств PIC12 и PIC16.
Кот гуляет сам по себе, но вблизи холодильника.
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Значит это большой минус в МикроС. Т.к. хайтек и хс8 спокойно выполняет эти функции. Живой пример по моей ссылке.
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Не поддерживается понятно почему, т.к. sprintf это довольно жирненький монстр который не попадает под идеологию "Микро". "строка форматирования должна быть в области CONST" это лишь означает что строка форматирования должна быть константой, и следовательно не может быть переменной. Думаю, это обусловлено тем что sprintf в данном случае какой-то макрос и компилятор не генерирует вызов какой-то определенной функции а генерирует целую программу на основании строки форматирования из более простых и конкретных функций достигая тем самым минимальный размер кода.
- Ghost in shell
- Держит паяльник хвостом
- Сообщения: 931
- Зарегистрирован: Пн июн 15, 2009 06:01:38
- Откуда: USSR
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Мне пока не до 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 и его аналогах
Он у тебя ругается на биты конфигурации... откуда ты их подсмотрел? Они просто не определены у тебя
И зачем в твоей программе универсальная конфигурация, если ты пишешь под конкретный контроллер?
И зачем в твоей программе универсальная конфигурация, если ты пишешь под конкретный контроллер?
- Ghost in shell
- Держит паяльник хвостом
- Сообщения: 931
- Зарегистрирован: Пн июн 15, 2009 06:01:38
- Откуда: USSR
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Биты конфигурации не влияют на функции, только на программатор. Убрал все, кроме
Все равно ругается:
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:
Код: Выделить всё
__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 и его аналогах
Щёлкните по этой строке 2 раза, курсор перейдёт на строку с ошибкой.Error [499] ; . undefined symbol:
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Ну так посмотри на строчку, куда тебе компилятор показывает. Где-то нарушен синтаксис, лишние символы или в неожиданном месте.
- Ghost in shell
- Держит паяльник хвостом
- Сообщения: 931
- Зарегистрирован: Пн июн 15, 2009 06:01:38
- Откуда: USSR
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Щёлкните по этой строке 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 и его аналогах
Warning - это не ошибка, а предупреждение.
А ошибка у Вас вот - "Error [499] ; . undefined symbol:"
А ошибка у Вас вот - "Error [499] ; . undefined symbol:"
- Ghost in shell
- Держит паяльник хвостом
- Сообщения: 931
- Зарегистрирован: Пн июн 15, 2009 06:01:38
- Откуда: USSR
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Блокирую DelayMs(10); - все нормально компилируется!
Кот гуляет сам по себе, но вблизи холодильника.
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
А какой компилятор то ? МикроС ? Читайте в хелпе про задержки, там должно быть всё это.
Зы: Учитесь пользоваться документацией и форум будет практически не нужен.
Зы: Учитесь пользоваться документацией и форум будет практически не нужен.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Ghost in shell писал(а):Мне пока не до sprintf: при компиляции на вылетает DelayMs(10);
В старых Hi tech насколько помниться, не было задержек в встроенных либах , а всего лишь пример .
Со всеми вытекающими - то есть и хэдер включить надобно и исходник + дефайн частоты кварца.
В новых вроде есть , но нет смысла юзать ибо глюк на глюке...
Последний раз редактировалось dosikus Пт авг 02, 2013 15:10:55, всего редактировалось 1 раз.
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Если ХайТек, то у него нет встроенных либ для задержек. Пример Delay_Ms и Delay_Us находится в папке с примерами (Samles).
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Аlex писал(а):А какой компилятор то ? МикроС ?
В Микрос нет ни конфигов ни
Код: Выделить всё
#include <pic.h>А это еще одна жЫрная свинья подсунутая юзерам .
Так какой компиль то ?
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Вообще, не понятно какой компиль юзает Ghost in shell. Вопросы то по МикроС, то по ХайТек, ....
Вы хоть определитесь с одним компилятором, ато просто сами запутаетесь в синтаксисе. Т.к. это 2 совершенно разных компилятора.
Вы хоть определитесь с одним компилятором, ато просто сами запутаетесь в синтаксисе. Т.к. это 2 совершенно разных компилятора.
- Ghost in shell
- Держит паяльник хвостом
- Сообщения: 931
- Зарегистрирован: Пн июн 15, 2009 06:01:38
- Откуда: USSR
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Компилятор у меня HI-TECH Software\PICC\std\9.60. Дока там на ангельском, который не берет ни одна прога-переводчик. Если бы я мог перевести, то воистину, сам разобрался. Но чего нет, того нет.
Вот и приходится читать все, что попадается на русском.
Сейчас поиском не нашел Delay. Получается, HI-TECH 9.60 ее не поддерживает? Сотворю задержку через таймер.
Вот и приходится читать все, что попадается на русском.
Сейчас поиском не нашел Delay. Получается, HI-TECH 9.60 ее не поддерживает? Сотворю задержку через таймер.
Кот гуляет сам по себе, но вблизи холодильника.