Расчет дискретныхэлектрорадиоэлементов
Для данного проекта используются следующие радиоэлементы: потенциометр, мотор, сервопривод.
Характеристикисемисегментного индикатора:
· Цвет символов: красный 660 нм.
· Рабочий ток постоянный: 12-20 мА.
· Максимальный ток (импульсный): 80 мА.
· Падение напряжения: 1.7...2 В.
· Интенсивность света на сегмент: 8000...12000.
· Размеры: 12.5х19х8 мм.
· Рабочая температура: -25°C..+85°C.
Характеристики потенциометра:
· Мощность: 0,5 Вт
· Точность: ±5 %
· Максимальное рабочее напряжение: 350 В
Характеристики ЖК-Дисплея:
· Контроллер: КБ1013ВГ6.
· Подсветка: Белая.
· Типстекла: STN Negative Blue.
· Разреш.: 16х2.
· U_пит.: 5V.
· Размер индикатора, мм: 84x44x13.0.
· Видимая область, мм: 62x19.
· Символ, мм: 2.95x5.55.
· Рабочая температура: -20+70 С.
· Температура хранения: -30+80.
2.4 Создание программы на языке С++ для микропроцессорной системы
Задание 1
intpot = A0 //задаем переменной pot аналоговый pin A0
floatresult = 0,0;
voidsetup(){
Serial.begin(9600);// открыть канал передаче данных.
pinMode(pot,INPUT);//задаем переменную potкак вход.
}
void loop(){
result = analogRead(pot);//считываемзначенияпеременнойpot.
serial.println(result);//отправитьсодержимоепеременнойvalнакомпьютер.
delay(200);//пауза
}
Рисунок 9 – Алгоритм работы программы для задания 1
Задание 2
#define FIRST_SEGMENT_PIN 2//Объявления пременной подключения к пин 2
#define SEGMENT_COUNT 7//Объявления пременной подключения к пин 7
#define POT_PIN A0//Объявления пременной подключения к пинA0
|
|
bytenumberSegments[10] = {
0b00111111, 0b00001010, 0b01011101, 0b01011110, 0b01101010,
0b01110110, 0b01110111, 0b00011010, 0b01111111, 0b01111110,
};// префикс «0b» означает, что целое число за ним записано в
// в двоичном коде. Единицами мы обозначим номера сегментов
// индикатора, которые должны быть включены для отображения
// арабской цифры. Всего цифр 10, поэтому в массиве 10 чисел.
// Нам достаточно всего байта для хранения
// комбинации сегментов для каждой из цифр.
void setup()
{
Serial.begin(9600);// открыть канал передаче данных.
for (inti = 0; i<SEGMENT_COUNT; ++i);//циклгдеiсповторением цикла увеличивается на 1
pinMode(i + FIRST_SEGMENT_PIN, OUTPUT);//
}
voidloop()
{
intnumber= (analogRead(POT_PIN) / 100) % 10;//Определяем число, которое собираемся отображать. Пусть им
будет номер текущей секунды, зацикленный на десятке
Serial.println(number);
delay(250);
intmask = numberSegments[number]; // получаем код, в котором зашифрована арабская цифра
for (inti = 0; i<SEGMENT_COUNT; ++i) // для каждого из 7 сегментов индикатора...
booleanenableSegment = bitRead(mask, i);// определяем: должен ли он быть включён.
// считываем бит, соответствующий текущему
// сегменту «i». Истина — он установлен (1), ложь — нет (0)
digitalWrite(i + FIRST_SEGMENT_PIN, enableSegment); // включаем/выключаем сегмент на основе полученного значения
}
}
Рисунок 10 – Алгоритм работы программы для задания 2
|
|
Задание 3
#include<LiquidCrystal.h>// Подключаем стандартную библиотеку
intval;//объявления переменной val
LiquidCrystallcd(4, 5, 10, 11, 12, 13); // Инициализируем объект-экран
void setup()
{
Serial.begin(9600); // открыть канал передаче данных.
lcd.begin(16, 2);
}
void loop()
{
lcd.setCursor(0,1); // устанавливаем размер (количество столбцов и строк) экрана
val=analogRead(A0);//считываем значения с пина
Serial.println(val);
lcd.print(val); //печатаем значения переменной val
lcd.print(" polojenie ");// печатаем первую строку
lcd.println();// печатаем вторую строку
delay(250);//пауза
}
Рисунок 11 – Алгоритм работы программы для задания 3
Дата добавления: 2018-02-28; просмотров: 638; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!