Разработка микропроцессорного устройства
Взаимосвязь измеряемой высоты с электрическим эквивалентом . Измерение длительности импульса на основе микроконтроллера семейства PIC16F87x компании Microchip. Функциональная схема измерителя высоты. Принципиальная электрическая схема источника питания.
Рубрика | Коммуникации, связь, цифровые приборы и радиоэлектроника |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 07.01.2013 |
Размер файла | 529,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Введение
В настоящее время мы вошли и прочно обосновались в мире цифровой техники. Цифровая техника заняла очень большое место в жизни человека. Она используется во всех отраслях промышленности и быта.
Микроконтроллер (МК) - разновидность микропроцессорной системы, отличающийся тем, что содержит внутри постоянную оперативную память и многочисленные устройства ввода / вывода, аналоговые и цифровые преобразователи, последовательные и параллельные каналы передачи информации, широтно-импульсные модуляторы, генераторы программируемых импульсов, таймеры реального времени, модули обработки сигналов.
МК выполняются в различных корпусах с различным количеством выводов, которые не выполняют никаких функций и могут быть только входами или выходами.
МК классифицируются по разрядности данных: 4-х, 8-ми, 16-ти, 32-х разрядные.
Общие тенденции современных МК - это уменьшение числа внешних элементов, т.е. на кристалле микросхемы размещают всевозможные нагрузочные («подтягивающие») резисторы, конденсаторы, цепи логики и т.п.
Для реализации микропроцессорного устройства измерения высоты выбираем микроконтроллер (МК) семейства PICmicro компании Microchip PIC16F873.
Для данного МК характерна высокоскоростная архитектура, позволяющая выполнять все команды за один цикл, кроме инструкций переходов, выполняемых за два цикла. Всего система команд содержит 35 инструкций.
Под одним циклом понимается четыре такта тактового генератора. Частота тактового генератора Fosc/4 (максимальная частота 20 МГц).
В микроконтроллере (МК) PIC16F873 память программ и данные расположены в отдельных блоках и для обращения к ним используются отдельные шины.
По шине данных передаются восьмиразрядные слова данных, а по шине команд (программ) четырнадцатиразрядные коды операций.
Все регистры специального назначения отображаются в адресном пространстве памяти данных, разделенной на четыре банка.
Система команд позволяет использовать любой регистр в любой команде, используя необходимый режим адресации (прямой, косвенный, относительный). Регистром косвенной адресации является FSR. Его содержимое используется как четыре младших разряда адреса (индекса).
1. Анализ технического задания
Взаимосвязь измеряемой высоты с электрическим эквивалентом имеет вид:
T=k*H [мс],
где H - высота, км, k=2 мс/км.
Таким образом, измерение высоты сводиться к измерению длительности прямоугольного импульса.
Определим длительность импульса:
Hmin=0.1 км, Tmin=0.1 км*2 мс/км=0,2 мс.
Hmax=20 км, Tmax=20 км*2 мс/км=40 мс.
Погрешность измерения ДН=±0.1 км или ДТ=±0,2 мс.
Измерение длительности импульса легко реализовать на основе любого микроконтроллера семейства PIC16F87x компании Microchip.
2. Описание выбранного метода измерения
Основным методом измерения длительности импульса является метод непосредственного счета, суть которого заключается в том, что берется некая квантующая частота fk и определяется, сколько периодов ТК квантующей частоты укладывается в длительность измеряемого импульса. То есть числовой эквивалент будет иметь вид
.
В нашем случае при квантовании микроконтроллера частотой 4 МГц, частота квантования таймера составит 1 МГц, погрешность квантования 1 мкс.
Для измерения длительности прямоугольного импульса с помощью микроконтроллера необходимо отслеживать появление его переднего и заднего фронтов. Для этого нужно настроить любой порт МК как цифровой вход и отслеживать момент, когда на нем появится логический «0», а затем логическая «1» т.е. передний фронт импульса. Как только на входе появится логическая «1», необходимо запустить таймер, который будет считать количество отсчетов постоянной частотой тактирования fk. Далее необходимо постоянно отслеживать появление логического «0» на входе, т.е. приход заднего фронта импульса. При появлении логического «0» на входе надо остановить таймер. Затем, зная количество отсчетов можно вычислить длительность прямоугольного импульса.
Рис. 1. Измерение длительности импульса
Функциональная схема измерителя высоты представлена на рис. 2.
Рис. 2. Функциональная схема
Измеряемый импульс поступает в микроконтроллер (МК) с датчика, кварцевый резонатор (КР) задает тактовую частоту микроконтроллера. Микроконтроллер осуществляет измерение длительности импульса и преобразование полученного числового эквивалента, который после преобразования выдается на индикацию. Питание микроконтроллера осуществляется от блока питания (БП).
3. Разработка блока питания
Источник питания необходим преобразования переменного напряжения 115В, 400 Гц в постоянное напряжение +5В для питания микроконтроллера и средств индикации. Источник питания состоит из следующих основных элементов: трансформатора, выпрямителя, стабилизатора напряжения. Принципиальная электрическая схема источника питания представлена на рис. 3.
Рис. 3. Принципиальная электрическая схема источника питания
импульс электрический микроконтроллер измеритель
Определим токи потребления:
Максимальный ток потребления микроконтроллера - 15 мА.
Максимальный ток потребления ЖК индикатора МТ-10S1-3Y - 1 мА.
Таким образом, общий ток потребления равен Iпотр=16 мА.
По необходимому выходному напряжению (+5 В) и току (2*Iпотр=32 мА) источника питания выбираем стабилизатор напряжения.
В качестве стабилизатора на +5 В выбираем микросхему MC78L05AB со следующими характеристиками:
Выходное напряжение - +5±0,2 В.
Выходной ток - до 0,1 А.
Рис. 4. Зависимость выходного напряжения от входного микросхемы MC78L05AB
Для выпрямителя выбираем диодный мост DB156 со следующими характеристиками:
Максимальное постоянное обратное напряжение: 800 В;
Максимальное импульсное обратное напряжение: 960 В;
Максимальный прямой (выпрямленный за полупериод) ток: 1,5 А;
Максимальный допустимый прямой импульсный ток: 60 А;
Максимальный обратный ток: 10 мкА;
Рабочая частота: 10 кГц;
Максимальное прямое напряжение: 1,1 В при токе Iпр.: 1,5 А;
Рабочая температура: -55…125 ?С.
Выходное напряжение выпрямителя определяется по формуле:
(3.1)
Для получения напряжения +5 В на выходе стабилизатора, его входное напряжение, после выпрямления переменного напряжения со вторичной обмотки трансформатора, должно быть порядка 7-7,5 В (рис. 4). Таким образом, необходимое напряжение вторичной обмотки трансформатора определится из формулы (3.1) как:
=7 В/1,4?5 В.
С учетом падения напряжения на диодах выпрямительного моста выберем трансформатор с выходным напряжением 6 В.
Выбираем трансформатор типа ТПК - 0,7-6В со следующими характеристиками:
Напряжение вторичных обмоток в режиме номинальной нагрузки - 6 В.
Ток номинальной нагрузки - 0,12 А.
Максимальная выходная мощность - 0,7 Вт.
5. Описание используемых модулей
Для решения поставленной задачи - измерения длительности прямоугольного импульса напряжения будет использоваться модуль таймера TMR1 и порт ввода RA1 для получения от датчика измеряемого импульса.
Таймер-счетчик TMR1. 16-ти разрядный, доступный для чтения и записи. Состоит из двух 8-ми разрядных регистров TMR1H (0Fh) и TMR1L(0Eh). Счет выполняется в спаренном регистре TMR1, инкрементируя его значение от 0000h до FFFFh, далее считает сначала.
За работу TMR1 отвечает управляющий регистр Т1CON (регистр специального назначения, доступен для чтения и записи), который содержит биты:
- выбора коэффициента деления предделителя;
- включения тактового генератора;
- синхронизации внешнего тактового сигнала;
- выбора источника тактовых сигналов;
- включения модуля TMR1.
TMR1 может работать в одном из 3-х режимов:
- таймера;
- синхронного счетчика;
- асинхронного счетчика.
PORTА - 6-ти разрядный двунаправленный порт ввода-вывода. Все каналы его имеют соответствующие биты направления в регистре TRISА, позволяющие настраивать канал на вход или на выход. Запись «1» в TRISA переводит соответствующий буфер в 3-е состояние и определяет канал как вход, а запись «0» определяет соответствующий канал как выход.
PORTB - 8-ми разрядный двунаправленный порт ввода-вывода. Все каналы его имеют соответствующие биты направления в регистре TRISB, позволяющие настраивать канал на вход или на выход. Запись «1» в TRISB переводит соответствующий буфер в 3-е состояние и определяет канал как вход, а запись «0» определяет соответствующий канал как выход.
Регистр ADCON1 устанавливает режим работы портов (цифровой или аналоговый) PORTA. Содержит следующие биты:
Бит 7: ADFM, необходим для формата сохранения 10 - разрядного результата.
Биты 6-4: не используются.
Биты 3-0: PCFG3: PCFG0 - управляющие биты настройки каналов АЦП.
Регистр состояния STATUS доступен для чтения / записи, содержит флаги (признаки) состояния АЛУ, флаги сброса МК и биты управления банками памяти. Регистр STATUS может быть адресован любой командой, как и любой другой регистр памяти данных.
6. Разработка и описание электрической принципиальной схемы устройства
Электрическая принципиальная схема устройства приведена на рис. 6. С помощью данного микропроцессорного устройства производится измерение длительности импульса 0,2…40 мс. Сигнал с датчика подается на вывод 3 PORTA RA1 микроконтроллера PIC16F873. Результаты измерения от МК поступают по 8-разрядной шине на выводы DB0-DB7 ЖК-индикатора MT-10S1-3Y c выводов канала PORTB микроконтроллера.
Микроконтроллер тактируется генератором, состоящим из кварцевого резонатора ZQ1 и конденсаторов С5, С6 частотой 4 МГц.
Питание устройства осуществляется от блока питания напряжением 5В. Включение и выключение питания производится кнопкой S1.
Рис. 5. Принципиальная электрическая схема измерителя высоты
7. Разработка блок-схем алгоритмов работы устройства и подпрограмм
Блок-схема алгоритма работы устройства
Основной алгоритм работы устройства измерения высоты содержит подпрограммы: инициализации МК, инициализации ЖКИ модуля, измерения высоты, вычисления числового эквивалента, перевода числа из двоичного кода в двоично-десятичный код, выдачи результатов измерения на индикацию.
Рис. 6. Блок-схема алгоритма работы устройства
Блок-схема алгоритма инициализации микроконтроллера
Подпрограмма инициализации МК включает в себя настройку используемых портов ввода / вывода, модуля таймера TMR1.
Блок-схема алгоритма инициализации ЖК индикатора
В подпрограмме инициализации ЖКИ осуществляется установка разрядности интерфейса обмена данными между ЖКИ и МК, включение и очистка индикатора, перевод в рабочий режим.
Блок-схема алгоритма паузы 25 мс
Пауза 25 мс осуществляется программно, с учетом того что частота квантования микроконтроллера составляет Fosc=4 МГц, время выполнения одной команды составляет Fosc/4, т.е. 1 мкс. Таким образом, для получения паузы 25 мс выполняется 100 циклов по 250 команд.
Блок-схема алгоритма паузы 50 мкс
Пауза 50 мкс осуществляется программно, аналогично паузе 50 мс. Таким образом, для получения паузы 50 мкс выполняется 50 команд.
Блок-схема алгоритма паузы 100 мкс
Пауза 100 мкс осуществляется программно, аналогично паузе 50 мс. Таким образом, для получения паузы 100 мкс выполняется 100 команд.
Блок-схема алгоритма выдача байта в ЖКИ
В данной подпрограмме осуществляется передача необходимых сигналов на шину управления ЖК индикатором для записи в него байта данных, согласно временной диаграмме с учетом динамических характеристик.
Блок-схема алгоритма измерения длительности импульса
Так как взаимосвязь измеряемой высоты с электрическим эквивалентом осуществляется через длительность импульса напряжения, в данной подпрограмме осуществляется преобразование длительности импульса напряжения в числовой код. Для измерения длительности прямоугольного импульса необходимо отследить момент, когда на входе RА0 PORTА появится логическая «1», т.е. передний фронт импульса. После этого запускается таймер TMR1, который будет считать количество отсчетов с постоянной частотой тактирования f=1 МГц. Далее необходимо постоянно отслеживать появление логического «0» на входе RА0, т.е. приход заднего фронта импульса. При появлении логического «0» на входе RА0, таймер останавливается.
Блок-схема алгоритма вычисления числового эквивалента
Так как числовой эквивалент измеренной длительности импульса находится в пределах 200…40000, а измеряемая высота в пределах 0,1…20 км, то для упрощения индикации, вычисление числового эквивалента измеренной высоты осуществляется делением измеренной длительности импульса на 200.
Блок-схема алгоритма перевода в 2-10 код
В данной подпрограмме осуществляется преобразование двоичного числового эквивалента измеренной высоты в три разряда двоично-десятичного кода - «сотни», «десятки» и «единицы». Преобразования проводим, используя операции вычитания чисел 100, а затем 10 с подсчётом количества положительных вычитаний.
Блок-схема алгоритма выдачи результатов на индикацию
В этой подпрограмме необходимо содержимое регистров Nsot, Ndes и Ned, полученное в подпрограмме десятичной коррекции, отправить сначала в регистр w, далее подпрограммой определяется код символа.
Затем, содержимое регистра w, передается в PORTB МК, а затем происходит обмен данными между МК и ЖКИ.
Блок-схема алгоритма определения кода символа
В данной подпрограмме содержимое регистра w складывается с содержимым регистра PCL, и при выходе из подпрограммы код индикации записывается в w.
Заключение
В результате выполнения курсовой работы был разработан микропроцессорный измеритель высоты с выводом результатов на ЖК индикатор, удовлетворяющий заданным техническим характеристикам.
Список литературы
1. http://www.microchip.ru
Приложение
ЛИСТИНГ
org 0x0000
goto main
TL equ 0x24
TH equ 0x25
N equ 0x26
N0 equ 0x27
Nsot equ 0x28
Ndes equ 0x29
Ned equ 0x2A
K equ 0x2B
Count equ 0x2C
T1 equ 0x2D
T2 equ 0x2E
;**********************************
; Основная программа
;**********************************
main
call init_mk; инициализация микроконтроллера
call init_lcd; инициализация ЖКИ
start call measure; измерение длительности импульса
call ekv; вычисление числового эквивалента
call bcd; преобразование числового эквивалента в 2-10 код
movwf Nsot, w; определение достижения 20 км
xorlw 0x02;
btfsc STATUS, Z;
bsf PORTA, 4; замыкание контакта на землю
btfss STATUS, Z;
bcf PORTA, 4; размыкание контакта на землю
call 25ms; пауза 25 мс.
call indicate; индикация результатов измерения
goto start
end.
;**********************************
; Инициализация микроконтроллера
;**********************************
init_mk
clrf PORTA;
clrf PORTB;
movlw 0x07
movwf ADCON1; выходы PORTA цифровые
movlw 0x01;
movwf TRISA; настройка RA0 - на вход, остальные на выход
clrf TRISB; настройка PORTB на выход
movlw 0x00;
movwf T1CON; настройка модуля TMR1
return
;**********************************
; Инициализация ЖКИ
;**********************************
init_lcd
bcf PORTA, 3; E=0
call 25ms; пауза 25 мс
movlw 0x30;
movwf PORTB; установка 8-ми битного интерфейса передачи
bcf PORTA, 1; А0=0
bcf PORTA, 2; RW=0
nop; пауза 1 мкс
bsf PORTA, 3; E=1
nop;
nop; пауза 3 мкс
nop;
bcf PORTA, 3; E=0
call 50mks; пауза 50 мкс
bsf PORTA, 3; E=1
nop;
nop; пауза 3 мкс
nop;
bcf PORTA, 3; E=0
call 50mks; пауза 50 мкс
bsf PORTA, 3; E=1
nop;
nop; пауза 3 мкс
nop;
bсf PORTA, 3; E=0
nop;
nop; пауза 3 мкс
nop;
movlw 0x3A
movwf PORTB; настройка разрядности
call byte_to_lcd; передача байта в ЖКИ
movlw 0x0С
movwf PORTB; включение ЖКИ
call byte_to_lcd; передача байта в ЖКИ
movlw 0x01
movwf PORTB; очистка ЖКИ
call byte_to_lcd; передача байта в ЖКИ
movlw 0x06
movwf PORTB; режим ввода данных
call byte_to_lcd; передача байта в ЖКИ
return
;**********************************
; Пауза 25 мс
;**********************************
25ms
clrf T1; очистка T1
clrf T2; очистка T2
movlw 0x64;
movwf T1; T1=100
25_1 movlw 0xFA;
movwf T2; T2=250
25_0 decfsz T2, F; T2=T2-1
goto 25_0
decfsz T1, F; T1=T1-1
goto 25_1
return
;**********************************
; Пауза 50 мкс
;**********************************
50mks
clrf T1; очистка T1
movlw 0x32;
movwf T1; T1=50
50_0 decfsz T1, F; T1=T1-1
goto 50_0
return
;**********************************
; Пауза 100 мкс
;**********************************
100mks
clrf T1; очистка T1
movlw 0x64;
movwf T1; T1=64
100_0 decfsz T1, F; T1=T1-1
goto 100_0
return
;**********************************
; Передача байта в ЖКИ
;**********************************
byte_to_lcd
bcf PORTA, 2; RW=0
nop; пауза 1 мкс
bsf PORTA, 3; E=1
nop;
nop; пауза 3 мкс
nop;
bcf PORTA, 3; E=0
call 100mks; пауза 100 мкс
return
;**********************************
; Измерение длительности импульса
;**********************************
measure
clrf TMR1L; очистка TMR1L
clrf TMR1H; очистка TMR1H
m1 btfss PORTA, 0; входной сигнал равен 1?
goto m1
bsf T1CON, 0; запуск таймера
m2 btfsc PORTA, 0; входной сигнал равен 0?
goto m2
bcf T1CON, 0; остановка таймера
movf TMR1L, w;
movwf TL; пересылка результатов измерения в регистры
movf TMR1H, w;
movwf TH;
return
;**********************************
; Вычисление числового эквивалента
;**********************************
ekv
clrf N; очистка частного
clrf N0; очистка остатка
molvw 0xC8;
movf k, w; делитель=200
movlw 0x10;
movwf count; организация счетчика на 16
ekv2 rlf TL, F; сдвиг делимого влево
rlf TH, F;
rlf N0, F; сдвиг частного влево
movf k, w;
subwf N0, F; вычитание делителя из остатка
btfsc STATUS, C; если C=0 восстанавливаем остаток
goto ekv1
addwf N0, F; восстановление остатка
bcf STATUS, C; C=0
ekv1 rlf N, F; сдвиг частного влево
decfsz count, f; продолжать деление, пока не обнулен счетчик
goto ekv2;
movf N0, w;
addwf N, F; прибавление остатка к частному
return
;**********************************
; Перевод в 2-10 код
;**********************************
bcd
clrf Nsot; очистка регистров результата
clrf Ndes;
clrf Ned;
bcd1 movlw 0x64; вычитаем 100 из двоичного числа
subwf N, w;
btfss STATUS, C;
goto bcd2
incf Nsot, F; увеличиваем количество сотен на единицу
movwf N; сохраняем результат вычитания
goto bcd1;
bcd2 movlw 0x0A; вычитаем 10 из двоичного числа
subwf N, w;
btfss STATUS, C;
goto bcd3
incf Ndes, F; увеличиваем количество десяток на единицу
movwf N; сохраняем результат вычитания
goto bcd2;
bcd3 movf N, w;
movwf Ned; после вычитаний заносим остаток в единицы
return
;****************************************
; Выдача результатов измерения на индикацию
;****************************************
indicate
bsf PORTA, 2; RW=0
bsf PORTA, 1; A0=1
movf Nsot, w; кол-во сотен в w
call symbol; определение кода символа
movwf PORTB; w в PORTB
call byte_to_lcd; передача в ЖКИ
movf Ndes, w; кол-во десятков в w
call symbol; определение кода символа
movwf PORTB; w в PORTB
call byte_to_lcd; передача в ЖКИ
movlw 0x2E; код точки
movwf PORTB; w в PORTB
call byte_to_lcd; передача в ЖКИ
movf Ned, w; кол-во единиц в w
call symbol; определение кода символа
movwf PORTB; w в PORTB
call byte_to_lcd; передача в ЖКИ
return
;****************************************
; Определение кода символа
;****************************************
symbol
addwf PCL, F; PCL=PCL+w
retlw 0x30; символ 0
retlw 0x31; символ 1
retlw 0x32; символ 2
retlw 0x33; символ 3
retlw 0x34; символ 4
retlw 0x35; символ 5
retlw 0x36; символ 6
retlw 0x37; символ 7
retlw 0x38; символ 8
retlw 0x39; символ 9
Размещено на Allbest.ru
Подобные документы
Структурная схема устройства управления. Алгоритм работы микроконтроллера в его составе. Строение центрального процессорного элемента – микроконтроллера AVR семейства Classic. Принципиальная схема устройства, расчет временных параметров ее работы.
курсовая работа [636,5 K], добавлен 03.12.2013Проектирование контроллера опорно-поворотного устройства антенны. Структура микроконтроллера. Функциональная и принципиальная схема устройства. Выбор транзисторной сборки, двигателя, дисплея, источника питания. Алгоритм работы устройства, моделирование.
курсовая работа [1,6 M], добавлен 08.06.2012Понятие микропроцессорной системы, её назначение, электрическая схема и назначение составляющих устройств. Проведение схемотехнического анализа устройства источника питания системных блоков. Электрические и эксплуатационные параметры блоков питания ЭВМ.
дипломная работа [2,6 M], добавлен 08.06.2014Электрическая принципиальная схема устройства автоматической тренировки аккумулятора. Выбор элементной базы. Разработка схемы электрической принципиальной. Размещение компонентов на печатной плате. Разработка алгоритма программы микроконтроллера.
дипломная работа [670,2 K], добавлен 20.10.2013Разработка принципиальной схемы и описание работы контроллера клавиатуры/дисплея КР580ВД79. Схема сопряжения микроконтроллера с фотоимпульсным датчиком. Расчет потребляемого тока от источника питания. Блок-схема программы вывода информации на индикацию.
курсовая работа [736,9 K], добавлен 18.02.2011Диаграммы амплитудного и фазового спектров ФВЧ. Параметры УРЧ, спектры сигналов и принципиальная схема устройства. Параметры гетеродина, графики зависимостей. Последовательность униполярных импульсов. Принципиальная электрическая схема простейшего АГ.
контрольная работа [601,1 K], добавлен 26.08.2010Разработка микроконтроллера для контроля ритма дыхания больного в реанимационной палате. Структурная и принципиальная схемы микропроцессорного контроллера. Модули процессора, памяти, ввода и вывода, режимы индикации. Описание работы, принципиальная схема.
курсовая работа [197,6 K], добавлен 06.12.2013Устройства, измеряющие скорость движущегося объекта. Реализация измерителя скорости. Проектирование цифровой и аналоговой частей устройства. Тактовая частота микроконтроллера. Отладка работы микроконтроллера до создания печатной платы устройства.
курсовая работа [2,3 M], добавлен 04.01.2015Особенности микроконтроллера ATTINY семейства AVR. Описание ресурсов микроконтроллера ATTINY12: описание процессора, порты ввода/вывода, периферийные устройства, архитектура ядра. Разработка устройства со световыми эффектами на базе микроконтроллера.
курсовая работа [2,1 M], добавлен 24.06.2013Функциональная спецификация и преимущества термометрического датчика. Структурная схема микроконтроллера РIС16F84A. Алгоритм работы программы, описание функциональных узлов, выбор элементной базы и принципиальная схема терморегулятора для аквариума.
курсовая работа [4,7 M], добавлен 27.12.2009