Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТекстРГР.docx
Скачиваний:
22
Добавлен:
10.02.2016
Размер:
1.7 Mб
Скачать

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)

}

}

Список литературы

  1. Ревич Ю.В. Практическое программирование микроконтроллеров AtmelAVRна языке ассемблера. – СПб.: “БХВ-Петербург”, 2008. – 384 с.

  2. Шпак Ю.А. Программирование на языке С для AVRиPICмикроконтроллеров. – К.:”МК-Пресс”, 2006.-400с.

  3. Микроконтроллеры AVRсемействTinyиMegaфирмы ”ATMEL” – М.:Издательский дом “Додэка ХХI”, 2004. –560c.

  4. Материалы сайта 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.

Задание температуры срабатывания сигнализации и отключение сигнализации осуществляется через компьютер.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]