Блок управления 4-х канальным ТВ передатчиком МВ. Устройство индикации
СОДЕРЖАНИЕ: Анализ задачи и её формализации. Разработка и описание общего алгоритма работы блока управления 4-х канальным ТВ передатчиком. Выбор и обоснование аппаратной части устройства. Разработка обслуживающей программы на ассемблере. Результаты отладки программы.Министерство образования Российской Федерации
Рязанская государственная радиотехническая академия
Кафедра радиотехнических систем
Пояснительная записка к курсовому проекту
по дисциплине: Цифровые и импульсные устройства
на тему Блок управления 4-х канальным ТВ передатчиком МВ. Устройство индикации
Рязань 2006 г.
Введение
В данной курсовой работе предстоит спроектировать устройство индикации на микроконтроллере KP1816BE51. Устройство индикации входит в блок управления 4-х канальным ТВ передатчиком. Также в этот блок входят: клавиатура, звук и синтезатор частоты.
При создании радиоэлектронной аппаратуры самого различного назначения в качестве встроенных процессоров управления применяются специализированные микропроцессоры (микроконтроллеры), содержащие помимо процессорного ядра ещё и память, средства ввода-вывода и совокупность встроенных дополнительных узлов, предназначенных для выполнения определённых специфических функций управления.
Всё многообразие микроконтроллеров, выпускаемых разными фирмами, условно можно разделить на две группы: специализированные микроконтроллеры и микроконтроллеры общего назначения. Мы используем микроконтроллер общего назначения. Микроконтроллер общего назначения совпадают со специализированными микроконтроллерами по архитектуре процессорного ядра и системе команд, отличаются тем, что их внутренние функциональные узлы используются для реализации типовых функций управления ( последовательный и параллельный ввод-вывод, фиксирование внешних или внутренних событий, изменение временных интервалов, аналого-цифровое преобразование, управление стандартными шинами последовательного интерфейса и т.п.).
Вопросы построения, функционирования и применения микроконтроллера рассматриваются на конкретном примере отечественно БИС КР1816ВЕ51, которая является полным функциональным аналогом микроконтроллера 8051. Эта микросхема представляет собой высокопроизводительную, экономичную 8-разрядную однокристальную микро-ЭВМ со встроенной постоянной программной памятью команд (ПЗУ) и встроенной памятью данных (ОЗУ). Микроконтроллер содержит все узлы, необходимые для построения автономной (встроенной) микропроцессорной системы:
- 8-разрядный центральный процессор;
- память программ ёмкостью 4 Кбайт;
- память данных ёмкостью 128 байт;
- 4 канала параллельного ввода\вывода;
- порт последовательного ввода\вывода;
- два таймера\счётчика;
- схему прерываний;
-генератор тактовых импульсов.
Все микроконтроллеры семейства MCS-51 имеют единую базовую структуру Рис.1. В состав микроконтроллера входят процессор (CPU), внутренне постоянное запоминающее устройство (IROM), внутренне оперативное запоминающее устройство (IRAM) и набор периферийных устройств. К микроконтроллеру могут быть подключены внешняя постоянная память (EROM) и внешняя оперативная память (ERAM). Процессор содержит арифметико-логическое устройство (ALU), шестнадцатиразрядный счётчик команд (PC), шестнадцатиразрядный регистр указатель данных (DPTR), восьмиразрядный регистр-указатель стека (SP), генератор тактового сигнала (OSC). В состав ALU входят восьмиразрядные регистр-аккамулятор (A), вспомогательный регистр (B) и регистр слова состояния программы (PSW).
1. Анализ задачи и её формализация
На основе однокристального микроконтроллера необходимо разработать устройство индикации блока управления 4-х канального ТВ передатчика МВ. Блок управления имеет четырёхкнопочную клавиатуру, с нанесёнными на клавиши номерами каналов (2,3,5,6) и устройство индикации для отображения номера канала. Число разрядов линейного дисплея, в данном случае, равно 1. Реализованная подпрограмма обработки нажатия клавиш помещает код нажатой клавиши в ячейку памяти, таким образом, что клавише с номером “2” соответствует код 0, “3” – 1, “5” – 2, “6” – 3, соответственно. Остальные нажатия не обрабатываются (например, одновременное нажатие двух и более клавиш), поэтому в отображении индикатором ошибки нет необходимости. Поскольку для отображения любого номера канала достаточно одноразрядного (имеющий одно знакоместо) индикатора, то режим индикации – статический. Обработка данных в программе – однобайтовая. Устройство индикации должно считывать код клавиши и адекватно отображать его обозначение на цифровом светодиодном индикаторе АЛС359А (приложение 1) . Максимальный ток на выходе микроконтроллера КР1816ВЕ51 составляет 1.6мА, а средний прямой ток потребления одного сегмента индикатора АЛС359А – 22мА. Поэтому, необходимо использовать элемент согласования. В качестве элемента согласования (буфера) используем логический элемент “НЕ” – К155ЛН3 (приложение 2). В одном корпусе микросхемы К155ЛН3 шесть логических элементов “НЕ”, а используемых сегментов индикатора – 7, следовательно, необходимо две микросхемы К155ЛН3. Исходя из выбранного буфера, в качестве которого используется инвертор, признаком свечения сегмента индикатора является логический “0”.
Паспортное напряжение питания индикатора – 2В, ток 22мА, на выходе инвертора 5В, следовательно, необходимы ограничивающие резисторы, сопротивление которых может быть вычислено по следующей формуле:
R = 5/0.022 = 227.27 Ом. Ближайшее сопротивление из стандартного ряда – 220 Ом, это значение выберем в качестве сопротивления ограничивающих резисторов.
Аппаратно - программные требования:
Микроконтроллер имеет 4 восьмиразрядных порта из которых подпрограмма индикации использует порт – Р2, так как вывода точки не требуется по техническому заданию, у Р2 остаётся один неиспользуемый разряд. Этот разряд (7) может использовать подпрограмма звука.
Микроконтроллер имеет 4 банка памяти, из которых подпрограмма индикации использует – Банк №1.
2. Разработка, обоснование и описание общего алгоритма работы устройства
При включении микроконтроллера мы должны пройти этап инициализации, который состоит: - установка начального значения регистра стека, установка требуемого банка; - установка режима таймера и коэффициента деления; - разрешение прерываний от таймера.
Алгоритм работы программы индикации реализован следующим образом:
- восстановление слова состояния микроконтроллера с сохранением текущего; - чтение кода нажатой клавиши из буфера клавиатуры; - преобразование кода клавиши в его эквивалентное представление на семисегментном индикаторе; - вывод преобразованного кода в порт Р2; - сохранение текущего слова состояния и восстановление предыдущего.
3. Выбор и обоснование аппаратной части устройства
По техническому заданию, в качестве устройства обработки входных и выходных сигналов используется микроконтроллер КП1816ВЕ51, максимальный выходной ток которого не превышает 1.6мА, следовательно, входной ток буфера должен быть не более этого значения. Выходной ток буфера должен быть не менее тока потребления одного сегмента индикатора АЛС359А – 22 мА. Для реализации данного условия подходит микросхема К155ЛН3.
4. Разработка обслуживающей программы на ассемблере
На основании общего алгоритма составленного в пункте 3, разработана программа.
Ниже приведён текст программы.
**************************MCS51 ****************************
* К У Р С О В А Я Р А Б О Т А *
* на тему: Устройство индикации * * *
* выполнил : ст гр.816 *
* Гладилина Яна Вадимовна *
*************************************************************
* Программа вывода информации на 7-сегментный индикатор *
* на МК КР1816ВЕ51 *
* Исходные данные:Номера каналов N=2,3,5,6 *
* Число разрядов линейного дисплея N=1 * * *
FILLCHAR 00h ;Заполнить промежутки между секциями нулями.
;--------------------------------------------------------------------
;************константы и переменные **************
;--------------------------------------------------------------------
;обозначение переменных
Bank1: .EQU 008H ;Банк 1
;Определение неперемещаемых регистров ----+ +-+-----+
P2: .REG0A0H; P2 0+--|a| | ; 1+--|b|+a-+ | ; 2+--|c|fb | ; 3+--|d|+-g| | ; 4+--|e|ec | ; 5+--|f|+d-+ | ; 6+--|g| | ; 7| | | | ; ----+ +-+-----+ .RSECT
;Определение перемещаемых регистров
IndPSW: .DS 1 ;хранение PSW для индикации
VarPSW: .DS 1 ;хранение текущего PSW
AddrSP: .DS 8 ;область под стек
Bit7ACC: .REG ACC.7
Bit7P2: .REG P2.7 .DATA
;Преобразование двоичного кода в семисегмент-ный
Tabl7Seg: .BYTE 24h, 30h, 12h, 02h
;-------------------------------------------------------------------
************************МАКРОСЫ *************************
;-------------------------------------------------------------------
;Сохранение текущего PSW в регистре VarPSW и восстановление IndPSW
;-------------------------------------------------------------------
RestoreIndPSW: .MACRO MOV VarPSW,PSW MOV PSW,IndPSW .ENDM
;-------------------------------------------------------------------
;Сохранение IndPSW и установка прежнего PSW
;-------------------------------------------------------------------
SaveIndPSW: .MACRO MOV IndPSW,PSW MOV PSW,VarPSW .ENDM
;-------------------------------------------------------------------
; Установка банка регистров RB1 и начальная установка регистров
;-------------------------------------------------------------------
InitRegInd: .MACRO MOV SP,#AddrSP DEC SP MOV IndPSW,#Bank1 RestoreIndPSW SaveIndPSW .ENDM
;-------------------------------------------------------------------
; Чтение символа для i-того разряда индикатора из буфера клавиатуры
; в A
;-------------------------------------------------------------------
ReadSym: .MACRO MOV A,BufKey .ENDM
;-------------------------------------------------------------------
; Преобразование цифры в 7-сегментный код с сохранением состояния
; неиспользуемого в программе порта P0.7
;-------------------------------------------------------------------
Coder7Seg: .MACRO MOV DPTR,#Tabl7Seg MOVC A,@A+DPTR .ENDM
;-------------------------------------------------------------------
; Вывод 7-сегментного кода
; с сохранением неиспользуемого разряда 7 порта Р2
;-------------------------------------------------------------------
OutputDat: .MACRO MOV C, Bit7P2 MOV Bit7ACC, C MOV P2,A .ENDM
;-------------------------------------------------------------------
*********************ПРОГРАММА***************************
;-------------------------------------------------------------------
IntitSect: .SECTION InitRegInd .CODE
IntHandle: RestoreIndPSW ReadSym Coder7Seg OutputDat SaveIndPSW .END
канальный передатчик управление блок
5. Оценка быстродействия устройства
Оценка быстродействия устройства вычисляется как суммарное время выполнения программы обработки, при самых неблагоприятных условиях, то есть по самым длинным ветвям условного выполнения (если таковые имеются). Время выполнения программы индикации в данном случае может быть вычислено путём суммирования времени выполнения каждой команды в циклах.
Макросы:
RestoreIndPSW Тц=4 цикла
SaveIndPSW Тц=4 цикла
ReadSym Тц=1 цикл
Coder7Seg Тц=4 цикла
OutputDat Тц=5 циклов
Итого, при обработке каждого прерывания, программа индикации использует Тц=18 циклов процессора.
Время выполнения макроса InitRegInd (Тц=4 цикла + Tц(RestoreIndPSW)+Тц(SaveIndPSW)=12 циклов) не оказывает влияния на общее время работы программы индикации, поскольку выполняется однократно при инициализации.
6. Отладка разработанной программы. Результаты отладки
Для автономной отладки программы необходимо обеспечить функционирование таймера, т.е. начальную установку значения делителя таймера и режим работы, а так же разрешить прерывания от таймера. Ниже приведен текст программы, со вставками необходимыми для автономной работы.
************************MCS51******************************
* К У Р С О В А Я Р А Б О Т А *
* на тему: Устройство индикации * * *
* выполнил : ст гр.816 *
* Гладилина Яна Вадимовна *
*************************************************************
* Программа вывода информации на 7-сегментный индикатор *
* на МК КР1816ВЕ51 *
* Исходные данные:Номера каналов N=2,3,5,6 *
* Число разрядов линейного дисплея N=1 *
FILLCHAR00h;Заполнить промежутки между секциями нулями.
;--------------------------------------------------------------------
;*************КОНСТАНТЫ и ПЕРЕМЕННЫЕ *****************
;--------------------------------------------------------------------
;обозначение переменных
Bank1: .EQU008H;Банк 1
;Следующие регистры описаны в программе обработки клавиатуры.
;Их описание необходимо при автономном использовании программы
TimeDatL: .EQU078H;задержка на 5000 мкс. 5000 - 1388h
TimeDatH: .EQU 0ECH ; его доп. код = 0EC78Ch
ModeT0: .EQU0F1H;режим T0 - таймер в режиме 1
;Определение неперемещаемых регистров ----+ +-+-----+
P2: .REG0A0H; P2 0+--|a| | ; 1+--|b|+a-+ | ;Следующие регистры описаны в программе 2+--|c|fb | ;обработки клавиатуры. Их описание 3+--|d|+-g| | ; необходимо при автономном использовании 4+--|e|ec | ;программы 5+--|f|+d-+ |
PSW: .REG0D0H; 6+--|g| |
TMOD: .REG089H; 7| | | |
TCON: .REG 088H ; ----+ +-+-----+
IE: .REG 0A8H ;
IP: .REG 0B8H ;
TL0: .REG 08AH ;
TH0: .REG 08CH ;
SP: .REG 081h ;
ACC: .REG0E0H; ; .RSECT;
;Определение перемещаемых регистров
IndPSW: .DS1 ;хранение PSW для индикации ;Следующие регистры описаны в программе обработки клавиатуры. ;Их описание необходимо при автономном использовании программы
BufKey: .DS1 ;буфер клавиатуры
VarPSW: .DS1 ;хранение текущего PSW
AddrSP: .DS8 ;область под стек
Bit7ACC: .REGACC.7
Bit7P2: .REGP2.7 .DATA
;Преобразование двоичного кода в семисегмент-ный
Tabl7Seg: .BYTE 24h, 30h, 12h, 02h
;-------------------------------------------------------------------
************************МАКРОСЫ ***************************
;-------------------------------------------------------------------
;Сохранение текущего PSW в регистре VarPSW и восстановление IndPSW
;-------------------------------------------------------------------
RestoreIndPSW: .MACRO MOV VarPSW,PSW MOV PSW,IndPSW .ENDM
;-------------------------------------------------------------------
;Сохранение IndPSW и установка прежнего PSW
;-------------------------------------------------------------------
SaveIndPSW: .MACRO MOV IndPSW,PSW MOV PSW,VarPSW .ENDM
;-------------------------------------------------------------------
; Устанавливает T0 в режим 1 таймера с запретом внешнего управления,
; загружает в таймер двухбайтовое число TimeDatHTimeDatL, запускает T0
; необходимо для автономной работы
;-------------------------------------------------------------------
InitTimerT0: .MACROTH,TLCLRTR0 ORLTMOD,#0FHANLTMOD,#ModeT0 MOVTL0,#TLMOVTH0,#THSETBTR0 .ENDM
;-------------------------------------------------------------------
; Установка разрешения всех прерываний и прерываний от таймера T0
; необходимо для автономной работы
;-------------------------------------------------------------------
InitIntT0: .MACROSETBEASETBET0 CLRPT0 .ENDM
;-------------------------------------------------------------------
; Установка банка регистров RB1 и начальная установка регистров
;-------------------------------------------------------------------
InitRegInd: .MACRO MOV SP,#AddrSP DEC SP MOV IndPSW,#Bank1 RestoreIndPSW SaveIndPSW .ENDM
;-------------------------------------------------------------------
; Чтение символа для i-того разряда индикатора из буфера клавиатуры
; в A
;-------------------------------------------------------------------
ReadSym: .MACRO MOV A,BufKey .ENDM
;-------------------------------------------------------------------
; Преобразование цифры в 7-сегментный код
;-------------------------------------------------------------------
Coder7Seg: .MACRO MOV DPTR,#Tabl7Seg MOVC A,@A+DPTR .ENDM
;-------------------------------------------------------------------
; Вывод 7-сегментного кода
; с сохранением неиспользуемого разряда 7 порта Р2
;-------------------------------------------------------------------
OutputDat: .MACRO MOV C, Bit7P2 MOV Bit7ACC, C MOV P2,A .ENDM
;-------------------------------------------------------------------
************************ПРОГРАММА ************************
;-------------------------------------------------------------------
VectIntSeg: .SECTION .ORG 0000H JMP Init .ORG 000BH JMP IntHandle .CODE
Init: InitTimerT0 TimeDatH,TimeDatL InitIntT0 InitRegInd
U_LOOP: SJMPU_LOOP; бесконечный цикл - имитация ; основной программы
IntHandle: RestoreIndPSW ReadSym Coder7Seg OutputDat SaveIndPSW RETI .END
Заключение
В настоящей курсовой работе была разработана программная и аппаратная часть устройства индикации блока управления 4-х канальным ТВ передатчиком МВ. Быстродействие программы индикации не требовательно к времени выполнения, однако при разработке были учтён тот факт, что целесообразней оставить больше процессорного времени на выполнение других программ (обработки клавиатуры, синтезатора, звуковой индикации), которые более требовательны к времени. При написании программы индикации была предпринята попытка максимально оптимизировать выполняемый код, уменьшая его размер. Дальнейшая оптимизация вряд ли возможна и необходима, поскольку логика работы достаточна проста.
Список использованных источников
1. Сальников Н.И. Микроконтроллеры 8051 в устройствах управления радиоэлектронных приборов. :Учебное пособие, :РГРТА – Рязань 1999.
2. Бородин В.Б., Шагруин М.И. Микроконтроллеры. Архитектура, программирование, интерфейс. :Справочник – М., :ЭКОМ, 1999.
3. Гребнев В.В. Однокристальные микроЭВМ семейства MCS-51 фирмы Intel. -С-Пб., :ЭФО, 1997.
4. Аванесян Г.Р., Лёвшин В.П. Интегральные микросхемы ТТЛ, ТТЛШ. :Справочник, - М., :Машиностроение, 1993.
5. Лисицын Б.Л. Отечественные приборы индикации и их зарубежные аналоги. :Справочник – М., :Радио и связь, 1993. (МРБ вып. 1165)
6. Романычева Э.Т., Иванова А.К., Куликов А.С. и др. Разработка и оформление конструкторской документации радиоэлектронной аппаратуры: Справочник. :Под редакцией Э.Т. Романычевой. 2-е издание переработанное и дополненное. – М. :Радио и связь, 1989.