Разработка программы программно-управляемого генератора
Разработка схемы алгоритма программной генерации сигнала заданной формы. Обоснование назначения отдельных блоков программы, описание ее работы в целом. Формирование последовательности из трех пилообразных импульсов с заданным временем паузы и нарастания.
Рубрика | Коммуникации, связь, цифровые приборы и радиоэлектроника |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 25.05.2015 |
Размер файла | 28,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Задание
1. Для временной последовательности импульсов, соответствующей номеру варианта контрольной работы, составить схему алгоритма программной генерации сигнала заданной формы, обосновать назначение отдельных блоков программы и описать работу программы в целом.
2. На языке ассемблер в системе команд микроконтроллера написать программу для программно-управляемого генератора. При написании программы каждая строка должна быть сопровождена комментарием.
Примечание к заданию
1. При написании программы необходимо учесть то, что программа должна позволять циклический вывод генерируемого сигнала для того, чтобы можно было наблюдать вывод сигнала на осциллографе и провести необходимые метрологические измерения.
2. В Приложении П.2 описаны структурная организация и особенности функционирования микроконтроллера КМ1816ВЕ51. Более подробную информацию можно получить в специализированной справочной литературе [6,9].
3. В Приложении П.3 приведены сведения о системе команд МК 1816ВЕ51 и правилах написания программ на языке ассемблер, необходимые для выполнения контрольной работы. Вопросы, связанные с вводом, редактированием, трансляцией и отладкой прикладных программ, отражены в описании упомянутой выше лабораторной работы.
4. В Приложении П.4 приведен список сокращений, символических имен и аббревиатур.
генератор пауза импульс сигнал
Задания к контрольной работе
Рис. П1.6. Контрольная работа. Вариант 6.
РЕШЕНИЕ: В данном задании необходимо сформировать последовательность из трех пилообразных импульсов, имеющих время паузы tП, время нарастания tН и паузы между пилообразными импульсами длительностью Т. (рис.1).
Рисунок 1 - Заданная последовательность импульсов
Во время паузы на выходе формируется сигнал низкого уровня UMIN, а максимум пилообразного напряжения достигает величины UMAX.
Точные значения величин не заданы, поэтому будем придерживаться качественного выполнения задачи, задавая временные и амплитудные значения для реализации сигнала аналогичного рис.1.
Таким образом, можно принять:
tН> tП, Т = 3• (tН + tП) и UMAX > UMIN.
Задача формирования сигнала на рис.1 может быть разделена на две: первая - формирование трех пилообразных импульсов, вторая - формирование паузы длительностью Т. Так как пилообразные импульсы одинаковы, то целесообразно использовать цикл из трех шагов по формированию одиночного импульса или подпрограмму формирования одного импульса, которую можно вызвать три раза в цикле.
Задача формирования пилообразного импульса может быть решена с помощью применения операторов группы команд арифметических операций, позволяющих формировать рост пилообразного сигнала путем циклического вычисления нарастающего фронта сигнала. Точность формирования фронта (дискретность его роста) определяется разрядностью загружаемой константы.
В этом методе нет согласования заданных значений максимальной амплитуды сигнала UMAX и длительности "низкого" уровня с используемым значением скорости роста "пилы" U. Фактически, скорость роста равна минимальному числу 1H. Более правильно вычислять скорость роста как отношение (UMAX-UMIN) /tН. В этом случае сохраняются пропорции для заданных значений параметров, а точность достижения UMAX определяется погрешностью округления результата деления и минимально различимым разрядом числа. Если выбрать величину максимума и минимума пилообразного импульса соответственно UMAX= 80H и UMIN=20Н, то при U=1Н величина времени роста пилы составит:
tН= (UMAX-UMIN) /U = (80Н - 20Н) /1Н= 60Н.
Примем tП =40Н, тогда длительность паузы составит:
Т = 3• (tН + tП) =3• (60Н+40Н) =1Е0Н.
Величина Т выходит за диапазон 8-ми разрядов регистров общего назначения микроконтроллера, поэтому для формирования паузы длительностью Т, следует разделить величину Т на 2 и два раза выполнить фрагмент кода с формированием сигнала низкого уровня длительностью:
Т1=Т/2=1Е0Н/2=F0H.
Ниже приведен вариант программы формирования сигнала на языке ассемблера К1816ВЕ51 при использовании цикла из трех шагов по формированию одиночного пилообразного импульса.
ORG 2000H |
; определение начального адреса ОЗУ |
|||
SJMP |
BEGIN |
|||
ORG 2030H |
; определение начального адреса программы в ОЗУ |
|||
BEGIN: |
MOV |
R5, #3H |
; загрузка числа циклов "пилы" |
|
NATH: |
MOV |
R1, #80H |
; загрузка длительности "низкого" уровня сигнала (tП) |
|
MOV |
R2, #1H |
; загрузка скорости роста "пилы" по амплитуде (U) |
||
MOV |
R3, #80H |
; загрузка максимального уровня "пилы" (UMAX) |
||
MOV |
P1, #20H |
; загрузка "низкого" уровня "пилы" (UMIN) |
||
LOOP: |
DJNZ |
R1, LOOP |
; отсчет длительности "низкого" уровня |
|
ROST: |
MOV |
A, P1 |
; формирование роста "пилы" с учетом |
|
ADD |
A, R2 |
; скорости роста |
||
MOV |
P1, A |
; выдача отсчета амплитуды "пилы" в порт |
||
MOV |
A, R3 |
|||
SUBB |
A, P1 |
; если "пила" не достигла максимума, то снова |
||
JZ |
CYCLE |
; увеличение "пилы", |
||
SJMP |
ROST |
; иначе переход к проверке количества циклов |
||
CYCLE: |
DJNZ |
R5, NATH |
; отсчет числа циклов |
|
MOV |
R4, #F0H |
; загрузка длительности сигнала "низкого" уровня Т1 |
||
MOV |
P1, #20H |
; загрузка "низкого" уровня сигнала (UMIN) |
||
LOOP1: |
DJNZ |
R4, LOOP1 |
; отсчет длительности "низкого" уровня: декремент R4 и цикл, если не 0, то загрузка в порт P1 значения "низкого" уровня (UMIN) |
|
MOV |
R4, #F0H |
; повтор формирования сигнала "низкого" уровня длительностью Т1 |
||
MOV |
P1, #20H |
; загрузка "низкого" уровня сигнала (UMIN) |
||
LOOP1: |
DJNZ |
R4, LOOP1 |
; отсчет длительности "низкого" уровня: декремент R4 и цикл, если не 0, то загрузка в порт P1 значения "низкого" уровня (UMIN) |
|
SJMP |
BEGIN |
; возврат в начало программы |
||
END |
; конец программы |
Первые три строки программы и последняя являются обязательными, так как формируют необходимое адресное пространство для выполнения программы и завершают ее. Псевдооперация ORG осуществляет принудительную установку адреса следующей команды. Начальные адреса в ОЗУ определяются его объемом и свободным пространством для размещения пользовательских программ.
Оператор "SJMP rel" организует короткий относительный переход внутри страницы к программе формирования последовательности импульсов с меткой "NATH", где rel - метка в диапазоне [-128. +127] байт относительно адреса следующей команды.
Операторы группы передачи данных "MOV Rn, #data8" выполняют загрузку в регистр восьми битной константы в десятичной или шестнадцатеричной системе счисления. В программе использована шестнадцатеричная система.
В начале программы по метке BEGIN устанавливается в регистре R5 число циклов формирования пилы, их три. Далее c метки NATH в регистры R1-R3 записываются необходимые константы, определяющие вид пилообразных импульсов.
Оператор "MOV Pn, #data8" позволяет передать во все линии порта P1 (P1.0-P1.7) все восемь разрядов восьми битной константы для вывода на ЦАП. Таким же образом может быть произведена предварительная установка уровня сигнала на выходе ЦАП (например, в начале может быть организован вывод низкого уровня сигнала). В данном случае развертка сигнала на осциллографе начинается с низкого уровня, поэтому в порт Р1 записывается число 20Н.
Оператор "DJNZ Rn, rel" определяет декремент (уменьшение) регистра и, если он не нуль, осуществляет переход по меткам "LOOP". В данном случае фактически осуществляется временная задержка, кратная числу, заданному константой, и времени выполнения операции микроконтроллером. В этой программе таким образом формируются длительности низкого уровней разной величины.
По окончании формирования низкого уровня сигнала UMIN с метки ROST, выполняются команды по формированию нарастающего фронта пилообразного напряжения.
Оператором "MOV A, P1" производится загрузка аккумулятора последним значением числа, выведенным в порт P1. Это число суммируется с заданной ступенькой роста "пилы" в регистре R2 ("ADD A, R2"). Далее полученное число из аккумулятора загружается в порт P1 ("MOV P1, A"), а в аккумулятор загружается заданный максимальный уровень "пилы" из регистра R3 ("MOV A, R3"). Затем производится вычитание из содержимого аккумулятора последнего числа, выведенного в порт P1 ("SUBB A, P1"), и, если аккумулятор не равен нулю, снова осуществляется переход по метке "ROST" для дальнейшего приращения "пилы" ("SJMP ROST"). В противном случае (если содержимое аккумулятора равно нулю) считается, что сигнал достиг своего максимального значения, и происходит переход в начало программы по метке "CYCLE" ("JZ CYCLE ") для выполнения цикла из трех раз. Командой DJNZ R5, NATH проверяется число циклов и если их меньше трех, то происходит возврат на генерацию очередного импульса по метке " NATH". Иначе, происходит переход к формированию сигнала низкого уровня длительностью Т. Для этого два раза запускается последовательность команд формирования сигнала низкого уровня длительностью Т1. Работа этой части кода происходит аналогично выше рассмотренному коду формирования сигнала низкого уровня длительностью tП.
По окончании формирования сигнала низкого уровня производится переход в начало программы для организации циклического вывода сгенерированной последовательности импульсов через ЦАП на измерительные приборы.
Теперь приведем вариант программы формирования сигнала на языке ассемблера К1816ВЕ51 при использовании подпрограмм формирования одиночного пилообразного импульса и формирования сигнала низкого уровня заданной длительности. В программе также будем использовать цикл из трех шагов по вызову подпрограммы формирования одиночного пилообразного импульса. Использование цикла по вызову подпрограммы требует меньшего количества машинных циклов при выполнении, чем просто три раза вызвать подпрограмму, в тоже время выигрыша по объему занимаемой памяти нет.
Предполагается, что устройство при запуске (или нажатии на кнопку СБРОС) формирует аппаратный импульс рестарта (сброса) RST, по которому происходит начальная инициализация. В частности при этом устанавливается указатель стека по адресу 07Н, что необходимо при вызове подпрограмм. Поэтому аналогичные настройки в программе не приводятся.
Работа первых четырех строк этой программы аналогична работе предыдущей программы с идентичными операторами.
ORG 2000H |
; определение начального адреса ОЗУ |
|||
SJMP |
BEGIN |
|||
ORG 2030H |
; определение начального адреса программы в ОЗУ |
|||
BEGIN: |
MOV |
R5, #3H |
; загрузка числа циклов "пилы" |
|
ACALL |
SAW |
; вызов подпрограммы формирования импульса "пилы" |
||
CYCLE: |
DJNZ |
R5, BEGIN |
; отсчет числа циклов |
|
ACALL |
DELAY |
; вызов подпрограммы формирования сигнала "низкого" уровня длительностью Т1 |
||
ACALL |
DELAY |
; вызов подпрограммы формирования сигнала "низкого" уровня длительностью Т1 |
||
SJMP |
BEGIN |
; возврат в начало программы |
||
; Подпрограмма формирования пилообразного импульса |
||||
SAW: |
MOV |
R1, #80H |
; загрузка длительности "низкого" уровня сигнала (tП) |
|
MOV |
R2, #1H |
; загрузка скорости роста "пилы" по амплитуде (U) |
||
MOV |
R3, #80H |
; загрузка максимального уровня "пилы" (UMAX) |
||
MOV |
P1, #20H |
; загрузка "низкого" уровня "пилы" (UMIN) |
||
LOOP: |
DJNZ |
R1, LOOP |
; отсчет длительности "низкого" уровня |
|
ROST: |
MOV |
A, P1 |
; формирование роста "пилы" с учетом |
|
ADD |
A, R2 |
; скорости роста |
||
MOV |
P1, A |
; выдача отсчета амплитуды "пилы" в порт |
||
MOV |
A, R3 |
|||
SUBB |
A, P1 |
; если "пила" достигла максимума, то |
||
JZ |
EXIT |
; переход к возврату из подпрограммы, |
||
SJMP |
ROST |
; иначе снова увеличение "пилы" |
||
EXIT: |
RET |
; возврат из подпрограммы |
||
; Подпрограмма формирования сигнала "низкого" уровня длительностью Т1 |
||||
DELAY: |
MOV |
R4, #F0H |
; загрузка длительности сигнала "низкого" уровня Т1 |
|
MOV |
P1, #20H |
; загрузка "низкого" уровня сигнала (UMIN) |
||
LOOP1: |
DJNZ |
R4, LOOP1 |
; отсчет длительности "низкого" уровня: декремент R4 и цикл, если не 0, то загрузка в порт P1 значения "низкого" уровня (UMIN) |
|
RET |
; возврат из подпрограммы |
|||
END |
; конец программы |
Далее в теле цикла из трех шагов происходит вызов подпрограммы формирования одиночного пилообразного импульса АCALL SAW, расположенной в текущем банке памяти программ. Затем два раза вызывается подпрограмма формирования сигнала "низкого" уровня длительностью Т1 ACALL DELAY, таким образом формируется сигнал "низкого" уровня длительностью Т.
По окончании формирования сигнала низкого уровня производится переход в начало программы для организации циклического вывода сгенерированной последовательности импульсов через ЦАП на измерительные приборы (команда SJMP BEGIN).
Далее приводятся тексты подпрограмм SAW и DELAY, которые заканчиваются командой возврата из прерывания RET. Текст подпрограмм аналогичен соответствующим фрагментам первого варианта программы.
Литература
1. Магда Ю.С. Микроконтроллеры серии 8051: практический подход. - М.: ДМК Пресс, 2008. - 228 с.
2. Проектирование цифровых устройств на однокристальных микроконтроллерах/ В.В. Сташин, А.В. Урусов, О.Ф. Мологонцева. - М.: Энергоатомиздат, 1990. - 224 с.
Размещено на Allbest.ru
Подобные документы
Принципиальная схема генератора пачек импульсов и перечень его элементов, разработка алгоритма и программы функционирования. Обзор архитектуры AT90S2313 и система его команд. Моделирование работы генератора пачек импульсов с помощью Visual Micro Lab.
курсовая работа [1,2 M], добавлен 06.06.2011Разработка структурной и принципиальной схемы устройства и его отдельных блоков и обоснования принятых решений. Алгоритм и временная диаграмма работы генератора и его отдельных блоков. Расчет основных параметров и характеристик и моделирование генератора.
курсовая работа [44,0 K], добавлен 29.01.2009Строение квадратурной фазовой манипуляции (QPSK) и области её применения. Проектирование высокочастотных и сверхвысокочастотных радиоэлектронных устройств. Описание программы Microwave Office. Разработка генератора тестовых импульсов и канала передачи.
реферат [789,5 K], добавлен 24.06.2012Выбор и обоснование основных технических решений микроконтроллера. Разработка алгоритма рабочей программы. Расчет потребляемой мощности и определение требований к источникам питания. Описание модулей программы и ее отдельных функциональных модулей.
курсовая работа [210,3 K], добавлен 25.11.2013Описание алгоритма работы и разработка структурной схемы микропроцессорной системы управления. Разработка принципиальной схемы. Подключение микроконтроллера, ввод цифровых и аналоговых сигналов. Разработка блок-схемы алгоритма главной программы.
курсовая работа [3,3 M], добавлен 26.06.2016Разработка электрической принципиальной и функциональной схемы генератора. Обоснование выбора схем блока вычитания и преобразователя кодов. Функциональная схема генератора последовательности двоичных слов. Расчет конденсаторов развязки в цепи питания.
курсовая работа [1,7 M], добавлен 14.09.2011Описание структурной схемы генератора. Описание работы схемы электрической принципиальной блока. Выбор и обоснование элементной базы. Разработка конструкции печатной платы. Разработка конструкции датчика сетки частот. Описание конструкции генератора.
дипломная работа [287,2 K], добавлен 31.01.2012Разработка и описание функциональной схемы генератора. Выбор микросхемы памяти и её объёма для программирования. Описание схемы формирования и усиления модулированного сигнала, формирователя режима работы. Расчет тактового генератора и усилителя тока.
курсовая работа [107,3 K], добавлен 19.05.2014Разработка и обоснование структурной схемы цифрового корректирующего фильтра. Обоснование общего алгоритма его функционирования. Оценка быстродействияустройства. Отладка разработанной программы. Составление принципиальной схемы устройства и ее описание.
курсовая работа [774,7 K], добавлен 03.12.2010Разработка структурной схемы устройства. Принцип работы его блоков: источника напряжения, цифрового программируемого устройства, семисегментного дисплея, датчиков давления и температуры. Разработка алгоритма работы управляющей программы, ее блок-схема.
курсовая работа [2,5 M], добавлен 23.06.2015