реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Перекодировка для ЖКИ
Dog Pawlowa
сообщение Dec 22 2009, 11:21
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(goodking @ Dec 22 2009, 14:57) *
а вот интересно ...

cranky.gif Вам трудно ответить на конкретные вопросы? Зачем тему создавали?


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
goodking
сообщение Dec 22 2009, 11:38
Сообщение #17


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 21-12-09
Пользователь №: 54 383



извините, temperaturefin-long

все типы переменных-long
Go to the top of the page
 
+Quote Post
rezident
сообщение Dec 22 2009, 12:10
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(goodking @ Dec 22 2009, 14:55) *
мне нужно преобразовать в строку то-есть в char smile.gif
Если бы вы потрудились почитать по ссылкам, то могли бы понять, что для перевода бинарного представления числа в символьное для начала нужно его (число) преобразовать в двоично-десятичное представление, где каждая тетрада (полубайт) имеет значение от 0 до 9. Дальнейшее преобразование в символы ASCII не представляет трудности, поскольку для этого достаточно к каждой тетраде прибавить код символа '0' - 0x30. В языке Си имеются и готовые функции для преобразования чисел в строку символов. Почитайте какой-нибудь "букварь" по языку Си наконец.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Dec 22 2009, 12:54
Сообщение #19


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(goodking @ Dec 22 2009, 14:38) *
извините, temperaturefin-long
все типы переменных-long

buf должен быть не лонг, а указатель на char[]
Попробуйте char buf[10] (ну или 20, 30 - сколько надо символов)

Цитата(rezident @ Dec 22 2009, 15:10) *
В языке Си имеются и готовые функции для преобразования чисел в строку символов. Почитайте какой-нибудь "букварь" по языку Си наконец.

Дык эта... sprintf вроде как раз это и делает. Только ему указатель на правильный буфер надо подсунуть
Цитата
sprintf(buf,"%d",temperaturefin);


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
goodking
сообщение Dec 22 2009, 13:10
Сообщение #20


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 21-12-09
Пользователь №: 54 383



Цитата(MrYuran @ Dec 22 2009, 16:54) *
buf должен быть не лонг, а указатель на char[]
Попробуйте char buf[10] (ну или 20, 30 - сколько надо символов)


Дык эта... sprintf вроде как раз это и делает. Только ему указатель на правильный буфер надо подсунуть

нет, buf у меня как раз обьявлен char buf[10]; но все -равно на выходе какая-то ерунда выходит, 0x10 "0l"
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Dec 22 2009, 13:26
Сообщение #21


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(goodking @ Dec 22 2009, 16:10) *
нет, buf у меня как раз обьявлен char buf[10]; но все -равно на выходе какая-то ерунда выходит, 0x10 "0l"

а "HelloWorld" выводит?
если константой забить, причём прямо в буфер


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
goodking
сообщение Dec 22 2009, 13:35
Сообщение #22


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 21-12-09
Пользователь №: 54 383



Цитата(MrYuran @ Dec 22 2009, 17:26) *
а "HelloWorld" выводит?
если константой забить, причём прямо в буфер

Выводит!
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Dec 22 2009, 14:40
Сообщение #23


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(rezident @ Dec 21 2009, 23:28) *
Не ленитесь пользоваться поиском! Тема двоично-десятичного преобразования (BCD - Binary-Coded Decimal) мусолится на форуме постоянно.
А причём тут BCD, простите? Ему надо просто коды АЦП пересчитать в температуру, а её отобразить в виде строки на дисплее.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
goodking
сообщение Dec 22 2009, 15:29
Сообщение #24


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 21-12-09
Пользователь №: 54 383



Все, разобрался, всем большое спасибо! biggrin.gif

Сообщение отредактировал goodking - Dec 22 2009, 15:29
Go to the top of the page
 
+Quote Post
rezident
сообщение Dec 22 2009, 15:47
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(demiurg_spb @ Dec 22 2009, 19:40) *
А причём тут BCD, простите?
А что по-вашему делает sprintf при указании формата %d, как не BCD + конвертация в ASCII?
Цитата(demiurg_spb @ Dec 22 2009, 19:40) *
Ему надо просто коды АЦП пересчитать в температуру, а её отобразить в виде строки на дисплее.
Ну да. Загвоздка была как раз в отображении.
Цитата(goodking @ Dec 22 2009, 20:29) *
Все, разобрался, всем большое спасибо! biggrin.gif
Разобрались - хорошо. Только нужно огласить причину, чтобы у отвечающих не пропало желание в следующий раз вновь помогать вам.
Go to the top of the page
 
+Quote Post
goodking
сообщение Dec 22 2009, 16:06
Сообщение #26


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 21-12-09
Пользователь №: 54 383



Цитата(rezident @ Dec 22 2009, 18:47) *
А что по-вашему делает sprintf при указании формата %d, как не BCD + конвертация в ASCII?
Ну да. Загвоздка была как раз в отображении.
Разобрались - хорошо. Только нужно огласить причину, чтобы у отвечающих не пропало желание в следующий раз вновь помогать вам.

причина была в неверном присвоении типов используемых переменных!
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Dec 22 2009, 18:58
Сообщение #27


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(rezident @ Dec 22 2009, 18:47) *
А что по-вашему делает sprintf при указании формата %d, как не BCD + конвертация в ASCII?
Это да.
Цитата(rezident @ Dec 22 2009, 15:10) *
для начала нужно его (число) преобразовать в двоично-десятичное представление, где каждая тетрада (полубайт) имеет значение от 0 до 9.
Вы просо усложняете немного. Зачем ему тут вообще знать про упакованный BCD? ИМХО это немного лишне для совсем начинающегоsmile.gif


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
rezident
сообщение Dec 23 2009, 05:53
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(demiurg_spb @ Dec 22 2009, 23:58) *
Это да.Вы просо усложняете немного. Зачем ему тут вообще знать про упакованный BCD? ИМХО это немного лишне для совсем начинающегоsmile.gif
Как раз начинать нужно с основ языка, типовых алгоритмов и примитивов. В следующий раз ему понадобиться float на дисплей выводить и sprintf начнет требовать такой размер ОЗУ для стека, которого просто нет в кристалле. Что вы предложите: взять кристалл "пожирнее" или самостоятельно написать простой алгоритм вывода float на индикацию?
Go to the top of the page
 
+Quote Post
goodking
сообщение Dec 23 2009, 07:34
Сообщение #29


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 21-12-09
Пользователь №: 54 383



Цитата(rezident @ Dec 23 2009, 09:53) *
Как раз начинать нужно с основ языка, типовых алгоритмов и примитивов. В следующий раз ему понадобиться float на дисплей выводить и sprintf начнет требовать такой размер ОЗУ для стека, которого просто нет в кристалле. Что вы предложите: взять кристалл "пожирнее" или самостоятельно написать простой алгоритм вывода float на индикацию?

А что в таком случае надо сделать??
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Dec 23 2009, 09:29
Сообщение #30


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(goodking @ Dec 23 2009, 10:34) *
А что в таком случае надо сделать??
Застрелиться.
Цитата(rezident @ Dec 23 2009, 08:53) *
Как раз начинать нужно с основ языка, типовых алгоритмов и примитивов. В следующий раз ему понадобиться float на дисплей выводить и sprintf начнет требовать такой размер ОЗУ для стека, которого просто нет в кристалле. Что вы предложите: взять кристалл "пожирнее" или самостоятельно написать простой алгоритм вывода float на индикацию?
Вариантов достаточно. Ну если так пойти то начинать надо было с архитектуры MCU, понятиях стек, способы адресации, способы передачи аргументов. Изучить ассемблер хотя бы одного самого примитивного семейства. А уже потом браться за Сиsmile.gif Ну а ещё раньше системы исчисления, форматы чисел, булеву алгебру и т.д. и т.п. Спорить дпльше не вижу смысла. Главное не загубить в человеке желания учиться и саморазвиваться! Остальное приложится!


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 01:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.01513 секунд с 7
ELECTRONIX ©2004-2016