Принципы организации обмена данными по последовательному интерфейсу RS-232C между микроконтроллером AVR АТMEGA128 и персональным компьютером

Приобретение навыков самостоятельной работы по сопряжению макета на базе микроконтроллера AVR АТMEGA128 с компьютером. Принципы управления двунаправленным обменом данными. Программирование последовательного интерфейса в операционных системах Windows.

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 16.06.2011
Размер файла 365,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Отчет

по лабораторной работе

на тему:

"Принципы организации обмена данными по последовательному интерфейсу RS-232C между микроконтроллером AVR АТMEGA128 и персональным компьютером"

Цель работы: приобретение навыков самостоятельной работы по сопряжению макета на базе микроконтроллера AVR АТMEGA128 с ПК с помощью последовательного интерфейса RS-232C; анализ принципов программного управления двунаправленным обменом данными по последовательному интерфейсу RS-232C.

Задание

Вариант №4

Разработать программу передачи 8 чисел (от 0 до 7) из микроконтроллера AVR ATMEGA 128 в ПЭВМ по интерфейсу RS232C в соответствие с протоколом: модуль USART0, скорость обмена данными 14400 бит/с, режим обмена асинхронный, 6 битов данных без бита четности. При передаче зажигать светодиоды, соответствующие передаваемому числу.

Выполнение

Исходный модуль разработанной программы:

#include <delay.h>

#include <mega128.h>

init_ports()

{

DDRD = 0xFF; //0xff;

PORTD = 0xff; //0xff;

}

InitUsart( ) //инициализация модуля USART1

{

UCSR0A=0x00; //установка стандартного режима задания скорости передачи данных;

UCSR0B=0x18; // установка 3-го и 4-го битов регистра UCSR1B для

//инициализации USART1 в режиме приемника и передатчика;

UCSR0C=0x02; //установка формата кадра: 7 бит данных (см. табл. 1.1 );

UBRR0H=0x00; // установка значения делителя (35) соответствующего

UBRR0L=47; // скорости приема данных 19200 бит/с (см. табл. 1.3)

}

void UsartWrite(unsigned char c) // функция записи данных в СОМ-порт

{

UDR0 = c; //запись в регистр данных модуля USART1

while (!(UCSR0A & 0x40)){} //проверка (рассмотреть самостоятельно)

UCSR0A = 0x40;

}

unsigned char UsartRead() // функция чтения из СОМ-порта

{

unsigned char lastValue = 0;

while(!(UCSR0A & 0x80)) {};

lastValue = UDR0;

return lastValue;

}

void main() // основная часть программы;

{

unsigned char k =0;

InitUsart();

init_ports(); // инициализация модуля USART

while (1){

for (k = 0; k < 8; ++k) {

UsartWrite(k);

switch(k)

{

case 0:

PORTD = 0xFF;

PORTD.0=0;

break;

case 1:

PORTD = 0xFF;

PORTD.1=0;

break;

case 2:

PORTD = 0xFF;

PORTD.2=0;

break;

case 3:

PORTD = 0xFF;

PORTD.3=0;

break;

case 4:

PORTD = 0xFF;

PORTD.4=0;

break;

case 5:

PORTD = 0xFF;

PORTD.5=0;

break;

case 6:

PORTD = 0xFF;

PORTD.6=0;

break;

case 7:

PORTD = 0xFF;

PORTD.7=0;

break;

}

// выполнить передачу k в СОМ-порт;

delay_ms(500);

PORTD = 0xFF;

}

break;

}

}

Рис

Вывод: на данной лабораторной работе я приобрел практические навыки самостоятельной работы по сопряжению макета на базе микроконтроллера AVR АТMEGA128 с ПК с помощью последовательного интерфейса RS-232C. В состав микроконтроллера AVR АТMEGA128 входят модули USART0 и USART1. Каждый модуль USART состоит из трех частей: блока тактирования (включает в себя устройство синхронизации (при работе в синхронном режиме) и контроллер скорости передачи данных); блока передатчика (включает одноуровневый буфер, регистр сдвига, схему формирования четности (для синхронного режима) и схему управления); блока приемника (состоит из схемы восстановления тактового сигнала и данных, схемы контроля четности (для синхронного режима), буферного и сдвигового регистров, а так же схемы управления). Для настройки модуля USART0 использовались следующие программно-доступные регистры: UDR1 - регистр данных; UСSR1A, UСSR1B, UСSR1C - регистры управления/статуса; UBRR1H, UBRR1L - регистры управления скорости передачи данных

Цель работы: приобретение навыков самостоятельной работы по сопряжению макета МЛ-2, построенного на базе FPGA ACEX и микроконтроллера AVR ATMEGA 128, с ПЭВМ при помощи последовательного интерфейса RS-232C. Осуществить передачу данных в ПЭВМ.

Задание:

Вариант №6

Разработать программу передачи 200 чисел (от 0 до 199) от лабораторного макета в ПЭВМ по интерфейсу RS232C в соответствие с протоколом: скорость обмена данными 38400 бит/с, 8 битов данных, без бита четности, два стоповых бита. При передаче зажигать светодиоды, соответствующие передаваемому числу.

Выполнение:

Файл UARTTransmitter:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_arith.all;

entity UARTTransmitter is

generic

(

frequency : integer;

baud : integer

);

port

(

clk : in std_logic;

txd : out std_logic;

txd_data : in std_logic_vector(7 downto 0);

txd_start : in std_logic;

txd_busy : out std_logic

);

end entity UARTTransmitter;

architecture UARTTransmitterArch of UARTTransmitter is

-- defining types

type state_type is (idle, start, bit0, bit1, bit2, bit3, bit4, bit5, bit6, bit7, stop1, stop2);

-- defining signals

signal state : state_type := idle; -- transmitter's state

signal data : std_logic_vector(7 downto 0);

signal baud_tick : std_logic;

signal busy : std_logic := '0';

signal baud_divider : integer range 0 to (frequency/100 + baud/100 - 1) := 0;

begin

-- assignments

txd_busy <= busy; busy <= '0' when state = idle else '1';

-- processes

baud_gen : process(clk)

begin

if clk'event and clk = '1' then

if busy = '1' then

baud_divider <= baud_divider + (baud/100);

if baud_divider > (frequency/100) then

baud_tick <= '1';

baud_divider <= 0;

else

baud_tick <= '0';

end if;

end if;

end if;

end process baud_gen;

--

state_proc : process(clk)

begin

if clk'event and clk = '1' then

case state is

when idle =>

if txd_start = '1' then

state <= start;

end if;

when start =>

if baud_tick = '1' then

state <= bit0;

end if;

when bit0 =>

if baud_tick = '1' then

state <= bit1;

end if;

when bit1 =>

if baud_tick = '1' then

state <= bit2;

end if;

when bit2 =>

if baud_tick = '1' then

state <= bit3;

end if;

when bit3 =>

if baud_tick = '1' then

state <= bit4;

end if;

when bit4 =>

if baud_tick = '1' then

state <= bit5;

end if;

when bit5 =>

if baud_tick = '1' then

state <= bit6;

end if;

when bit6 =>

if baud_tick = '1' then

state <= bit7;

end if;

when bit7 =>

if baud_tick = '1' then

state <= stop1;

end if;

when stop1 =>

if baud_tick = '1' then

state <= stop2;

end if;

when stop2 =>

if baud_tick = '1' then

state <= idle;

end if;

end case;

end if;

end process state_proc;

--

data_load_proc : process(clk)

begin

if clk'event and clk = '1' then

if txd_start = '1' then

data <= txd_data;

end if;

end if;

end process data_load_proc;

--

txd_proc : process(clk)

begin

if clk'event and clk = '1' then

case state is

when idle => txd <= '1';

when start => txd <= '0';

when bit0 => txd <= data(0);

when bit1 => txd <= data(1);

when bit2 => txd <= data(2);

when bit3 => txd <= data(3);

when bit4 => txd <= data(4);

when bit5 => txd <= data(5);

when bit6 => txd <= data(6);

when bit7 => txd <= data(7);

when stop1 => txd <= '1';

when stop2 => txd <= '1';

end case;

end if;

end process txd_proc;

end UARTTransmitterArch;

Файл lab3:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

use ieee.std_logic_arith.all;

library altera;

use altera.maxplus2.all;

entity lab3 is

port(clk:in std_logic;

txd:out std_logic;

-- LED control signals (inverted!!!)

led:out std_logic_vector(0 to 7));

end lab3;

architecture lab3 of lab3 is

attribute altera_chip_pin_lc : string;

attribute altera_chip_pin_lc of clk : signal is "@183";

attribute altera_chip_pin_lc of txd : signal is "@131";

attribute altera_chip_pin_lc of led : signal is "86,87,88,89,90,92,93,94";

-- other

signal out_cnt:positive;

signal str_counter:natural;

-- COM-port control signals

signal txd_start:std_logic;

signal txd_busy:std_logic;

signal txd_data, counter:std_logic_vector(7 downto 0);

component UARTTransmitter

generic

(

frequency : integer;

baud : integer

);

port

(

clk : in std_logic;

txd : out std_logic;

txd_data : in std_logic_vector(7 downto 0);

txd_start : in std_logic;

txd_busy : out std_logic

);

end component;

begin

process(clk) is

begin

if rising_edge(clk) then

if txd_busy='0' then

txd_data<=conv_std_logic_vector(str_counter,8);

led <= not txd_data;

if (str_counter>=199) then str_counter <= 0;

else str_counter <= str_counter+1;

end if;

end if;

txd_start<='1';

end if;

end process;

TRANSMITTER : UARTTransmitter

generic map

(

frequency => 50000000,

baud => 38400

)

port map

(

clk => clk,

txd => txd,

txd_data => txd_data,

txd_start => txd_start,

txd_busy => txd_busy

);

Рис

Программа Terminal:

Вывод: на данной лабораторной работе я приобрел навыки самостоятельной работы по сопряжению макета МЛ-2, построенного на базе FPGA ACEX и микроконтроллера AVR ATMEGA 128, с ПЭВМ при помощи последовательного интерфейса RS-232C. Также было осуществлена передача данных в ПЭВМ, это 200 чисел (от 0 до 199). При передаче числа из макета в ПЭВМ зажигались светодиоды, соответствующие передаваемому числу.

Рис

Вывод: на данной лабораторной работе я изучил возможности программирования последовательного интерфейса в операционных системах Windows с использованием стандартных функций интерфейса WIN API. В ходе выполнения работы была написана и отлажена программа для приема данных от внешнего устройства с использованием стандартных функций интерфейса WIN API и проверена её работоспособность.

микроконтроллер программирование интерфейс данные

Размещено на Allbest.ru


Подобные документы

  • Операция обмена данными между прикладной программой и шиной USB путем передачи буферов памяти. Основные характеристики каналов. Аппаратная часть USB. Физическая топология шины. Конструкция кабелей и коннекторов. Способы питания устройств от сети.

    контрольная работа [218,4 K], добавлен 27.01.2014

  • Просмотр, запись и чтение данных буфера обмена. Динамический обмен данными (DDE), способы его организации. Атомы в Windows, их понятие и функции. Особенности задания параметра lParam сообщений DDE. Обмен и передача данных между клиентом и сервером.

    лекция [303,7 K], добавлен 24.06.2009

  • Описание входных и выходных документов и сообщений. Проектирование реляционной базы данных. Разработка механизмов управления данными в базе при помощи триггеров. Разграничение полномочий пользователя. Организация обмена данными между приложениями.

    курсовая работа [1,6 M], добавлен 22.06.2011

  • Мониторинг эффективности операционных систем. Обеспечение программам возможности осуществлять обмен данными с внешними устройствами. Методы управления памятью в операционных системах. Основные различия между статическим и динамическим связыванием.

    практическая работа [3,0 M], добавлен 17.05.2022

  • Анализ современного состояния систем автоматизации управления данными; учет инфраструктуры информационной системы и требования к ресурсам организации. Разработка системы управления данными на базе SharePoint-сайта, программная реализация и внедрение.

    диссертация [4,1 M], добавлен 10.11.2011

  • Назначение буфера обмена, управление его данными в среде Windows. Взаимодействие между владельцем и клиентом буфера. Данные и тип дескриптора, для каждого типа предопределенных форматов. Воспроизведение данных буфера обмена с задержкой, окна просмотра.

    реферат [58,9 K], добавлен 04.10.2010

  • Системный подход к программированию в операционных системах. Разработка программы, выполняющей запуск программ по расписанию. Понятие интерфейса и его назначение. Создание алгоритма и программы на его базе. Текст программы и руководство пользователя.

    курсовая работа [581,0 K], добавлен 13.11.2009

  • Методы и приемы работы в операционной системе Windows XP, часто используемой при работе с персональным компьютером. Средства по настройке и конфигурации операционной системы. Соответствие используемых аппаратных средств потребностям пользователя.

    курсовая работа [4,7 M], добавлен 15.07.2009

  • Основные устройства, входящие в состав компьютера. Краткий обзор операционных систем. Рабочий стол и его структура. Запуск стандартных программ. Создание и перемещение папок и файлов с помощью буфера обмена и мыши. Просмотр ресурсов локальной сети.

    отчет по практике [3,0 M], добавлен 02.10.2012

  • Характеристика буфера обмена как области памяти, резервируемой системой Windows для организации обмена данными между приложениями. Копирование и перемещение файлов как функции буфера обмена. Изучение абсолютной и относительной адресации ячеек MS Excel.

    контрольная работа [13,9 K], добавлен 11.09.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.