Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
DIPLOM / Глава 3.docx
Скачиваний:
30
Добавлен:
09.02.2015
Размер:
29.34 Кб
Скачать

Глава 3

В предыдущей главе были подобраны все компоненты для интерфейса управления цифровым СВЧ-аттенюатором. В данной главе будет вестись разбор сборки устройства. Для начала надо составить схему. Схема представлена на рисунке 3.1.

Рассмотрим сборку устройства по пунктам:

  1. Как видно из схемы интерфейса управления цифровым СВЧ-аттенюатором выходы VDD, TxD, RxD и GND, преобразователя CP2102 подсоединяется к выводам VCC1, OUTA, INB и GND1, изолятора цифровых сигналов ISO7221AD, соответственно.

  2. Выводы VCC2, INA, OUTB, GND2 изолятора цифрового сигнала ISO7221AD, подсоединяются к выводам VCC, RxD, TxD и GND, платформы Arduino Nano, соответственно. Стоит отметить, что между выводами VCC1 и GND1, а также VCC2 и GND2 стоит по конденсатору, емкостью по 0.1 мкФ.

  3. Цифровые выходы платформы Arduino Nano, под номерами 8, 9, 4, 5, 6, 7 подключаются к LCD-дисплею, как показано в таблице 3.1:

Выводы Arduino Nano

Выводы LCD-дисплея

8

RS

9

E

4

D4

5

D5

6

D6

7

D7

  1. Для регулирования контрастности LCD-дисплея к его выводам VCC, V0 и VDD, подсоединяется подстроечный резистор. (тут о особенностях его подключения)

  2. Остальные цифровые выходы Arduino Nano, это 0, 1, 2, 3, 10, 11, 12 и 13, будут использоваться для подключения цифрового СВЧ-аттенюатора.

  3. Примечание про подключения источника питания.

  4. Надеюсь, ничего не забыл

Все соединения между выводами будут осуществляться путем припайки проводов.

Переходим к написанию программы, программа написана в среде разработки Arduino IDE, ниже графически представлен листинг программы.

Листинг программы:

// НАЧАЛО ПРОГРАММЫ

#include <LiquidCrystal.h>

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

//----------!ИНИЦИАЛИЗАЦИЯ ПЕРЕМЕННЫХ!----------//

char string[10];

char cAtten[3];

int a = 0;

int b = 0;

int c = 0;

int nDec = 0;

int n = 0;

int k = 5;

int ledPin = 13;

//----------!ИНИЦИАЛИЗАЦИЯ МАССИВОВ!----------//

int attenuation[8] = {0, 1, 2, 3, 10, 11, 12, 13};

int nDecArray[8] = {128, 64, 32, 16, 8, 4, 2, 1};

int nBinaryArray[8] = {0, 0, 0, 0, 0, 0, 0, 0};

//----------!СПИСОК ФУНКЦИЙ!----------//

void eraseString ();

int funcStroka();

void funcAttenuator();

//----------!НАЧАЛЬНАЯ УСТАНОВКА!----------//

void setup() {

//----------!УСТАНОВКА ВЫХОДОВ ДЛЯ ОСЛАБЛЕНИЯ!----------//

pinMode (0, OUTPUT);

pinMode (1, OUTPUT);

pinMode (2, OUTPUT);

pinMode (3, OUTPUT);

pinMode (10, OUTPUT);

pinMode (11, OUTPUT);

pinMode (12, OUTPUT);

pinMode (13, OUTPUT);

lcd.begin(16, 2);

Serial.begin(9600);

}

//----------!НАЧАЛО ПРОГРАММЫ!----------//

void loop()

{

if (Serial.available()) {

delay(100);

lcd.clear();

n = Serial.available();

while (Serial.available() > 0) {

for (int i = 0; i < n; i++)

{

string[i] = Serial.read();

}

}

k = funcStroka();

if (k == 0)

{

lcd.write("Arduino UNO R3");

Serial.write("Electronstandart,MCU01,RU0001,V.01");

eraseString();

}

else if (k == 2)

{

digitalWrite(ledPin, HIGH);

Serial.write("LED 1\n");

eraseString();

}

else if (k == 3)

{

digitalWrite(ledPin, LOW);

Serial.write("LED 0\n");

eraseString();

}

//----------!ВЫСТАВЛЕНИЕ ОСЛАБЛЕНИЯ!----------//

else if (k == 4)

{

lcd.write ("Attenuation: ");

for (int i = 0; i < 3; i++)

{

cAtten[i] = string[i+3];

}

a = (int) cAtten[0] - 48;

b = (int) cAtten[1] - 48;

c = (int) cAtten[2] - 48;

nDec = 100 * a + 10 * b + c;

for (int i = 0; i < 7; i++)

{

if (nDec >= nDecArray[i])

{

nDec -= nDecArray[i];

nBinaryArray[i] = 1;

}

}

if (nDec == 1)

{

nBinaryArray[7] = 1;

}

else { nBinaryArray[7] = 0; }

funcAttenuator();

lcd.setCursor(13, 0);

eraseString();

}

else

{

lcd.write("ENTER COMMAND");

Serial.write("ENTER COMMAND\n");

eraseString();

}

}

}

//----------!СТИРАНИЕ МАССИВА ВВОДА!----------//

Соседние файлы в папке DIPLOM