Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум


 
Опции темы

ADuC841. Работа с клавиатурой

Непрочитано 18.04.2016, 16:10  
Maroder666
Частый гость
 
Регистрация: 07.02.2016
Сообщений: 10
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Maroder666 на пути к лучшему
По умолчанию ADuC841. Работа с клавиатурой

Есть плата ADuC841 и к ней подключена клавиатура (Клав1 и Клав2 на схеме). Вопрос состоит в том как программно считывать состояние этих выходов, или в общем как считать нажатую клавишу? Может какие-то адреса опрашивать или как?
Миниатюры:
Нажмите на изображение для увеличения
Название: Scan10077.jpg
Просмотров: 107
Размер:	1,021.5 Кб
ID:	91415   Нажмите на изображение для увеличения
Название: Scan10089.jpg
Просмотров: 151
Размер:	500.3 Кб
ID:	91416  
Реклама:

Последний раз редактировалось Maroder666; 18.04.2016 в 16:13.
Maroder666 вне форума  
Непрочитано 18.04.2016, 23:03  
jump
Почётный гражданин KAZUS.RUN
 
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 8,011
Сказал спасибо: 0
Сказали Спасибо 4,955 раз(а) в 2,379 сообщении(ях)
jump на пути к лучшему
По умолчанию Re: ADuC841. Работа с клавиатурой

Сообщение от Maroder666 Посмотреть сообщение
Может какие-то адреса опрашивать или как?
а нахрена на схеме адреса линий дадены, причем 4 на выход, одна на вход? может изучить предварительно динамическую индикацию/опрос кнопок и ее вариации?
jump вне форума  
Непрочитано 24.04.2016, 13:45  
Maroder666
Частый гость
 
Регистрация: 07.02.2016
Сообщений: 10
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Maroder666 на пути к лучшему
Хорошо Re: ADuC841. Работа с клавиатурой

Написал такую функцию. К битам привязаны следующие значения sbit bit0 = P1^0;
sbit bit1 = P1^1;
sbit bit2 = P1^2;
sbit bit3 = P1^3;
sbit rez = P3^5;
В главной программе организовал циклический опрос и вывод символа по полученному коду. Однако реакция идет только на одну клавишу - D (4 ряд 4 строка). На другие клавиши не реагирует, причем даже если определенно задать bit0- bit4. (допустим всеми нулями - адрес 1 строки 1 столбца).

Код:
void klav(void)
{	 int i,j,k,l,str,stl;
        bit0 = 1;
	bit1 = 1;
	bit2 = 1;
	bit3 = 1;
	 str=1; stl=1;
  for (i=0;i‹2 ;i++) //cikl po P1.0
{		    bit0 =~bit0 ;  //// P1.0=0
			  for (j=0;j‹2 ;j++)  ////cikl po P1.1
			{		bit1 = ~bit1;// P1.1=0
					 str=1;

				  for (k=0;k‹2 ;k++)//cikl po P1.2
{		         bit2 =~bit2 ;
			  for (l=0;l‹2 ;l++)//cikl po P1.3
			{		bit3 = ~bit3;
				
			if (rez==0) {
					if ((str==1) && (stl==1)) kod = 1;
				    if ((str==1) && (stl==2)) kod = 2;
				    if ((str==1) && (stl==3)) kod = 3;
				    if ((str==1) && (stl==4)) kod = 10;
				    if ((str==2) && (stl==1)) kod = 4;
				    if ((str==2) && (stl==2)) kod = 5;
				    if ((str==2) && (stl==3)) kod = 6;
				    if ((str==2) && (stl==4)) kod = 11;
				    if ((str==3) && (stl==1)) kod = 7;
				    if ((str==3) && (stl==2)) kod = 8;
				    if ((str==3) && (stl==3)) kod = 9;
				    if ((str==3) &&(stl==4)) kod = 12;
			            if ((str==4) &&(stl==1)) kod =14;
				    if ((str==4) &&(stl==2)) kod = 0;
				    if ((str==4) &&(stl==3)) kod = 16;
				    if ((str==4) &&(stl==4)) kod = 13;
				  
				 

					}
					 str++;
		    }
			}
			 stl++;
}	
}
  }
Maroder666 вне форума  
Непрочитано 24.04.2016, 14:00  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,313
Сказал спасибо: 2,633
Сказали Спасибо 12,076 раз(а) в 6,082 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: ADuC841. Работа с клавиатурой

Как-то все сложно делают...
Для определения факта нажатия кнопки достаточно на одних шинах выставить нули (все сразу), а на перпендикулярных их искать. Когда факт свершился, просто найти пересечения (кнопки).
Ресурсы для этого необходимы гораздо скромнее, чем для непрерывного сканирования. Ну, если не объединять это с динамической индикацией.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Непрочитано 24.04.2016, 20:49  
3comma62
Прописка
 
Регистрация: 07.02.2016
Адрес: Лесной Урал
Сообщений: 162
Сказал спасибо: 121
Сказали Спасибо 71 раз(а) в 37 сообщении(ях)
3comma62 на пути к лучшему
По умолчанию Re: ADuC841. Работа с клавиатурой

Если глянуть поверхностно, то мультиплексор и демультиплексор по схеме управляются сигналами порта 2, а в программной части я вижу упоминание порта 1?
3comma62 вне форума  
Сказали "Спасибо" 3comma62
Maroder666 (25.04.2016)
Непрочитано 25.04.2016, 13:55  
Maroder666
Частый гость
 
Регистрация: 07.02.2016
Сообщений: 10
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Maroder666 на пути к лучшему
По умолчанию Re: ADuC841. Работа с клавиатурой

Всем спасибо. Все заработало
Maroder666 вне форума  
 
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ADuC841. Работа с ЖКИ Maroder666 ПЛИС и другие МК 10 13.02.2016 14:56
Напряжённая работа Roshens Отвлекитесь, эмбеддеры! 8 01.09.2010 23:08


Часовой пояс GMT +4, время: 18:24.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.