ЗНАЕТЕ ЛИ ВЫ?

Управление светодиодными индикаторами.



Управление светодиодным индикатором осуществляется с использованием программируемой логической интегральной схемы (ПЛИС) MAX3064A, входящей в состав лабораторного макета. Управление осуществляется путем помещения нужной информации в регистры ПЛИС. За светодиоды отвечает регистр SV ПЛИС. Он находится по адресу 080007Н, значение регистра после сброса 00000000В. Каждый бит регистра управляет соответствующим светодиодом (0 разряд светодиодом 0, 7 разряд светодиодом 7).

Для доступа к регистрам ПЛИС нужно переключить страничный регистр DPP на 8 страницу памяти. Адреса регистров внутри страницы находятся в диапазоне от 0 до 7. Доступ к регистрам возможен через указатель: unsigned char xdata *regnum

Ниже приведен пример функций для доступа к регистрам ПЛИС.

#define MAXBASE 8 // Страница памяти, в которую /отображаются регистры ПЛИС

/***************************************************

WriteMAX - Запись байта в регистр ПЛИС
regnum - адрес регистра ПЛИС
val - записываемое значение

результат - нет

***************************************************/

void WriteMax(unsigned char xdata *regnum, unsigned char val)

{

unsigned char oldDPP = DPP;

 

DPP = MAXBASE;

*regnum = val;

DPP = oldDPP;

}

/***************************************************

ReadMAX - Чтение байта из регистра ПЛИС

regnum - адрес регистра ПЛИС

результат - прочитанное значение

***************************************************/

unsigned char ReadMax(unsigned char xdata *regnum)

{

unsigned char oldDPP = DPP;

unsigned char val = 0;

DPP = MAXBASE;

val = *regnum;

DPP = oldDPP;

return val;

}

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

Для того чтобы избежать проблем со страничным регистром DPP, нужно использовать специальные функции для доступа к ПЛИС, которые перед началом работы с регистрами ПЛИС будут запоминать старое значение страничного регистра, а по окончании работы возвращать его обратно.

Нужно следить, чтобы передаваемые в регистры ПЛИС значения хранились во внутренней памяти микроконтроллера (DATA, IDATА). Убедиться, что передаваемая информация не содержится во внешней памяти контроллера (XDATA), достаточно легко, так как для доступа к внешней памяти в микроконтроллерах семейства MСS51 используется регистр DPTR, нужно просто просмотреть листинг программы и убедиться в том, что для доступа к переменным компилятор не использует DPTR.

1.2. Управление последовательным интерфейсом

Последовательный интерфейс предполагает для передачи данных в одном направлении единственную сигнальную линию, по которой информационные биты передаются друг за другом последовательно. При этом скорость изменения передатчиком состояния линии должна равняться скорости распознавания состояний приемником. Эта скорость измеряется в бодах (baud) – количестве изменений состояния линии за одну секунду. В простейшем случае в линии имеется всего два состояния сигнала, т.е. одним состоянием кодируется один бит, и тогда скорость изменения состояния в бодах совпадает со скоростью передачи двоичной информации, определяемой количеством передаваемых за секунду бит информации, bps (bits per second, бит/с). Однако, при использовании других методов модуляции возможны несколько состояний сигнала, что позволяет одним состоянием кодировать сразу несколько передаваемых бит, и здесь скорость передачи данных bps превышает скорость изменения сигнала baud.

Обмен данными может быть:

1) дуплексным – предполагает прием и передачу данных одновременно;

2) полудуплексным – данные передаются в одном направлении с возможностью смены направления;

3) симплексным - данные передаются только в одном направлении.

Передача может осуществляться в синхронном и асинхронном режимах. Синхронный режимпредполагает наличие средств синхронизации передатчика и приемника. Как правило, для синхронизации используют специальную линию для передачи тактовых импульсов. Информация в канале данных считывается приемником только в те моменты, когда на линии синхронизации сигнал активный.

В асинхронном режимепосылке очередного байта информации предшествует специальный старт-бит, сигнализирующий о начале передачи (обычно логический «0»). Затем следуют биты данных (их обычно 8), за которыми может следовать дополнительный бит (его наличие зависит от режима передачи, обычно этот бит выполняет функцию контроля четности). Завершается посылка cmon-битом(логическая «1»), длина которого (длительность единичного состояния линии) может соответствовать длительности передачи 1, 1.5 («полтора стоп-бита») или 2 бит. Стоп-бит гарантирует некоторую выдержку между соседними посылками, при этом пауза между ними может быть сколь угодно долгой (без учета понятия «тайм-аута»). Для асинхронного режима предусмотрен ряд стандартных скоростей обмена: 50, 75, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600 и 115200 bps.

В большинстве схем, содержащих интерфейс RS-232C, данные передаются асинхронно, т.е. в виде последовательности пакета данных. Каждый пакет содержит один символ кода ASCII, причем информация в пакете достаточна для его декодирования без отдельного сигнала синхронизации.

Символы кода ASCII представляются семью битами, например буква А имеет код 1000001. Чтобы передать букву А по интерфейсу RS-232C, необходимо ввести дополнительные биты, обозначающие начало и конец пакета. Кроме того, желательно добавить лишний бит для простого контроля ошибок по паритету (четности).

Наиболее широко распространен формат, включающий в себя один стартовый бит, один бит паритета и два стоповых бита. Начало пакета данных всегда отмечает низкий уровень стартового бита. После него следует 7 бит данных символа кода ASCII. Бит четности содержит 1 или 0 так, чтобы общее число единиц в 8-битной группе было нечетным. Последним передаются два стоповых бита, представленных высоким уровнем напряжения. Эквивалентный ТТЛ-сигнал при передаче буквы А показан на рис. 1.

Рис. 2. Представление кода буквы А сигнальными уровнями ТТЛ.

Таким образом, полное асинхронно передаваемое слово состоит из 11 бит (фактически данные содержат только 7 бит) и записывается в виде 01000001011.

Используемые в интерфейсе RS-232C уровни сигналов отличаются от уровней сигналов, действующих в компьютере. Логический 0 (SPACE) представляется положительным напряжением в диапазоне от +3 до +15 В, логическая 1 (MARK) – отрицательным напряжением в диапазоне от -3 до -15 В. На рис. 2 показан сигнал в том виде, в каком он существует на линиях TXD и RXD интерфейса RS-232C.

Рис. 3. Вид кода буквы А на сигнальных линиях TXD и RXD.

Сдвиг уровня, т.е. преобразование ТТЛ-уровней в уровни интерфейса RS-232C и наоборот производится специальными микросхемами драйвера линии и приемника линии. На рис. 4 представлен интерфейс RS-232C, реализованный в лабораторном стенде SDK1.1. Микросхема U17 осуществляет сдвиг уровней TTL – RS232C для сигналов TXD и RXD. Микросхемы U8 и U9 обеспечивают гальваническую развязку сигналов,поступающих на внешний разъем.





Последнее изменение этой страницы: 2017-01-25; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.234.255.5 (0.007 с.)