Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Порядок обмена по интерфейсу RS-232




Наименование Направление Описание Контакт (25-контактный разъем) Контакт (9-контактный разъем)
DCD IN Carrie Detect (Определение несущей) 8 1
RXD IN Receive Data (Принимаемые данные) 3 2
TXD OUT Transmit Data (Передаваемые данные) 2 3
DTR OUT Data Terminal Ready (Готовность терминала) 20 4
GND - System Ground (Корпус системы) 7 5
DSR IN Data Set Ready (Готовность данных) 6 6
RTS OUT Request to Send (Запрос на отправку) 4 7
CTS IN Clear to Send (Готовность приема) 5 8
RI IN Ring Indicator (Индикатор) 22 9

 

Принципиальная схема

 

 

Алгоритм работы МК

 

АЛГОРИТМ РАБОТЫ МИКРОКОНТРОЛЛЕРА.

Мы имеем клавиатуру (каждая клавиша подключена к параллельному порту МК), с которой поступают сигналы на микроконтроллер, затем формируется скан-код, который передается на внешнее устройство (например ПК).

Это реализовано следующим образом:

По прошествии 100 мс мы опрашиваем входы МК и определяем, что клавиша была нажата. (задержкой в 100 мс формируем программную защиту от дребезга контактов). После нажатия клавиши передаем скан-код по UART.

Выбор номиналов резисторов R2- R7 осуществляется исходя из соображений незначительности падающего на них напряжения при нажатии на клавиши. При указанных на схеме значениях и напряжении питания 5В логические уровни составляют 0.6В для лог. “0” и 4.95В для лог. “1”.

Пятивольтовый стабилизатор (LM 7805) (входное напряжение от 7 до 30 вольт) обеспечивает на выходе стабильные 5 вольт, требующиеся для питания схемы.

 

 

Листинг программы:

;Пример кода, использующий функцию выходного сравнения таймера 1

 

.INCLUDE "C:\Program Files\Atmel\AVR Tools\AvrAssembler\Appnotes\2313def.inc"

    

;Определение сегмента данных

.DSEG

.ORG 0x60

 

.DEF knopka1 = r5 ;первые 8 кнопок

.DEF knopka2 = r6 ;кнопки под номерами 8,9

 

 

    

flag1:     .byte 1

 

;Определение сегмента кода

.CSEG

.ORG 0x0000

               

   .equ XTAL = 8000000

   .equ baudrate = 9600   

   .equ bauddivider = XTAL/(16*baudrate)-1

 

           ;Таблица векторов прерываний

           rjmp Reset

           rjmp INT0_interrupt

           rjmp INT1_interrupt

           rjmp T1CAPT_interrupt

           rjmp T1COMP_interrupt

           rjmp T1OVF_interrupt

           rjmp T0OVF_interrupt

           rjmp UART_RX_interrupt

           rjmp UART_UDRE_interrupt

           rjmp UART_TX_interrupt

           rjmp ANCOMP_interrupt

   

 

Reset:         

           ;Инициализация периферии МК

           ;Настройка указателя стека

           ldi  r16, 0x7F

           out  SPL, r16

               

           ;Инициализация переменной значением 0х00

           ldi  r17, 0x00

           sts  flag1, r17

         

     ;Инициализация регистра выходного сравнения значением 0х0100

           ldi  r17, 0x01

           out  OCR1AH, r17

           ldi  r17, 0x00

           out  OCR1AL, r17

 

           ;Включение таймера

           ;Настройка таймера на обнуление при срабатывании компаратора

           ;Выбор делителя системной частоты 1024

           ldi  r17, 0x0D

           out  TCCR1B, r17              

               

           ;Разрешение прерывания от функции выходного сравнения

           ldi  r17, 0x40 ;01000000b

           out  TIMSK, r17          

               

 

           ;Настроить порт D на ввод

           out DDRD,r22

 

           ;Настроить порт B на ввод

           out DDRB,r6

 

 

           ;Глобальное разрешение прерываний

           sei

 

ldi r16, low(bauddivider)

           out UBRRL,r16

     ldi r16, high(bauddivider)

     out UBRRH, r16

 

     ldi r16,0

     out UCSRA, r16

 

; Прерывания разрешены, прием-передача разрешен.

           ldi r16, (1<<RXEN)|(1<<TXEN)|(1<<RXCIE)|(1<<TXCIE)|(0<<UDRIE)

           out UCSRB, r16

 

; Формат кадра - 8 бит, пишем в регистр UCSRC, за это отвечает бит селектор

     ldi r16, (1<<URSEL)|(1<<UCSZ0)|(1<<UCSZ1)

     out UCSRC, r16

 

 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; Процедура отправки байта

translate: sbis UCSRA, UDRE ; Пропуск если нет флага готовности

     rjmp uart_snt ; ждем готовности - флага UDRE

 

     out UDR, R16 ; шлем байт

     ret        ; Возврат

 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

 

 

Main:

           ;Код пользователя, выполняется циклически с периодом, который задается с помощью

           ;функции выходного сравнения

               

           ;Вводим данные с портов d и b в регистры 

           In knopka1, portb ;

           in knopka2, portd ;

 

           ;проверяем установлена ли 1 в каком-либо бите

 

sbrc knopka1, 0

           breq translate1 ;если нажата клавиша 1

    

sbrc knopka1, 1

           breq translate1 ;если нажата клавиша 2

 

sbrc knopka1, 2

           breq translate1 ;если нажата клавиша 3

 

sbrc knopka1, 3

           breq translate1 ;если нажата клавиша 4

 

sbrc knopka1, 4

           breq translate1 ;если нажата клавиша 5

 

sbrc knopka1, 5

           breq translate1 ;если нажата клавиша 6

 

sbrc knopka1, 6

           breq translate1 ;если нажата клавиша 7

 

sbrc knopka2, 4

           breq translate1 ;если нажата клавиша 8

 

sbrc knopka2, 5

           breq translate1 ;если нажата клавиша 9

 

translate1 : mov r16, knopka1

translate ;передаем байт соответствующий кнопкам 0-7

 

clr r16 ;очищаем регистр r16

 

mov r16, knopka2 ;убираем лишние данные в регистре

rol r16

rol r16

rol r16

rol r16

 

ror r16

ror r16

ror r16

ror r16

ror r16

ror r16

ror r16

 

translate  ;передаем данные

 

clr knopka1; обнуляем кнопку1

clr knopka2; обнуляем кнопку2

 

 

cycle:

           ;Ожидание установки флаговой переменной

           lds  r0, flag1

           cp   r0, r17

           breq cycle

 

           sts  flag1, r17

 

           rjmp Main

 

           ;Обработчики прерываний

INT0_interrupt:

           reti

INT1_interrupt:

           reti

T1CAPT_interrupt:

           reti

 

T1COMP_interrupt:

           ;В обработчике прерывания выполняется установка флаговой переменной flag1

                              

           ldi  r20, 0xFF

           sts  flag1, r20

 

           reti

 

T1OVF_interrupt:

           reti

T0OVF_interrupt:

           reti

UART_RX_interrupt:

           reti

 

UART_UDRE_interrupt:

           reti

UART_TX_interrupt:

           reti

ANCOMP_interrupt:

           reti

 

    

    

 

Перечень элементов

Наименование

Кол-

во

Условное обозначение

К10-17Б 0.1 мкФ

2

C1,C9

К10-17Б 1пФ

1

C3, С4, С6, С7

К10-17Б 0.1мкФ

1

С9

Микросхемы

AT90S2313

1

D1

MAX232

1

D2

 

 

ЗАКЛЮЧЕНИЕ

В процессе работы был разработан проект контроллера клавиатуры, написано ПО опроса клавиатуры и обслуживания дискретных входов и выходов. Это устройство является звеном в системе сбора данных и управляет исполнительным устройством.

 

Литература

1. Конспект лекций по курсу микроконтроллеры 2010г

2. http://atmel.ru

3. http://www.gaw.ru

4. http://easyelectronics.ru/avr-uchebnyj-kurs-peredacha-dannyx-cherez-uart.html#more-48










Последнее изменение этой страницы: 2018-05-29; просмотров: 233.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...