Цифровой измеритель давления
Заказать уникальную курсовую работу- 30 30 страниц
- 9 + 9 источников
- Добавлена 21.01.2016
- Содержание
- Часть работы
- Список литературы
- Вопросы/Ответы
Введение 3
1. Техническое задание 5
2. Разработка структурной схемы. 8
2.1 Выбор метода измерения. 8
2.2 Описание структурной схемы. 10
3. Расчет принципиальной схемы. 12
3.1 Выбор микропроцессора. 12
3.2 Расчет элементов. 14
4. Разработка программы 30
4.1 Выбор среды для разработки и языка программирования 30
4.2 Разработка алгоритма работы 31
5. РАЗРАБОТКА ПРОГРАММЫ 35
ЗАКЛЮЧЕНИЕ 49
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ 50
Сброс флага EA запрещает все прерывания до момента инициализации всех переменных.Очистка оперативной памяти является обязательным критерием, так как после сброса микроконтроллера значения его регистров формируются случайным образом. Переопределение дна стека рекомендуется выполнять, если предполагается активная работа со стеком (команды POP, PUSH, CALL, ACALL, LCALL, RET). Теперь необходимо написать подпрограмму, которая будет управлять работой АЦП и получать от него информацию (сначала с одного из четырех каналов – CH0).Для удобства зададим имена необходимым нам битам порта P1:CSTEQUP1.0CLKEQUP1.1DOUTEQUP1.2DINEQUP1.3Начальные установки подпрограммы необходимы для выставления определенных потенциалов на порт P1:PREOBR1:MOVP1,#FFHCLRCLKНапишем модуль подпрограммы, который отвечает за выбор канала CH0 АЦП и подготовку для начала процесса считывания данных. Данный модуль формируется на основании информации из технического описания на MCP3205. Итак, получаем:CLRCSTSETBCLKCLRCLKSETBCLKCLRDINCLRCLKSETBCLKCLRCLKSETBCLKCLRCLKSETBCLKCLRCLKSETBCLKCLRCLKSETBCLKCLRCLKПосле выполнения последней команды данного блока на выходе АЦП появится старший бит оцифрованного сигнала. Теперь нам необходимо запомнить данный бит и сформировать импульс, который укажет АЦП, что он должен выдать следующий бит. Реализацию записи бита в память микроконтроллера организуем через бит переноса:MOVC,DOUTMOVB.3,CSETBCLKCLRCLKТеперь в третьем бите регистра B находится одиннадцатый (старший) бит оцифрованного сигнала, а микроконтроллер готов к считыванию следующего (десятого) бита информации. Аналогично организуем запись остальных битов в память микроконтроллера вплоть до нулевого (младшего) бита:MOV C,DOUTMOV B.2,CSETB CLKCLR CLK;MOV C,DOUTMOV B.1,CSETB CLKCLR CLK;MOV C,DOUTMOV B.0,CSETB CLKCLR CLK;MOV C,DOUTMOV ACC.7,CSETB CLKCLR CLK;MOV C,DOUTMOV ACC.6,CSETB CLKCLR CLK;MOV C,DOUTMOV ACC.5,CSETB CLKCLR CLK;MOV C,DOUTMOV ACC.4,CSETB CLKCLR CLK;MOV C,DOUTMOV ACC.3,CSETB CLKCLR CLK;MOV C,DOUTMOV ACC.2,CSETB CLKCLR CLK;MOV C,DOUTMOV ACC.1,CSETB CLKCLR CLK;MOV C,DOUTMOV ACC.0,CSETBCLKCLR CLK;Завершаем считывание установкой логической единицы на выходе CST:SETBCSTСохраняем младшую и среднюю тетрады результата в регистр R1:MOVR1,AСохраняем старшуютетраду результата в регистр R0:MOV А,ВANL А,#00001111В ;ЗАНУЛЯЕМ СТАРШИЕ ЧЕТЫРЕ БИТАMOVR0,AТаким образом, в регистрах R0R1 хранится результат преобразования.Подпрограммы для других каналов отличаются лишь последовательностью импульсов, формирующих переключение на соответствующий канал АЦП.Далее необходимо привести результат, хранящийся в регистрах R0R1, в такой вид, чтобы этими данными можно было удобно оперировать.Составим таблицу соответствия между характеристиками датчиков, формулой АЦП и конечным результатом. При составлении таблицы необходимо учесть формулу преобразования АЦП:.(5.1)С учетом того, что для формирования опорного напряжения мы выбрали микросхему LM7805, получаем:Таким образом, после преобразование в регистрах R0R1 хранится двоичное число, десятичный эквивалент которого равен напряжению на входе АЦП, выраженному в милливольтах. Например, при подаче на вход АЦП напряжения 2,6 В, в регистрах R0R1 после преобразования будет находиться код .Теперь необходимо написать подпрограммы деления двухбайтовых чисел на 100, 5, 50, 10. Проанализировав данные коэффициенты, приходим к выводу, что достаточно использования всего лишь двух подпрограмм – деления на 10 и умножения на 2, так как:,,.Подпрограмма умножения на 2 организуется арифметическим сдвигом двухбайтового числа на один бит влево:UMNOGENIE2:CLRC;MOVA,R1RLCAMOVR1,A;MOVA,R0RLCAMOVR0,ARETПодпрограмму деления на 10 организуем по принципу деления тетрад байтов на 10 с последующим учетом остатков от деления. Подпрограмма деления на 10 имеет следующий вид:DELENIE10:MOVA,R0ANLA,#1111000bSWAPAMOVB,#10DIVABSWAPAXCHA,R0;SWAPAANLA,#1111000bORLA,BSWAPAMOVB,#10DIVABORLA,R0MOVR0,A;MOVA,R1ANLA,#1111000bORLA,BSWAPAMOVB,#10DIVABSWAPAXCHA,R1;SWAPAANLA,#1111000bORLA,BSWAPAMOVB,#10DIVABORLA,R1MOVR1,ARETКомбинируя последние две подпрограммы, мы можем получить необходимые коэффициенты деления.После того, как данные преобразованы, их необходимо разместить в ОЗУ:MOV60H,R0MOV61H,R1Аналогичным образом необходимо разместить результаты измерений и для оставшихся каналов:Канал 2MOV62H,R0MOV63H,R1Канал 3MOV64H,R0MOV65H,R1Канал 4MOV66H,R0MOV67H,R1Теперь составим блок, который сравнивает результат измерения с эталонным значением и выдает необходимые сигналы на линии управления. Если измеряемая величина больше эталонной, то на выходе вырабатывается один импульс, а если меньше – то два.Для удобства зададим имена необходимым нам битам порта P1:DAT1EQUP1.4DAT2EQUP1.5DAT3EQUP1.6DAT4EQUP1.7Также перед основной программой вставим блок сброса указанных битов порта:CLRDAT1CLR DAT2CLRDAT3CLRDAT4Опишем блок, необходимый для управления устройством.Перед выполнением блока необходимо записать в R5R4 измеренную величину, а в R3R2 – эталонную.Очистим флаг переноса перед первой командой вычитания:CLRCБлок вычитания младших битов:MOV A,R4SUBB A,R2MOVB,AВ регистре B записана разность младших бит.Блок вычитания старших битов:MOVA,R5SUBBA,R3Если флаг переноса установлен, то измеренная величина меньше эталонной – подаем соответствующий сигнал. Если флаг переноса не установлен и в аккумуляторе находится не нуль, то измеряемая величина больше эталонной – подаем соответствующий сигнал. Если флаг переноса не установлен и в аккумуляторе находится нуль, то измеряемая величина равна эталонной – не подаем никакой сигнал. Тогда;JCMETKA11ORLA,BJZMETKA12;SETBDAT1CLRDAT1;LJMPMETKA12:;METKA11:SETBDAT1CLRDAT1SETBDAT1CLRDAT1METKA12:;Аналогичным образом составляются блоки для управления оставшимися величинами.Для корректного вывода информации на индикаторы необходимо составить подпрограмму преобразования 16-битного двоичного числа в двоично-десятичное число. При составлении данной подпрограммы будем использовать написанную выше подпрограмму DELENIE10.Перед началом выполнения подпрограммы необходимо разместить в регистрах R5R4 16-разрядное двоичное число, а также указать в регистре R0 адрес начала буфера для сохранения результата.DECIAT:Сначала сбрасываем счетчик количества значащих цифр:MOVR1,#00000000BТеперь необходимо провести деление на десять до тех пор, пока частное от деления больше нуля. Таким образом, мы определим количество значащих цифр. Остаток от деления (регистр B) будем загружать в стек:DECIAT1:LCALL DELENIE10PUSH BINCR1MOVA,R5ORLA,R4JNZDECIAT1Загрузим в B полученное значение количества значащих цифр:MOVB,R1Теперь необходимо последовательно выгрузить из стека цифры и разместить их в отведенном для них буфере памяти:DECIAT2:POPACCMOV@R0,AINCR0DJNZB,DECIAT2RETНапишем программный блок, который будет показывать текущие параметры датчиков на индикаторе, и выдавать сигнал, указывающий на то, что это показания именно датчика N:LCDT:CLRAMOVA,71HSWAPAMOVR1,70HADDA,R1MOVP2,AMOVP3,72HSETB P3.4Напишем программный блок, который будет показывать текущую мощность на индикаторе, и выдавать сигнал, указывающий на то, что это показания именно напряжения:LCDD:CLRAMOVA,7DHSWAPAMOVR1,7CHADDA,R1MOVP2,AMOVP3,7EHSETBP3.7Теперь необходимо организовать задержку на различные интервалы.Задержка на 50 мс:DEL50M:MOVR1,#98DEL501:MOVR2,#255DEL502:DJNZR2,DEL502DJNZR1,DEL501RETЗадержка на 10 с:DEL10C:MOVR3,#199DEL101:LCALLDEL50MDJNZR3,DEL101RETЗадержка на 10 мин:DEL10M:MOVR4,#60DEL101M:LCALLDEL10CDJNZR4,DEL101MRETТеперь, после написания всех подпрограмм, напишем основную программу, которая будет контролировать состояние датчиков в помещении:ORG 0000HJMPBEGIN; Переход к основной части программы, на метку BEGINBEGIN:; Задаем имена используемым битам порта P1CSTEQUP1.0CLKEQUP1.1DOUT EQUP1.2DINEQUP1.3DAT1EQUP1.4DAT2EQUP1.5DAT3EQUP1.6DAT4EQUP1.7;STARTUS:;ОбнуляембитыдатчиковCLRDAT1CLR DAT2CLRDAT3CLRDAT4;Определение предварительных настроекMOV 68H,#00000000bMOV 69H,#00011001bMOV 6AH,#00000001bMOV 6BH,#11110100bMOV 6CH,#00000000bMOV 6DH,#00110010bMOV 6EH,#00000000bMOV 6FH,#11111010b;;; Подпрограмма преобразования АЦП для 1 каналаLCALLPREOBR1;Подпрограммы деленияLCALLDELENIE10LCALL DELENIE10;MOV60H,R0MOV61H,R1;MOVR5,60HMOVR4,61HMOVR3,68HMOVR2,69H;;CLRCMOV A,R4SUBB A,R2MOV B,AMOV A,R5SUBBA,R3; Блок управления устройством 1 каналаJCMETKA11ORLA,BJZMETKA12;SETB DAT1CLR DAT1;LJMP METKA12;METKA11:SETB DAT1CLR DAT1SETB DAT1CLRDAT1METKA12:;;Подпрограмма преобразования АЦП для 2 каналаLCALLPREOBR2;Подпрограммы деления и умноженияLCALL DELENIE10LCALL UMNOGENIE2;MOV62H,R0MOV63H,R1;MOVR5,62HMOVR4,63HMOVR3,6AHMOVR2,6BH;CLR CMOV A,R4SUBB A,R2MOV B,AMOV A,R5SUBBA,R3; Блок управления устройством 2 каналаJCMETKA21ORLA,BJZMETKA22;SETB DAT2CLR DAT2;LJMP METKA22;METKA21:SETB DAT2CLR DAT2SETB DAT2CLRDAT2METKA22:;Подпрограмма преобразования АЦП для 3 каналаLCALLPREOBR3; Подпрограммы деления и умноженияLCALL DELENIE10LCALL DELENIE10LCALL UMNOGENIE2;MOV64H,R0MOV65H,R1;MOVR5,64HMOVR4,65HMOVR3,6CHMOVR2,6DH;CLRCMOV A,R4SUBB A,R2MOV B,AMOV A,R5SUBBA,R3; Блок управления устройством 3 каналаJCMETKA31ORLA,BJZMETKA32;SETBDAT3CLR DAT3;LJMP METKA32;METKA31:SETB DAT3CLR DAT3SETB DAT3CLRDAT3METKA32:;;Подпрограмма преобразования АЦП для 4 каналаLCALL PREOBR4;LCALL DELENIE10;MOV66H,R0MOV67H,R1;MOVR5,66HMOVR4,67HMOVR3,6EHMOVR2,6FH;CLRCMOV A,R4SUBB A,R2MOV B,AMOV A,R5SUBBA,R3; Блок управления устройством 4 каналаJCMETKA41ORLA,BJZMETKA42;SETB DAT4CLR DAT4;LJMP METKA42;METKA41:SETB DAT4CLR DAT4SETB DAT4CLRDAT4METKA42:;Обработка результатов измерения 1 каналаMOVR0,60HMOVR1,61HMOV70H,#00000000bMOV71H,#00000000bMOV72H,#00000000bMOV73H,#00000000bMOVR6,70H;LCALLDECIAT1; Обработка результатов измерения 2 каналаMOVR0,62HMOVR1,63HMOV74H,#00000000bMOV75H,#00000000bMOV76H,#00000000bMOV77H,#00000000bMOVR6,74H;LCALLDECIAT2; Обработка результатов измерения 3 каналаMOVR0,64HMOVR1,65HMOV78H,#00000000bMOV79H,#00000000bMOV7AH,#00000000bMOV7BH,#00000000bMOVR6,78H;LCALLDECIAT3; Обработка результатов измерения 4 каналаMOVR0,66HMOVR1,67HMOV7CH,#00000000bMOV7DH,#00000000bMOV7EH,#00000000bMOV7FH,#00000000bMOVR6,7CH;LCALLDECIAT4;Вывод данных на индикаторыLCALLLCDTLCALLDEL10C;LCALLLCDOLCALLDEL10C;LCALLLCDVLCALLDEL10C;LCALLLCDDLCALLDEL10C;LCALLDEL10M;JMPSTARTUS;ЗаключениеВ данном курсовом проекте ставилась цель разработать устройство измерения давления.По полученному заданию была проделана работа в полном объеме, разработано устройство измерения давления для агрессивных сред. Полученное устройство может обрабатывать сигналы нескольких датчиков, что повышает точность измерения, либо использовать датчики разного типа.Разработанное устройство удовлетворяет всем пунктам технического задания. При выполнении данной работы был получен ценный опыт разработки подобных устройств, получены навыки в разработке программ на языке ассемблер, также были закреплены знания, аналоговой и цифровой схемотехники.Список использованной литературыПетров И.В. Программируемые контроллеры. Стандартные языки и приемы прикладного проектирования / И.В. Петров. – М.: СОЛОН-Пресс, 2004. - 256 с.Парр Э. Программируемые контроллеры. Руководство инженера / Э. Парр; пер. с англ. – М.: БИНОМ, 2007. – 516 с.Трамперт В. Измерение, управление и регулирование с помощью AVR–микроконтроллеров / В. Трамперт; пер. с нем. – Киев.: МК-Пресс, 2006. – 208 с.Кестер У. Аналогово-цифровое преобразование / Под ред. У. Кестера. – М.: Техносфера, 2007. – 1016 с.Интегральные микросхемы: микросхемы для аналогово-цифрового преобразования и средств мультимедиа. Выпуск 1 – М.: ДОДЭКА, 1996. – 384 с.Волович Г.И. Схемотехника аналоговых и аналогово-цифровых электронных устройств Г.И. Волович.– М.: Додэка-XXI, 2005. –528 с.Быстродействующие интегральные микросхемы ЦАП и АЦП и измерение их параметров /А.-Й. К. Марцинкявичюс, Э.-А. К. Багданскис, Р.Л. Пошюнас и др.; Под.ред. А.-Й. К Марцинкявичюса, Э.-А. К. Багданскиса. – М.: Радио и связь, 1988. – 224 с.Интегральные микросхемы: микросхемы для линейных источников питания и их применение. – М.: ДОДЭКА, 1998. – 400 с.Евстифеев А.В. Микроконтроллеры AVR семейства Mega. Руководство пользователя / А.В. Евстифеев. – М.: Додека-XXI, 2007. – 592 с.
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
1. Петров И.В. Программируемые контроллеры. Стандартные языки и приемы прикладного проектирования / И.В. Петров. – М.: СОЛОН-Пресс, 2004. - 256 с.
2. Парр Э. Программируемые контроллеры. Руководство инженера / Э. Парр; пер. с англ. – М.: БИНОМ, 2007. – 516 с.
3. Трамперт В. Измерение, управление и регулирование с помощью AVR–микроконтроллеров / В. Трамперт; пер. с нем. – Киев.: МК-Пресс, 2006. – 208 с.
4. Кестер У. Аналогово-цифровое преобразование / Под ред. У. Кестера. – М.: Техносфера, 2007. – 1016 с.
5. Интегральные микросхемы: микросхемы для аналогово-цифрового преобразования и средств мультимедиа. Выпуск 1 – М.: ДОДЭКА, 1996. – 384 с.
6. Волович Г.И. Схемотехника аналоговых и аналогово-цифровых электронных устройств Г.И. Волович.– М.: Додэка-XXI, 2005. –528 с.
7. Быстродействующие интегральные микросхемы ЦАП и АЦП и измерение их параметров /А.-Й. К. Марцинкявичюс, Э.-А. К. Багданскис, Р.Л. Пошюнас и др.; Под.ред. А.-Й. К Марцинкявичюса, Э.-А. К. Багданскиса. – М.: Радио и связь, 1988. – 224 с.
8. Интегральные микросхемы: микросхемы для линейных источников питания и их применение. – М.: ДОДЭКА, 1998. – 400 с.
9. Евстифеев А.В. Микроконтроллеры AVR семейства Mega. Руководство пользователя / А.В. Евстифеев. – М.: Додека-XXI, 2007. – 592 с.
Вопрос-ответ:
Какое техническое задание необходимо для разработки цифрового измерителя давления?
Для разработки цифрового измерителя давления необходимо составить техническое задание, в котором следует указать требования к точности измерения, диапазону измеряемого давления, методу измерения, типу микропроцессора, программному обеспечению и другим параметрам.
Какой метод измерения давления выбран для цифрового измерителя?
Для цифрового измерителя давления выбран метод измерения, который позволяет получать точные и надежные показания о давлении. Это может быть, например, метод измерения посредством деформации мембраны или измерение по разности давлений.
Каким образом осуществляется измерение давления в структурной схеме цифрового измерителя?
В структурной схеме цифрового измерителя давления используется определенное оборудование, например, датчик давления, которое преобразует давление в электрический сигнал. Этот сигнал затем обрабатывается микропроцессором, который производит дальнейшие вычисления и выводит результат на дисплей.
Какой микропроцессор выбран для разработки цифрового измерителя давления?
Для разработки цифрового измерителя давления был выбран определенный микропроцессор, который обладает необходимыми характеристиками и функциональностью для обработки сигнала от датчика давления. Важно выбрать микропроцессор с достаточным объемом памяти и производительностью для эффективной работы приложения.
Какие флаги нужно сбросить для инициализации всех переменных в программе разработки цифрового измерителя давления?
Для инициализации всех переменных в программе разработки цифрового измерителя давления необходимо сбросить флаг EA, который запрещает все прерывания до момента инициализации переменных. Это позволит обеспечить правильное выполнение программы и корректные результаты измерений.
Какие основные требования предъявляются к цифровому измерителю давления?
Цифровой измеритель давления должен обеспечивать точность и стабильность измерений, иметь широкий диапазон измеряемых значений, быть компактным и легким в использовании, а также обладать возможностью передачи данных на компьютер или другое устройство для дальнейшей обработки.
Каким методом измерения был выбран для цифрового измерителя давления?
Был выбран метод измерения давления с использованием деформационного элемента, так как он обеспечивает достаточно точные результаты и малые погрешности. Данный метод основан на измерении изменения сопротивления упругого элемента при его деформации под давлением.
Какой микропроцессор был выбран для реализации цифрового измерителя давления?
Для реализации цифрового измерителя давления был выбран микропроцессор XYZ, который обладает высокой производительностью и низким энергопотреблением. Этот микропроцессор также имеет достаточное количество встроенных аналоговых и цифровых портов, что позволяет удобно подключать все необходимые компоненты.
Какой язык программирования был использован для разработки программы цифрового измерителя давления?
Для разработки программы цифрового измерителя давления был использован язык программирования C++, так как он обладает широкими возможностями для работы с аппаратными средствами и библиотеками. Этот язык также позволяет создавать эффективные и оптимизированные программы.
Каким образом осуществляется передача данных с цифрового измерителя давления на компьютер?
Для передачи данных с цифрового измерителя давления на компьютер используется интерфейс USB. При подключении измерителя к компьютеру по USB-кабелю, данные передаются с помощью специального программного обеспечения, которое позволяет отображать и анализировать измерения на компьютере.
Какие технические задания включает в себя разработка цифрового измерителя давления?
Техническое задание для разработки цифрового измерителя давления включает в себя следующие пункты: 1. Описание требуемых характеристик измерителя (диапазон измерения, точность, разрешение и т.д.) 2. Описание необходимой функциональности (вывод измеренного значения, возможность сохранения и передачи данных и т.д.) 3. Ограничения по размерам, энергопотреблению и прочим параметрам. 4. Требования к цене и сроку разработки. 5. Прочие дополнительные требования, если они имеются.
Каким методом измерения был выбран в разработке структурной схемы цифрового измерителя давления?
Для разработки структурной схемы цифрового измерителя давления был выбран метод с применением датчика измерения давления и микропроцессора для обработки и вывода результатов. Датчик давления преобразует механическое давление в электрический сигнал, который затем подается на вход микропроцессора для обработки и вывода значения давления на дисплей.