Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Лабораторна робода №5 Зчитування інформації з матричної клавіатури




Лабораторна робода №5 Зчитування інформації з матричної клавіатури

Тема: Зчитування інформації з матричної клавіатури.

 

Мета: Вивчити взаємодію контролера із засобами вводу даних, вивід даних на засоби відображення інформації.

 

Порядок виконання роботи:

1. Вивчити алгоритми зчитування даних із клавіатури.

2. Розробити алгоритм індивідуального завдання до початку заняття.

3. Розробити програму і скомпілювати її.

4. Завантажити програму в стенд, переконатись в правильності її роботи, при негативному результаті виявити допущені помилки і виправити їх. Повторити завантаження програми в стенд.

 

 

 

Рисунок 5. 1 – Схема для лабораторної роботи №5

 

Короткі теоретичні відомості

Зчитування із клавіатури відбувається методом сканування по рядках. Для здійснення зчитування із першого стовпця потрібно записати в порт Р2 адресу 0EFh, і зчитати дані із старшого півбайта порту Р0. Для цього необхідно задати напрям передачі даних буфера DD6 на прийом інформації (встановити вивід DIR в логічний нуль), це значення задається портом мікроконтролера Р3. 6. Для роботи на прийом від шини до контролера встановити P3. 6 в логічний 0. При цьому якщо натиснута кнопка із першого рядка, то значення порту Р0. 0 буде рівне логічному 0, якщо натиснута кнопка із другого рядка, то Р0. 1=0 і т. д. Для зчитування із другого стовпця в порт Р2 записується адрес 0DFh, третього – 0BFh.

Зчитування із рядків клавіатури слід проводити не частіше ніж через 50мс, через те, що для будь-якого механічного контакту характерне явище вібрації контактної пари, протягом якої контакт декількаразово розмикається-замикається, протягом приблизно 8-12мс.

 

Приклад програми для лабораторної роботи №5

Програма зчитує дані з клавіатури і засвічує відповідний світлодіод.


dat Equ R0

adr Equ R1

Temp1 Equ R2

Temp2 Equ R3

; key1 Equ R4

; key2 Equ R5

stec Equ 0x02

 

Org 0x000

jmp run

 

cseg

org 0x033

 

run:

 

stovb1:

  mov adr, #01100000b

  mov P2, adr

  clr p3. 6

  mov a, p0

next0:

  jb p0. 0, next1

  call svit8

  jmp run

next1:

  jb p0. 1, next2

  call svit5

  jmp run

next2:

  jb p0. 2, next3

  call svit2

  jmp run

next3:

  jb p0. 3, stovb2

  call gas1

  jmp run

 

stovb2:

  mov adr, #01010000b

  mov P2, adr

  clr p3. 6

  mov a, p0

next02:

  jb p0. 0, next12

  call svit7

  jmp run

next12:

  jb p0. 1, next22

  call svit4

  jmp run

next22:

  jb p0. 2, next32

  call svit1

  jmp run

next32:

  jb p0. 3, stovb3

  call svit7

  call svit6

  call svit5

  call svit4

  call svit3

  call svit2

  call svit1

  jmp run

 

stovb3:

  mov adr, #00110000b

  mov P2, adr

  clr p3. 6

  mov a, p0

next03:

  jb p0. 0, next13

  call svit6

  jmp run

next13:

  jb p0. 1, next23

  call svit3

  jmp run

next23:

  jb p0. 2, next33

  call svit2

  call svit3

  call svit4

  call svit5

  call svit6

  call svit7

  call svit8

  jmp run

next33:

  jb p0. 3, stovb1

  call gas1

  jmp run

 

svit1:

  mov dat, #01111111b

  mov adr, #00000111b

  call writ

  call ldelay

ret

svit2:

  mov dat, #10111111b

  mov adr, #00000111b

  call writ

  call ldelay

ret

svit3:

  mov dat, #11011111b

  mov adr, #00000111b

  call writ

  call ldelay

ret

svit4:

  mov dat, #11101111b

  mov adr, #00000111b

  call writ

  call ldelay

ret

svit5:

  mov dat, #11110111b

  mov adr, #00000111b

  call writ

  call ldelay

ret

svit6:

  mov dat, #11111011b

  mov adr, #00000111b

  call writ

  call ldelay

ret

svit7:

  mov dat, #11111101b

  mov adr, #00000111b

  call writ

  call ldelay

ret

svit8:

  mov dat, #11111110b

  mov adr, #00000111b

  call writ

  call ldelay

ret

gas1:

  mov dat, #11111111b

  mov adr, #00000111b

  call writ

  call ldelay

ret

Writ:

  setb P3. 6

  mov P0, dat

  mov P2, adr

  nop

  mov P2, #0x00

ret

Delay:

  mov Temp1, #0xFF

loop:

  dec Temp1

  mov Temp2, #0xFF

  djnz Temp2, $

  cjne Temp1, #0x00, loop

ret

Ldelay:

  call delay

  call delay

  call delay

  call delay

  call delay

  call delay

  call delay

  call delay

  call delay

  call delay

RET

END


 

Варіанти індивідуальних завдань

Текст індивідуального завдання
За допомогою матричної клавіатури керувати швидкістю переміщення засвіченого світлодіода по лінійці напрямок знизу вверх. При натисканні кнопки “1” засвічений індикатор точка переміщається з швидкістю 1 сегмент на секнуду, при натисканні кнопки “4” засвічений індикатор точка переміщається з швидкістю 4 сегменти на секунду, при натисканні кнопки “7” засвічений індикатор точка переміщається з швидкістю 8 сегмента на секунду, при натисканні кнопки “*” рух світлодіода припиняється. Початковий стан: засвічено нижній світлодіод.
За допомогою матричної клавіатури керувати напрямком переміщення засвіченого світлодіода по лінійці. При натисканні кнопки “*” засвічений індикатор точка переміщається з швидкістю 2 сегменти на секунду знизу вверх, при натисканні кнопки “0” рух світлодіода припиняється, при натисканні кнопки “#” засвічений індикатор точка переміщається з швидкістю 2 сегменти на секунду зверху вниз. Початковий стан: засвічено нижній світлодіод.
Відображати на молодшому розряді семисегментнго індикаторі номер натиснутої кнопки з матричної клавіатури. При натисканні “*” або “#” розряд індикатора загасити. Початковий стан: всі розряди індикатора погашено.
При натисканні кнопки на матричні клавіатурі “*” збільшувати число засвічених світлодіодів першого стовпця на матричному індикаторі на один, при натисканні кнопки “#”, збільшувати число засвічених світлодіодів пятого стовпця на матричному індикаторі на один. При засвіченні всіх світло діодів в стовпці, відповідний стовпець гаситься і засвічується нижній світлодіод. Початковий стан: засвічено нижні світлодіоди в першому і пятому стовпцях.
На старшому розряді статичного індикатора відображати число, яке при натисканні кнопки на матричній клавіатурі відображає суму попереднього свого значення з номером натиснутої клавіші. При досягненні значення 100 або перевищення його при натисканні кнопки, на індикаторі відображається 00. Початковий стан: молодший розрід індикатор погашено, на старшому засвічено 00.
За допомого кнопок матричної клавіатури переміщувати засвічену точку по матричному індикаторі, “4” – переміщення на один сегмент вліво, “6” – переміщення на один сегмент вправо, “2” – переміщення на один сегмент вверх, “8” – переміщення на один сегмент вниз. При досягненні країв екрану засвічений індикатор за межі не виходить. Початковий стан: засвічено індикатор по середині матриці.
За допомого кнопок матричної клавіатури переміщувати засвічену точку по діагоналі матричному індикаторі, “1” – переміщення на один сегмент вліво і вверх, “3” – переміщення на один сегмент вправо і вверх, “9” – переміщення на один сегмент вправо і вниз, “7” – переміщення на один сегмент вліво і вниз. При досягненні країв екрану засвічений індикатор за межі не виходить. Початковий стан: засвічено індикатор по середині матриці.
На статичному індикаторі засвіти крійній сегмент і переміщувати його по контуру індикатора, швидкість стала – 1 сегмент за секунду. При натисканні кнопки матричної клавіатури “*” сегмент рухається за годинниковою стрілкою, при натисканні кнопки “#” сегмент рухається прити годинникової стрілки, при натисканні “0” рух сегмента припиняється. Початковий стан: засвічено один довільний сегмент.
При натисканні кнопки на матричній клавіатурі від “0” до “4” номер натиснутої кнопки відображати на молодшому розряді статичного індикатора, при натисканні кнопки від “5” до “9” відображати номернатиснутої кнопки на старшому розряді статичного індикатора, натискання “*” гасить всі розряди індикатора. Початковий стан індикатор погашено.
На світлодіодній лінійці засвічувати індикатори з різною тривалістю світіння в залежності від номера натиснутої клавіші. Так при натисканні “1” засвічується 1 індикатор і мигає з частотою 1Гц, при натисканні кнопки “8”, засвічується 8 індикаторів і частота мигання становить 0, 125Гц. Програма реагує лише на цифрові кнопки від “1” до “8”. Початковий нижній індикатор мигає з частотою 1Гц.

 


Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...