Sunteți pe pagina 1din 5

MICROCONTROLERE

Cod plac emisie


#include <avr\io.h>
#include <built_in.h>
void ADC_Init();

// Iniilizare convertor

unsigned ADC_Read(char channel);


// Funcie de citire
convertor
void UART1_Init(unsigned long baud_rate);
// Funcia de
iniializare a USART
void UART1_Write(char data_);
// Funcia de scriere n
USART
unsigned int adc_rd;

void main()
{
DDRB = 0xFF;
DDRC = 0xFF;
PORTB = adc_rd;
PORTC = Hi(adc_rd);

// Setm PORTB ca ieire


// Setm PORTC ca ieire
// display adc_rd[7..0]
// display adc_rd[9..8]

int T;
char ppm;
UART1_Init(9600);
9600
Delay_ms(2000);
iniializa USART
ADC_Init();
convertor
while (1) {

// Iniializm banda USART cu


// Ateptm 2 s pentru a se
// Apelare funcie de iniializare

adc_rd = ADC_Read(2);
canalul 2
T = adc_rd;
pus n T

// Ia valoarea tensiunii din


//Valoarea din canalul 2 va fi

22

MICROCONTROLERE

UART1_Write(T);
doua placa a valorii din T

//Trimitere catre a

Delay_ms(500);
}

Cod plac de recepie


sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit

LCD_RS at PORTD2_bit;
LCD_EN at PORTD3_bit;
LCD_D4 at PORTD4_bit;
LCD_D5 at PORTD5_bit;
LCD_D6 at PORTD6_bit;
LCD_D7 at PORTD7_bit;
LCD_RS_Direction at DDD2_bit;
LCD_EN_Direction at DDD3_bit;
LCD_D4_Direction at DDD4_bit;
LCD_D5_Direction at DDD5_bit;
LCD_D6_Direction at DDD6_bit;
LCD_D7_Direction at DDD7_bit;

#defineLcdD0
firul de date D0 de
#defineLcdD1
firul de date D1 de
#define LcdD2
firul de date D2 de
#define LcdD3
firul de date D3 de
#define LcdD4
date D4 de pe LCD
#define LcdD5
date D5 de pe LCD

//Declarare display

PA0

// Pinul pentru

PA1

// Pinul de pe

PA2

// Pinul de pe

PA3

// Pinul de pe

pe LCD
pe LCD
pe LCD
pe LCD
PA4

// Pinul pentru firul de

PA5

// Pinul pentru firul de


23

MICROCONTROLERE

#define LcdD6
date D6 de pe LCD
#define LcdD7
date D7 de pe LCD

PA6

// Pinul pentru firul de

PA7

// Pinul pentru firul de

#define LcdRS
selectare operaie (LCD)
#define LcdRW
Write (LCD)
#define LcdE
(LCD)

PB0

// Pinul pentru

PB1

// Pinul pentru Read/

PB2

// Pinul de Enable

void Lcd_Cmd(char out_char);


//Funcie pentru
comenzi a LCD
void Lcd_Out(char row, char column, char *text);
//Funcia de afiare pe LCD
void LCD_Init();
//Funcia de iniializare
LCD
void UART1_Init(unsigned long baud_rate);
//Iniializare
USART
char UART1_Data_Ready();
//Funcia de verificare
primire date
char UART1_Read();
//Funcia de citire USART

char txt1[] = "Conc este:";


void main()
{
int x;
char x;
Sound_Init(&PORTB,5);
sunet

//Initializam pinul de

Lcd_Init();
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,txt1);
primul rnd

//Iniializare LCD
// Clear display
// Scriem textul n

while(1)
{
24

MICROCONTROLERE

if (UART1_Data_Ready() == 1) {
// Dac s-a citit
ceva trecem mai departe
x=UART1_Read();
//Introducem
informaia din USART n x
Lcd_Out(2,5,x);
//Afim pe LCD, rnd 2
coloana 1, valoarea lui x
}
}
}

while(x>500ppm)
Sound_Play(10000, 30000);
= 30s
Sound_Init(&PORTB,5);

// Frecven =10kHz, Durat

// Iniializm pinul de sunet

Costul
Senzorul de gaz Figaro TSS813 84,00 RON
Microcontroleru Atmega 16 164,40 RON
LCD 23,74 RON
Convertor max 232 ( placa de expansiune) 32,90 RON
Mufa RS232 2,00 RON ( x2=4,00 RON)

25

MICROCONTROLERE

TOTAL: 309,04 RON

26

S-ar putea să vă placă și