Разработка устройства индикации данных на ЖК-дисплее, передаваемых по интерфейсу RS232 с ПК

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    470,6 Кб
  • Опубликовано:
    2014-08-05
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка устройства индикации данных на ЖК-дисплее, передаваемых по интерфейсу RS232 с ПК

Введение

Тенденции развития современной техники таковы, что микропроцессорные устройства находят все более широкое применение там, где раньше обходились не только без них, но и без электроники вообще. Одновременно, в ранее "занятых" микропроцессорными устройствами областях круг решаемых задач и требования к качеству и скорости их решения растут там, где в 80-е годы применялись 4-разрядные устройства.

По статистическим данным за 2006 г, среди производителей Юго-Восточной Азии (одного из мировых центров производства электроники) 16- и 32-разрядные устройства уже более популярны, чем 8- разрядные. Однако, поскольку нет каких-либо глубоко принципиальных отличий в разработке изделий на базе 8-, 16- или более высокоразрядных микроконтроллеров, а 8-разрядные все еще дешевле своих собратьев, для целей обучения можно признать наиболее подходящими именно 8-разрядные микроконтроллеры.

На сегодня основную часть казахстанского рынка 8- разрядных микроконтроллеров между собой делят семейства Intel, MCS-51, Atmel, Maxim IC, HC05, HC08, HC11, Motorola.

1. Выбор микроконтроллера

Для выполнения курсового проекта был выбран микроконтроллер ATmega64 [8] производства фирмы Atmel. Выбор данного микроконтроллера был осуществлен исходя из варианта, ниже приведены основные отличительные особенности:

·        8-разрядный высокопроизводительный AVR микроконтроллер с малым потреблением

·        Прогрессивная RISC архитектура

·        Энергонезависимая память программ и данных

·        Интерфейс JTAG (совместимый с IEEE 1149.1)

·        Встроенная периферия

·        Специальные микроконтроллерные функции

.1 Описание микроконтроллера

ATmega64 - 8-разрядный микроконтроллер с внутрисхемно программируемой Flash памятью емкостью 64 кбайт (Рисунок 1.1).

ATmega64 является КМОП 8 - битным микроконтроллером, построенным на расширенной AVR RISC архитектуре. Используя команды исполняемые за один машинный такт, контроллер достигает производительности в 16 MIPS на рабочей частоте 16 МГц, что позволяет разработчику эффективно оптимизировать потребление энергии за счёт выбора оптимальной производительности.

Рисунок 1.1 - Блок-схема ATmega64

1.2 Архитектура ядра


Ядро микроконтроллеров AVR семейства Mega (рисунок 1.2) выполнено по усовершенствованной RISC-архитектуре (enhanced RISC) [2], в которой используется ряд решений, направленных на повышение быстродействия микроконтроллеров.

Арифметико-логическое устройство (АЛУ), выполняющее все вычисления, подключено непосредственно к 32 рабочим регистрам, объединенным в регистровый файл. Благодаря этому, АЛУ может выполнять одну операцию (чтение содержимого регистров, выполнение операции и запись результата обратно в регистровый файл) за такт. Кроме того, практически каждая из команд (за исключением команд, у которых одним из операндов является 16-битный адрес) занимает одну ячейку памяти программ.

В микроконтроллерах AVR реализована Гарвардская архитектура, характеризующаяся раздельной памятью программ и данных, каждая из которых имеет собственные шины доступа. Такая организация позволяет одновременно работать как с памятью программ, так и с памятью данных. Разделение информационных шин позволяет использовать для каждого типа памяти шины различной разрядности, причем способы адресации и доступа к каждому типу памяти также различаются. В сочетании с двухуровневым конвейером команд такая архитектура позволяет достичь производительности в 1 MIPS на каждый МГц тактовой частоты.

Рисунок 1.2 - Архитектура ядра микроконтроллера ATmega64

.3 Характеристики микроконтроллера

Как и все микроконтроллеры AVR фирмы Atmel, микроконтроллеры семейства Mega являются 8-битными микроконтроллерами [8], предназначенными для использования во встраиваемых приложениях. Они изготавливаются по малопотребляющей КМОП-технологии, которая в сочетании с усовершенствованной RISC-архитектурой позволяет достичь наилучшего соотношения стоимость/быстродействие/энергопотребление. Микроконтроллеры описываемого семейства являются наиболее развитыми представителями микроконтроллеров AVR общего применения.

·   8-разрядный высокопроизводительный AVR микроконтроллер с малым потреблением

·        Прогрессивная RISC архитектура

130 высокопроизводительных команд, большинство команд выполняется за один тактовый цикл

32 8-разрядных рабочих регистра общего назначения + регистры управления периферией

Полностью статическая работа

Производительность приближающаяся к 16 MIPS (при тактовой частоте 16 МГц)

Встроенный 2-цикловый перемножитель

·   Энергонезависимая память программ и данных

- 64 Кбайт внутрисистемно-перепрограммируемой Flash памяти

Обеспечивает 1000 циклов стирания/записи

Дополнительный сектор загрузочных кодов с независимыми битами блокировки

Внутрисистемное программирование встроенной программой загрузки

Обеспечен режим одновременного чтения/записи (Read-While-Write)

2 Кбайта EEPROM

Обеспечивает 100000 циклов стирания/записи

4 Кбайта встроенной SRAM

До 64 Кбайтов пространства дополнительной внешней памяти

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

SPI интерфейс для внутрисистемного программирования

·   Интерфейс JTAG (совместимый с IEEE 1149.1)

- Возможность сканирования периферии, соответствующая стандарту JTAG

Расширенная поддержка встроенной отладки

Программирование через JTAG интерфейс: Flash, EEPROM памяти, перемычек и битов блокировки

·   Встроенная периферия

- Два 8-разрядных таймера/счетчика с отдельным предварительным делителем, один с режимом сравнения

Два 16-разрядных таймера/счетчика, с расширенными возможностями, с отдельным предварительным делителем и режимами захвата и сравнения

Счетчик реального времени с отдельным генератором

Два 8-разрядных канала PWM

Шесть каналов PWM с возможностью программирования разрешения от 1 до 16 разрядов

8-канальный 10-разрядный аналого-цифровой преобразователь

8 несимметричных каналов

7 дифференциальных каналов

2 дифференциальных канала с программируемым усилением в 1, 10 или 200 крат

Байт-ориентированный 2-проводный последовательный интерфейс

Сдвоенный программируемый последовательный USART

Последовательный интерфейс SPI (ведущий/ведомый)

Программируемый сторожевой таймер с отдельным встроенным генератором

Встроенный аналоговый компаратор

·   Специальные микроконтроллерные функции

- Сброс по подаче питания и программируемый детектор кратковременного снижения напряжения питания

Встроенный калиброванный RC-генератор

Внутренние и внешние источники прерываний

Шесть режимов пониженного потребления: Idle, Power-save, Power-down, Standby, Extended Standby и снижения шумов ADC

Программная установка тактовой частоты

Режим обеспечения совместимости с ATmega103 (перемычки)

Глобальный запрет подтягивающих резисторов

- 53 программируемые линии ввода/вывода

64-выводной корпус TQFP

·   Рабочие напряжения

- 4,5 - 5,5 В

·   Рабочая частота

- 0 - 16 МГц

2. Описание ЖК-дисплея

.1 Выбор ЖК-дисплея

Наиболее распространенный контроллер управления алфавитно-цифровым модулем это контроллер HD44780 производства Hitachi [2]. Практически все ведущие производители ЖКИ - Epson, Sanyo, Toshiba, Samsung, Philips выпускают аналоги этого контроллера или совместимые с ним по интерфейсу и командному языку микросхемы либо ЖКИ на базе этих контроллеров. То есть практически можно говорить об HD44780 как о неком промышленном стандарте. Модули с этим контроллером применяются в самых разнообразных устройствах: измерительные приборы, промышленнне, технологическое и медицинское оборудование, офисная техника.

Контроллер поддерживает размер символа 5x7 точек и 5x10 точек. HD44780 может управлять двумя строками по 40 символов (для управления четырехстрочного модуля по 40 символов используют два однотипных контроллера). При существующих стандартах ЖКИ контроллер не накладывает ограничений на количество и комбинации отображаемых символов (их количество может быть от 1 до 80).

.2 Характеристики ЖК-модуля

Операции чтения-записи байта являются базовыми для осуществления обмена данными с ЖКИ. Процесс обмена по 4-х и 8-ми разрядной шиной различается только реализацией этих операций. Эти две операции могут быть реализованны аппаратно, когда модуль подключен к системной шине, или программно, когда он взаимодействует с портами микро-ЭВМ. В таблице 2.1 приведены допустимые области значений временных интервалов.

Таблица 2.1 - Временные характеристики (нс)

Параметр

Обозн.

Мин.

Макс.

Операция чтения

Период сигнала E

tcycE

500

-

Положительный полупериод сигнала E

PWEH

230

-

Фронт/спад сигнала E

tEf, tEr

-

20

Установление адреса

tAS

40

-

Удержание адреса

tAH

10

-

Установление данных

tDSW

80

-

Удержание данных

tDSH

10

-

Операция записи

Период сигнала E

tcycE

500

-

Положительный полупериод сигнала E

PWEH

230

-

Фронт/спад сигнала E

tEf, tEr

-

20

Установление адреса

tAS

40

-

Удержание адреса

tAH

10

-

Установление данных

tDSW

-

Удержание данных

tDSH

5

-


2.3 Подключение модуля HD44780

Питающее напряжение составляет +5 В ± 10%. На вывод Vo для регулировки контрастности табло в большинстве ЖК-модулей должно подаваться напряжение 0...+5 В. Это напряжение легко получить с помощью подстроечного резистора (обычно сопротивлением 10 кОм), включенного между "землей" и выводом VCС.

На рисунке 2.1 показана схема включения, рассчитанная на стандартный диапазон температур. Подстроечный резистор R1 плавно меняет напряжение питания ЖКИ, что позволяет менять угол поворота жидких кристаллов и как следствие выставлять необходимую контрастность индикатора при необходимом угле обзора.

Рисунок 2.1 - Подключение модуля HD44780

После подачи напряжения на модуль и прохождения внутренней инициализации, устройство включается в режиме развертки верхней строки. При изменении напряжения на выводе Vo сегменты плавно меняют свой цвет от прозрачного к непрозрачному, что говорит о правильном подключении модуля питания. ЖКИ правильно отрегулирован, когда изображение сегментов едва проступает на основном фоне. Подсоединятся модул может к 4-х или 8-ми разрядной шине. При этом обмен можно организовать либо с системной шиной, либо через порты ввода-вывода программными средствами.

Таблица 2.2 - Расположение выводов ЖК-модуля HD44780

Вывод

1

2

3

4

5

6

7

8

9

10

11

12

13

14

Функция

Gnd

VCC

V0

RS

R/W

E

D0

D1

D2

D3

D4

D5

D6

D7


Регистр модуля HD44780, в который будут записываться значения, выбирают с помощью вывода RS (Register Select). Если в режиме доступа на запись на этот вывод подан сигнал низкого уровня, то записывается команда, в противном случае происходит запись в регистр данных. В режиме доступа на чтение состоянию RS = 0 соответствует комбинация флага занятости (Busy) и счетчика адреса, а состоянию RS =1 - чтение из регистра данных.

Режим чтения или записи определяется по уровню сигнала на выводе R/W (вывод 5). Лог. 0 соответствует записи, а лог. 1 - чтению (Рисунки 2.2 - 2.3).

Рисунок 2.2 - Временная диаграмма операции записи

Рисунок 2.3 - Временная диаграмма операции чтения

После того как управляющие сигналы RS и R/W стабильно установлены на протяжении как минимум 140 нс, микроконтроллер AVR подает на вывод 6 (Е-Enable) модуля строб-импульс положительной полярности длительностью минимум 450 нс, по которому в контроллер HD44780 записываются биты данных, выставленные микроконтроллером AVR на выводы D0...D7, или же, наоборот, микроконтроллер AVR считывает биты данных, выставленные на тех же выводах контроллером HD44780. До появления на выводе Е ниспадающего фронта данные должны быть стабильны на протяжении минимум 195 нс.

Таблица 2.3 - Операции записи и чтения для 8-ми разрядной шины

Операции записи для 8-ми разрядной шины

1 Установка значения линии RS

2 Вывод значения байта данных на шину DB0...DB7

3 Установка линии Е=1

4 Установка линии Е=0

5 Установка шины DB0...DB7 в состояние HI

Операции чтения для 8-ми разрядной шины

1 Установка значения линии RS

2 Установка линии R/W=1

3 Установка линии Е=1

4 Считывание байта данных с шины DB0...DB7

5 Установка линии Е=0

6 Установка линии R/W=0


2.4 Программирование и управление модулем HD44780

На рисунке 2.4 приведена упрощенная структурная схема контроллера, приведены основные элементы, которые напрямую взаимодействуют с управляющей программой - регистр данных (DR), регистр команд (IR), видеопамять (DDRAM), ОЗУ знакогенератора (CGRAM), счетчик адреса памяти (AC), флаг занятости контроллера [4]. Элементы не взаимодействующие с управляющей программой не так важны для получения общей картины и поэтому пропущены. Управление контроллером ведется через интерфейс управляющей системы. Основные объекты взаимодействия - регистры DR и IR. Выбор адресуемого регистра осуществляется линией RS, если RS=0 - адресуется регистр команд (IR), если RS=1 - регистр данных (DR). Данные через регистр DR могут помещаться или прочитываться в видеопамять (DDRAM) или в ОЗУ знакогенератора (CGRAM) по текущему адресу, на который указывает счетчик адреса (АС). Информация в регистре IR интерпретируется устройством выполнения команд как управляющая последовательность. Прочтение регистра IR возвращает в 7-ми младших разрядах текущее значение счетчика АС, а в старшем разряде флаг занятости (BF). Видеопамять имеет общий объем 80 байтов и предназначена для хранения кодов символов. Видеопамять жестко организована в две строки по 40 символов в каждой и не подлежит изменению. То есть, независимо от того, сколько строк будет иметь конкретный ЖКИ-модуль, адресация видеопамяти всегда производится в две строки по 40 символов.

Рисунок 2.4 - Упрощенная структурная схема контроллера HD44780

Контроллер циклически производит обновление информации на ЖКИ, который организован как матрица, состоящая в зависимости от режима работы из 8-ми (одна строка символов 5х7 точек), 11-ти (одна строка символов 5х10 точек) или 16-ти (две строки символов 5х7 точек) строк по 200 сегментов (когда строка насчитывает 40 символов) в каждой. Собственный драйвер контроллера HD44780 имеет только 40 выходов (SEG1...SEG40) и самостоятельно может поддерживать только 8-ми символьные ЖКИ. Это означает, что ЖКИ-модули форматов до 8х2 реализованы на одной единственной микросхеме HD44780, модули, имеющие большее количество символов, содержат дополнительные микросхемы драйверов, например, HD44100, каждая из которых дополнительно предоставляет управление еще 40-ка сегментами. ЖКИ-модули формата 16 х 1 также реализованы с помощью одной единственной микросхемы HD44780, но одна 16-ти символьная строка в них фактически составлена из двух 8-ми символьных. Это усложняет программное управление, ведь строка оказывается логически разорванной посередине, тем не менее, экономически это оправдано, ибо позволило создать ЖКИ-модуль, содержащий всего одну микросхему. Другой вариант пространственной адресации встречается в 4-х строчных модулях. Из-за проблем разводки токоведущих дорожек, первая и вторая строки этих модулей являются таковыми как обычно, третья же является продолжением первой строки, а четвертая - второй.

В таблице 2.4 показан набор различных флагов для HD44780. Флаги определяют режимы работы различных элементов контроллера. Также в таблице приведены значения управляющих флагов непосредственно после подачи на ЖКИ-модуль напряжения питания. Переопределение значений флагов производится специальными командами, записываемыми в регистр IR, при этом комбинации старших битов определяют группу флагов или команду, а младшие содержат собственно флаги.

Таблица 2.4 - Флаги, управляющие работой контроллера HD44780

I/D Режим смещения счетчика адреса АС, 0 уменьшение, 1 увеличение

S/C Флаг-команда, производящая вместе с флагом R/L операцию сдвига содержимого экрана (так же, как и в предыдущем случае, без изменений в DDRAM) или курсора. Определяет объект смещения: 0 сдвигается курсор, 1 сдвигается экран

R/L Флаг-команда, производящая вместе с флагом S/C операцию сдвига экрана или курсора. Уточняет направление сдвига: 0 влево, 1 вправо

D/L Флаг, определяющий ширину шины данных: 0 4 разряда, 1 8 разрядов

N Режим развертки изображения на ЖКИ: 0 одна строка, 1 две строки

F Размер матрицы символов: 0 5 х 8 точек, 1 5 х 10 точек

D Наличие изображения: 0 выключено, 1 включено

C Курсор в виде подчерка: 0 выключен, 1 включен

B Курсор в виде мерцающего знакоместа: 0 выключен, 1 включен


Список управляющих комбинаций битов регистра IR и выполняемые ими команды приведены в таблице 2.5. Так как на момент включения ЖКИ-модуль ничего не отображает (флаг D=0), то для того, чтобы вывести какой-либо текст необходимо, как минимум, включить отображение, установив флаг D=1. Вот пример широко распространенной последовательности для инициализации ЖКИ-модуля: , $OC, 6 (знак $ перед числом указывает на шестнадцатеричное основание). устанавливает режим отображения 2-х строк с матрицей 5 х 8 точек и работу с 8-ми разрядной шиной данных; $OC включает отображение на экране ЖКИ-можуля, без отображения курсоров; 6 устанавливает режим автоматического перемещения курсора слева-направо после вывода каждого символа.

Таблица 2.5 - Список управляющих комбинаций битов регистра IR и выполняемые ими команды

Управляющие комбинации битов регистра IR

Назначение

D7

D6

D5

D4

D3

D2

D1

D0

Очистка экрана, АС = 0, адресация АС на DDRAM

0

0

0

0

0

0

0

1

АС = 0, адресация на DDRAM, сброшены сдвиги, начало строки адресуется в начале DDRAM

0

0

0

0

0

0

1

-

Выбирается направление сдвига курсора или экрана

0

0

0

0

0

1

I/D

S

Выбирается режим отображения

0

0

0

0

1

D

C

B

Команда сдвига курсора/экрана

0

0

0

1

S/C

R/L

-

-

Определение параметров развертки и ширины шины данных

0

0

1

DL

F

-

-

Присвоение счетчику АС адреса в области CGRAM

0

1

AG

AG

AG

AG

AG

AG

Присвоение счетчику АС адреса в области DDRAM

1

AD

AD

AD

AD

AD

AD

AD


Контроллер HD44780 поддерживает как операции записи так и операции чтения. Чтение регистра DR приводит к загрузке содержимого DDRAM или CGRAM, в зависимости от текущего режима, при этом курсор смещается на одну позицию, как и при записи. Чтение регистра IR возвращает 8 значащих разрядов, причем в 7-ми младших содержится текущее значение счетчика АС (7 разрядов, если адресуется DDRAM, и 6 - если CGRAM), а в старшем - флаг занятости BF. Этот флаг имеет значение 1 когда контроллер занят и 0 - когда свободен. Необходимо учитывать, что большинство операций, выполняемых контроллером, занимают значительное время, около 40 мкс, а время выполнения некоторых доходит до единиц миллисекунд, поэтому цикл ожидания снятия флага BF должен обязательно присутствовать в программах драйвера ЖКИ-модуля и предшествовать совершению любой операции (естественно, кроме операции проверки флага BF).

После совершения операции записи или чтения DDRAM и появления после нее признака готовности (BF = 0), прочитанное в этом же цикле (вместе с флагом BF) значение АС скорее всего не будет достоверным. Дело в том, что между появлением признака готовности и вычислением контроллером нового значения АС существует некоторый временной интервал, составляющий около 4 мкс при тактовой частоте контроллера 270 кГц. Поэтому, если необходимо получить истинное значение АС, нужно совершить повторную операцию прочтения IR спустя не менее чем 4 мкс (если контроллер работает на частоте 270 кГц время ожидания необходимо пропорционально увеличить).

Вывод на экран символа производится записью его кода в регистр DR. При этом символ размещается в DDRAM по текущему адресу, указываемому АС, а значение АС увеличивается или уменьшается на 1. Чтобы произвести переустановку курсора на нужную позицию, необходимо присвоить АС соответствующее значение. Здесь есть одна тонкость. Когда производится последовательная запись символов и в результате заполняется вся строка, курсор автоматически переходит на вторую строку, но если необходимо принудительно установить курсор, скажем, на начало второй стороки, то будет неверным присвоить АС казалось бы логичное значение (40), правильным является значение (64). Значения адресов DDRAM в диапазоне ...fF (а равно и ...F) являются неопределенными и результаты работы с ними могут быть непредсказуемыми.

3. Приём данных от ПК

Проектируемое в данном курсовом проекте устройство осуществляет приём данных от ПК по интерфейсу RS 232.

RS 232 - интерфейс передачи информации между двумя устройствами на расстоянии до 20 м. Информация передается по проводам с уровнями сигналов -15 В +15 В для обеспечения большей устойчивости к помехам. Асинхронная передача данных осуществляется с установленной скоростью при синхронизации уровнем сигнала стартового импульса.

Интерфейс RS 232-C был разработан для простого применения, однозначно определяемого по его названию "Интерфейс между терминальным оборудованием и связным оборудованием с обменом по последовательному двоичному коду [7]. - Устройство устанавливает этот сигнал, когда обнаруживает несущую в принимаемом сигнале. Обычно этот сигнал используется модемами, которые таким образом сообщают хосту о обнаружении работающего модема на другом конце линии.- Линия приема хостом данных от устройства. Подробно описана в разделе "Протокол обмена данными".- Линия передачи хостом данных к устройству. Подробно описана в разделе "Протокол обмена данными".- Хост устанавливает этот сигнал, когда готов к обмену данными. Фактически сигнал устанавливается при открытии порта коммуникационной программой и остается в этом состоянии все время, пока порт открыт.- Устройство устанавливает этот сигнал, когда включено и готово к обмену данными с хостом. Этот и предыдущий (DTR) сигналы должны быть установлены для обмена данными.- Хост устанавливает этот сигнал перед тем, как начать передачу данных устройству, а также сигнализирует о готовности к приему данных от устройства. Используется при аппаратном управлении обменом данными.- Устройство устанавливает этот сигнал в ответ на установку хостом предыдущего (RTS), когда готово принять данные (например, когда предыдущие присланные хостом данные переданы модемом в линию или есть свободное место в промежуточном буфере).- Устройство (обычно модем) устанавливает этот сигнал при получении вызова от удаленной системы, например при приеме телефонного звонка, если модем настроен на прием звонков.

Таблица 3.1- Назначение выводов 9-контактного разъема

Контакт

Сигнал

Направление

Описание

1

CD

Вход

Обнаружена несущая

2

RXD

Вход

Принимаемые данные

3

TXD

Выход

Передаваемые данные

4

DTR

Выход

Хост готов

5

GND

-

Общий провод

6

DSR

Вход

Устройство готово

7

RTS

Выход

Хост готов к передаче

8

CTS

Вход

Устройство готово к приему

9

RI

Вход

Обнаружен вызов

микроконтроллер данные интерфейс дисплей

Аппаратный метод управления реализуется с помощью сигналов RTS и CTS. Для передачи данных хост (компьютер) устанавливает сигнал RTS и ждет установки устройством сигнала CTS, после чего начинает передачу данных до тех пор, пока сигнал CTS установлен. Сигнал CTS проверяется хостом непосредственно перед началом передачи очередного байта, поэтому байт, который уже начал передаваться, будет передан полностью независимо от значения CTS. В полудуплексном режиме обмена данными (устройство и хост передают данные по очереди, в полнодуплексном режиме они могут делать это одновременно) снятие сигнала RTS хостом означает его переход в режим приема.

Программный метод управления заключается в передаче принимающей стороной специальных символов остановки (символ с кодом 0x13, называемый XOFF) и возобновления (символ с кодом 0x11, называемый XON) передачи. При получении данных символов передающая сторона должна соответственно остановить передачу или возобновить ее (при наличии данных, ожидающих передачи). Этот метод проще с точки зрения реализации аппаратуры, однако обеспечивает более медленную реакцию и соответственно требует заблаговременного извещения передатчика при уменьшении свободного места в приемном буфере до определенного предела.

Синхронный режим передачи подразумевает непрерывный обмен данными, когда биты следуют один за другим без дополнительных пауз с заданной скоростью. Этот режим COM-портом не поддерживается.

Асинхронный режим передачи состоит в том, что каждый байт данных (и бит контроля четности, в случае его наличия) "оборачивается" синхронизирующей последовательностью из одного нулевого старт-бита и одного или нескольких единичных стоп-битов. Схема потока данных в асинхронном режиме представлена на рисунке.

Формат передаваемых данных показан на рисунке 3.1. Собственно данные (5, 6, 7 или 8 бит) сопровождаются стартовым битом, битом четности и одним или двумя стоповыми битами. Получив стартовый бит, приемник выбирает из линии биты данных через определенные интервалы времени. Очень важно, чтобы тактовые частоты приемника и передатчика были одинаковыми, допустимое расхождение - не более 10%. Скорость передачи по RS-232C может выбираться из ряда: 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 бит/с.

Рисунок 3.1 Формат данных RS-232

Преобразование уровней RS-232(-15 В +15 В) в TTL уровень (0 В +5 В) в данном курсовом проекте реализовано с помощью микросхемы MAX232, конфигурация выводов которой: представлена на рисунке 3.2.

Рисунок 3.2 - Расположение выводов микросхемы MAX232

Характеристики MAX232 <#"784852.files/image009.gif">

Рисунок 3.3 - Структурная схема микросхемы MAX232

4. Алгоритм работы программы

Основной алгоритм работы устройства (рисунок 4.1):

1.    Настройка портов микроконтроллера;

2.       Настройка ЖК-модуля (рисунок 4.2);

.         Настройка UART (рисунок 4.3);

.         Организация задержки (рисунок 4.4);

.         Организация передачи (рисунок 4.5).

На рисунке 4.8 приведена структура всей программы.

Рисунок 4.1 - Основной алгоритм работы устройства

Рисунок 4.2 - Настройка HD44780

Рисунок 4.3 - Настройка UART микроконтроллера

Рисунок 4.4 - Организация задержки

Рисунок 4.5 - Организация передачи с МК на дисплей

Рисунок 4.6 - Передача команд и данных

Рисунок 4.7 - Вывод символа

Рисунок 4.8 - Структура всей программы

Заключение

В данном курсовом проекте была осуществлена разработка устройства индикации данных на ЖК-дисплее, передаваемых по интерфейсу RS232 с ПК. Были описаны в аналитическом, структурном и расчетно-графическом виде все необходимые узлы и элементы.

При расчете данной курсовой работы использовались математические и графические пакеты, такие как:

·        Proteus Professional 7 (Данное ПО используется для симуляции основных цифровых устройств и систем)

·        sPlan 6.0.0.2 (Данное ПО используется для графического построения микросхем памяти, а также для структурных схем и узлов системы)

·        AVR Studio 4 (Данное ПО используется для создания и отладки программы на языке Ассемблер)

Список использованных источников

[1] Гребнев В.В. Микроконтроллеры семейства AVR фирмы ATMEL. - М.: ИП РадиоСофт, 2002.

[2] Угрюмов Е.П. Цифровая схемотехника. СПб: БХВ-СПб, 2000.

[3] Большие интегральные микросхемы запоминающих устройств: справочник. М.: Радио и связь, 1990.

[4] Бойко В.И. и др. Схемотехника электронных систем. Аналоговые и импульсные устройства. СПб.: БХВ-Петербург, 2004.

[5] Опадчий Ю.Ф. и др. Аналоговая и цифровая электроника. - М.: Радио и связь, 1997.

[6] Трамперт В. AVR-RISC микроконтроллеры. : Пер. с нем. - К. : «МК-Пресс», 2006.

[7] Кузьминов А.Ю. Интерфейс RS232. Связь между компьютером и микроконтроллером. - М.: Радио и связь, 2004.

[8] Справочник по ATmega64 (64L). Atmel corporation, 2001.

Приложение (обязательно)

(программа)

nolist

.include "64def.inc"

.list

;***** Регистровые переменные

.def tmp1 = r16    ; Рабочий регистр 1

.def tmp2 = r17    ; Рабочий регистр 2

.def prm1 = r18    ; Передаваемый параметр

.def tim1 = r19     ; Счетчик 1

.def tim2 = r20     ; Счетчик 2

.def Cnt = r21       ; Вспомогательный счетчик

.equ RS = 6 ; Register Select = разряд 6 порта C

.equ Ena = 7         ; Enable Impuls = разряд 7 порта C

.equ RW = 6         ; R/W = разряд 6 порта D (/WR)

.equ BF = 7 ; Флаг занятости = разряд 7 порта A

.cseg

.org 0x00Initial              ;После сброса - к главной программе

.org 0x0Bosnovnaja      ;Прерывание по завершению приёма данных:wait5mswait5mswait5ms    ; Задержка на 15 мс после подачи питанияprm1,48   ; $30: установка функции, 8 разрядовSendCom ; Отправка команды на ЖК-модульwait5ms          ; Задержка на 5 мсprm1,48    ; $30: установка функции, 8 разрядовSendCom         ; Повторяем командуwait5ms ; Задержка на 5 мсprm1,48    ; $30: установка функции, 8 разрядовSendCom        ; Повторяем командуwait5ms         ; Задержка на 5 мсWaitBusy  ; Ожидаем готовности ЖК-модуля к приемуprm1,56  ; $38: функция = 8 разрядов, 2 строки, 5x8SendCom    ; Отправляем командуwait150us    ; Задержка на 150 мксWaitBusy          ; Ожидаем готовности ЖК-модуля к приемуprm1,8            ; $08: отключение табло, курсора, мерцанияSendCom ; Передаем командуwait150us        ; Задержка на 150 мксWaitBusy       ; Ожидаем готовности ЖК-модуля к приемуprm1,1            ; $01: очистка таблоSendCom    ; Передаем командуwait5ms  ; Задержка на 5 мсWaitBusy  ; Ожидаем готовности ЖК-модуля к приемуprm1,6           ; $06: режим инкремента адресаSendCom          ; Передаем команду

rcall wait150us     ; Задержка на 150 мкс:

cbi PortC,RS        ;Register Select = командаAusgabe:         ;Передача в ЖК-модуль байта данныхPortC,RS ;Register Select = байт данныхAusgabe:            ;Длина данных = 8 битPortA,prm1    ;Выдача команды/данных на порт A PortC,Ena         ;Подаем импульс разрешения

nop

nop           ;Длительность импульса - минимум 450 нс

cbi PortC,Ena       ;Снимаем импульс разрешения:             ;Вывод символа на таблоWaitBusy    ;Ожидаем готовности ЖК-модуля к приемуSendDat ; Передаем символ, автоинкремент адреса:          ;Вывод приветствия на таблоZLZH                 ;Указатель Z - на 1 позицию влево:             ;Загружаем код символа в r0prm1,r0       ;Копируем код символа в prm1WaitBusy      ;Ожидаем готовности ЖК-модуля к приемуSendDat          ;Передаем символ, автоинкремент адресаZL,1         ;Инкрементируем указатель Zcnt           ;Счетчик - 1OT1          ;Выводим все символы на ЖК-табло:                ;Ожидание готовности ЖК-модуля к приему

clr tmp1DDRA,tmp1     ;Порт A = входPortC,RS       ;Register Select = команда

sbi PortD,RW      ;Направление = чтение из ЖК-модуля:PortC,Ena      ;Подаем импульс разрешения                       ;После макс. 320 нс стабильности данныхtmp1,PinA          ;считываем BF и значение счетчика адресаPortC,Ena         ;Снимаем импульс разрешенияtmp1,BF    ;Пропускаем следующую команду, если ЖК-модуль готов (BF=0)WB1PortD,RW  ;Направление записи = в ЖК-модуль

ser tmp1DDRA,tmp1    ;Порт A = выход

retus:          ;Такт системной синхронизации = 3,6864 МГцtim1,65                 ;Загрузка счетчика:tim1Wait51us:            ;Такт системной синхронизации = 3,6864 МГц

rcall wait50uswait50uswait50us

retms:                   ;Такт системной синхронизации = 3,6864 МГцtim2,100          ;Загрузка счетчика:

rcall wait50ustim2Wait501

retms:                   ;Такт системной синхронизации = 3,6864 МГцtim2,0                   ;Загрузка счетчика:

rcall wait150ustim2Wait381

rets:            ;Такт системной синхронизации = 3,6864 МГцcnt,130                  ;Загрузка счетчикаs1:

rcall wait38mscntWait5s1:tmp1,High(RamEnd)sph,tmp1tmp1,Low(RamEnd)            ;Настроили стек spl,tmp1                         ;Инициализируем стек

ldi tmp1,$3F                           ;Разряды 7..6 = 0, остальные = 1

out PortC,tmp1                       ;Ena, RS = 0PortD,RW                              ;WR = 0tmp1,$C0                    ;Разряд 7 = 1, разряд 6 = 1 DDRC,tmp1                     ;Разряды 7..6 - выходы, остальные - входы

sbi DDRD,RW                        ;Разряд 6 - выход

ser tmp1                                ;Устанавливаем tmp1

out DDRA,tmp1                     ;Порт A - выходInitLCD                           ;Инициализируем ЖК-модульtmp2                                      ;Счетчик символовInitUART                         ;Инициализируем UART: prm1,$0C        ;Включаем табло, откл. курсор и мерцаниеWaitBusy         ;Ожидаем готовность ЖК-модуля к приемуSendCom ;Передаем командуprm1,$01 ;Очищаем табло, курсор - в началоWaitBusy ;Ожидаем готовность ЖК-модуля к приему

rcall SendCom      ;Передаем командуZH,high(Text1)

ldi ZL,low(Text1) ;Z указывает на начало текстаcnt,20                           ;Текст состоит из 16 символов

rcall OutText                 ;Выводим Text1:

ldi prm1,64          ;Адрес = начало второй строкиprm1,1<<7                 ;Устанавливаем разряд 7 -> память DDWaitBusy               ;Ожидаем готовность ЖК-модуля к приему

rcall SendCom               ;Передаем командуZH,high(Text2)

ldi ZL,low(Text2) ;Z указывает на начало текстаcnt,20                           ;Текст состоит из 16 символов

rcall OutText                 ;Выводим Text2pc::WaitBusy                   ;Ожидаем готовности ЖК-модуля к приему

ldi prm1,15          ;функция мерцания SendCom                   ;Передаем командуwait150us                  ;Задержка на 150 мксWaitBusy                ;Ожидаем готовности ЖК-модуля к приемуcnt,20prm1,$01                ;Очищаем табло, курсор - в началоWaitBusy           ;Ожидаем готовность ЖК-модуля к приемуSendCom                   ;Передаем команду:USR,7             ;Проверяем перешли данные из сдвигового регистра в р-р данных (UDR)?osnov1              ;Если нет, то возвращаемся на метку osnovprm1,UDR                    ;Поместили содержимое р-ра данных в р-р передаваемого параметраOutSimvol             ;Выводим символcnt             ;Декрементировалиcnt,0                 ;Сравнили с нулёмosnov1              ;Перешли если неравно, предыдущие символы видныprm1,192            ;Адрес = начало второй строкиWaitBusy                   ;Ожидаем готовность ЖК-модуля к приемуSendCom                 ;Передаем команду:USR,7              ;Проверяем перешли данные из сдвигового регистра в р-р данных (UDR)?osnov2            ;Если нет, то возвращаемся на метку osnovprm1,UDR     ;Поместили содержимое р-ра данных в р-р передаваемого параметраOutSimvol    ;Выводим символcntcnt,20osnov2         ;Перешли если неравно, предыдущие символы видны

rjmp osnov

Похожие работы на - Разработка устройства индикации данных на ЖК-дисплее, передаваемых по интерфейсу RS232 с ПК

 

Не нашел материал для своей работы?
Поможем написать качественную работу
Без плагиата!