Easyelectronics.ru

Электроника для всех
Текущее время: 20 сен 2020, 20:26

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 18 ] 
Автор Сообщение
 Заголовок сообщения: перевод чисел ASCII в численный тип.
СообщениеДобавлено: 17 ноя 2018, 17:05 
Заглядывает иногда

Зарегистрирован: 15 ноя 2018, 11:15
Сообщения: 34
Приветствую!

Нуждаюсь в помощи реализации алгоритма на Си. Чтоб было понятно я не спец в программировании, а любитель самоучка разбираюсь в реализации алгоритмов по мере необходимости.

В общем дело состоит так: есть МК к его периферии подключен: символьный LCD дисплей 16x2, матричная клавиатура 4х4 и два ЦАПа. Вся периферия настроена работает и взаимодействует друг с другом.
Опишу ситуацию: есть значение угла А находящиеся в пределах -180...180 град. значение этого угла мне нужно ввести при помощи клавиатуры в МК и отобразить его на LCD далее введённый угол рассчитывается по формулам в значения sin и cos, которые в свою очередь поступают на вход ЦАПов для формирования уровня напряжения.
Вопрос: Как реализовать алгоритм записи значения и перевода из символьного типа который соответствует таблице ASCII для записи в LCD в числовой для вычисления sin и cos? Если я хочу вводить следующим образом: Захожу в подпункт меню (меню реализовано) ввода угла изначально вывожу в него ноль в виде 000.0 далее жму на клавиатуре 1, на дисплее отображаю 000.1, нажимаю 8 - отображаю 001.8 и т.д. до получения значения на LCD 180.0 далее нажимаю кнопку +-, получаю -180.0 нажимаю кнопку ввод. После чего введённое значение необходимо перевести в числовой тип с учетом знака для расчётов в формулах.

Всем спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: перевод чисел ASCII в численный тип.
СообщениеДобавлено: 17 ноя 2018, 17:29 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 1540
Посмотри в кодовой таблице коды символов '0', '1',....,'9'. Думаю, ответ родится сам собой, особенно если в шестнадцатеричном виде посмотришь.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: перевод чисел ASCII в численный тип.
СообщениеДобавлено: 17 ноя 2018, 18:00 
Заглядывает иногда

Зарегистрирован: 15 ноя 2018, 11:15
Сообщения: 34
VladislavS писал(а):
Посмотри в кодовой таблице коды символов '0', '1',....,'9'. Думаю, ответ родится сам собой, особенно если в шестнадцатеричном виде посмотришь.

От 0..9 переводится без проблем 0х30 вычитая. А вот как "собрать" числа из десятичных единиц десятков и сотен?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: перевод чисел ASCII в численный тип.
СообщениеДобавлено: 17 ноя 2018, 18:11 
Старожил

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 4198
Откуда: Чобля - долбаный кетайец
var = ((athous - 0x30) * 100) + ((atens - 0x30) * 10) + ((aunit - 0x30) * 1)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: перевод чисел ASCII в численный тип.
СообщениеДобавлено: 17 ноя 2018, 18:13 
Заглядывает иногда

Зарегистрирован: 26 фев 2018, 03:06
Сообщения: 126
это или нет? http://we.easyelectronics.ru/Soft/preob ... hisla.html


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: перевод чисел ASCII в численный тип.
СообщениеДобавлено: 17 ноя 2018, 18:13 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 3457
while(*str => '0' && *str <= '9') num = num * 10 + *str++ - '0';


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: перевод чисел ASCII в численный тип.
СообщениеДобавлено: 17 ноя 2018, 18:17 
Старожил

Зарегистрирован: 20 окт 2015, 18:14
Сообщения: 373
atoi, atof


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: перевод чисел ASCII в численный тип.
СообщениеДобавлено: 17 ноя 2018, 18:26 
Заглядывает иногда

Зарегистрирован: 15 ноя 2018, 11:15
Сообщения: 34
DmitriyVDN писал(а):

Полезная статья, до этого знал только sprintf. спасибо


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: перевод чисел ASCII в численный тип.
СообщениеДобавлено: 18 ноя 2018, 11:48 
Старожил

Зарегистрирован: 20 мар 2013, 11:27
Сообщения: 5358
KEA писал(а):
Полезная статья, до этого знал только sprintf. спасибо


рекомендую почитать документацию на си библиотеку того компилятора под тот МК которыми планируете пользоваться
пригодится при написании, будете знать что есть

общего плана книги по Си читать тоже полезно, но как правило не все стандартные функции реализованы под конкретном компиляторе для МК или реализованы не в полном объеме


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: перевод чисел ASCII в численный тип.
СообщениеДобавлено: 18 ноя 2018, 13:45 
Старожил

Зарегистрирован: 10 апр 2013, 17:41
Сообщения: 353
Рекомендую проштудировать функции и запомнить те, которые будут полезны для решаемой задачи. Так и учить.
http://all-ht.ru/inf/prog/c/func/index.html

_________________
Стиль: "G&P"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: перевод чисел ASCII в численный тип.
СообщениеДобавлено: 18 ноя 2018, 13:56 
Старожил

Зарегистрирован: 05 фев 2013, 00:58
Сообщения: 3516
:)


Последний раз редактировалось iev91 19 май 2019, 16:22, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: перевод чисел ASCII в численный тип.
СообщениеДобавлено: 18 ноя 2018, 14:13 
Старожил

Зарегистрирован: 20 мар 2013, 11:27
Сообщения: 5358
45893569365 писал(а):
Рекомендую проштудировать функции и запомнить те, которые будут полезны для решаемой задачи. Так и учить.
http://all-ht.ru/inf/prog/c/func/index.html

не сбивайте с толку
по вашей ссылке помесь стандартных функций языка Си с системными вызовами системы на подобии Линукс
и из первого набора далеко не все бывает реализовано для МК, а уж второго наборы вообще не бывает на МК


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: перевод чисел ASCII в численный тип.
СообщениеДобавлено: 18 ноя 2018, 15:09 
Старожил

Зарегистрирован: 10 апр 2013, 17:41
Сообщения: 353
Бгг. С вызовами ОС понятно. А остальное надо смотреть в стандартных файлах своего компилятора. А если это не реализовано в стандартных файлах, то гуглить по этому ключевому слову и скорее всего реализация этой функции есть в сторонних примерах или библиотеках. Но можно учить редкий си-диалект конкретного МК автора топика. Ни компилятор, ни МК он не указал.

_________________
Стиль: "G&P"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: перевод чисел ASCII в численный тип.
СообщениеДобавлено: 18 ноя 2018, 15:12 
Старожил

Зарегистрирован: 10 апр 2013, 17:41
Сообщения: 353
iev91 писал(а):
45893569365 писал(а):
Рекомендую проштудировать функции

Для UTF-8 существует набор библиотек? ASCII стремительно уходит в прошлое.
Мне интересно, как будет работать sizeof(), strlen() и т.п.


У меня никогда не было задачи с Юникодом, ничего сказать не могу. Я раз посмотрел поддержку юникода в FATFS, испугался и больше не подходил. В эмбеде имхо ASCII будет достаточно. Для гуя да, рано или поздно с ним придется столкнутся.

_________________
Стиль: "G&P"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: перевод чисел ASCII в численный тип.
СообщениеДобавлено: 19 ноя 2018, 11:16 
Заглядывает иногда

Зарегистрирован: 15 ноя 2018, 11:15
Сообщения: 34
Отвечу на некоторые вопросы. Дисплей поддерживает только ASCII кодировку. МК использую STM32F401 на базе отладочной платы NUCLEO. Пишу в среде Keil с использованием библиотек HALL.

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

while(1)
{
if(out_symbol>=0x30 && out_symbol<=0x39 && (row_counter<NUMBER_SIZE))
{
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
HAL_Delay(300);
alp[row_counter]= out_symbol;
row_counter++;
}
if(out_symbol == 'c')
{
HAL_Delay(200);
return;

Pos_LCD(1, 6+row_counter);
string_LCD(&alp[row_counter]);
}
}
Немного описания для понимания:
В бесконечный цикл я попадаю из пункта меню где собственно и хочу вводить значение переменной с клавиатуры.
out_symbol - это символьное значение нажатой кнопки. Клавиатура работает таким образом что при нажатии записывается символ нажатой кнопки например '9' в out_symbol после отжатия out_symbol обнуляется.
alp - это массив куда хочу писать введенные значения.
row_counter - переменная указывающая номер ячейки массива.
NUMBER_SIZE - кол-во ячеек массива, разрядность числа.
Pos_LCD - функция указателя позиции на дисплее куда выводить символ
string_LCD - вывод значения на дисплей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: перевод чисел ASCII в численный тип.
СообщениеДобавлено: 19 ноя 2018, 13:54 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 1540
Может вам блог завести? Нам то зачем эта информация?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: перевод чисел ASCII в численный тип.
СообщениеДобавлено: 19 ноя 2018, 18:28 
Старожил

Зарегистрирован: 16 окт 2013, 01:27
Сообщения: 1554
Удалил содержимое так как оно более не актуально...


Последний раз редактировалось sed_alex 20 ноя 2018, 13:07, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: перевод чисел ASCII в численный тип.
СообщениеДобавлено: 20 ноя 2018, 09:37 
Заглядывает иногда

Зарегистрирован: 15 ноя 2018, 11:15
Сообщения: 34
Все я разобрался. Все что хотел заработало, можно закрыть тему.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ] 


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB