Bragarenco
Bragarenco
Bragarenco
#include <avr/io.h>
#include <stdio.h> #include "serial.h"
#include "led.h" #include <stdio.h>
#include "serial.h" #include <avr/io.h>
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