- •Методичні вказівки
- •Лабораторная работа №1. Программирование режимов обслуживания работы ацп.
- •Лабораторная работа №2. Исследование работы цап.
- •Лабораторная работа №3. Программирование режимов обслуживания матричной клавиатуры.
- •Варианты индивидуальных заданий
- •Лабораторная работа №4. Программирование системы обработки данных.
- •Приложение а - Теоретические сведения
- •Перечень литературы
Лабораторная работа №2. Исследование работы цап.
Тема:Цифро-аналоговое преобразование. Обработка данных.
Цель работы:Научиться обрабатывать и выводить аналоговую величину.
Учебная задача:Разработка программ вывода аналоговых величин для различных методов измерения.
Порядок выполнения лабораторной работы.
Изучить комплекс МК-ЦАП.
Разработать алгоритм для выполнения индивидуального задания.
Разработать программу для выполнения индивидуального задания.
Ввести программу индивидуального задания на ПК.
С помощью ПОС проанализировать выполнение индивидуальной программы
Загрузить программу в стенд ОЭВМ. Убедиться в правильном выполнении индивидуального задания, при отрицательном результате осуществить изменение алгоритма либо программы. Повторить загрузку программы в стенд ОЭВМ
Распечатать листинг правильно работающей программы.
Ответить на контрольные вопросы преподавателя
Представить в отчете алгоритм работы программы.
Пример программы для работы с измерительным комплексом
Вывести на правую пару знакомест индикатора число 128d (ЦАП включен). Затем вывести ЦАП число 128d (2,5В) (индикатор выключен). Вывод данных и индикацию выполнять последовательно с задержкой 1с.
#include <avr/io.h> //Подключаем библиотеку ввода/вывода
#include <avr/delay.h>//Подключаем библиотеку задержки
unsigned int a=0;
int main (void){
DDRD=0b11111111; //
DDRC=0b11111111; //
a=128;
while(1)
{
_delay_ms(1000); //Задержка 1 с
PORTD=0b11101111; //
PORTC=a; //
_delay_ms(1000); //Задержка 1 с
PORTD=0b11111010; //
PORTC=a; //
}
}
- Варианты индивидуальных заданий л.р. №2
№.вар |
Текст индивидуального задания |
Не четный вариант |
Занести в переменную aчисло0Xd, в переменнуюbчисло0Yd. Найти их сумму, затем умножить эту сумму на число 20d. Результат вывести на левую пару знакомест индикатора и ЦАП. Организовать вывод сигнала на индикатор с периодомX,Yсек, на ЦАП с периодомXY/Y сек. Вывод данных и индикацию выполнять последовательно. Организовать запуск системы по кнопкеSW1 и остановкуSW2. |
Четный вариант |
Занести в переменную cчисло0Xd, в переменнуюdчисло0Yd. Найти их сумму, затем умножить эту сумму на число 20d. Результат вывести на правую пару знакомест индикатора и ЦАП. Организовать вывод сигнала на индикатор с периодомX,Yсек, на ЦАП с периодомXY/Y сек. Вывод данных и индикацию выполнять последовательно. Организовать запуск системы по кнопкеSW1 и остановкуSW3. |
Где X– первая цифра номера варианта,Y– вторая цифра номера варианта.
Рисунок 2 - Схема для лабораторной работы №2.
Лабораторная работа №3. Программирование режимов обслуживания матричной клавиатуры.
Тема:Программирование режимов обслуживания матричной клавиатуры.
Цель работы:Научиться выполнять опрос матричной клавиатуры.
Учебная задача:Освоение методов программирования и работы с матричной клавиатурой.
Порядок выполнения лабораторной работы.
Изучить систему работы матричной клавиатуры.
Разработать алгоритм для выполнения индивидуального задания.
Разработать программу для выполнения индивидуального задания.
Ввести программу индивидуального задания на ПК.
С помощью ПОС проанализировать выполнение индивидуальной программы
Загрузить программу в виртуальный стенд ОЭВМ. Убедиться в правильном выполнении индивидуального задания, при отрицательном результате осуществить изменение алгоритма либо программы. Повторить загрузку программы в стенд ОЭВМ
Распечатать листинг правильно работающей программы.
Ответить на контрольные вопросы преподавателя.
Представить в отчете алгоритм работы программы.
Пример выполнения лабораторной работы №3
Задание: реализовать опрос цифровой клавиатуры. Результат выводит в правую пару знакомест статического индикатора.
#include <avr/io.h> //Подключаем библиотеку ввода/вывода
#include <avr/delay.h>//Подключаем библиотеку задержки
unsigned int a=0, K_in=0, K_out=0, K_st=0;
int main (void);
int Keys (void);
int Keys (void)
{
PORTB = 0b00011111;
_delay_loop_2(10000);
K_st=PINB;
PORTB = 0x00;
switch(K_st){
case 0b00111111:
K_st=0;
break;
case 0b01011111:
K_st=1;
break;
case 0b10011111:
K_st=2;
break;
default:
a=0;
};
PORTB = 0b11100000;
_delay_loop_2(10000);
K_in=PINB;
PORTB = 0x00;
switch(K_in){
case 0b11100001:
K_out=1+K_st;
break;
case 0b11100010:
K_out=4+K_st;
break;
case 0b11100100:
K_out=7+K_st;
break;
case 0b11101000:
K_out=10+K_st;
break;
default:
a=0;
};
if (K_out==11){
K_out=0;
}
return K_out;
}
int main (void){
DDRA=0b11111111; //
DDRB=0b00000000; //
DDRC=0b11111111; //
DDRD=0b11111111; //
while(1)
{
PORTD=0b11111010; //
PORTC=Keys(); //
}
}