Автор работы: Пользователь скрыл имя, 16 Апреля 2012 в 22:32, курсовая работа
Общие тенденции современных МК – это уменьшение числа внешних элементов, т.е. на кристалле микросхемы размещают всевозможные нагрузочные («подтягивающие») резисторы, конденсаторы, цепи логики и т.д. По совокупности функциональных возможностей и технических характеристик интерфейсные МК ориентированы на реализацию управления различными приборами и устройствами, в том числе, информационно-измерительными и контрольно-диагностическими.
Введение
1. Обоснование требований предъявляемых к микроконтроллеру, на
основе которого реализуется микропроцессорное устройство
2. Обоснование метода измерения и анализ погрешности измерения
3. Описание используемых модулей и регистров специального назначения
4. Разработка и описание электрической принципиальной схемы устройства
5. Описание принципа действия и построение блок – схемы алгоритма
работы разрабатываемого устройства
5.1. Алгоритм основной программы
5.2. Алгоритм инициализации МК
5.3 Алгоритм программы задержки в 20 мс
5.4 Алгоритм измерения, осреднения результата
5.5 Алгоритм получения числового эквивалента
5.6 Алгоритм перевода из 2го кода в двоично-десятичный
5.7 Алгоритм вывода на 7-сегментный индикатор
Заключение
Использованная литература
Министерство образования и науки Российской Федерации
КАЗАНСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
им. А.Н. ТУПОЛЕВА
Кафедра ПИИС
Курсовая работа по дисциплине:
«Проектирование микропроцессорных приборных устройств»
На тему:
Микропроцессорное устройство измерения уровня напряжения
Выполнила: студ. гр. 3501
_____________Мурзаева К.А.
Принял:ст. преп.каф.ПИИС
_______________Семко М. В.
Казань 2010
Содержание
Введение
1. Обоснование требований предъявляемых к микроконтроллеру, на
основе которого реализуется микропроцессорное устройство
2. Обоснование метода измерения и анализ погрешности измерения
3. Описание используемых модулей и регистров специального назначения
4. Разработка и описание электрической принципиальной схемы устройства
5. Описание принципа действия и построение блок – схемы алгоритма
работы разрабатываемого устройства
5.1. Алгоритм основной программы
5.2. Алгоритм инициализации МК
5.3 Алгоритм программы задержки в 20 мс
5.4 Алгоритм измерения, осреднения результата
5.5 Алгоритм получения числового эквивалента
5.6 Алгоритм перевода из 2го кода в двоично-десятичный
5.7 Алгоритм вывода на 7-сегментный индикатор
Заключение
Использованная литература
Введение
Целью курсовой работы является разработка устройства измерения уровня напряжения аналогового сигнала на основе микроконтроллера. В качестве микроконтроллера выбирается МК PIC16F877.
Микроконтроллер (МК) – разновидность микропроцессорной системы, отличающийся тем, что содержит внутри постоянную оперативную память и многочисленные устройства ввода/вывода, аналоговые и цифровые преобразователи, последовательные и параллельные каналы передачи информации, широтно-импульсные модуляторы, генераторы программируемых импульсов, таймеры реального времени, модули обработки сигналов.
МК выполняются в различных корпусах с различным количеством выводов, которые не выполняют никаких функций и могут быть только входами или выходами. МК классифицируются по разрядности данных: 4-х, 8-ми, 16-ти, 32-х разрядные. МК различаются системой команд (набор двоичных кодов, который определяет перечень всех возможных операций). Каждый код определяет команду.
Общие тенденции современных МК – это уменьшение числа внешних элементов, т.е. на кристалле микросхемы размещают всевозможные нагрузочные («подтягивающие») резисторы, конденсаторы, цепи логики и т.д. По совокупности функциональных возможностей и технических характеристик интерфейсные МК ориентированы на реализацию управления различными приборами и устройствами, в том числе, информационно-измерительными и контрольно-диагностическими.
1. Обоснование требований предъявляемых к микроконтроллеру, на основе которого реализуется микропроцессорное устройство
Согласно техническому заданию при выборе микроконтроллера (МК) следует учитывать следующие требования:
1. МК должен тактироваться от генератора с частотой 20МГц;
2. Управление работой МК осуществлять с помощью внешнего сигнала задаваемого кнопкой;
3. Необходимое количество портов ввода- вывода для подключения источника сигнала, управляющей кнопки и 7-мисегментных индикаторов(3 значащих разряда);
4. Наличие АЦП и его высокая разрядность, для уменьшения погрешности аналогово-цифрового преобразования;
5. Обеспечить автономное питание МК.
В соответствии с требованиями, предъявляемыми к разрабатываемому микроконтроллерному устройству, выбираем микроконтроллер PIC16F877.
Структура МК PIC16F877 представлена на рисунке :
Особенности МК PIC16F877:
- аккумуляторно-зависимая система команд (большинство команд МК используют регистр-аккумулятор W (рабочий регистр) в качестве одного из операндов;
- 8-ми разрядный аппаратный стек;
- регистровая организация памяти данных с возможностью прямой и косвенной адресации в любой ячейке памяти;
- одинаковый размер команд (одно машинное слово);
- последовательная обработка команд
- выполнение всех инструкций за 1 машинный цикл. Кроме инструкций переходов выполняемых за 2 цикла.
Характеристики МК PIC16F877:
- Высокоскоростная RISC архитектура;
- 35 инструкций;
- Все команды выполняются за один цикл, кроме инструкций перехода, выполняемых за два цикла;
- Тактовая частота:
- DC – 20МГц, тактовый сигнал
- DC – 200нс, один машинный цикл
- До 8к 14 слов FLASH памяти программ
- До 3688 байт памяти данных (ОЗУ)
- До 2568 байт EEPROM памяти данных
- Совместимость по выводам с PIC16C73B\76\77
- Система прерываний (до 14 источников)
- 8-уровневый аппаратный стек
- Прямой, косвенный и относительный режим адресации
- Сброс по включению питания(POR)
- Таймер сброса (PWRT) и таймер ожидания запуска генератора (OST) после включения питания
- Сторожевой таймер WDT с собственным RC генератором
- Программируемая защита памяти программ
- Режим энергосбережения SLEEP
- Выбор параметров тактового генератора
- Высокоскоростная, энергосберегающая CMOS FLESH/EEPROM технология
- Полностью статическая архитектура
- Программирование в готовом устройстве (используется два вывода микроконтроллера)
- Низковольтный режим программирования
- Режим внутрисхемной отладки (используется два вывода микроконтроллера)
- Широкий диапазон напряжений питания от 2,0 В до 5,5В
- Повышенная нагрузочная способность портов ввода/вывода (25мА)
- Малое энергопотребление:
- <0,6мА @ 3,0 В , 4,0МГц
- 20мкА @ 3,0 В , 32кГц
- <1мкА в режиме энергосбережения
Характеристика периферийных модулей:
- Таймер 0: 8-миразрядный таймер/счетчик с 8-миразрядным программируемым предделителем;
- Таймер 1: 16-тиразрядный таймер/счетчик с возможностью подключения внешнего резонатора
- Таймер 2: 8-миразрядный таймер/счетчик с 8-миразрядным программируемым предделителем и выходным делителем;
- два модуля захват/сравнение/ШИМ (ССР):
- 16-тиразрядный захват (максимальная разрешающая способность 12,5нс);
- 16-тиразрядное сравнение (максимальная разрешающая способность 200 нс);
- 10-тиразрядный ШИМ;
- многоканальное 10-разрядное АЦП;
- последовательный синхронный порт MSSP:
- ведущий/ведомый режим SPI
- ведущий/ведомый режим I2C
- последовательный синхронно-асинхронный приемопередатчик USART с поддержкой детектирования адреса
- ведомый 8-разрядный параллельный порт PSP с поддержкой внешних сигналов –RD,-WR,-CS
- детектор пониженного напряжения (BOD) для сброса по снижению напряжения питания (BOR).
2.Обоснование метода измерения и анализ погрешности измерения
Для измерения уровня напряжения аналогового сигнала в микроконтроллере PIC16F877 существует 8-канальный модуль аналого-цифрового преобразователя (АЦП). Модуль АЦП обеспечивает преобразование аналогового входного сигнала в соответствующий 10-разрядный цифровой код. АЦП использует метод последовательного приближения.
Измеряемый аналоговый сигнал необходимо подать на аналоговый вход. Можно использовать входы RA0, RA1, RA2, RA3, RA5, RE0, RE1, RE2. При этом также необходимо обеспечить подачу опорного напряжения на входы опорного напряжения модуля АЦП, тем самым задавая диапазон измерения. Входной аналоговый сигнал через коммутатор каналов заряжает конденсатор АЦП. Модуль АЦП преобразует напряжение, удерживаемое на конденсаторе в соответствующий 10-разрядный код. Источник верхнего и нижнего опорного напряжения может быть выбран программно с выводов VDD, Vss, RA3 или RA2.
Погрешность АЦП рассчитывается исходя из того, что модуль АЦП имеет 10 разрядов. Следовательно максимальное число отсчетов, которое можно получить это 1024. Обычно погрешность не более чем ±1 единица младшего разряда (ЕМР).
В данной курсовой работе измеряется напряжения аналогового сигнала в диапазоне от -2В до 2В. Так как используем 10-разрядный АЦП, определим погрешность:
Такая погрешность нас устраивает, так как мы используем 3 значащих разряда индикатора, а, следовательно, абсолютная погрешность составляет 0.01В.
Относительная погрешность будет следующей:
3.Описание используемых модулей и регистров специального назначения МК при решении поставленной задачи
Регистр состояния STATUS, находится во всех банках (адреса 03h, 83h, 103h,183h). Содержит флаги (признаки) состояния АЛУ, флаги сброса МК и биты управления банками памяти.
Регистры управления АЦП:
ADCON0 (0 банк – 1Fh) регистр ADCON0 используется для настройки работы модуля АЦП. Биты 7-6 ADCS0 выбор источника тактового сигнала, биты 5-3 выбор аналогового канала, бит 2 GO бит статуса модуля АЦП, , бит 0 ADON бит включения модуля АЦП.
ADCON1 (1 банк – 9Fh) устанавливает какие входы микроконтроллера будут использоваться модулем АЦП и в каком режиме (аналоговый или цифровой). Бит 7 ADFM формат сохранения 10-разрядного результата, биты 3-0 PCFG3: PCFG0 управляющие биты настройки каналов АЦП.
Регистр OPTION REG (1,3 банк – 81h,181h) доступен для чтения/записи, содержит биты управления:
- предварительным делителем TMR0/WDT,
- активными фронтами внешних прерываний по входу RB0/INT;
- подтягивающими резисторами PORTB.
Регистр INTCON (все 4 банка – 0Bh, 8Bh, 10Bh, 18Bh) доступен для чтения/записи, содержит биты разрешения и флаги прерывания при переполнении TMR0, при изменении уровня сигнала на выводах PORTB, при внешних источниках прерывания по входу RB0/INT. Флаги прерываний устанавливаются при возникновении условий прерывания вне зависимости от значений соответствующих битов разрешения прерывания.
Регистр PIE1 (8Ch) доступен для чтения и записи и содержит биты разрешения периферийных прерываний. Прерывание по окончанию преобразования АЦП, разрешение прерывания по переполнению счетчиков TMR1, TMR2 .
Регистр PIR1 (0Ch) доступен для чтения и записи и содержит биты флагов прерываний от периферийных модулей.
Порты ввода/вывода.
МК PIC16F877 имеет 5 портов ввода/вывода (ПВВ) PORTA, PORTB, PORTC, PORTD, PORTE. Некоторые каналы ПВВ мультиплицированы с периферическими модулями. Все каналы ПВВ имеют соответствующие биты направления в регистрах TRISA, TRISB, TRISC, TRISD. Запись логической «1» в TRIS определяет канал как вход. Запись логического «0» в TRIS определяет канал как выход.
PORT A.
Регистры специального назначения: PORTA (05h)
TRISA (85h)
PORTA - 6тиразрядный порт ввода/вывода. Все каналы PORTA имеют соответствующие вид и направление в регистре TRISA, позволяющий настраивать канал как вход или выход. Запись логической «1» в TRISA переводит соответствующий выходной буфер в третье состояние (высокоомное) состояние и определяет канал как вход. Запись «0» в регистр TRISA определяет соответствующий канал как выход. Каналы PORTA мультиплицированы с аналоговыми входами АЦП и аналоговыми входами опорного напряжения VREF(+),VREF(-).
Биты управления режимов работы каналов PORTA находятся в регистре ADCON 1 (9Fh).
Биты регистра TRISA управляют направление каналов PORTA даже при использовании их как аналоговые входы.
PORT В.
Регистры специального назначения: PORT В (06h,106h)
TRIS В (86h, 186h).
PORT B – 8миразрядный двунаправленный порт ввода/вывода.
Биты регистра TRISВ определяют направление каналов порта. Если в эти биты будет записываться «1», то это будут входы.
Три вывода: RB3/PGH; RB6/PGC; RB7/PGD мультиплицированы со схемой низковольтного программирования.
К каждому выводу PORTВ подключен внутренний подтягивающий резистор, необходимые для задания исходного уровня логической «1» на входах. Используется для того, чтобы можно было применить матрицу кнопок. Бит RBPU находится в регистре OPTION_REG<7> определяет подключены(0) или нет(1) подтягивающие резисторы. Они автоматически отключаются, когда каналы настроены на выход или после сброса по включению питания POR.
Четыре канала RB7:RB 4 настроены на вход и могут генерировать прерывание по изменению логического уровня сигнала на входе. Если один из каналов настроен на выход, то он не может являться источником прерывания. Сигнал на выводах RB7:RB4 сравнивается со значением сохраненным при последнем чтении регистра PORT B. В случае несовпадения донного из значений устанавливается флаг RBIF в регистре INТCON<0> и если разрешено, то генерируется прерывание. Это прерывание может вывести микроконтроллер из режима SLEEP при этом в подпрограмме прерывания необходимо выполнить следующие действия: выполнить чтение или запись в регистре PORTB, исключив несоответствие; сбросить флаг RBIF в нуль.
Вывод RB0/INT является входом внешнего источника прерывания и настраивается битом INTEDG в регистре OPTION_REG<6> .
PORT C
Регистры специального назначения: PORTC (07h),
TRISC (87h).
Это 8-разрядный двунаправленный порт ввода/вывода. Биты регистра TRISC определяют направление каналов порта. Установка бита в 1 переводит выходной буфер в 3е состояние, а 0 настраивает соответствующий канал как выход.
Порт С мультиплицирован с несколькими модулями (TMR1,MSSP,USART).
PORT D
Регистры специального назначения: PORTD (08h),
TRIS D (88h).
PORT D – 8миразрядный двунаправленный порт ввода/вывода. Биты TRISD определяют направление канала PORTD.(«1»- вход). PORTD может работать как 8миразрядный ведомый параллельный порт PSP, если бит PSP MOD=1 регистра TRISЕ<4>.
PORT D мультиплицирован с модулем PSP – биты RD 0…7/PSP 0…7.
Модуль 10-разрядного АЦП
Модуль АЦП у PIC16F877 имеет 8 каналов. Он преобразует напряжение, удерживаемое на конденсаторе CHOLD в соответствующий 10-разрядный код. Источник верхнего и нижнего опорного напряжения может быть выбран программно с выводов VDD, Vss, RA3 или RA2.
Для обеспечения необходимой точности преобразования конденсатор CHOLD должен успевать полностью заряжаться до уровня входного напряжения. Максимальное значение сопротивления источника аналогового сигнала 10кОм. При меньших значениях источника аналогового сигнала меньше суммарное время преобразования. После6 того как преобразование АЦП завершено необходимо программно обеспечить задержку не меньше чем 2ТAD, прежде чем начнется следующее преобразование. Параметры тактового генератора АЦП определяются программно.
4.Разработка и описание электрической принципиальной схемы устройства
Схема электрическая принципиальная микропроцессорного устройства измерения уровня напряжения аналогового сигнала на основе микроконтроллера приведена в приложении. Основой схемы является МК PIC16f877 (DD1). Тактирование МК должно быть 20 МГц, для этого используется кварцевый генератор ZQ. Согласно техническому заданию питание устройства автономное в качестве батареи выбрали аккумулятор на +9В марки 6F22, емкостью 1200мА/ч. Питание МК должно быть +5В, для этого мы использовали стабилизатор напряжения на 5В марки LV805CV. Задачей нашей курсовой работы является измерение уровня напряжения от внешнего устройства в диапазоне от -2 до 2В. Так как МК не воспринимает уровень отрицательного напряжения, то прежде чем подавать измеряемое напряжение на аналоговый вход МК его необходимо преобразовать с помощью цепочки R2-R4 в уровень от 0-4В. Таким образом, на входы опорного напряжения встроенного в МК АЦП необходимо подавать +4В на Vref+(RA2) с цепи питания через резистор R6 и 0В на Vref- (RA3). В качестве индикации используем, согласно ТЗ, семисегментные индикатор для отображения 3х значащих разрядов. Для вывода на индикатор используются выходы порта D (RD0-RD6) через резисторы R7-R14. для подачи информации на разные разряды индикатора используются выходы RC3-RC5. Для отображения знака измеряемого напряжения используется диод VD4. Запуск/остановка измерения производится с помощью кнопки SA3.
5. Описание принципа действия и построение блок – схемы алгоритма работы разрабатываемого устройства
Разрабатываемое устройство является микропроцессорным устройством измерения напряжения от - 2В до 2В.
Управление работой устройства производится с помощью сигналов включения и выключения, задаваемых с помощью кнопки SA3.
Результаты измерения выводятся на семисегментные индикаторы в единицах измеряемого параметра (B). Частота смены индикации составляет 2 Гц (0,5с) и задается программно.
Микроконтроллер тактируется от генератора с частотой 20МГц.
Питание устройства автономное.
5.1. Алгоритм основной программы
Блок – схема алгоритма работы устройства представлена на (рис. 1). При включении питания сначала происходит инициализация МК, далее необходимо отследить момент нажатия кнопки начала напряжения. Если кнопка нажата, то происходит измерение напряжения и вывод ее на индикацию. После измерения проверяем, не нажата ли кнопка конца измерения. Если эта кнопка не нажата, то процесс измерения производится снова. Если же кнопка конца измерения нажата, то возвращаемся к моменту слежения за нажатием кнопки начала измерения.
Рис. 1. Блок – схема алгоритма работы МП устройства измерения частоты прямоугольных импульсов
5.2. Алгоритм инициализации МК
Блок – схема алгоритма работы подпрограммы инициализации МК (рис.2) включает в себя настройку портов ввода/вывода, настройку работы АЦП, настройку регистров специального назначения.
Рис.2. Блок – схема алгоритма работы подпрограммы инициализации МК
5.3 Алгоритм программы задержки в 20 мс
Задержку будем осуществлять подсчетом машинных циклов. Частота машинных циклов составляет Fosc/4=5Мгц. Таким образом длительность одного машинного цикла составляет: t=1/5Мгц=0,2мкс. Получается. Чтобы осуществить задержку в 20мс необходимо выполнить 100000 машинных циклов.
Рис.3 Блок-схема подпрограммы задержки в 20 мс
5.4 Алгоритм измерения, осреднения результата
Для измерения величины напряжения для того, чтобы получить более достоверный результат, мы будем проводить измерение не один раз, а 16. Измеряя значения один за друг, накапливаем их в регистрах ACPh_ACPl, а затем вычисляем среднее арифметическое.
Рис.4 Блок-схема алгоритма измерения и осреднения результата.
Рис.5 Блок-схема подпрограммы задержки 15мкс.
Рис.6 Блок-схемы подпрограммы деления на 16
5.5 Алгоритм получения числового эквивалента.
Так как МК не воспринимает отрицательные уровни напряжения, мы преобразовали диапазон -2В до 2В в диапазон 0В-4В, однако на индикатор нам необходимо выдавать первоначальный диапазон. Помимо этого АЦП преобразует напряжение в кванты, получается, что 4В соответствует максимальное число разрядов АЦП и составляет примерно 1000 отсчетов, однако мы можем выводить на 7-сегментные индикаторы только 3 значащих разряда. Т.о. мы должны сделать преобразование 1000 в 400(умножаем на 2 и делим на 5), а затем, чтобы прийти к первоначальному диапазону необходимо вычесть 200.
Рис.6 Блок-схема алгоритма формирования эквивалента
5.6 Алгоритм перевода из 2го кода в двоично-десятичный
Выводить информацию на индикаторы придется по разрядам, поэтому нам необходимо разбить результат на количество сотен, десятков и единиц. Результат разбиения будет сохранен в регистрах: sot, dec, edi.
Рис.7 Блок-схема алгоритма перевода из 2го в 2/10 код
5.7 Алгоритм вывода на 7-сегментный индикатор
Будем использовать динамическую индикацию. Это значит, что каждый разряд зажигается по отдельности, но с частотой более 50 Гц, чтобы человек не замечал это мерцание. Выберем 75 Гц, это значит, что все значащие цифры должны смениться в течение 15мс. Таким образом, время горения одного разряда составляет 5мс. Частота смены информации на индикаторе 2 Гц, следовательно, одно измеренное значение должно быть на индикаторе 0,5с. Получается, что для этого нам необходимо 33 сменить все 3 разряда, чтобы обеспечить необходимую частоту в 2 Гц.
Таблица истинности для перевода в код 7-сегментного индикатора:
Таблица 4.1
| RD6(g) | RD5(f) | RD4(e) | RD3(d) | RD2(c) | RD1(b) | RD0(a) | Эвив.16 |
02/10 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0х3F |
12/10 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0x03 |
22/10 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0x5B |
32/10 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 0x4F |
42/10 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0x66 |
52/10 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 0x6D |
62/10 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0x7D |
72/10 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0x07 |
82/10 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0x7F |
92/10 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 0x6F |
Подпрограмма табличного чтения(вычисляемый переход):
ADDWF PCL, f
RETLW 0x3F (код 0)
RETLW 0x03 (код 1)
RETLW 0x5В (код 2)
RETLW 0x4F (код 3)
RETLW 0x66 (код 4)
RETLW 0x6D (код 5)
RETLW 0x7D (код 6)
RETLW 0x07 (код 7)
RETLW 0x7F (код 8)
RETLW 0x6F (код 9)
Рис.8 Блок-схема алгоритма вывода на 7-сегментный индикатор.
Рис.9 Блок-схема подпрограммы задержки в 5 мс
Заключение
В данной курсовой работе было разработано микропроцессорное устройство измерения уровня напряжения в диапазоне от -2В до 2В. Для него была разработана электрическая принципиальная схема и составлен необходимый перечень элементов, написаны алгоритмы основной программы и алгоритмы подпрограмм, которые представлены в работе. По этим алгоритмам с помощью пакета MPLAB IDE был написан текст программ на языке программирования Assembler.Итогом курсовой работы является листинг программы находящийся в приложении.
Информация о работе Микропроцессорное устройство измерения уровня напряжения