Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Bragarenco

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 5

Lab1

#include <avr/io.h>
#include <stdio.h> #include "serial.h"
#include "led.h" #include <stdio.h>
#include "serial.h" #include <avr/io.h>

void main(void) static FILE mystdout =


{ FDEV_SETUP_STREAM(USART_Transmit, USART_Receive,
PortInit(); _FDEV_SETUP_RW);
UsartInit(12);
printf("1 \r"); void UsartInit(unsigned int ubrr)
{
stdout = &mystdout;
stdin = &mystdout;
while(1) /*
{ Set baud rate*/
Refresh(); UBRRH = (unsigned char)(ubrr>>8);
} UBRRL = (unsigned char)ubrr;
} UCSRA=(1<<U2X);
/*Enable receiver and transmitter*/
UCSRB = (1<<RXEN)|(1<<TXEN);
void PortInit(void) /*Set frame format: 8data, 2stop bit*/
{ UCSRC = (1<<URSEL)|(1<<USBS)|(1<<UCSZ0)|(1<<UCSZ1);
DDRA = 0x00; }
PORTA = 0xff;
DDRB = 0xff;
PORTB = 0x00; void USART_Transmit(unsigned char data )
DDRC = 0x00; {
PORTC = 0xff; Wait for empty transmit buffer
DDRD = 0b10000010; while( !( UCSRA & (1<<UDRE)) )
PORTD = 0b01111111; ;
Put data into buffer, sends the data
UDR = data;
}
}
unsigned char USART_Receive(void)
void Refresh(void) {
{ Wait for data to be received
char ch; while( !(UCSRA & (1<<RXC)) )
;
scanf("%c", &ch); Get and return received data from buffer
return UDR;
}

if(ch=='1')
{
LED_ON();
printf("LED-ul este aprins \r"); #ifndef SERIAL_H
} #define SERIAL_H
else void UsartInit(unsigned int ubrr);
{ void USART_Transmit(unsigned char data );
if(ch=='0') unsigned char USART_Receive(void);
{ #endif /*SERIAL_H*/
LED_OFF();
printf("LED-ul este stins \r");
} #include <avr/io.h>
else #ifndef LED_H
{ #define LED_H
printf("error\r"); #define LED_PORT PORTD
#define LED_PIN PD7
}}} void LED_ON(void);
void LED_OFF(void);
#endif /*LED_H*/

#include"led.h"
void LED_ON(void)
{
LED_PORT|=(1<<LED_PIN);
}

void LED_OFF(void)
{
LED_PORT&=~(1<<LED_PIN);
}
#include <avr\io.h>
#include <avr\io.h> #include <stdio.h.>
Lab2 #include "getkey.h"
void KeyBoard_Init(){ #include "LCD.h"
#include <avr\io.h> KEYBOARD_DDR= 0x0F;
#include <stdio.h> KEYBOARD_PORT=0xF0; void LCD_WriteData(unsigned char
#include <avr/interrupt.h> } data)
#include "lcd.h" {
#include "getkey.h" unsigned char GetKeyCod(){ LCD_CTRL_PORT |= (1<<LCD_RS_PIN);
char rind,coloana; LCD_CTRL_PORT &= ~(1<<LCD_RW_PIN);
static FILE mystdout = unsigned char CodTasta; LCD_DATA_DDR=0xFF;
FDEV_SETUP_STREAM(LCD_PutCh, NULL, KEYBOARD_DDR=0x0F; LCD_DATA_PORT=data;
_FDEV_SETUP_WRITE); KEYBOARD_PORT=0xF0; LCD_CTRL_PORT|
rind=PINB; =(1<<LCD_E_PIN);for(int c = 0 ; c
KEYBOARD_DDR=0xF0; < 1000;)
void Port_Init(void) KEYBOARD_PORT=0x0F; c++;
{ coloana=PINB;
PORTA = 0x00; CodTasta=rind|coloana; LCD_CTRL_PORT &= ~(1<<LCD_E_PIN);
DDRA = 0xFF; KEYBOARD_DDR=0x0F; LCD_DATA_DDR=0x00;
PORTB = 0xF0; KEYBOARD_PORT=0xF0; }
DDRB = 0x0F; return CodTasta; void LCD_WriteCommand(unsigned
PORTC = 0x00; } char command)
DDRC = 0xFF; unsigned char ConvertCodToChar( {
PORTD = 0xFF; unsigned char c) LCD_CTRL_PORT &=~(1<<LCD_RS_PIN);
DDRD = 0x00; { LCD_CTRL_PORT &=~(1<<LCD_RW_PIN);
} char k; LCD_DATA_DDR=0xFF;
switch (c){ LCD_DATA_PORT=command;
void ISR_init() case 0xEE: {k='1'; break; } LCD_CTRL_PORT|=(1<<LCD_E_PIN);
{ case 0xED: {k='2'; break; } for(int c = 0 ; c < 1000;)
GICR=(1<<INT0); case 0xEB: {k='3'; break; } c++;
MCUCR=(1<<ISC01); case 0xDE: {k='4'; break; }
GIFR |= (1<<INTF0); case 0xDD: {k='5'; break; } LCD_CTRL_PORT &=~(1<<LCD_E_PIN);
case 0xDB: {k='6'; break; } LCD_DATA_DDR=0x00;
} case 0xBE: {k='7'; break; } }
case 0xBD: {k='8'; break; }
int main(void) case 0xBB: {k='9'; break; } void LCD_Init()
{ case 0x7E: {k='0'; break; } {
case 0xE7: {k='A'; break; } LCD_WriteCommand(0b00010000);
case 0xD7: {k='B'; break; } LCD_WriteCommand(0b00111100);
stdout=&mystdout;
case 0xB7: {k='C'; break; } LCD_WriteCommand(0b00001100);
ISR_init();
case 0x77: {k='+'; break;case LCD_WriteCommand(0b00001111);
Port_Init();
0x7D: {k='#'; break; } LCD_WriteCommand(0b00000001);
case 0x7B: {k='*'; break; }
LCD_Init();
default: k='0';
KeyBoard_Init(); }
}
sei();
return k;
void LCD_PutCh(unsigned char data)
}
while(1) {
char KeyGetChar(void){
{ LCD_WriteData(data);
unsigned char c;
}
unsigned char ch;
} c=GetKeyCod();
} ch=ConvertCodToChar(c);
void LCD_BackSpace()
return ch;
{
ISR(INT0_vect) }
LCD_WriteCommand(0b00010000);//
{
schimbam cursorul la stinga
char ch;
LCD_WriteData(0x20);//inscrim in
ch=KeyGetChar(); #include <avr/io.h> memoria LCD un spatiu liber
if (ch){
LCD_WriteCommand(0b00010000);
if (ch=='*')LCD_Clear_LCD(); #ifndef KEYBOARD_DDR //schimbam cursorul la stinga
else if #define KEYBOARD_DDR DDRB
(ch=='#') LCD_BackSpace(); #endif
else if #ifndef KEYBOARD_PORT }
(ch=='+') LCD_Space(); #define KEYBOARD_PORT PORTB
else void LCD_Space()
LCD_PutCh (ch); #define LCD_DATA_PORT PORTA // {
Port pentru transmiterea LCD_WriteCommand(0b00010100);//
} informatiei schimbam cursorul la DREAPTA
#define LCD_DATA_DDR DDRA
}
#define LCD_CTRL_PORT PORTC//
control LCD pentru rs , rw ,en
void LCD_Clear_LCD(void)
#define LCD_CTRL_DDR DDRB {
#define LCD_DATA_PIN PINA LCD_WriteCommand(0b00000001);
#define LCD_RS_PIN PC5 }
//pinul ce raspunde de RS
#define LCD_RW_PIN PC6
//pinul ce raspunde de RW
#define LCD_E_PIN PC7
//pinul ce raspunde de E
void ADC_init(void);
void ADC_set_channel(unsigned char
canal);
unsigned char get_ADC(void);
float
Lab3 convert_ADC_to_voltage(unsigned
char val_adc);
int
#include <avr/io.h> convert_voltage_to_temperature(flo
#include <stdio.h> at voltage);
#include "lcd.h" #endif /* ADC_H_ */
#include "adc.h" #include "adc.h"
#include <avr/io.h>
#include <avr/io.h>
static FILE #include "lcd.h"
my_stdio=FDEV_SETUP_STREAM(my_putc void ADC_init() #include <util/delay.h>
h,NULL,_FDEV_SETUP_WRITE); {
ADMUX=(0<<REFS1)|(1<<REFS0)| void LCD_INIT(void){
(1<<ADLAR)|(0<<MUX4)|(0<<MUX3)|
int main(void) (0<<MUX2)|(0<<MUX1)|(0<<MUX0);
{ lcd_write_command(0b00111100);
stdout=&my_stdio; lcd_write_command(0b00000110);
ADCSRA=(1<<ADEN)|(0<<ADATE)|
lcd_write_command(0b00001111);
(0<<ADIE)|(1<<ADPS2)|(0<<ADPS1)|
lcd_write_command(0b00000001);
unsigned char adcVal ; (0<<ADPS0);
}
float tensiuneSensor ;
int temperature; }
void lcd_write_data(unsigned char
PortInit(); void ADC_set_channel(unsigned char data)
LCD_INIT(); canal) {
ADC_init(); { lcd_ctrl_port|=(1<<RS_pin);
ADMUX=(ADMUX&0b11100000)|canal; lcd_ctrl_port&=~(1<<RW_pin);
} lcd_data_ddr=0xff;
lcd_data_port=data;
unsigned char get_ADC(void) lcd_ctrl_port|=(1<<lcd_pin);
{ _delay_ms(1);
//; ADC_set_channel(0); lcd_ctrl_port&=~(1<<lcd_pin);
lcd_data_ddr=0x00;
while(1) }
ADCSRA |= (1<<ADIF);
{ ADCSRA |= (1<<ADSC);
adcVal = get_ADC();
tensiuneSensor =
convert_ADC_to_voltage(adcVal); while(! (ADCSRA & (1<<ADIF)) ) void lcd_write_command(unsigned
{ char command)
temperature=convert_voltage_to_tem ; {
perature(tensiuneSensor); } lcd_ctrl_port&=~(1<<RS_pin);
printf(" temperature =%d", lcd_ctrl_port&=~(1<<RW_pin);
temperature); lcd_data_ddr=0xff;
return ADCH;
} lcd_data_port=command;
}
} lcd_ctrl_port|=(1<<lcd_pin);
_delay_ms(1);
float
lcd_ctrl_port&=~(1<<lcd_pin);
convert_ADC_to_voltage(unsigned
lcd_data_ddr=0x00;
char val_adc)
void PortInit(void) }
{
{
DDRA = 0x00;
PORTA = 0xff; float voltage; void my_putch(unsigned char data)
DDRB = 0xff; voltage = (val_adc*5)/255; {
PORTB = 0x00; return voltage; lcd_write_data(data);
DDRC = 0xff; } }
PORTC = 0x00;
DDRD = 0x00;
PORTD = 0xff; int
} convert_voltage_to_temperature(flo
at voltage)
{

int temperature;
#ifndef INCFILE1_H_
temperature=(int) ( #define INCFILE1_H_
(voltage*130)/303 ); #define lcd_ctrl_port PORTC
//temperature=(int) #define lcd_data_ddr DDRD
( #define lcd_data_port PORTD
((voltage-2485)*(130+55))/(303-
2485)*(-55) ) ;
#define lcd_pin PC7
return temperature; #define RS_pin PC6
} #define RW_pin PC5

void lcd_write_data(unsigned char


#ifndef ADC_H_
data);
#define ADC_H_
void lcd_write_command(unsigned case '1' : Scade_Viteza_2(); }
char command); printf("Scade_Viteza_2 \r");
void LCD_INIT(void); break; void Adauga_Viteza_Roata1()
} {
void my_putch(unsigned char data); } OCR1B = OCR1B+10;
if(OCR1B>1023)
#endif /* INCFILE1_H_ */ #define MOTOR_PORT PORTC OCR1B=1023;
}
#define MOTOR11_PIN PC0
#define MOTOR12_PIN PC1 void Scade_Viteza_1()
#define MOTOR21_PIN PC2 {
#define MOTOR22_PIN PC3 OCR1B = OCR1B-10;
if(OCR1B<10)
Lab4 OCR1B=10;
#include <avr/io.h>
#include <stdio.h> #include <avr/io.h>
#include "car.h" #include "motor.h" }
#include "usart.h"
#include "motor.h" int viteza=0; void Adauga_Viteza_Roata2()
{
void FastPWM(void) OCR1A = OCR1A+10;
void main(void) { if(OCR1A>1023)
{ DDRD |= (1 << PD5); OCR1A=1023;
PortInit(); TCCR1A |= (1 << COM1A1); }
UsartInit(12); TCCR1A |= (1 << WGM11) | void Scade_Viteza_2()
FastPWM(); (1 << WGM10); {
printf("start machine \r"); DDRD |= (1 << PD4); OCR1A = OCR1A-10;
//USART_Transmit("E"); TCCR1A |= (1 << COM1B1); if(OCR1A<10)
TCCR1B |= (1 << WGM11) | OCR1A=10;
(1 << WGM10); }
while(1) }
{
Refresh(); void Inainte() void Stinga()
} { {
} MOTOR_PORT| MOTOR_PORT|=(1<<MOTOR11_PIN);
=(1<<MOTOR11_PIN); MOTOR_PORT&=~(1<<MOTOR12_PIN);
MOTOR_PORT&=~(1<<MOTOR12_PIN);
void PortInit(void) MOTOR_PORT|
{ =(1<<MOTOR21_PIN);
DDRA = 0x00; MOTOR_PORT&=~(1<<MOTOR21_PIN);
MOTOR_PORT&=~(1<<MOTOR22_PIN); MOTOR_PORT&=~(1<<MOTOR22_PIN);
PORTA = 0xff;
DDRB = 0xff; }
PORTB = 0x00; OCR1A = viteza;
DDRC = 0xff; OCR1B = viteza; void Dreapta()
PORTC = 0x00; if(viteza>1023) {
DDRD = 0b10000010; viteza=1023; MOTOR_PORT|=(1<<MOTOR21_PIN);
PORTD = 0b01111111; } MOTOR_PORT&=~(1<<MOTOR22_PIN);
void Viteza_plus()
{ MOTOR_PORT&=~(1<<MOTOR11_PIN);
viteza=viteza+100; MOTOR_PORT&=~(1<<MOTOR12_PIN);
} if(viteza>0) }
Inainte();
void Refresh(void) else void nitrala()
{ Inapoi(); {
char ch; } PORTC = 0xFF;
scanf("%c", &ch); void Viteza_minus() }
{
viteza=viteza-100;
if(viteza>0)
switch(ch) Inainte(); void stop()
{ else {
case '8' : Inapoi(); PORTC = 0x00;
Viteza_plus();printf("inainte\r"); } }
break; void Inapoi( )
case '2' : Viteza_minus(); {
printf("inapoi \r");break;
case '4' : Stinga(); #include "serial.h"
int buffer=0; #include <stdio.h>
printf("stinga \r"); break; buffer=viteza*(-1);
case '6':Dreapta(); #include <avr/io.h>
if(buffer>1023)
printf("dreapta \r");break; {
case '0' : nitrala(); static FILE mystdout =
viteza=-1023; FDEV_SETUP_STREAM(USART_Transmit,
printf("nitrala \r");break; buffer=1023;
case '.' : stop(); USART_Receive, _FDEV_SETUP_RW);
}
printf("stop \r"); break; MOTOR_PORT|=(1<<MOTOR12_PIN);
case '9':Adauga_Viteza_Roata1(); void UsartInit(unsigned int ubrr)
MOTOR_PORT&=~(1<<MOTOR11_PIN); {
printf("Adauga_Viteza_Roata1 \r");
break; stdout = &mystdout;
case '3':Scade_Viteza_1(); MOTOR_PORT|=(1<<MOTOR22_PIN); stdin = &mystdout;
printf("Scade_Viteza_2 \r"); MOTOR_PORT&=~(1<<MOTOR21_PIN); UBRRH = (unsigned char)(ubrr>>8);
break; UBRRL = (unsigned char)ubrr;
case '7' : Adauga_Viteza_Roata2(); UCSRA=(1<<U2X);
OCR1A = buffer; UCSRB = (1<<RXEN)|(1<<TXEN);
printf("Adauga_Viteza_Roata2 \r"); OCR1B = buffer;
break; UCSRC=(1<<URSEL)|(1<<USBS)|
(1<<UCSZ0)|(1<<UCSZ1);
}

void USART_Transmit(unsigned char


data )
{
while( !( UCSRA & (1<<UDRE)) )
;
UDR = data;
}
unsigned char USART_Receive(void)
{
while( !(UCSRA & (1<<RXC)) )
;
return UDR;
}

You might also like