Przetwornik AC – bateria

Przetwornik AC – bateria

Program: mierzący dane napięcie oraz alarmujący jeśli znajduje się z podanego w programie przedziału poprzez zmianę stanu baterii (znak w rogu wyświetlacza LCD).

Stany baterii:
– powyżej 1.5V,
– pomiędzy 1-1.5V,
– pomiędzy 0.5-1V,
– pomiędzy 0-0.5V.

Kompilator: Code::Blocks

Kod programu:

#define F_CPU 16000000UL
#include <avr/io.h>
#include <avr/delay.h>
#include <stdlib.h>
#include <stdio.h>

void displayChar(char c)
{
	PORTD = c>>4;
	_delay_ms(1);
	PORTB = 0x03;
	_delay_ms(1);
	PORTB = 0x02;
	_delay_ms(1);
	PORTD = c;
	_delay_ms(1);
	PORTB = 0x03;
	_delay_ms(1);
	PORTB = 0x02;
	_delay_ms(1);
}
void wysString(const char * text)
{
	if(strlen(text) > 32)
	{
		wysString("Za dlugi text   max 32 znaki");
		return;
	}
	for(int i = 0; i < strlen(text); i = i + 1)
	{
		if(i == 16)
		{
			PORTD = 0x0C;
			_delay_ms(1);
			PORTB = 0x01;
			_delay_ms(1);
			PORTB = 0x00;
			_delay_ms(1);
			PORTD = 0x00;
			_delay_ms(1);
			PORTB = 0x01;
			_delay_ms(1);
			PORTB = 0x00;
			_delay_ms(1);
		}
		displayChar(text[i]);
	}
}
void wysInt(int x){
	char buffer [32];
	itoa (x,buffer,10);
	wysString(buffer);
}
void main() {

_delay_ms(100);
DDRD = 0xff;
DDRB = 0xff;
DDRA =0x00;
DDRC =0xff;
PORTD = 0x03;
_delay_ms(100);
PORTB = 0x01;
_delay_ms(100);
PORTB = 0x00;
_delay_ms(100);
PORTD = 0x03;
_delay_ms(100);
PORTB = 0x01;
_delay_ms(100);
PORTB = 0x00;
_delay_ms(100);
PORTD = 0x03;
_delay_ms(100);
PORTB = 0x01;
_delay_ms(100);
PORTB = 0x00;
_delay_ms(100);
PORTD = 0x02;
_delay_ms(100);
PORTB = 0x01;
_delay_ms(100);
PORTB = 0x00;
_delay_ms(100);
PORTD = 0x02;
_delay_ms(100);
PORTB = 0x01;
_delay_ms(100);
PORTB = 0x00;
_delay_ms(100);
PORTD = 0x08;
_delay_ms(100);
PORTB = 0x01;
_delay_ms(100);
PORTB = 0x00;
_delay_ms(100);
PORTD = 0x00;
_delay_ms(100);
PORTB = 0x01;
_delay_ms(100);
PORTB = 0x00;
_delay_ms(100);
PORTD = 0x01;
_delay_ms(100);
PORTB = 0x01;
_delay_ms(100);
PORTB = 0x00;
_delay_ms(100);
PORTD = 0x00;
_delay_ms(100);
PORTB = 0x01;
_delay_ms(100);
PORTB = 0x00;
_delay_ms(100);
PORTD = 0x06;
_delay_ms(100);
PORTB = 0x01;
_delay_ms(100);
PORTB = 0x00;
_delay_ms(100);
PORTD = 0x00;
_delay_ms(100);
PORTB = 0x01;
_delay_ms(100);
PORTB = 0x00;
_delay_ms(100);
PORTD = 0x0f;
_delay_ms(100);
PORTB = 0x01;
_delay_ms(100);
PORTB = 0x00;
_delay_ms(100);
//Bateria1
			PORTD = 0x04;
			_delay_ms(1);
			PORTB = 0x01;
			_delay_ms(1);
			PORTB = 0x00;
			_delay_ms(1);
			PORTD = 0x00;
			_delay_ms(1);
			PORTB = 0x01;
			_delay_ms(1);
			PORTB = 0x00;
			_delay_ms(1);
//Programowanie znakow	
			PORTD = 0x04;
			_delay_ms(1);		
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x0E;
			_delay_ms(1);
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);		
			PORTD = 0x05;
			_delay_ms(1);		
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x0F;
			_delay_ms(1);
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);		
			PORTD = 0x05;
			_delay_ms(1);		
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x01;
			_delay_ms(1);
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x05;
			_delay_ms(1);		
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x01;
			_delay_ms(1);
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x05;
			_delay_ms(1);		
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x01;
			_delay_ms(1);
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x05;
			_delay_ms(1);		
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x0F;
			_delay_ms(1);
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x05;
			_delay_ms(1);		
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x0F;
			_delay_ms(1);
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x04;
			_delay_ms(1);		
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x00;
			_delay_ms(1);
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x04;
			_delay_ms(1);		
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x0E;
			_delay_ms(1);
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x05;
			_delay_ms(1);		
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x0F;
			_delay_ms(1);
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x05;
			_delay_ms(1);		
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x01;
			_delay_ms(1);
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x05;
			_delay_ms(1);		
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x01;
			_delay_ms(1);
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x05;
			_delay_ms(1);		
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x0F;
			_delay_ms(1);
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x05;
			_delay_ms(1);		
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x0F;
			_delay_ms(1);
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x05;
			_delay_ms(1);		
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x0F;
			_delay_ms(1);
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x04;
			_delay_ms(1);		
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x00;
			_delay_ms(1);
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x04;
			_delay_ms(1);		
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x0E;
			_delay_ms(1);
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x05;
			_delay_ms(1);		
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x0F;
			_delay_ms(1);
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x05;
			_delay_ms(1);		
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x01;
			_delay_ms(1);
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x05;
			_delay_ms(1);		
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x0F;
			_delay_ms(1);
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x05;
			_delay_ms(1);		
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x0F;
			_delay_ms(1);
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x05;
			_delay_ms(1);		
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x0F;
			_delay_ms(1);
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x05;
			_delay_ms(1);		
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x0F;
			_delay_ms(1);
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x04;
			_delay_ms(1);		
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x00;
			_delay_ms(1);
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x04;
			_delay_ms(1);		
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x0E;
			_delay_ms(1);
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x05;
			_delay_ms(1);		
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x0F;
			_delay_ms(1);
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x05;
			_delay_ms(1);		
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x0F;
			_delay_ms(1);
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x05;
			_delay_ms(1);		
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x0F;
			_delay_ms(1);
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x05;
			_delay_ms(1);		
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x0F;
			_delay_ms(1);
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x05;
			_delay_ms(1);		
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x0F;
			_delay_ms(1);
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x05;
			_delay_ms(1);		
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x0F;
			_delay_ms(1);
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x04;
			_delay_ms(1);		
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
			PORTD = 0x00;
			_delay_ms(1);
			PORTB = 0x03;
			_delay_ms(1);
			PORTB = 0x02;
			_delay_ms(1);
int pomiar_L; int pomiar_H; float pomiar; int dioda=0;
ADMUX |= _BV(REFS0);
ADMUX |= _BV(REFS1);
ADMUX &= ~_BV(ADLAR);
ADCSRA |= _BV(ADEN);
ADCSRA |= _BV(ADPS0);
ADCSRA |= _BV(ADPS1);
while (1) {
ADCSRA |= _BV(ADSC);
while(bit_is_set(ADCSRA,ADSC)){};
pomiar_L = ADCL;
pomiar_H = ADCH & 0x03;
pomiar = (pomiar_H*256+pomiar_L)*0.0025;
if (pomiar>1.5)
{
	PORTD = 0;
	_delay_ms(1);
	PORTB = 0x03;
	_delay_ms(1);
	PORTB = 0x02;
	_delay_ms(1);
	PORTD = 3;
	_delay_ms(1);
	PORTB = 0x03;
	_delay_ms(1);
	PORTB = 0x02;
	_delay_ms(1);
}
else if(pomiar<1.5&&pomiar>1)
{
	PORTD = 0;
	_delay_ms(1);
	PORTB = 0x03;
	_delay_ms(1);
	PORTB = 0x02;
	_delay_ms(1);
	PORTD = 2;
	_delay_ms(1);
	PORTB = 0x03;
	_delay_ms(1);
	PORTB = 0x02;
	_delay_ms(1);
}
else if(pomiar<1&&pomiar>0.5){
	PORTD = 0;
	_delay_ms(1);
	PORTB = 0x03;
	_delay_ms(1);
	PORTB = 0x02;
	_delay_ms(1);
	PORTD = 1;
	_delay_ms(1);
	PORTB = 0x03;
	_delay_ms(1);
	PORTB = 0x02;
	_delay_ms(1);}
else if(pomiar<0.5&&pomiar>0){
	PORTD = 0;
	_delay_ms(1);
	PORTB = 0x03;
	_delay_ms(1);
	PORTB = 0x02;
	_delay_ms(1);
	PORTD = 0;
	_delay_ms(1);
	PORTB = 0x03;
	_delay_ms(1);
	PORTB = 0x02;
	_delay_ms(1);
}
PORTD = 0x00;
_delay_ms(100);
PORTB = 0x01;
_delay_ms(100);
PORTB = 0x00;
_delay_ms(100);
PORTD = 0x01;
_delay_ms(100);
PORTB = 0x01;
_delay_ms(100);
PORTB = 0x00;
_delay_ms(100);
}
}