// дисплея.
// ----------------------------------------------------------------------------
void read() {
DDRP = 0х00; //порт PORTP на ввод
}
// ------------------------------------------------------------------------
// Функция Clearscreen производит очистку экрана дисплея посредством записи
//во все ячейки памяти буфера экрана кода символа " "
// ------------------------------------------------------------------------
void Clearscreen() {
int i,j;
Reset_cursor();
// выполнить для каждой строки (i), для каждого знакоместа в строке (j)
for(i=0; i<16; i++) for(j=0; j<16; j++) LCD_char(' ');
Reset_cursor();
}
// -------------------------------------------------------------------------
// Функция newline производит запись во все знакоместа одной код символа " "
// -------------------------------------------------------------------------
void newline() {
int i;
for(i=0; i<16; i++) LCD_char(' ');
}
// ------------------------------------------------------------------------
// Функция LCD_output производит преобразование кодов ASCII строки символов
//в коды табл. рис. 5.15 для отображения на дисплее и передает эту строку в
//ОЗУ буфера экрана дисплея
// ------------------------------------------------------------------------
void LCD_output(char s[]) {
int n = 0;
while (s[n] != '\0') {
LCD_char(s[n]);
++n;
}
}
// --------------------------------------------------------------------
// Функция delay формирует временную задержку длительностью в указанное
//число мкс
// --------------------------------------------------------------------
void delay(int usec) {
int i,j;
for(i=0; i
for(j=0; j < 7; j++) { }
}
}
// ------------------------------------------------------------------
// Функция write конфигурирует линии порта PORTP для вывода данных на
// дисплей
// ------------------------------------------------------------------
void write() {
DDRP = 0xFF; //Порт PORTP на вывод
}
// -------------------------------------------------------------------------
// Функция data производит запись одного символа в ОЗУ данных дисплея. Перед
// обменом с контроллером дисплея контролируется бит состояния, который
// свидетельствует о том, закончил контроллер выполнение предыдущей команды
// управления или нет. Затем на порт PORTP выставляется код символа и
// формируются необходимые сигналы управления
// -------------------------------------------------------------------------
void data(unsigned char n) {
status_wait();
PORTP = n;
PORTDLC = 0xFF;
PORTDLC = PORTDLC & 0xF7; //C/D в 0
PORTDLC = PORTDLC & 0xFE; //WR в 0
PORTDLC = PORTDLC & 0xFB;
enable();
disable();
}
// -------------------------------------------------------------------
// Функция command производит передачу команды управления в контроллер
// дисплея
// -------------------------------------------------------------------
void command(unsigned char n) {
status_wait();
PORTP = n;
PORTDLC = 0xFF;
PORTDLC = PORTDLC & 0xFE;
enable();
disable();
}
5.7. Управление электрическим двигателем
В главе 4 мы рассмотрели применение способа широтно-импульсной модуляции для регулирования напряжения, приложенного к обмоткам электрического двигателя. Изменяя коэффициент модуляции, мы изменяли длительность импульсов напряжения на двигателе, сохраняя частоту следования этих импульсов неизменной. В результате, изменялось среднее значение напряжения на двигателе, и, как следствие, скорость его вращения. При обсуждении мы отметили, что ШИМ-сигнал может быть сформирован на одном из выходов МК, однако его мощности не будет достаточно для приведения двигателя во вращение. Поэтому между выходом МК и двигателем должны быть специальные электронные цепи, которые позволяют усилить по мощности, формируемый микроконтроллером ШИМ-сигнал. Мы рассмотрим примеры таких цепей в данном параграфе.
5.7.1. Силовые полупроводниковые ключи
Для подключения к обмоткам двигателя под управлением МК источника напряжения достаточной мощности могут быть использованы различные приборы: электромагнитные реле, твердотельные реле, биполярные транзисторы и некоторые другие типы транзисторов. В нашем примере мы будем использовать для этой цели мощные полевые транзисторы. В русскоязычной литературе их называют мощными МДП-транзисторами (МДП — Металл-Диэлектрик-Полупроводник), в англоязычной литературе используют аббревиатуру MOSFET (Metal Oxide Semiconductor Field-Effect Transistor). Мы остановились на этом типе полупроводниковых приборов потому, что в современных коммутаторах для двигателей малой и средней мощности используются именно эта элементная база.
Читать дальше