Перейти к содержанию

Вывод Значения Переменной На Lcd


Рекомендуемые сообщения

Необходимо вывести на LCD числовое значение, я перевожу значение в usigned char однако функция его не принимает, компилятор говорит что usigned char не подходит и должен быть unsigned char!!! О_о. Компилятор CVAVR

#include <mega16.h>
#asm
  .equ __lcd_port=0x1B;PORTA
#endasm
#include <lcd.h>



void main(void)
{
int x1=100;
int x2=200;
lcd_init(16);
lcd_gotoxy(0,0);
lcd_puts((unsigned char)(x1+x2)); //тут компилятор ругается и говорит, что тип usigned char не подходит и должен быть usigned char
}

Изменено пользователем cooler1985
Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Попробуй вот так :

void main(void)
{
int buffer1 [64];
int temp1=0;
int x1=100;
int x2=200;
temp1=(x1+x2); //складываем содержимое х1 и х2
lcd_init(16);
sprintf(buffer1, "%3d",temp1); //выводим содержимое temp1
//lcd_clear();
lcd_gotoxy(0,0);
lcd_puts(buffer1);
}

Да и это, переманная char может хранить числа до 255, а 100+200=300 по этому нужно int

Я был механик, я есть механик, я буду механик

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

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Смысл функции понял, и даже сам поковырял, однако на лсд ниффига не выводится:( (в протеусе, шить не пробывал). Кампилятор не ругается...

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

Особенности хранения литиевых аккумуляторов и батареек

Потеря емкости аккумулятора напрямую зависит от условий хранения и эксплуатации. При неправильном хранении даже самый лучший литиевый источник тока с превосходными характеристиками может не оправдать ожиданий. Технология, основанная на рекомендациях таких известных производителей литиевых источников тока, как компании FANSO и EVE Energy, поможет организовать правильный процесс хранения батареек и аккумуляторов. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Не забудьте установить в компиляторе в Project=>Configure=>C Compiler функцию sprintf в "Long, width". Ну и, разумеется, сконфигурировать нужный порт на выход...

Любой, заслуживающий внимания, опыт приобретается себе в убыток...

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

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

О! вот теперь всё работает спасиба!! Единственное не понятен второй аргумент функции sprintf(buffer1,

"%3d",temp1); Зачем он вообще нужен:)?

Изменено пользователем cooler1985
Ссылка на комментарий
Поделиться на другие сайты

... Зачем он вообще нужен:)?

Это параметр, определяющий формат преобразования. Там можно справку по sprintf найти:

http://forum.cxem.net/index.php?showtopic=22473

Любой, заслуживающий внимания, опыт приобретается себе в убыток...

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

... Зачем он вообще нужен:)?

Это параметр, определяющий формат преобразования. Там можно справку по sprintf найти:

http://forum.cxem.net/index.php?showtopic=22473

Спасибо, но как человеку далёкаму от програмирования, всё равно не понятно каким макаром эти описатели расставлять, я так понимаю ими определяется формат строки... Может можно по подробней на разборе примера показать?

зарание спасибо

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

Попробую объяснить...

Когда вы работаете с дисплеем (или с любым другим устройством отображения информации), неизбежно встает задача по выбору наиболее простого и гибкого способа управления им. В частности, вы использовали дисплей на основе контроллера HD44780. Суть управления: в видеопамять контроллера нужно загрузить КОДЫ ASCII отображаемых символов. Разумеется в соответствии с определенным протоколом. Т.е., если мы хотим чтобы на дисплее отображалось

"Hello", то должны отправить контроллеру последовательность чисел: 0x48 (H); 0x65 (e); 0x6C (l); 0x6C (l); 0x6F (o) с указанием места размещения символов. Если бы вы писали руками (не используя библиотечные функции) обмен с дисплеем, эти задачи (помимо необходимости соблюдения протокола обмена) оказались бы одними из самых важных. Теперь ближе к телу, в смысле к делу...

У вас есть некая переменная temp1. Пусть она хранит число 142. Теперь определяемся - что же мы хотим видеть на дисплее. Например, в 1-й строке десятичное значение, во 2-й - двоичное. Для этого можно сделать так:

unsigned char buffer_dec [3]; //объявляем  буфер из трех чисел, каждое не больше 255 (число символов ASCII) для десятичной записи 
unsigned char buffer_bin [8]; //объявляем  буфер из восьми чисел, каждое не больше 255 для двочной записи 
//заполняем буфера
sprintf (buffer_dec, %3d, temp1); //в результате выполнения функции в буфере окажутся три числа {0x31; 0x34; 0x32}, что в кодах ASCII будет 1; 2; 3; - описатель d
sprintf (buffer_bin, %8b, temp1); //буфере окажутся восемь чисел {0x31; 0x30; 0x30; 0x30; 0x31; 0x31; 0x31; 0x30}, что в кодах ASCII соответствует 1; 0; 0; 0; 1; 1; 1; 0; - описатель b 
//устанавливаем курсор в начало первой строки
lcd_gotoxy(0,0);
//пересылаем контроллеру дисплея набор кодов отображаемых символов 
lcd_puts(buffer_dec);
//аналогично
lcd_gotoxy(1,0); //начало второй строки
lcd_puts(buffer_bin);
//на дисплее видим:
//			142
//			10001110

Примерно так... Для других описателей аналогично...

Любой, заслуживающий внимания, опыт приобретается себе в убыток...

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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...