- •Введение
- •1 Описание архитектуры микроконтроллеров avr
- •2 Описание элементов устройства системы
- •2.1 Датчики
- •2.2 Аналогово-цифровой преобразователь микроконтроллеровAvr
- •2.3ПротоколUsart. Исполнительный механизм.
- •3 Разработка принципиальной схемы устройства
- •3.1 Схема подключения внешних устройств
- •4 Разработка алгоритма и написание программного кода
- •4.1 Пример программирования ацп
- •4.2 Пример программированияUsart
- •Список литературы
- •Приложение а задание
- •Приложение б цоколевка некоторых моделейavr
4.2 Пример программированияUsart
Инициализацию, прием и передачу данных через USART можно выполнять с помощью функций, приведенных в листинге 3.1. Программа реализует получение байта по USARTи его возврат.
Листинг 2
#include <avr/io.h>
#define FOSC 3686400L // частота кварцевого резонатора
#define BAUD 9600 // скорость передачи
#define MYUBRR FOSC/16/BAUD-1
// Инициализация USART (8 бит данных, один стоп бит)
void USARTInit(unsigned int ubrr){
UBRRH=(unsigned char)(ubrr>>8);
UBRRL=(unsigned char)(ubrr);
UCSRB=(1<<RXEN)|(1<<TXEN);
UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
}
// Передача данных через USART
void USARTTransmit(unsigned char data){
while(!(UCSRA & (1<<UDRE) ));
UDR=data;
}
// Прием данных через USART
unsigned char USARTReceive(void){
while(!(UCSRA & (1<<RXC) ));
return UDR;
}
void main(void){
volatile unsigned char data;
cli(); // запрещаем прерывания
USARTInit(MYUBRR);
sei(); // разрешаем прерывания
while(1){
data = USARTReceive(void) ;
USARTTransmit(data)
}
}
Список литературы
Ревич Ю.В. Практическое программирование микроконтроллеров AtmelAVRна языке ассемблера. – СПб.: “БХВ-Петербург”, 2008. – 384 с.
Шпак Ю.А. Программирование на языке С для AVRиPICмикроконтроллеров. – К.:”МК-Пресс”, 2006.-400с.
Микроконтроллеры AVRсемействTinyиMegaфирмы ”ATMEL” – М.:Издательский дом “Додэка ХХI”, 2004. –560c.
Материалы сайта http://www.atmel.ru
Приложение а задание
Вариант 1
Разработать систему индикации уровня жидкости в цистернах с аналоговым поплавковым линейным уровнемером на микроконтроллере Atmega 164P/324P/644P.
К порту АЦП через резистор подключены 3 датчика уровня в 3х цистернах. К портам С и В подключены 2 семисегментных индикатора с общим катодом. К порту Dподключена кнопка для включения устройства и кнопка для выбора цистерны. На одном индикаторе отображается номер цистерны, а на другом уровень(от 0 до 9) в выбранной цистерне.
Вариант 2
Разработать систему индикации и сигнализации по уровню жидкости в цистернах с магнитным уровнемером Fine Automation на микроконтроллере Atmega1281/2561.
К порту Е 4 провода от двух датчиков уровня в 2х цистернах. К портам С и В подключены 2 семисегментных индикатора с общим катодом. К порту Dподключена кнопка для включения устройства и кнопка для выбора цистерны. На одном индикаторе отображается номер цистерны, а на другом уровень(от 0 – нижний, 1 - верхний) в выбранной цистерне. В каждом датчике по 2 поплавка(нижнего и верхнего уровней) и от каждого датчика идут 2 провода ( при замыкании геркона нижнего поплавка на одном из проводов + 5В, при замыкании верхнего на обоих).
Вариант 3
Разработать систему автоматического регулирования уровня жидкости в цистернах с аналоговым поплавковым линейным уровнемером на микроконтроллере Atmega8535(8535L).
К выводу АЦП подключен выход датчика уровня и потенциометр задания уровня. К порту контроллера подключен драйвер двигателя постоянного тока. При отклонениях уровня от заданного изменяется скважность ШИМ и вывод управления драйвера двигателя.
Вариант 4
Разработать систему индикации и сигнализации по давлению пара в котле на микроконтроллере Atmega8515(8515L).
К порту АЦП через резистор подключен датчик давления. К портам С и В подключены 2 семисегментных индикатора с общим катодом. К порту Dподключена кнопка для включения устройства. На индикаторах отображается давление пара.
Вариант 5
Разработать систему автоматического регулирования давления пара в котле на микроконтроллере Atmega644.
К выводу АЦП подключен выход датчика давления и потенциометр задания давления. К порту контроллера подключен драйвер двигателя постоянного тока. При отклонениях уровня от заданного изменяется скважность ШИМ и вывод управления драйвера двигателя.
Вариант 6
Разработать систему индикации и сигнализации по температуре топлива на микроконтроллере Atmega325/645.
К порту АЦП через подключен датчик температуры. К портам С и В подключены 2 семисегментных индикатора с общим катодом. К порту Dподключена кнопка для включения устройства. На индикаторах отображается температура пара.
Вариант 7
Разработать систему автоматического регулирования температуры топлива на микроконтроллере Atmega128(128L).
К выводу АЦП подключен выход датчика температуры и потенциометр задания температуры. К порту контроллера подключен драйвер двигателя постоянного тока. При отклонениях уровня от заданного изменяется скважность ШИМ и вывод управления драйвера двигателя.
Вариант 8
Разработать систему управления частотой вращения вала двигателя постоянного тока на микроконтроллере Atmega64(64L).
К порту контроллера подключены 5 кнопок – вращение по часовой стрелке, против часовой стрелки, выключение системы, увеличение частоты вращения, уменьшение частоты вращения. К другому порту подключен драйвер двигателя постоянного тока. Частота меняется скважностью ШИМ.
Вариант 9
Разработать систему управления частотой вращения вала двигателя постоянного тока по USARTна микроконтроллере Atmega48/88/168. Схема такая же как и в варианте 8 только вместо кнопок используетсяUSART. Остается только кнопка выключения.
Вариант 10
Разработать систему индикации и сигнализации по температуре топлива на микроконтроллере Atmega8(8L) cнастройкой поUSART.
Задание температуры срабатывания сигнализации и отключение сигнализации осуществляется через компьютер.