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

Den1985

Members
  • Постов

    5
  • Зарегистрирован

  • Посещение

Информация

  • Город
    Kharkov

Электроника

  • Стаж в электронике
    Более 20 лет
  • Сфера радиоэлектроники
    Raznoe
  • Оборудование
    Паяльник и т. д.

Посетители профиля

Блок последних пользователей отключён и не показывается другим пользователям.

Достижения Den1985

Новичок

Новичок (1/14)

  • Неделя на форуме

Последние значки

0

Репутация

  1. Спасибо огромное, это то что мне нужно. Всех благ!!!
  2. Спасибо большое, но я новичек. А можно это как-то написать пожалуйста. Я это все понимаю но мозгов у меня не хватает это оформить. За ранее благодарен.
  3. И как это сделать, я не пойму. Поэтому я и прошу помощи.
  4. Добрый день. Я хочу чтоб писать не одну цыфру а писать с матричной клавиатуры несколько цифр. Допустим 2167 или 3876, а у меня пишет 2 или 3 или 8, по одной цифре а больше не пишет и я не могу понять как это сделать.
  5. Добрый день програмисты електроники. Очень нужна Ваша помощь в дописании кода в Atmel Studio для Atmega8. Я новичёк в програмировании. Суть такая. С матричной клавиатуры могу вывести одну цифру от 0 до 9, но не могу добавлять чтоб было 2 или 3 или 4 цифры. Знаю что нужно как-то занести в переменную и умножить на 10, чтоб число сдвинулось но не знаю как это сделать. Пытаюсь сам разобраться но не получается. Может кто-то сможет мне дописать код. За ранее благодарен. Ниже код. #include "main.h" unsigned char key_tab[4] = { 0b11111110, 0b11111101, 0b11111011, 0b11110111 }; unsigned char scan_key(void) { unsigned char key_value = 0; unsigned char i; for(i = 0;i < 4;i++) { PORTB = key_tab[i]; _delay_us(10); switch (PINB & 0xF0) { case 0b11100000: key_value = 1 + i * 3; return (key_value); case 0b11010000: key_value = 2 + i * 3; return (key_value); case 0b10110000: key_value = 3 + i * 3; return (key_value); default: break; } } return (key_value); } int main(void) { DDRB |= (1 << PB3)|(1 << PB2)|(1 << PB1)|(1 << PB0); DDRB &= ~(1 << PB7)|(1 << PB6)|(1 << PB5)|(1 << PB4); PORTB = 0xF0; DDRD = 0xFF; PORTD = 0x00; _delay_ms(10); LCD_ini(); clearlcd(); setpos(0,0); sendchar('D'); setpos(1,0); sendchar('='); while(1) { unsigned long a; unsigned long c; if(scan_key()==1) c = 1; if(scan_key()==2) c = 2; if(scan_key()==3) c = 3; if(scan_key()==4) c = 4; if(scan_key()==5) c = 5; if(scan_key()==6) c = 6; if(scan_key()==7) c = 7; if(scan_key()==8) c = 8; if(scan_key()==9) c = 9; if(scan_key()==11) c = 0; a = c; setpos(2,0); sendcharlcd(( a %10000)/1000+0x30); sendcharlcd(( a %1000)/100+0x30); sendcharlcd(( a %100)/10+0x30); sendcharlcd( a %10+0x30); } }
×
×
  • Создать...