Разработка драйвера для матричной клавиатуры
Программирование микроконтроллера 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