Помощь в учёбе, очень быстро...
Работаем вместе до победы

Выбор структурной схемы прибора

РефератПомощь в написанииУзнать стоимостьмоей работы

MOV TEMP,#66H; то присваиваем ему четвёрку в семисегментном коде. MOV TEMP,#6FH; то присваиваем ему девятку в семисегментном коде. MOV TEMP,#6DH; то присваиваем ему пятёрку в семисегментном коде. MOV TEMP,#07H; то присваиваем ему семёрку в семисегментном коде. MOV TEMP,#06H; то присваиваем ему единицу в семисегментном коде. LCALL HEX2HIBCD; Преобразуем двоичное число в двоично-десятичное. MOV… Читать ещё >

Выбор структурной схемы прибора (реферат, курсовая, диплом, контрольная)

На трубопроводе монтируются излучатель ультразвука 1, который излучает полученный от генератора ультразвук по направлению к приемнику под углом к потоку жидкости, и приемник 2. Колебания, принимаемые приемником, усиливаются усилителем и подаются на блок обработки результатов измерения, который измеряет разность фаз колебаний, поступающих с приемника, пропорциональную расходу жидкости. Выходное напряжение фазометра подается на индикатор. Основным недостатком фазового расходомера является зависимость его показаний от скорости распространения ультразвука в жидкости.

Выбор элементов принципиальной схемы

  • · микросхема питания REF192GP
  • · С1 = С2 = 30 Ф
  • · С3 = 0.1 Ф
  • · R8 = 10 kОм
  • · R1 = R2…= R7 = 510 Ом
  • · одноразрядные цифробуквенные индикаторы KingBriht (B*56) -3 шт
  • · микроконтроллер ADuC812 со встроенным АЦП
  • · резисторы светодиодов — 7 шт
  • · датчик — 1 шт

Текст программы

Программа измерения разности фаз двух сигналов.

ANODY EQU P 1; Аноды индикаторов.

CATSOT EQU P 2.7; Катод «сотен» .

CATDES EQU P 2.6; Катод «десятков» .

CATED EQU P 2.5; Катод «единиц» .

IN1 EQU P 1.3; Вход первого сигнала.

IN2 EQU P 1.4; Вход второго сигнала.

HEX EQU R 7; Регистр содержит разницу между первым и вторым каналом в ;шестнадцатеричном виде.

SOT EQU R6; Сотни HEX-числа.

DES EQU R5; Десятки HEX-числа.

ED EQU R4; Единицы HEX-числа.

TEMP EQU R3; Регистр для хранения временных данных Программа.

ORG 0.

LJMP NACHALO;

NACHALO: Начало главного цикла программы.

MOV HEX,#0;Обнуляем значение сдвига фаз между сигналами Ожидание импульса с первого канала.

IMP1: Ждём импульса первого канала.

JNB IN1, INP1; Если не пришёл, то ждём дальше Ожидание импульса со второго канала.

IMP2:

JB IN2, INDIC; Если пришёл импульс 2-го канала, отображаем ;значение.

INC HEX; Увеличиваем значение сдвига фаз на единицу.

JMP IMP2 Если не пришёл, то ждём дальше Подготовим данные к индикации.

INDIC:

LCALL HEX2HIBCD; Преобразуем двоичное число в двоично-десятичное.

MOV TEMP, SOT; Преобразуем двоично-десятичное значение TEMP.

LCALL SEGM7; в код семисегментного индикатора.

MOV SOT, TEMP; возвращаем значение регистр сотен.

MOV TEMP, DES; Преобразуем двоично-десятичное значение TEMP.

LCALL SEGM7; в код семисегментного индикатора.

MOV SOT, DES; возвращаем значение регистр десяток.

MOV TEMP, ED; Преобразуем двоично-десятичное значение TEMP.

LCALL SEGM7; в код семисегментного индикатора.

MOV SOT, ED; возвращаем значение регистр единиц Выводим значение на индикатор

SETB CATSOT; Отключаем общий катод сотен.

SETB CATDES; Отключаем общий катод десятков.

SETB CATED; Отключаем общий катод единиц Отправляем сотни на светодиодный индикатор

MOV ANODY, SOT; Выводим значение сотен на индикатор

CLR CATSOT; Включаем катоды сотен.

NOP.

NOP.

NOP.

SETB CATSOT; Отключаем катоды сотен Отправляем десятки на светодиодный индикатор

MOV ANODY, DES; Выводим значение десятков на индикатор

CLR CATDES; Включаем катоды десятков.

NOP.

NOP.

NOP.

SETB CATDES; Отключаем катоды десятков Отправляем единицы на светодиодный индикатор

MOV ANODY, ED; Выводим значение сотен на индикатор

CLR CATED; Включаем катоды единиц.

NOP.

NOP.

NOP.

SETB CATED; Отключаем катоды единиц Зацикливание программы.

LJMP NACHALO; Начинаем все процедуры заново Подпрограммы.

HEX2HIBCD.

Подпрограмма преобразует шестнадцатеричное число в двоично-десятичное.

HEX2HIBCD:

MOV SOT,#0; Обнуляем сотни.

MOV DES,#0; Обнуляем десятки.

MOV ED,#0; Обнуляем единицы.

SOTNI:

SUBB HEX,#100; Вычитаем из HEX-числа сотню.

JC DESYATKI; Если теперь HEX-;число меньше нуля, то ;переходим к десякам.

INC SOT; Увеличиваем значение сотен на единицу.

JMP SOTNI; Повторяем цикл.

DESYATKI:

ADD HEX,#100; Прибавляем к HEX-числу сотню.

DESYAT1:

SUBB HEX,#10; Вычитаем из HEX-числа десяток.

JC EDINICY; Если теперь HEX-;число меньше нуля, то ;переходим к единицам.

INC DES; Увеличиваем значение десятков на единицу.

JMP DESYT1; Повторяем цикл.

EDINICY:

ADD HEX,#10.

EDIN1:

SUBB HEX,#1; Вычитаем из HEX-числа единицу.

JC VYPOLNENO; Если теперь HEX-число меньше нуля, значит ;всё преобразовали.

INC ED; Увеличиваем значение единиц на единицу.

JMP EDIN1; Повторяем цикл.

VYPOLNENO:

RET; Возвращаемся из ;подпрограммы ;преобразований.

SEGM7.

Подпрограмма преобразует двоично-десятичное число в код для вывода на семисегментный индикатор

SEGM7:

MOV A,#0; Загружаем в аккумулятор проверяемое значение.

SUBB A, TEMP; Если разность между аккумулятором и ;регистром TEMP равна нулю,.

JZ SEGM70; то переходим на соответствующую метку.

MOV A,#1.

SUBB A, TEMP.

JZ SEGM71.

MOV A,#2.

SUBB A, TEMP.

JZ SEGM72.

MOV A,#3.

SUBB A, TEMP.

JZ SEGM73.

MOV A,#4.

SUBB A, TEMP.

JZ SEGM74.

MOV A,#5.

SUBB A, TEMP.

JZ SEGM75.

MOV A,#6.

SUBB A, TEMP.

JZ SEGM76.

MOV A,#7.

SUBB A, TEMP.

JZ SEGM77.

MOV A,#8.

SUBB A, TEMP.

JZ SEGM78.

MOV A,#9.

SUBB A, TEMP.

JZ SEGM79.

SEGM70:; Если значение TEMP равняется нулю,.

MOV TEMP,#3FH; то присваиваем ему нуль в семисегментном коде.

RET; и возвращаемся из подпрограммы.

SEGM71:; Если значение TEMP равняется единице,.

MOV TEMP,#06H; то присваиваем ему единицу в семисегментном коде.

RET; и возвращаемся из подпрограммы.

SEGM72:; Если значение TEMP равняется двум,.

MOV TEMP,#5BH; то присваиваем ему двойку в семисегментном ;коде.

RET; и возвращаемся из подпрограммы.

SEGM73:; Если значение TEMP равняется трём,.

MOV TEMP,#4FH; то присваиваем ему тройку в семисегментном коде.

RET; и возвращаемся из подпрограммы.

SEGM74; Если значение TEMP равняется четырём,.

MOV TEMP,#66H; то присваиваем ему четвёрку в семисегментном коде.

RET; и возвращаемся из подпрограммы.

SEGM75:; Если значение TEMP равняется пяти,.

MOV TEMP,#6DH; то присваиваем ему пятёрку в семисегментном коде.

RET; и возвращаемся из подпрограммы.

SEGM76:; Если значение TEMP равняется шести,.

MOV TEMP,#7DH; то присваиваем ему шестёрку в семисегментном коде.

RET; и возвращаемся из подпрограммы.

SEGM77:; Если значение TEMP равняется семи,.

MOV TEMP,#07H; то присваиваем ему семёрку в семисегментном коде.

RET; и возвращаемся из подпрограммы.

SEGM78:; Если значение TEMP равняется восьми,.

MOV TEMP,#7FH; то присваиваем ему восьмёрку в ;семисегментном коде.

RET; и возвращаемся из подпрограммы.

SEGM79:; Если значение TEMP равняется девяти,.

MOV TEMP,#6FH; то присваиваем ему девятку в семисегментном коде.

RET; и возвращаемся из подпрограммы.

END.

Показать весь текст
Заполнить форму текущей работой