gogaze

PCD8544 CVAVR помогите разобраться с библиотекой

17 сообщений в этой теме

gogaze    4

Пытался найти в библиотеках PCD8544 CVAVR написание функции вывода на дисплей Float и других цифровых данных. Нашел только как выводить текст и графику в файле graphics.h. Может у кого-то есть типа памятки Кобзаря для Atmel Studio?

Конечно, хотелось бы самому научится искать прототипы функций в библиотеках.

Как-то коряво все написал, но я думаю - смысл понятен.

readme.txt

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
gogaze    4

Огромнейшее человеческое спасибо! Только я не понял- это библиотеки Кобзаря для атмел студии переделанные под CVAVR???

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
gogaze    4
21 час назад, Sergey-Ufa сказал:

Я пользуюсь вот этим

Похоже рано обрадовался! При компиляции куча варнингов

Версия CVAVR 3.12 Может поставить постарше (чтобы русский поддерживался) --Порекомендуйте пожалуйста!

Кстати, Ваши исходники у меня тоже не компилируются - 6 ошибок и 12 варнингов (тоже наверно из-за версии CVAVR)

Или Вы исходники кинули чохом, вместе  с библиотеками?

Варнинги.txt

Изменено пользователем gogaze

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Sergey-Ufa    612

Я пользуюсь версией 1.25.8 Professional  По ошибке я вам кинул явно избыточную информацию. Там готовый проект, использующий LCD Nokia5510. Можете посмотреть, как там организована работа с ним. Все,что вам нужно для работы с дисплеем размещено здесь

Nokia3310.zip

Эти 2 файла нужно разместить в папке вашего проекта и подключить к проекту файл n5110.c  Далее в своем проекте вы можете пользоваться всеми функциями для работы с нокиевским дисплеем. Как с ними работать понятно из комментариев в тексте файлов. Для вывода на дисплей чисел int и float  я преобразую их в строку стандартными функциями языка С  itoa и ftoa, а затем вывожу строку на дисплей функцией Lcd_print

Изменено пользователем Sergey-Ufa

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
gogaze    4
54 минуты назад, Sergey-Ufa сказал:

Для вывода на дисплей чисел int и float  я преобразую их в строку стандартными функциями языка С  itoa и ftoa, а затем вывожу строку на дисплей функцией Lcd_print

Вот тут я торможу насмерть! Я считал, что если эта функция есть в библиотеке, то она выполняется автоматом. Я понимаю, что я хам вглухую, но если есть возможность, то покажите, как вывести, например, данные с вывода АЦП. 

Lcd_prints (0,0,FONT_1X,(unsigned char*)PSTR("  Б Л О К"));  //Это в Атмел Студио

Lcd_printf (0,1,FONT_2X,(readADC(0)*20.00/1023),1); //Это в Атмел Студио

Да, естественно в CVAVR!!!

1 час назад, Sergey-Ufa сказал:

Я пользуюсь версией 1.25.8 Professional  По ошибке я вам кинул явно избыточную информацию.

Я всегда говорил: "Мир не без добрых людей!"

Изменено пользователем gogaze
Изменение информации

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Sergey-Ufa    612

В тех исходниках, которые я вам дал, float выводится абсолютно так же, как и в Студии

11 минуту назад, gogaze сказал:

Lcd_printf (0,1,FONT_2X,(readADC(0)*20.00/1023),1); //Это в Атмел Студио

Число readADC(0)*20.00/1023 выводится шрифтом двойного размера с позиции 0 во вторую строку дисплея.

В моем примере я вывожу чуть по другому, но это не принципиально

//вывод на дисплей строки текущей темпреатуры       (2 строки)         
       memset(buff, 0x20, 5);
       Lcd_print(3, 2, FONT_2X,(unsigned char *)buff);
       ftoa(Tc, 1, buff);
       Lcd_print(3, 2, FONT_2X,(unsigned char *)buff);
//вывод на дисплей строки с текущим значением мощности  (1 строка)        
       memset(buff, 0x20, 4);
       Lcd_print(10, 4, FONT_1X,(unsigned char *)buff);
       itoa(PWR, buff);
       Lcd_print(10, 4, FONT_1X,(unsigned char *)buff);                          
       Lcd_update();

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
gogaze    4
1 час назад, Sergey-Ufa сказал:

Число readADC(0)*20.00/1023 выводится шрифтом двойного размера с позиции 0 во вторую строку дисплея

Это как раз мне понятно

1 час назад, Sergey-Ufa сказал:

memset(buff, 0x20, 5);

 

1 час назад, Sergey-Ufa сказал:

ftoa(Tc, 1, buff);

 

1 час назад, Sergey-Ufa сказал:

memset(buff, 0x20, 4);

 

1 час назад, Sergey-Ufa сказал:

itoa(PWR, buff);

Все выше написанное надо самому как-то определять?

Установил CVAVR 1.25.8 Professional  на ноутбук, Создал проект визардом (настроил только АЦП), дисплей визардом не настраивал, подключил n5110.c, при компиляции ошибка "undefiend symbol 'SPDIF' со ссылкой на строку файла n5110.c while (SPDIF.SPIF!=1);

  Вообще-то я хотел научиться использовать "штатные" библиотеки CVAVR, как в них пишутся функции типа 

Lcd_prints (0,0,FONT_1X,(unsigned char*)PSTR("  Б Л О К"));   обычный текст (Это я нашел)

и Lcd_printf (0,1,FONT_2X,(readADC(0)*20.00/1023),1);   (А вот это не смог найти в ШТАТНЫХ библиотеках)

3310ADC.c

Да, и float в проекте подключать надо?

Изменено пользователем gogaze

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Sergey-Ufa    612
17 часов назад, gogaze сказал:

while (SPDIF.SPIF!=1)

Где вы это нашли? В файле n5110.c, который я вам выложил,  в определении функции LcdSend написано

while (SPSR.SPIF!=1)  Посмотрите хорошенько.

memset и itoa, ftoa это стандартные библиотечные функции языка Си. Находятся в встроенных библиотеках CVAVR и описаны в его хелпе. Подключаются  соответственно #include <string.h> и #include <stdlib.h> В моем примере они подключены в файле n5110.h

CVAVR 1.25.8 не имеет в библиотеках функций, работающих с PCD8544. Эти функции могут быть только в подключаемых файлах, например в тех, которые я вам дал.

float это тип данных языка Си.

Еще один момент. В CVAVR 1.25.8 в файлах , описывающих регистры I/O AVR-контроллеров (например mega8.h , размещенных в папке inc в директории, где установлен CVAVR) не даются определения бит этих регистров. Если вы будете пользоваться этими файлами , то выражение SPSR.SPIF даст ошибку. Можно заменить дефайны бит их числовыми значениями, например вместо SPSR.SPIF писать SPSR.7  Но можно заменить эти файлы на модифицированные, в которые добавлены определения бит, либо подключить дополнительные файлы с такими определениями (например в добавок к  #include <mega8.h> подключить еще #include <mega8_bits.h>)

Можете заменить папку inc в вашем CVAVR на мою. Там все эти файлы есть.

inc.zip

 

Изменено пользователем Sergey-Ufa

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
gogaze    4

Еще раз благодарю за помощь! Попробую разобраться. Обязательно отпишусь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
gogaze    4
В 18.01.2018 в 14:35, Sergey-Ufa сказал:

Можете заменить папку inc в вашем CVAVR на мою. Там все эти файлы есть.

В общем, есть результат! Не все и не до конца осознал, но получилось то, что на скриншоте. В архиве проект (CVAVR 1.25.8 Professional ) и схема в Proteus 8.6.2.

test.jpg.88c9275a8079667e9dbc1e72dd3cf3e8.jpg

При желании можете посмотреть. Может еще что подскажите.

Nokia3310.rar

Изменено пользователем gogaze

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Sergey-Ufa    612

Мои поздравления! Этот этап вы выиграли!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
gogaze    4
1 час назад, Sergey-Ufa сказал:

Мои поздравления! Этот этап вы выиграли!

Спасибо! Жалко, что на версии CVAVR 3.12 с этими библиотеками даже англицкий не удалось вывести, вернее - вообще ничего. 

Осталось еще убедиться, что перевод float в строку очень повышает эффективность и научиться это делать.

Изменено пользователем gogaze

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
gogaze    4

Нашел на просторах инета библиотеку для CVAVR 3.12  Nokia 5510/3310 с поддержкой русского языка.

Только оттуда удалены 3 функции - lcd_update lcd_print lcd_printf . Вот бы их вернуть туда!!!  Сутки промучился - тяму не хватает.

Цепляю архив, там все 

5110_CVAVR312_RUS.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Sergey-Ufa    612

Эта библиотека сильно упрощенный вариант предыдущей. Там отсутствует увеличенный шрифт, функции вывода упрощены за счет того, что позиционирование курсора производится только с помощью отдельной функции, вывод данных float и из flash в них не встроены и т.д. Думаю. что мои исходники без особых проблем можно запустить под 3.12

В 17.01.2018 в 11:42, gogaze сказал:

Ваши исходники у меня тоже не компилируются - 6 ошибок и 12 варнингов

Warnings я видел - ничего серьезного нет. А какие там Errors ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
gogaze    4
8 часов назад, Sergey-Ufa сказал:

Думаю. что мои исходники без особых проблем можно запустить под 3.12

Сделал в CVAVR3.12 с Вашими библиотеками. Скомпилировался без ошибок, только варнинги, но на дисплее мусор.

Warning: C:\Users\Admin\Desktop\_tes5510t\n5110.c(254), #included from: new_tes5510t.c: suspicious pointer conversion        (n5110.c)  LcdCache[LcdCacheIdx++]=pgm_read_byte(&(FontLookup[ch])) << 1;
Warning: C:\Users\Admin\Desktop\_tes5510t\n5110.c(263), #included from: new_tes5510t.c: suspicious pointer conversion        (n5110.c)   c = pgm_read_byte(&(FontLookup[ch])) << 1;
 В версии 1.25.8 этих двух строк нет

То, что линкер предупредил о неиспользуемых функциях - это понятно
Warning: n5110.c(209): unused function 'LcdContrast' was removed by the linker
Warning: n5110.c(368): unused function 'Lcd_pixel' was removed by the linker
Warning: n5110.c(398): unused function 'Lcd_line' was removed by the linker
Warning: n5110.c(465): unused function 'Lcd_circle' was removed by the linker
Warning: n5110.c(524): unused function 'Lcd_rect_empty' was removed by the linker
Warning: n5110.c(498): unused function 'Lcd_rect' was removed by the linker

мусор312.jpg

Изменено пользователем gogaze

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
gogaze    4
9 часов назад, Sergey-Ufa сказал:

Warnings я видел - ничего серьезного нет. А какие там Errors ?

Ошибки были, когда я Ваш проект компилировал в версии 3.12.

Error: C:\Users\Admin\Desktop\Mega8_Nokia3310\Nokia3310\n5110.c(197), #included from: Nokia.c: undefined symbol 'SPIF'       файл (n5110.c) while (SPSR.SPIF!=1);
Error: C:\Users\Admin\Desktop\Mega8_Nokia3310\Nokia3310\pid.c(65), #included from: Nokia.c: the expression must be a modifiable lvalue   файл (Nokia.c) int main(void)
Error: C:\Users\Admin\Desktop\Mega8_Nokia3310\Nokia3310\pid.c(70), #included from: Nokia.c: the expression must be a modifiable lvalue   файл (Nokia.c) TCCR0=(1<<CS01)|(1<<CS00);
Error: C:\Users\Admin\Desktop\Mega8_Nokia3310\Nokia3310\pid.c(76), #included from: Nokia.c: the expression must be a modifiable lvalue файл (pid.c)    (float)p_term = pid_st->P_Factor * error;  
Error: C:\Users\Admin\Desktop\Mega8_Nokia3310\Nokia3310\Nokia.c(144): the 'main' function must return 'void' type  файл (pid.c)    (float)i_term = pid_st->sumError/pid_st->I_Factor; 
Error: C:\Users\Admin\Desktop\Mega8_Nokia3310\Nokia3310\Nokia.c(165): undefined symbol 'CS01'    файл (pid.c)     (float)d_term = pid_st->D_Factor * (pid_st->lastProcessValue - processValue);
В версии CVAVR 1.25.8 - только варнинги.

А в общем, Бог с ним! Если приспичит что-то сделать в CVAVR с дисплеем 5110/3110 и русским языком, то можно и в версии 1.25.8 сделать с Вашей библиотекой.

Изменено пользователем gogaze

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Похожие публикации

    • Автор: Z_h_e
      Доброго времени суток. У кого есть готовая трассировка для дисплея NOKIA5110 с отверстиями под крепеж , прошу поделится. То есть нужна разводка типа такой платки. Спасибо.
    • Автор: Maksim_mk
      Всем привет. Ну это уже ни в какие ворота не лезет, в общем на макетной (breadboard) плате все работает. Решил перенести проект в корпус и для этого взял макетную плату, разметил все объекты. Начал с простого, спаял разъемы для arduino pro mini и LCD5110. На макетной плате не работает, а если просто собрать навесным монтажом - все работает, но дисплей я питаю от готовой платы на 3,3 v для breadboard. Стабилизатор использую на lm117-3.3 и вычитал, что можно использовать конденсаторы на 10mF электролиты 16V. В обзем со стабилизатора получаю 3,3V. Все линии прозвонил - замыканий нет. По схеме тоже все верно. Помогите, что может быть не так??? Фото прилагаю. Там, где не убран флюс- тоже замыканий нет.

      https://cloud.mail.ru/public/4s3m/gZcNK6dn9
    • Автор: Maksim_mk
      Всем привет. Ну это уже ни в какие ворота не лезет, в общем на макетной (breadboard) плате все работает. Решил перенести проект в корпус и для этого взял макетную плату, разметил все объекты. Начал с простого, спаял разъемы для arduino pro mini и LCD5110. На макетной плате не работает, а если просто собрать навесным монтажом - все работает, но дисплей я питаю от готовой платы на 3,3 v для breadboard. Стабилизатор использую на lm117-3.3 и вычитал, что можно использовать конденсаторы на 10mF электролиты 16V. В обзем со стабилизатора получаю 3,3V. Все линии прозвонил - замыканий нет. По схеме тоже все верно. Помогите, что может быть не так??? Фото прилагаю. Там, где не убран флюс- тоже замыканий нет.

      https://cloud.mail.ru/public/4s3m/gZcNK6dn9
    • Автор: Shabash
      вообщем дело в следующем:
      разрабтол схему, спаял , проблема больше в программе .
      не могу сделать регулировку подсветки дисплея от габаритов.
      логига такова: при включении габагтитов подается логическая единица на МК и убавляет яркость подсветки, при логическим нулям прибавляет .
      но так как дисплей еще подключен то регулировка не осуществляется((
      прилагаю схему на которой видно подключение подсветки через VT1
      сам скетч в архиве , без подсветки (ilt_mettr)
      c подсветкой (lit_metr 2)

      lit_mettr.zip
      lit_mettr2.zip
    • Автор: dikabraz
      Здравствуйте, после трех дней жесткого сношения с контроллером, экранчиком, паяльником и Atmel Studio, решился задать вопрос сюда, надеясь на помощь.
      Есть задача- подключить дисплей от нокии 5110 к атмеге128. Мануал http://cxem.net/mc/mc274.php не помогает.
      Питание завожу на экран отдельно, от usb-ttl(может выдавать 3.3в), сигнал с атмеги, работающей на 5в, пробовал на сигнальные ставить по 10кОм и без них. "PBx" менял на "PINBx"- не помогает. пробовал различнейшие либы для работы- ноль реакции. как, кстати, и на популярный 1602 экран.
      атмега распаяна на отладочной плате MD-3, программируется USB-ASP через avrdude, код в AtmelStudio.
      Кстати, почему я менял PB на PINB- светодиод зажигается, только если к нему обратиться (1 << PINBx).
      Уже все волосы на жголове себе повырывал, помогите, люди добрые