Генератор кода Морзе

Автор: Пользователь скрыл имя, 19 Марта 2012 в 18:27, курсовая работа

Описание работы

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

Содержание

1 Введение 4
2 Анализ задачи 5
2.1 Функциональная спецификация системы 6
3 Предварительное проектирование системы 7
3.1 Разбиение системы на модули и выбор соотношения между аппаратными и программными средствами 7
3.2 Построение структурной схемы аппаратной части системы. Описание структурной схемы 8
4 Проектирование аппаратных средств системы. Разработка и принципиальной схемы системы. Описание работы системы по принципиальной схеме 9
5 Проектирование программного обеспечения. Разработка схемы алгоритма работы системы и программы. Описание алгоритма работы системы и программы 13
6 Заключение 15
7 Литература 16
Приложение А — Листинг управляющей программы

Работа содержит 1 файл

Пояснительная записка.doc

— 105.00 Кб (Скачать)

В качестве таймера используется микросхема КР1810ВИ54 [4] (DD6). Это программируемый таймер, который содержит три независимых 16 разрядных таймера с возможностью работы в различных режимах. На его вход выбора подаётся сигнал с выхода дешифратора DD15, задавая тем самым базовый адрес микросхемы 04h в адресном пространстве портов ввода/вывода микропроцессора. Адресные входы А0, А1 подключены к соответствующим линиям шины адреса. При таком подключении можно адресоваться ко всем внутренним регистрам программируемого таймера относительно его базового адреса.

Программируемый таймер используется для выдержки длительности точки (принята равной 0,3с), поэтому он должен разделить входную частоту 5МГц до ≈ 3,3Гц. Коэффициент деления должен составить:

КД = 5·106 /3,3 = 1515152

Что намного больше коэффициента деления 16 разрядного таймера, равного 65535, поэтому необходимо задействовать два таймера — 0 и 1. Таймеры необходимо включить последовательно, образуя 32 разрядный делитель входной частоты. Таймер 0 программируется для работы в режиме 2 (импульсный генератор с автозагрузкой) и является младшей частью делителя, таймер 1 программируется для работы в режиме 0 (прерывание терминального счёта) и является старшей частью делителя, его выход OUT1 через инвертор подаётся на вход микропроцессора для анализа в программе командой WAIT. Так как счёт таймером 0 должен быть всегда разрешён, на его вход разрешения G0 нужно подать уровень логической 1. Таймер 1 должен декрементироваться только после окончания счета таймером 0, для этого его вход разрешения счёта G1 нужно соединить через инвертор с выходом таймера 0 (OUT0). Для корректной работы схемы тактовые импульсы на входы таймеров нужно подавать в противофазе.

И, наконец, выходной порт представляет собой обычный триггер-защёлку (DD12.1), а точнее микросхему КР1533ТМ2 [3], включающую в себя два D-триггера с входами сброса и установки. При записи данных микропроцессором в порт по адресу 08h по фронту сигнала состояние линии D0 шины данных заносится в триггер, откуда поступает на разъём выходной линии XS2.


5 Проектирование программного обеспечения. Разработка схемы алгоритма работы системы и программы. Описание алгоритма работы системы и программы

Управляющая программа системы, в соответствии с описанными в разделе 3 программными модулями, должна включать эти модули в виде подпрограмм. Однако использование подпрограмм потребует запоминание в оперативной памяти состояния счётчика команд для возврата из подпрограммы. В виду простоты проектируемой системы и программного обеспечения целесообразно не использовать микросхему оперативной памяти и отказаться от оформления модулей в виде отдельных подпрограмм. В этом случае программные модули будут оформлены в виде последовательности команд в теле основной программы.

Первая команда управляющей программы располагается по адресу 07Fh, так как после снятия сигнала сброса микропроцессор обращается за первой командой по адресу 0FFFF0h. Но в системе используется постоянная память объёмом 2Кслова, поэтому на адресных линия ПЗУ появляется адрес 07Fh.

Блок-схема алгоритма управляющей программы приведена БГУИ.ХХХХХХ.001. Первым действием программы после сброса (блок 2) является инициализация контроллера параллельного порта (КПП) путём записи в его регистр управляющего слова (РУС) 0BBh. Этим канал А КПП настраивается на приём байта от параллельного порта ЭВМ.

В блоке 3 производится чтение кода символа ASCII из канала А КПП. Если к этому моменту КПП не принял байт, вырабатывается сигнал отсутствия готовности и микропроцессор вводит такты ожидания до тех пор, пока в КПП не поступит байт от параллельного порта ЭВМ.

В блоке 4 из принятого кода символа ASCII вычитается константа 32, так как в коде Морзе отсутствуют символы ASCII с 0 по 31. Этой операцией получается индекс кода Морзе в таблице преобразования символа ASCII в код Морзе. Далее (блок 5) из таблицы преобразования по полученному индексу считывается длинна символа кода Морзе. Если получен символ ASCII, для которого не существует кода Морзе, его длинна будет равна нулю в таблице преобразования, и в блоке 6 произойдет переход на команду чтения следующего символа ASCII (блок 3). В противном случае  в блоке 7 будет прочитан следующий байт кода Морзе, а в блоке 8 он сдвинется влево через флаг переноса (cf) и в блоке 9 cf будет выведен в выходной порт, откуда поступит в выходную линию. В блоке 10 канал 1 программируемого таймера (ПТ) переводится в режим 0, записью байта 34h в РУС, а в блоке 11 канал 0 ПТ переводится в режим 2, записью байта 70h в РУС. Далее в оба канала ПТ записываются соответствующие константы счёта (блоки 12 и 13) в результате чего происходит запуск таймеров обоих каналов. В блоке 14 микропроцессор ожидает, когда таймер канала 0 завершит счет, т. е. выдержится нужная длительность элемента кода Морзе. Затем, в блоке 15, проверяется полностью ли выведен в выходную линию код Морзе, и если да — считывается следующий символ ASCII (переход к блоку 3). Иначе проверяется, полностью ли выведен текущий байт (блок 16) и если да, то считывается следующий байт (переход к блоку 7), в противном случае выводится следующий бит текущего байта кода Морзе (переход к блоку 8).

Листинг управляющей программы приведён в приложении А.


6 Заключение

В результате работы над курсовым проектом были вспомнены, закреплены, а местами углублены и заново изучены навыки разработки цифровых систем на интегральных микросхемах с использованием микропроцессора. Разработано простое цифровое устройство на базе 16 разрядного микропроцессора, функции которого в давние времена (а где-то и по сей день) выполнялись аппаратами, построенными только на дискретных элементах.

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


7 Литература

1.      Лебедев В.И. Микросхемы памяти и их применение: Справочник. М.: Радио и связь, 1990.

2.      Логические ИС КР1533, КР1554: Справочник. В 2 ч. Под ред. И.И. Петровский, А.Ф. Прибыльский, А.А.Троян, В.С. Чувулев. — М.: Бином, 1993. — Ч. 1.

3.      Логические ИС КР1533, КР1554: Справочник. В 2 ч. Под ред. И.И. Петровский, А.Ф. Прибыльский, А.А.Троян, В.С. Чувулев. — М.: Бином, 1993. — Ч. 2.

4.      Микропроцессорный комплект К1810: Структура, программирование, применение: Справочная книга. Под ред. Ю.М. Казаринова. — М.: Высшая школа, 1990.

5.      Микропроцессоры и микропроцессорные комплекты интегральных микросхем: Справочник. В 2 т. Под ред. В.А. Шахнова. — М.: Радио и связь, 1988. — Т. 1.

6.      Микропроцессоры и микропроцессорные комплекты интегральных микросхем: Справочник. В 2 т. Под ред. В.А. Шахнова. — М.: Радио и связь, 1988. — Т. 2.

7.      Руководство по архитектуре IBM PC AT. Под ред. М.Л. Мархасина. — Мн. ООО “Консул”, 1992.

8.      Фигурнов В.Э. IBM PC для пользователя. Изд. 6-е, перераб. и доп. — М.: ИНФРА–М, 1995.

9.      Цифровые интегральные микросхемы: Справочник. /М.И. Богданович, И.Н. Грель и др. — Мн.: Беларусь, 1991.


 

 

 

 

 

 

 

 

Приложение А

(справочное)

Листинг управляющей программы


                .code

 

                org              07f0h

                mov     ax, offset TableMorze

                mov     ds, ax                  ;инициализация ds

               mov     al, 10111011b

                out     01h, al                 ;инициализация ВВ55А

GetSymbol:

                in      al, 00h                 ;чтение символа из ВВ55А

                sub     al, 32          ;отнять номер первого исп. символа в таблице ASCII

                xor     bh, bh

                mov     bl, al

                mov     cl, 2

                shl     bx, cl                  ;умножение номера символа на его размер (4)

                mov     ah, ds:[bx]             ;чтение размера символа

                cmp     ah, 0

                jz      GetSymbol               ;если размер символа = 0, получить следующий

GetNextByte:

    inc     bx

                mov     dl, ds:[bx]             ;чтение байта символа

                mov     ch, 8                   ;длинна байта

OutNextBit:
     rol     dl, 1

                mov     al, 0

                jnc     OutLowLevel

                mov     al, 1

OutLowLevel:

    out     08h, al                 ;вывод сдвинутого бита в триггер

                mov     al, 00110100b

                out     07h, al                 ;установка режима 2 для таймера 0

                mov     al, 01110000b

                out     07h, al                 ;установка режима 0 для таймера 1

                mov     al, cs:BYTE PTR TimerConst + 1

                out     05h, al                 ;загрузка младшего байта в таймер 1

                mov     al, cs:BYTE PTR TimerConst

                out     05h, al                 ;загрузка старшего байта в таймер 1

                mov     al, cs:BYTE PTR TimerConst + 3

                out     04h, al                 ;загрузка младшего байта в таймер 0

                mov     al, cs:BYTE PTR TimerConst + 2

                out     04h, al                 ;загрузка старшего байта в таймер 0

                wait                            ;ждать окончания интервала

                dec     ah                                     

                jz      GetSymbol

                dec     ch

                jz      GetNextByte

                jmp     OutNextBit

 

 

TimerConst:    dd      1515152

                ;таблица сопоставления символам ASCII кодов Морзе (длинна в интервалах)

TableMorze:     db      5,  00000000b, 00000000b, 00000000b     ;' ', №32 ASCII, длинна 5

                dd      2 dup(0)                                ;№№33-34 ASCII, длинна 0

                db      16, 11101010b, 11101000b, 00000000b     ;'№', №35 ASCII, длинна 16

                dd      10 dup(0)                               ;№№36-45 ASCII, длинна 0

               db      14, 10101010b, 10100000b, 00000000b     ;'.', №46 ASCII, длинна 14

                dd      1 dup(0)                                ; №47 ASCII, длинна 0

                db      22, 11101110b, 11101110b, 11100000b     ;'0', №48 ASCII, длинна 22

                db      20, 10111011b, 10111011b, 10000000b     ;'1', №49 ASCII, длинна 20

                db      18, 10101110b, 11101110b, 00000000b     ;'2', №50 ASCII, длинна 18

                db      16, 10101011b, 10111000b, 00000000b     ;'3', №51 ASCII, длинна 16

                db      14, 10101010b, 11100000b, 00000000b     ;'4', №52 ASCII, длинна 14

                db      12, 10101010b, 10000000b, 00000000b     ;'5', №52 ASCII, длинна 12

                db      14, 11101010b, 10100000b, 00000000b     ;'6', №54 ASCII, длинна 14

                db      16, 11101110b, 10101000b, 00000000b     ;'7', №55 ASCII, длинна 16

                db      18, 11101110b, 11101010b, 00000000b     ;'8', №56 ASCII, длинна 18

                db      20, 11101110b, 11101110b, 10000000b     ;'9', №57 ASCII, длинна 20

                dd      5 dup(0)                                ;№№58-62 ASCII, длинна 0

                db      18, 10101110b, 11101010b, 00000000b     ;'?', №63 ASCII, длинна 18

                dd      64 dup(0)                               ;№№64-127 ASCII, длинна 0

                db      8,  10111000b, 00000000b, 00000000b     ;'А', №128 ASCII, длинна 8

                db      12, 11101010b, 10000000b, 00000000b     ;Б'', №129 ASCII, длинна 12

                db      12, 10111011b, 10000000b, 00000000b     ;В'', №130 ASCII, длинна 12

                db      12, 11101110b, 10000000b, 00000000b     ;'Г', №131 ASCII, длинна 12

                db      10, 11101010b, 00000000b, 00000000b     ;'Д', №132 ASCII, длинна 10

                db      4,  10000000b, 00000000b, 00000000b     ;'Е', №133 ASCII, длинна 4

                db      8,  10101000b, 00000000b, 00000000b     ;'Ж', №134 ASCII, длинна 8

                db      14, 11101110b, 10100000b, 00000000b     ;'З', №135 ASCII, длинна 14

                db      6,  10100000b, 00000000b, 00000000b     ;'И', №136 ASCII, длинна 6

                db      16, 10111011b, 10111000b, 00000000b     ;'Й', №137 ASCII, длинна 16

                db      12, 11101011b, 10000000b, 00000000b     ;'К', №138 ASCII, длинна 12

                db      12, 10111010b, 10000000b, 00000000b     ;'Л', №139 ASCII, длинна 12

                db      10, 11101110b, 00000000b, 00000000b     ;'М', №140 ASCII, длинна 10

                db      8,  11101000b, 00000000b, 00000000b     ;'Н', №141 ASCII, длинна 8

                db      14, 11101110b, 11100000b, 00000000b     ;'О', №142 ASCII, длинна 14

                db      14, 10111011b, 10100000b, 00000000b     ;'П', №143 ASCII, длинна 14

                db      10, 10111010b, 00000000b, 00000000b     ;'Р', №144 ASCII, длинна 10

                db      8,  10101000b, 00000000b, 00000000b     ;'С', №145 ASCII, длинна 8

                db      6,  11100000b, 00000000b, 00000000b     ;'Т', №146 ASCII, длинна 6

                db      10, 10101110b, 00000000b, 00000000b     ;'У', №147 ASCII, длинна 10

                db      12, 10101110b, 10000000b, 00000000b     ;'Ф', №148 ASCII, длинна 12

                db      10, 10101010b, 00000000b, 00000000b     ;'Х', №149 ASCII, длинна 10

                db      14, 11101011b, 10100000b, 00000000b     ;'Ц', №150 ASCII, длинна 14

                db      16, 11101110b, 11101000b, 00000000b     ;'Ч', №151 ASCII, длинна 16

                db      18, 11101110b, 11101110b, 00000000b     ;'Ш', №152 ASCII, длинна 18

                db      16, 11101110b, 10111000b, 00000000b     ;'Щ', №153 ASCII, длинна 16

                db      14, 11101010b, 11100000b, 00000000b     ;'Ь', №154 ASCII, длинна 14

                db      16, 11101011b, 10111000b, 00000000b     ;'Ы', №155 ASCII, длинна 16

                db      14, 11101010b, 11100000b, 00000000b     ;'Ъ', №156 ASCII, длинна 14

                db      14, 10101110b, 10100000b, 00000000b     ;'Э', №157 ASCII, длинна 14

                db      14, 10101110b, 11100000b, 00000000b     ;'Ю', №158 ASCII, длинна 14

                db      14, 10111010b, 11100000b, 00000000b     ;'Я', №159 ASCII, длинна 14

                end



Информация о работе Генератор кода Морзе