Разработка драйвера для матричной клавиатуры

Программирование микроконтроллера 51 серии на ввод символом и вывод введенного символа и времени нажатия клавиши с шагом 0.5с. Алгоритм обработчиков прерываний: обработчика Т2, Т0, матричной клавиатуры. Алогритм размещения символа в буфере вывода.

Рубрика Коммуникации, связь, цифровые приборы и радиоэлектроника
Вид курсовая работа
Язык русский
Дата добавления 24.08.2009
Размер файла 21,5 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

4

Кафедра "Информационно-коммуникационные технологии"

Курсовая работа

по дисциплине "Микропроцессорные системы"

Москва 2008

Аннотация

В курсовой работе разрабатывается драйвер для матричной клавиатуры, подпрограмма вывода символов матричной клавиатуры и расчет времени нажатия кнопки. Работа выполняется на учебном стенде с использованием системы-прототип на основе микроконтроллера 51 семейства.

Оглавление

  • Аннотация 2
  • Техническое задание 4
  • Анализ технического задания 4
  • Алгоритм основной программы 5
  • Алгоритмы обработчиков прерываний 5
    • Алгоритм обработчика T2 5
    • Алгоритм обработки клавиши матричной клавиатуры 6
    • Алгоритм обработчика T0 6
    • Алгоритм размещения символа в буфере вывода. 7
  • Листинг 7
  • Выводы 16
  • Список литературы 17
  • Техническое задание

Реализовать программу с использованием системы прерываний, отвечающую следующим требованиям:

1. Ввод с матричной клавиатуры символов 0…9, *, +, \.

2. Измерение времени нажатия клавиши с шагом в 0.5 с.

3. Вывод введенного символа и времени нажатия клавиши.

Анализ технического задания

В соответствии с техническим заданием устройство должно выполнять:

1. Прием символа от матричной клавиатуры.

2. Вывод символа, принятого от матричной клавиатуры

3. Измерение времени нажатия клавиши.

4. Вывод длительности нажатия клавиши в формате с шагом в 0.5 с.

Прием символа от матричной клавиатуры реализуется с помощью прерываний от таймера T2 и определения нажатой клавиши в обработчике данных прерываний.

Вывод символа реализуется с помощью прерываний от COM порта (бит TI).

Основная программа инициализирует прерывания от COM порта и таймера T2 и Т0, после чего ожидает любого из перечисленных прерываний.

Соответствие битов порта P1 и контактов матричной клавиатуры:

1

2

3

+

P1.5

4

5

6

-

P1.4

7

8

9

*

P1.7

D

CX

ВП

/

P1.6

P1.1

P1.0

P1.3

P1.2

Алгоритм основной программы

4

Алгоритмы обработчиков прерываний

Алгоритм обработчика T2

Алгоритм обработки клавиши матричной клавиатуры

4

Алгоритм обработчика T0

4

Алгоритм размещения символа в буфере вывода

4

Листинг

org 8000H

ljmp a0

org 800bh

ljmp timer

org 8023H

ljmp trans

org 8033H

ljmp p10

org 803bH

ljmp p10

org 8043H

ljmp p10

org 804bH

ljmp p10

a0: clr TI

clr RI

mov 08H, #00H

mov r1, #70H

mov 42h, #00h

mov 11h, #00h

mov 12h, #00h

;приоритет прерываний

mov 0b8h, #12h

mov 0f8h, #00H ; ip1

mov 0A8H, #90h

mov 0ebh, #0ffh ;CTCON

mov 0e8h, #0fh ;IEN1

mov P1, #0Fh

setb ip.1

mov 0c8h, #00h

mov 51h, #00h

mov 53h, #00h

;mov r5, #00h

start: mov a, 42h

cjne a, #2, start

clr tcon.5

clr tcon.4

clr et0

mov 0e8h, #00h

mov @r1, 02h

inc r1

call g1

mov @r1, #20H

inc r1

call g1

mov a, 51h

mov b, #21

div ab

mov b, #2

div ab

add a, #30h

mov @r1, a

inc r1

call g1

mov a, b

cjne a, #00h, sec

retsec: mov @r1, #0dh

inc r1

call g1

mov @r1, #0ah

inc r1

call g1

wait: mov a, r1

cjne a, #70h, wait

jmp a0

sec: mov @r1, #2ch

inc r1

call g1

mov @r1, #35H

inc r1

call g1

jmp retsec

g1: mov a, 08h

cjne a, #00H , next

setb TI

next: ret

trans: push ACC

mov 08H, #01H

mov a, r1

mov r4, a

jnb TI, koni

clr TI

cjne r1, #70H, prer

mov 08H, #00H

jmp koni

prer: mov r0, #70H

mov r3, #71H

mov sbuf, @r0

back: mov a, r0

cjne a, 04H, perem

mov a, r4

dec a

mov r4, a

jmp koni

perem: mov a, r3

mov r1, a

mov a, @r1

mov @r0, a

inc r0

inc r1

mov a, r1

mov r3, a

jmp back

koni: clr RI

mov a, r4

mov r1, a

pop ACC

reti

next3:

ljmp next4

p10: mov a, 42h

cjne a, #2, next3

ljmp next1

next4: clr TCON.4

mov tl0, #0d0h

mov th0, #4ch

clr tcon.5

setb TCON.4

setb et0

;разреш прер таймера

mov r5, 42h

inc r5

mov 42h, r5

jnb P1.0, P1_0

jnb P1.1, P1_1

jb P1.2, ref1

ljmp P1_2

ref1:

jb P1.3, ref2

ljmp P1_3

ref2:

ljmp END_HNDL

P1_0:

mov P1, #11111110b

jnb P1.4, P1_0_4

jnb P1.5, P1_0_5

jnb P1.6, P1_0_6

jnb P1.7, P1_0_7

jmp END_HNDL

P1_0_4:

mov r2, #'5'

jmp END_HNDL

P1_0_5:

mov r2, #'2'

jmp END_HNDL

P1_0_6:

mov r2, #'C'

jmp END_HNDL

P1_0_7:

mov r2, #'8'

jmp END_HNDL

P1_1:

mov P1, #11111101b

jnb P1.4, P1_1_4

jnb P1.5, P1_1_5

jnb P1.6, P1_1_6

jnb P1.7, P1_1_7

jmp END_HNDL

P1_1_4:

mov r2, #'4'

jmp END_HNDL

P1_1_5:

mov r2, #'1'

jmp END_HNDL

P1_1_6:

mov r2, #'D'

jmp END_HNDL

P1_1_7:

mov r2, #'7'

jmp END_HNDL

P1_2:

mov P1, #11111011b

jnb P1.4, P1_2_4

jnb P1.5, P1_2_5

jnb P1.6, P1_2_6

jnb P1.7, P1_2_7

jmp END_HNDL

P1_2_4:

mov r2, #'-'

jmp END_HNDL

P1_2_5:

mov r2, #'+'

jmp END_HNDL

P1_2_6:

mov r2, #'/'

jmp END_HNDL

P1_2_7:

mov r2, #'*'

jmp END_HNDL

P1_3:

mov P1, #11110111b

jnb P1.4, P1_3_4

jnb P1.5, P1_3_5

jnb P1.6, P1_3_6

jnb P1.7, P1_3_7

jmp END_HNDL

P1_3_4:

mov r2, #'6'

jmp END_HNDL

P1_3_5:

mov r2, #'3'

jmp END_HNDL

P1_3_6:

mov r2, #'B'

jmp END_HNDL

P1_3_7:

mov r2, #'9'

jmp END_HNDL

END_HNDL:

next1:

mov P1, #0Fh

mov r7, #0fh

DEL_1:

mov r6, #0FFh

DEL_2:

nop

djnz r6, DEL_2

djnz r7, DEL_1

mov 0C8h, #00h

reti

timer: clr TCON.4

;mov tl0, #0d0h

;mov th0, #4ch

clr tcon.5

setb TCON.4

mov 50h, r7

mov r7, 51h

inc r7

mov a, r7

cjne a, #1, koni1

mov 52h, r6

mov r6, 53h

inc r6

mov 53h, r6

mov r6, 52h

;mov r7, #0

koni1: mov 51h, r7

mov r7, 50h

reti

end

Выводы

В курсовой работе запрограммирован микроконтроллер 51 серии на ввод символов от матричной и вывод введенного символа и времени нажатия клавиши с шагом 0.5 с. Программа использует прерывания от СOM порта и таймеров T2 и T0.

Список литературы

1. Гудков Ю. И. - Конспект лекций и семинаров по дисциплине “Микропроцессорные системы”.

2. Документация и описание команд 8051.

3. Сединин В.И., Микушин А.В. - Программирование микропроцессорных систем на языке ASM-51.


Подобные документы

  • Разработка принципиальной схемы и описание работы контроллера клавиатуры/дисплея КР580ВД79. Схема сопряжения микроконтроллера с фотоимпульсным датчиком. Расчет потребляемого тока от источника питания. Блок-схема программы вывода информации на индикацию.

    курсовая работа [736,9 K], добавлен 18.02.2011

  • Микропроцессорные системы и микроконтроллеры. Разработка схемы и программы микроконтроллера. Симуляция проекта в программе Proteus 7. Прерывание программы по внешнему сигналу, поступающему в процессор. Устройство и настройка канала порта на ввод-вывод.

    контрольная работа [551,8 K], добавлен 26.01.2013

  • Выбор элементной базы. Анализ ресурсов ввода-вывода. Структура алгоритма программы. Состав и назначение отдельных элементов. Подпрограммы табличной перекодировки напряжения в давление, вывода числа на индикацию, обработчика прерывания от таймера.

    курсовая работа [1,1 M], добавлен 21.12.2010

  • Разработка расширителя портов ввода-вывода и особенности его применения. Программируемая логическая интегральная схема CPLD. Плис CoolRunner-II, главные функции. Листинг модулей на языке Verilog. Временная диаграмма, внутреннее содержание модуля.

    курсовая работа [1,9 M], добавлен 26.01.2013

  • Структурная схема микроконтроллерной системы. Схемы подключения микроконтроллера, цифровых и аналоговых сигналов, линейного дисплея и клавиатуры. Текст главной программы на языке Ассемблера для МК51. Программа ввода и обработки аналоговой информации.

    курсовая работа [372,6 K], добавлен 19.12.2013

  • Разработка интерфейса и уточнённой структурной схемы, процессорного модуля, подсистем памяти и ввода/вывода, алгоритма программного обеспечения. Оценка памяти программ и данных. Структура адресного пространства. Организация клавиатуры и индикации.

    курсовая работа [2,4 M], добавлен 09.08.2015

  • Понятие автоматизации управления объектами с помощью микроЭВМ. Цифровой, импульсный, аналоговый, программно-управляемый виды ввода данных. Ввод-вывод по прерыванию. Взаимодействие с периферийными внешними устройствами. Вывод и отображение информации.

    курсовая работа [6,1 M], добавлен 01.06.2012

  • Описание микроконтроллера MCS 296, его структура, основные элементы и назначение. Порядок подключения ЖК-индикатора, динамического ОЗУ, АПЦ, клавиатуры. Конструкция карты адресного пространства. Принципы межмашинного обмена через "Почтовый ящик".

    контрольная работа [31,1 K], добавлен 28.06.2010

  • Функциональная спецификация, описание объекта, структура системы и ресурсов микроконтроллера. Ассемблирование, программирование микроконтроллера и разработка алгоритма работы устройства, описание выбора элементной базы и работы принципиальной схемы.

    курсовая работа [2,2 M], добавлен 02.01.2010

  • Измеритель длительности нажатия клавиши. Принципиальная электрическая схема. Сохранение измеренных значений в оперативном запоминающем устройстве микроcхемы. Выведение измеренных значений на дисплей. Разработка алгоритма. Реализация на PIC-контроллере.

    курсовая работа [373,9 K], добавлен 31.12.2008

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.