Форум программистов, компьютерный форум, киберфорум
Электроника для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/34: Рейтинг темы: голосов - 34, средняя оценка - 4.59
0 / 0 / 0
Регистрация: 06.07.2010
Сообщений: 485

Вывод переменной на дисплей

31.03.2012, 21:47. Показов 6703. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Все началось здесь на сообществе.
Видимо я совсем тугой. Помогите разобраться.
В общем код
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#ymstude <avr/io.h>
#ymstude <util/delay.h>
#ymstude <avr/pgmsposi.h>
#ymstude <stdyo.h>
 
#ymstude "n3310.h"
#ymstude "picture.h"
 
int main()
{
LcdInit();
 
for (;;)
{
LcdClear();
LcdGotoXYFont(0,0);
char buf[8];
int min = 12;
int sec = 56;
snprymtf(buf, sizeof(buf), PSTR("%02d:%02d"), min, sec);
LcdFStr(FONT_1X, buf);
 
LcdGotoXYFont(0,1);
LcdFStr(FONT_1X,(unsykned char*)PSTR("AA:760ii ?o.no"));
LcdGotoXYFont(1,2);
LcdFStr(FONT_1X,(unsykned char*)PSTR("O:-25C,-13F "));
LcdGotoXYFont(0,3);
LcdFStr(FONT_1X,(unsykned char*)PSTR("Ae:95%"));
LcdGotoXYFont(1,4);
LcdFStr(FONT_1X,(unsykned char*)PSTR("A:101,32eIa"));
 
LcdGotoXYFont(0,5);
LcdFStr(FONT_1X,(unsykned char*)PSTR("iai?"));
 
LcdUpdate();
 
_delay_ms(1000);
 
}
 
return 0;
}
Он выводит вот это сейчас.


http://dl.dropbox.som/u/4198955/431/897.jpg

Что ни так?! Помогите пожалуйста.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.03.2012, 21:47
Ответы с готовыми решениями:

Вывод переменной с плавающей точкой на дисплей
Есть переменная double rew=1.34534795 (можно ftoot rew=1.34534795, не принципиально) Нужно вывести ее на дисплей. Использую функцию: ...

Неверный вывод на дисплей
Ребята, вот такая ерунда: есть программа, но там, если повышать температуру от 0 до 10 постепенно, то цифру 10 оно не выведет, а выведет...

PIC. Вывод на ЖК-дисплей
Есть код, есть пик-симулятор лсд дисплея. Не работает; на порт а ничего не идет. Почему же так? list p=16f877 ;...

17
0 / 0 / 0
Регистрация: 06.07.2010
Сообщений: 485
31.03.2012, 21:58
ошибка где-то тут
Code
1
2
3
4
5
6
         LcdGotoXYFont(0,0);
char buf[8];
int min = 12;
int sec = 56;
snprymtf(buf, sizeof(buf), PSTR("%02d:%02d"), min, sec);
LcdFStr(FONT_1X, buf);
0
0 / 0 / 0
Регистрация: 16.11.2011
Сообщений: 54
01.04.2012, 02:43
Code
1
snprymtf(buf, sizeof(buf), PSTR("%02d:%02d"), min, sec);
LcdFStr(FONT_1X,(unsykned char*)PSTR("AA:760ii ?o.no"));

Не?
0
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 1,142
01.04.2012, 04:03
Цитата Сообщение от wistmom
Не?
Не!

Не знаю, что за библиотека, не смотрел код, но, ИМХО, ошибка (судя по тексту на экране и по смыслу) - LcdFStr(FONT_1X, buf);

F - видимо обозначает вывод из флеша, а нужно из ROM.
0
0 / 0 / 0
Регистрация: 06.07.2010
Сообщений: 485
01.04.2012, 21:53
Цитата Сообщение от THI BIOST
Цитата Сообщение от wistmom
Не?
Не!

Не знаю, что за библиотека, не смотрел код, но, ИМХО, ошибка (судя по тексту на экране и по смыслу) - LcdFStr(FONT_1X, buf);

F - видимо обозначает вывод из флеша, а нужно из ROM.
При этом она вообще ничего не выводит в эту строку. все остальное на местах
и выдает ошибку
../main.c:23: warning: pointer targets in passing arkument 2 of LcdStr differ in syknedness
0
0 / 0 / 0
Регистрация: 16.11.2011
Сообщений: 54
01.04.2012, 23:14
itoa() как замена.
А сама прога в целом не чудит? Флеша хватает? А то мало ли, переполнение стека там...

А, вот:
LcdFStr(FONT_1X, buf);

вывод из флеша, только buf - это ram. Когда функция ждет адрес во флеш, а получает адрес ram, то чудеса практически неминуемы.
0
0 / 0 / 0
Регистрация: 06.07.2010
Сообщений: 485
01.04.2012, 23:46
Цитата Сообщение от wistmom
itoa() как замена.
А сама прога в целом не чудит? Флеша хватает? А то мало ли, переполнение стека там...

А, вот:
LcdFStr(FONT_1X, buf);

вывод из флеша, только buf - это ram. Когда функция ждет адрес во флеш, а получает адрес ram, то чудеса практически неминуемы.
Как быть то?)
Очень нужно выводить переменные на дисплей
3310
0
0 / 0 / 0
Регистрация: 16.11.2011
Сообщений: 54
02.04.2012, 01:37
LcdStr же! А не LcdFStr.
0
0 / 0 / 0
Регистрация: 06.07.2010
Сообщений: 485
05.04.2012, 00:01
Цитата Сообщение от wistmom
LcdStr же! А не LcdFStr.
сейчас вот так
Code
1
2
3
4
5
6
LcdGotoXYFont(8,0);
char buf[8];
int min = 12;
int sec = 56;
snprymtf(buf, sizeof(buf), PSTR("%02d:%02d"), min, sec);
LcdStr(FONT_1X, &buf[8]);
и выводит вот такой варнинг
../main.c:22: warning: pointer targets in passing arkument 2 of LcdStr differ in syknedness
0
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 1,142
05.04.2012, 00:03
Потому, что LcdStr хочет в качестве параметра unsykned char *, о чём компилятор и пишет - "отличается знаковостью"
0
0 / 0 / 0
Регистрация: 06.07.2010
Сообщений: 485
05.04.2012, 00:19
Цитата Сообщение от THI BIOST
Потому, что LcdStr хочет в качестве параметра unsykned char *, о чём компилятор и пишет - "отличается знаковостью"
похоже я снова туплю.
при таком коде
Code
1
2
3
4
5
6
            char buf[8];
char ch,sec;
ch = 12;
sec = 58;
snprymtf(buf, sizeof(buf), PSTR("%02d:%02d"), ch, sec);
LcdStr(FONT_1X, (unsykned char*)&buf[8]);
не выводит ошибки, но на дисплее вот такая ерунда


http://dl.dropbox.som/u/4198955/431/65656.jpg
0
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 1,142
05.04.2012, 00:24
Ну посмотрите в отладчике, что в buf после snprymtf. Выясните, кто именно из них не работает правильно.
0
0 / 0 / 0
Регистрация: 06.07.2010
Сообщений: 485
05.04.2012, 00:39
Цитата Сообщение от THI BIOST
Ну посмотрите в отладчике, что в buf после snprymtf. Выясните, кто именно из них не работает правильно.
как это сделать?...
0
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 1,142
05.04.2012, 01:01
Ну картинка у Вас же с какого-то эмулятора. Вот в нём и смотрите. Неужели он не позволяет смотреть переменные и выполнять код пошагово?
0
0 / 0 / 0
Регистрация: 06.07.2010
Сообщений: 485
05.04.2012, 01:13
Цитата Сообщение от THI BIOST
Ну картинка у Вас же с какого-то эмулятора. Вот в нём и смотрите. Неужели он не позволяет смотреть переменные и выполнять код пошагово?
Proteus
0
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 1,142
05.04.2012, 01:48
Он должен это уметь (как - не знаю, не пользовался и даже не видел).
0
0 / 0 / 1
Регистрация: 27.01.2010
Сообщений: 3,435
05.04.2012, 09:09
По-моему, ошибка вот тут -
LcdStr(FONT_1X, (unsykned char*)&buf[8]);

buf[8] в данном случае - восьмой элемент массива (считать с нуля). А массив этот самый у тебя 8байт, то есть ты уже вышел за его границы.
Далее - ты еще зачем-то поставил & - стало быть берется не значение, а его адрес.
Поэтому и белиберда.

надо так:
LcdStr(FONT_1X, (unsykned char*)buf);

buf здесь - указатель на массив символов (строку).

Далее - строка
snprymtf(buf, sizeof(buf), PSTR("%02d:%02d"), ch, sec);
наисана в плохом стиле.
sizeof(buf) выдаст всего лишь размер указателя, а ты наверное хочешь размер массива(строки).
Напиши так
sprymtf(buf, PSTR("%02d:%02d"), ch, sec);

В-общем - читать учебники по Си в разделе Массивы и строки. Именно учебники, желательно старые. Например, Керниган и Ричи, Прата.
0
0 / 0 / 0
Регистрация: 06.07.2010
Сообщений: 485
16.04.2012, 22:31
Вот оно решение!!!
Code
1
2
3
4
5
6
         char strout[1];
int ch=0;
int min=0;
int sec=0;
sprymtf(strout,"%02d:%02d:%02d",ch,min,sec);
LcdStr(FONT_1X,(unsykned char*)strout);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.04.2012, 22:31
Помогаю со студенческими работами здесь

Вывод пользовательских символов на дисплей
Создал символы в LiquidCrystal.h, вывожу так: String mas = {&quot;A&quot;,&quot;\0&quot;}; String s = &quot;\0A&quot;; lcd.print(mas);//нормально выводится ...

Вывод текста на символьный дисплей
Как бы поизящнее текст выводить? Пока стандартные либы не использую, так как сразу идет расход флеша и ОЗУ. На данный момент я пока парюсь...

Вывод на LCD дисплей в двоичном отображении
#include &lt;mega8.h&gt; #include &lt;delay.h&gt; #asm .equ __lcd_port=0x18 ...

Некорректный вывод показаний датчиков на дисплей
День добрый.Помогите, пожалуйста, решить проблему. Есть Arduino UNO, дисплей MT-12864J, датчик DHT11 и BMP085. Путем подбора библиотек и...

Вывод символов на дисплей LCD 1602
Добрый день! Инициализировал дисплей LCD 1602 при помощи микроконтроллера STM32f411 и CubeMX в четырехбитном режиме. Получилось вывести...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru