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

Для введення інформації широко застосовуються кнопкові перемикачі. Сигнал таких перемикачів формується шляхом замикання (розмикання) електричного кола.

В стенді встановлено дві дискретні кнопки K_En I K_J, які під’єднані до входів зовнішніх переривань контролера відповідно до INT0 i INT1. Опитування даних давачів можна здійснювати як з використаннях переривань так і способом опитування стану окремого виводу потра контролера.

Також для введеня інформації використовується механічний енкодер E1.

Енкодер (датчик кута або перетворювач кут-код) – пристрій, який призначений для перетворення кута повороту обертового об’єкта (вала) в електричні сигнали, які дозволяють визначити кут його повороту.

Енкодери розділяються на інкременті і абсолютні, які можуть забезпечити дуже високу роздільну здатність. В інкрементних датчиках кутового положення поточне положення визначється шляхом підрахунку числа імпульсів від нульової точки.

На виході енкодера є два прямокутних сигнали, які зсунуті відносно один одного, в даному випадку на 900 (рисунок 4.2).

 

Рисунок 4.2 – Сигнали на виході енкодара

По характеру зсуву можна визначити напрамок обертання ручки вала енкодера. Розрізняється такоє кількість імпульсів на оберт, для даного типу енкодера – 20.

 

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

Написати програму для роботи з енкодером. При повертані ручки за годинниковою стрілкою збільшувати значення і значення виводити у двійковому вигляді на світлодіодну лінійку, при повертанні прити годинникової стрілки зменшувати значення.

 

$include (mod841)

  DAT equ R7

ADDR equ R6  

 

  State data 9

 

 

org 0

JMP BEGIN

 

ORG 030H

BEGIN:

mov SP,    #2fh

mov State, #0

 

loop:

call ReadEnc

mov a, State

add a, R7

mov State, a

mov DAT, a

mov ADDR, #7

call write

call Zatr

Jmp loop

            

ZATR:

MOV R7, #0H

DJNZ R7,$

RET

        encA bit 0

        encB bit 1

 

ReadEnc:

mov a, #0

mov c, encA

rlc a

mov c, P3.4

mov encA, c

rlc a

cjne a, #1, ReadEnc_NotFirst

;first

mov c, P3.5

mov encB, c

ReadEnc_NotFirst:  

cjne a, #2, ReadEnc_NotSecond

;second

mov a, #0

mov c, encB

rlc a

mov c, P3.5

rlc a

cjne a, #1, ReadEnc_NotCW

;CW

mov R7, #1

Ret

ReadEnc_NotCW:

;CCW

cjne a, #2, ReadEnc_NotCCW

mov R7, #255

Ret

ReadEnc_NotCCW:

ReadEnc_NotSecond:  

mov R7, #0

Ret

;===**END**===

write: setb P3.6     //Set Data bus buffer to TX

        mov P0, DAT   //moving data to bus buffer

        mov P2, ADDR //set periferals address

        nop                    //wait

        nop

        mov P2, #0x00 //clock pulse for device latch

            

ret                       //exit from subroutine

end

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: