rs232

/*

Plik "main.c"

KURS AVR-GCC cz.5

(xyz.isgreat.org)

Transmisja szeregowa do komputera PC, przykład nr. 4

(schemat i opis działania w artykule)

atmega16 (1MHz)

*/

/* Prędkość transmisji 2400 */

#define BAUD 2400

#define MYUBRR F_CPU/BAUD/16-1

#include <stdio.h>

#include <avr/io.h>

#include <util/delay.h>

#include "ds18b20.h"

/* Inicjuje port szeregowy AVRa */

void USART_init(unsigned int myubrr)

{

/* Ustala prędkość transmisji */

UBRRH = (unsigned char)(myubrr>>8);

UBRRL = (unsigned char)myubrr;

/* Włącza nadajnika */

UCSRB = (1<<TXEN);

/* Format ramki: 8 bitów danych, 1 bit stopu, brak bitu parzystości */

UCSRC = (1<<URSEL)|(3<<UCSZ0);

}

/* Wysyła znak do portu szeregowego */

static int USART_Transmit(char c, FILE *stream)

{

while(!(UCSRA & (1<<UDRE)));

UDR = c;

return 0;

}

/* Tworzy strumienia danych o nazwie 'mystdout' połączony

z funkcją 'USART_Transmit' */

static FILE mystdout = FDEV_SETUP_STREAM(USART_Transmit, NULL, _FDEV_SETUP_WRITE);

/* GŁÓWNA FUNKCJA */

int main(void)

{

/* Zmienna 'temp' przechowuje wartość temperatury */

double temp;

/* Do tej tablicy zapisywane będą dane odczytane z układu ds18b20 */

unsigned char ds18b20_pad[9];

/* Inicjalizuje port szeregowy AVRa */

USART_init(MYUBRR);

/* Przekierowuje standardowe wyjście do 'mystdout' */

stdout = &mystdout;

/* Główna pętla */

while(1)

{

/* Funkcja 'ds18b20_ConvertT' wysyła do układu ds18b20

polecenie pomiaru */

if(ds18b20_ConvertT())

{

/* 750ms - czas konwersji */

_delay_ms(750);

/* Odczyt z układu ds18b20, dane zapisywane są w tablicy ds18b20_pad.

Dwie pierwsze pozycje w tablicy to kolejno mniej znaczący bajt, bardziej

znaczący bajt wartość zmierzonej temperatury */

ds18b20_Read(ds18b20_pad);

/* Składa dwa bajty wyniku pomiaru w całość. Cztery pierwsze bity mniej

znaczącego bajtu to część ułamkowa wartości temperatury, więc całość

dzielona jest przez 16 */

temp = ((ds18b20_pad[1] << 8) + ds18b20_pad[0]) / 16.0 ;

/* Wysyła komunikat do portu szeregowego */

printf("Temperatura powietrza:%5.2f°C\n", temp);

}

}

}


Wyszukiwarka

Podobne podstrony:
RS232
przesyl inf RS232
rs232 wik, novitus, kabelki
Kabel szeregowy RS232 układ, informatyka, programowanie
Interface Can Rs232
Instrukcja obsługi wyświetlacza alfanumerycznego RS232
Interfejsy szeregowe RS232, PROFIBUS
2 OpenCV RS232
16 stykowa klawiatura z interfejsem RS232 (2)
32 Kanal Digital Eingangskarte fuer RS232
Okablowanie RS232 id 334532 Nieznany
Artykuł RS232
Konwerter RS232 RS485 MK 3 id 2 Nieznany
konwerter rs232c do rs232 5v
PDRUK RS232 PCB 2v0[1]
R 5a-04, RS232.Praktyczne programowanie
Optisch isoliertes RS232 Interface
Aldl Rs232 Interface, • Kable diagnostyczne
Fanuc RS232
LAB 3, Lab 3 (RS232), program Nadajnik;

więcej podobnych podstron