Форум

Радиолюбительский форум.

Если у Вас возникли вопросы, задавайте их на форуме.

В сети

Пользователей: 112
Из них просматривают:
Аналоги: 49. Даташиты: 48. Новости: 3. Остальное: 4. Профиль пользователя: 1. Теги: 1. Форум: 6.
Участников: 2
Гостей: 110

Google , Яндекс , далее...
Рекорд 2375 человек онлайн установлен 26.12.2015.

Партнёры


Партнёры

Новые объявления

В настоящее время нет объявлений.

Просмотр этой темы: 

 1 анонимных пользователей
Re: Проблема с преобразованиями
Главный Технолог
Зарегистрирован:
01.07.2011 19:44
Из: Тольятти
Сообщений: 305
Не в сети
Кто-нибудь реализовывал уже это?Работу с клавиатурой?



Re: Проблема с преобразованиями
Модератор
Зарегистрирован:
26.01.2010 23:26
Из: Тирасполь
Сообщений: 3926
Не в сети
о ужас... и как я тебе объясню как надо программировать?есть такие понятия как текущая вводимая позиция, кнопка принятия резульата и т.д.



Re: Проблема с преобразованиями
Главный Технолог
Зарегистрирован:
01.07.2011 19:44
Из: Тольятти
Сообщений: 305
Не в сети
алгоритм напиши, пожалуйста.



Re: Проблема с преобразованиями
Главный Технолог
Зарегистрирован:
01.07.2011 19:44
Из: Тольятти
Сообщений: 305
Не в сети
Я и хочу реализовать с кнопкой принятия результата для окончания ввода, счетчик для подсчета количества введенных цифр (1-5, если > 5 - то ошибка), массив из 10 элементов для хранения числа (0-9). А вот как сохранить нужное мне число(например 6565) в 16-битную переменную(например addr) и в нужной мне последовательности, вот в этом и проблема!!!



Re: Проблема с преобразованиями
Модератор
Зарегистрирован:
26.01.2010 23:26
Из: Тирасполь
Сообщений: 3926
Не в сети
в том то и дело, что вводить надо в массив для элементов введенного числа.
Индекс=0
опрос клавиатуры . в зависимости от нажатой кнопки(сделать задержку для антидребезга)
в массив[индекс]= заносим нажатую цифру
индекс ++
опрос клавиатуры . в зависимости от нажатой кнопки(сделать задержку для антидребезга)
в массив[индекс]= заносим нажатую цифру
и т.д.
Как только нажали ввод, преобразуем числа по вышенаписанной формуле путем умножения на 10000, 1000, 100, 10 и выходим из куска ввода



Re: Проблема с преобразованиями
Главный Технолог
Зарегистрирован:
01.07.2011 19:44
Из: Тольятти
Сообщений: 305
Не в сети
клавиатуру я организую не матричную, а кнопки от клавиш через резисторы(Условия позволяют так сделать).
ВОт пример кода:
void KEYBOARD (void)
{

if (pp != 0) pp--;
if (!ZERO)
{
if (pp == 0)
{
writed(10); // 0 on LCD
key[0]=0;
counter++;
}
pp=10000;
}
if (!ONE)
{
if (pp == 0)
{
writed(1); // 1 on LCD
key[1]=1;
counter++;
}
pp=10000;
}
}

//-------main KEYS-----------//
void KEYS (void)
{
unsigned count_c=0;
unsigned char addr_H=0,addr_L=0;

if (pp != 0) pp--;
if (!ACCEPT) // accept input data(end of inputting data)
{
if (pp == 0)
{
if (counter == 1) // 1 digit
{


counter=0;
//..

}
if (counter == 2) // 2 digits
{
counter=0
//..
}
}
pp=10000;
}
Подскажи, пожалуйста, не совсем понял!



Re: Проблема с преобразованиями
Главный Технолог
Зарегистрирован:
01.07.2011 19:44
Из: Тольятти
Сообщений: 305
Не в сети
if (!TWO)
{
if (pp == 0)
{
writed(2); // 2 on LCD
key[2]=2;
counter++;
}
pp=10000;
}
if (!THREE)
{
if (pp == 0)
{
writed(3); // 3 on LCD
key[3]=3;
counter++;
}
pp=10000;
}
if (!FOUR)
{
if (pp == 0)
{
writed(4); // 4 on LCD
key[4]=4;
counter++;
}
pp=10000;
}
if (!FIVE)
{
if (pp == 0)
{
writed(5); // 5 on LCD
key[5]=5;
counter++;
}
pp=10000;
}
if (!SIX)
{
if (pp == 0)
{
writed(6); // 6 on LCD
key[6]=6;
counter++;
}
pp=10000;
}
if (!SEVEN)
{
if (pp == 0)
{
writed(7); // 7 on LCD
key[7]=7;
counter++;
}
pp=10000;
}
if (!EIGHT)
{
if (pp == 0)
{
writed(8); // 8 on LCD
key[8]=8;
counter++;
}
pp=10000;
}
if (!NINE)
{
if (pp == 0)
{
writed(9); // 9 on LCD
key[9]=9;
counter++;
}
pp=10000;
}
Подскажи, пожалуйста, как все эти 9 клавиш обработать?



Re: Проблема с преобразованиями
Модератор
Зарегистрирован:
26.01.2010 23:26
Из: Тирасполь
Сообщений: 3926
Не в сети

Вот,для начала, простенькая функция опроса кнопок

unsigned char IsKeyPressed(void)
{
 static unsigned char KeyPressed[NUM_MAX_KEY];

// 0
 if (KeyPressed[0]==FALSE)
    {
     if (!ZERO)
        {
         delay_ms(10);
         if (!ZERO)
            {
             KeyPressed[0]=TRUE;
             return 0;
            }
 
         }
     } else
           {    
            if (ZERO)
               {
                delay_ms(10);
                if (ZERO) KeyPressed[0]=FALSE;
               }
           }
    
// 1

 if (KeyPressed[1]==FALSE)
    {
     if (!ONE)
        {
         delay_ms(10);
         if (!ONE)
            {
             KeyPressed[1]=TRUE;
             return 1;
            }
 
         }
     } else
           {    
            if (ONE)
               {
                delay_ms(10);
                if (ONE) KeyPressed[1]=FALSE;
               }
           }

//...
}

 




Re: Проблема с преобразованиями
Главный Технолог
Зарегистрирован:
01.07.2011 19:44
Из: Тольятти
Сообщений: 305
Не в сети
А дальше как сохранять в 16 бит. перемнную все эти цифры?
Я алгоритм действий понимаю. Но только вот как програмно это ореализовать= ступор(((



Re: Проблема с преобразованиями
Главный Технолог
Зарегистрирован:
01.07.2011 19:44
Из: Тольятти
Сообщений: 305
Не в сети
и получить коненчное чило в 16-битной пер., которое было введено пользователем.



Поиск по форуму


Расширенный поиск

Разное

Интересно

Если на шприц отсоса припоя надеть отрезок силиконовой трубки.
То работать шприц станет лучше,некоторое количество припоя просто останутся в трубке,откуда и удалить их проще,так что при взводе шприца меньше сыпятся на плату остатки припоя из шприца.