Układ komunikacji po RS232

Układ komunikacji po RS232 wykorzystujący mikrokontroler Atmega8

Założenia przy wykonywaniu projektu:

-zbudowanie układu prototypowego do wielorakich zastosowań

-napisanie programu komunikującego się z układem w Visual Studio 2013

-oprogramowanie procesora przygotowane w Atmel Studio 6.1

-wykorzystanie umieszczenie na płytce urządzenia złącz do komunikacji (d'sub 15 oraz 10pin ISP)

-szeroki zakres zasilania dzięki zastosowaniu stabilizatora 7805 (zalecane 9-12V)

-wyprowadzenie portu C mikrokontrolera jako przetwornika A/D

-wyprowadzenie dwóch osobnych pinów 10 bitowego przetwornika A/D

- 12 sterowanych wyjść na płytce

-zastosowanie standardowych pinów z rostawem 2.54mm dla wyjść układu

-dwa wyjścia ze zmiennym przebiegiem prostokątnym o regulowanym wypełnieniu w zakresie od 0 do 100% (PWM)

-zastosowanie układu scalonego MAX232 do zmiany napięć na magistrali RS232 w komputerze na standard TTL

-zastosowanie rezonatora kwarcowego w celu zwiększenia częstotliwości pracy rdzenia kontrolera oraz poprawienia stabilności jego pracy

-możliwość dołączenia dodatkowych modułów z różnorakimi funkcjami

-zastosowanie montażu powierzchniowego w możliwie największym stopniu

-możliwość zastosowania wyprowadzeń układu jako wejścia jak i wyjścia

Spis elementów:

-Atmega8 TQFP 32pin

-MAX232 so16

-złącze d'sub 15pin

-złącze ISP 10pin

-Kondensatory 22pF

-Kondensatory 100nF

-listwa goldpin 2.54mm

-rezonator kwarcowy 16MHz

-Kondensatory elektrolityczne 100uF

-Kondensatory elektrolityczne 1uF

-złącze AK550

-Dławik 10uH

-Rezystory 10k Ohm oraz 0 Ohm

Schematy

Wsad do procesora:

/*

* Atmega8_Uart_nadawca.c

*

* Created: 2014-03-20 00:12:22

* Author: Patryk Gałczyk

*/

#include <stddef.h>

#include <avr/io.h> //Dodawanie plików z funkcjami programu

#include <util/delay.h>

#include <avr/interrupt.h>

volatile unsigned char tablica [5];

volatile unsigned char us=0; //Definiowanie zmiennych

volatile char wd=0;

static void uart_9600()

{

#define BAUD 9600

#include <util/setbaud.h> //Definiowanie prędkości przesyłu danych

UBRRH = UBRRH_VALUE;

UBRRL = UBRRL_VALUE;

}

void UART_master_init()

{

uart_9600();

UCSRB=0b10011000;

UCSRC=0b10000011; //8 bitów danych, 2 bity stopu,

} //bez parzystości, Tryb asynchroniczny

ISR(USART_RXC_vect)

{

tablica[us]=UDR;

us++;

if (us==4) //Funkcja odpowiedzialna za

{ //odbiór danych z magistrali RS232

us=0;

TCCR1A=0b00000001;

if (tablica[0]==0)

{

}

else

{

TCCR1A=TCCR1A|0b11000000;

tablica[0]=tablica[0]<<2;

OCR1AL=tablica[0];

}

if (tablica[1]==0)

{

}

else

{

TCCR1A=TCCR1A|0b00110000;

tablica[1]=tablica[1]<<2;

OCR1BL=tablica[1];

}

tablica[2]=tablica[2]<<2;

PORTD=tablica[2];

PORTC=tablica[3];

}

wd=1;

}

int main() //Funkcja głowna programu

{

DDRB=0b110;

PORTB=0b110;

DDRD=0b11111100;

PORTD=0b11111100; //Definiowanie stanów IO

DDRC=0b111111;

PORTD=0b111111;

TCCR1A=0b11110001; //Uruchamianie timera odpowiedzialnego

TCCR1B=0b00001001; //za generowanie sugnału PWM

OCR1AL=0;

OCR1BL=0;

UART_master_init(); //Wywołanie funkcji uinicjacji modułu UART

sei(); //Odblokowanie przerwań procesora

while(1)

{

if (wd==1) //Funkcja resetująca zmienne pomocnicze

{

_delay_ms(100);

us=0;

wd=0;

}

}

}

Funkcja odpowiedzialna za przesył danych do układu

Pochodzi dedykowanego programu (cała aplikacja w załączniku)

private void button4_Click(object sender, EventArgs e)

{

int portd = 0;

int portc = 0;

if (port.IsOpen)

{

Byte[] tosend1 = { (Byte)trackBar1.Value };

port.Write(tosend1, 0, 1);

Byte[] tosend2 = { (Byte)trackBar2.Value };

port.Write(tosend2, 0, 1);

if (checkBox1.Checked == false)

{ portd = portd + 32; }

if (checkBox2.Checked == false)

{ portd = portd + 16; }

if (checkBox3.Checked == false)

{ portd = portd + 8; }

if (checkBox4.Checked == false)

{ portd = portd + 4; }

if (checkBox5.Checked == false)

{ portd = portd + 2; }

if (checkBox6.Checked == false)

{ portd = portd + 1; }

Byte[] tosend3 = { (Byte)portd };

port.Write(tosend3, 0, 1);

portd = 0;

if (checkBox12.Checked == false)

{ portc = portc + 32; }

if (checkBox11.Checked == false)

{ portc = portc + 16; }

if (checkBox10.Checked == false)

{ portc = portc + 8; }

if (checkBox9.Checked == false)

{ portc = portc + 4; }

if (checkBox8.Checked == false)

{ portc = portc + 2; }

if (checkBox7.Checked == false)

{ portc = portc + 1; }

Byte[] tosend4 = { (Byte)portc };

port.Write(tosend4, 0, 1);

portc = 0;

}

}


Wyszukiwarka

Podobne podstrony:
Komunikace po RS232
Infrastruktura Techniczna Obszarów Wiejskich - Ściąga, Infrastruktura, służba komunalna (łac infra =
kłopotliwe, gruba kreska, GRUBA KRESKA: idea sprowadzająca się w praktyce do promowania komunistów p
III. Postawy spoleczne w krajach komunistycznych po II wojni, Postawy społeczne w krajach komunistyc
Pozbywanie się komunikatów po odinstalowaniu programu
Nagroda za głosowanie na PO ceny za bilety komunikacji stołecznej wzrosną o 100 procent
komunikacja fateki po ethernecie
Komunikat prasowy po rozprawie dotyczącej usytuowania urzędu asesora w polskim wymiarze sprawiedliwo
(09) KOMUNIKAT PRASOWY PO WYROKU W SPRAWIE KONSTYTUCYJNOŚCI TRAKTATU AKCESYJNEGO
Kabel szeregowy RS232 układ, informatyka, programowanie
Bogucka polak po komunizmie
przewodnik po komunikacji miejskiej 2013
Podziękowania po Komunii św, KATECHEZA DLA DZIECI, ! - I komunia Święta
komunikacja pomiedzy XC a Easy po EasyNET
pierwsza komunia święta przygotowanie krok po kroku
Po co nam uklad krazenia, Dietetyka, Anatomia i fizjologia człowieka, Fizjologia wykłady
Po co nam układ krążenia
ZGONY PO SMOLENSKIE ZAMORDOWANIE SWIADKOWIE, Czarna Ksiega Komunizmu
I KOMUNIA - RÓŻNE DZIĘKCZYNIENIA PO KOMUNII ŚW., KATECHEZA DLA DZIECI, ! - I komunia Święta

więcej podobnych podstron