Лабораторная работа 1
Цель работы: изучение программно-аппаратной поддержки работы со встроенными устройствами, клавиатурой и дисплеем при реализации систем управления.
Задание:
1. Составьте программу для ввода символов с помощью матричной клавиатуры и вывода их в терминал и на ЖК-дисплей;
2. Измените программу таким образом, чтобы нажатие на клавишу матричной клавиатуры вызывало или однократное, или последовательное срабатывание; переключение режимов должно осуществляться клавишей «*».
Программа, версия 1:
//Блокируем сторожевой таймер
outp(0xFFE6, 0xAAAA);
outp(0xFFE6, 0x5555);
outp(0x82, 0x40); //Режим матричной клавиатуры
//Инициализируем ЖК-дисплей
__asm mov ax, 0083h //Загружаем в регистр-аккумулятор номер функции
__asm int 10h //Вызываем прерывание
while(1) {
k = inp(0x82); //Считываем код нажатой клавиши
switch(k){
case 0x18:printf("1");break; //Клавиша "1"
case 0x14:printf("2");break; //Клавиша "2"
case 0x12:printf("3");break; //Клавиша "3"
case 0x28:printf("4");break; //Клавиша "4"
case 0x24:printf("5");break; //Клавиша "5"
case 0x22:printf("6");break; //Клавиша "6"
case 0x38:printf("7");break; //Клавиша "7"
case 0x34:printf("8");break; //Клавиша "8"
case 0x32:printf("9");break; //Клавиша "9"
case 0x48:printf("*");break; //Клавиша "*"
case 0x44:printf("0");break; //Клавиша "0"
case 0x42:printf("#");break; //Клавиша "#"
case 0x31:printf(".");break; //Клавиша "."
}
}
Программа, версия 2:
//Блокируем сторожевой таймер
outp(0xFFE6, 0xAAAA);
outp(0xFFE6, 0x5555);
outp(0x82, 0x40); //Режим матричной клавиатуры
//Инициализируем ЖК-дисплей
__asm mov ax, 0083h //Загружаем в регистр-аккумулятор номер функции
__asm int 10h //Вызываем прерывание
m = 0; //Инициализируем переменную m; m - режим срабатывания клавиатуры
while(1) {
k = inp(0x82); //Считываем код нажатой клавиши
switch(k){
case 0x18:printf("1"); if (m == 0) break; //Клавиша "1"
case 0x14:printf("2"); if (m == 0) break; //Клавиша "2"
case 0x12:printf("3"); if (m == 0) break; //Клавиша "3"
case 0x28:printf("4"); if (m == 0) break; //Клавиша "4"
case 0x24:printf("5"); if (m == 0) break; //Клавиша "5"
case 0x22:printf("6"); if (m == 0) break; //Клавиша "6"
case 0x38:printf("7"); if (m == 0) break; //Клавиша "7"
case 0x34:printf("8"); if (m == 0) break; //Клавиша "8"
case 0x32:printf("9"); if (m == 0) break; //Клавиша "9"
case 0x48:printf("*");if (m == 0) {m = 1;} else {m = 0;} if (m == 0) break; //Клавиша "*"; Переключаем режим ввода символов
case 0x44:printf("0"); if (m == 0) break; //Клавиша "0"
case 0x42:printf("#"); if (m == 0) break; //Клавиша "#"
case 0x31:printf("."); if (m == 0) break; //Клавиша "."
}
}
Контрольные вопросы:
1. Состав порта управления LCD, адресация и назначения регистров.
Порт управления LCD содержит два байтовых регистра – данных (80h) и управляющих сигналов (81h), в котором используются 4-й, 5-й и 7-й разряды. Управление портом осуществляется с помощью драйверов (например, powertip.com).
2. Какие параметры передаются драйверу powertip.com.
Параметры драйвера powertip.com:
- первый параметр X – количество строк дисплея;
- второй параметр Y – количество столбцов дисплея;
- третий параметр – тип знакогенератора: EA – латинский, SH, ZH – латинский / русский, H2 – латинский / русский (только прописные);
- /SCROLL – включить прокрутку дисплея;
- /SLOW – уменьшить скорость реакции дисплея.
3. Какие основные характеристики микроконтроллера Fastwel CPC107? Какова область его применения?
Контроллеры узла сети Fastwel I/O являются полноценными ПЛК, поддерживающими в зависимости от модели протоколы передачи данных CANopen, Modbus RTU, Modbus TCP, DNP3, PROFIBUS DP-V1.
Контроллеры узла сети реализуют исполнение прикладных программ разработанных при помощи адаптированной среды разработки CoDeSys фирмы 3S Smart Software Solutions с использованием пяти языков программирования по МЭК61131-13:
- Список инструкций (IL);
- Диаграммы функциональных блоков (FBD);
- Релейно-контактные схемы (LD);
- Структурированный текст (ST);
- Последовательные функциональные схемы (SFC).
Благодаря интегрированной среде разработки CoDeSys контроллер, кроме стандартных функций сбора данных и обмена по сети, имеет возможность выполнять прикладные технологические программы.
4. Как осуществляется подключение контроллера к ПЭВМ?
Подключение контроллера к ПЭВМ осуществляется через последовательный порт. После подключения запускается программа HyperTerminal. В окне программы выбирается порт, к которому подключен к ПЭВМ контроллер. Затем открывается окно терминала MS DOS, в котором можно вводить команды и передавать файлы в контроллер.
5. Состав порта управления матричной клавиатурой, адресация и назначение регистров.
Порт управления клавиатурой находится по адресу 82h. Запись в порт происходит при изменении состояния клавиатуры (нажата или отпущена клавиша). Назначение битов данного порта:
7 – INTK – разрешение прерывания от клавиатуры;
6 – MxKey – признак матричной клавиатуры;
0-3 при чтении – код колонки нажатой клавиши;
4-6 при чтении – код строки нажатой клавиши.