Wyświetlacz LCD – własny tekst/liczby

Wyświetlacz LCD – własny tekst/liczby

Program: wyświetlające zaprogramowany przez użytkownika tekst oraz liczby.

W przypadku liczb – całkowite jak i zmiennoprzecinkowe.

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(10);
	PORTA = 0x03;
	_delay_ms(10);
	PORTA = 0x02;
	_delay_ms(10);
	PORTD = c;
	_delay_ms(10);
	PORTA = 0x03;
	_delay_ms(10);
	PORTA = 0x02;
	_delay_ms(10);
}
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(10);
			PORTA = 0x01;
			_delay_ms(10);
			PORTA = 0x00;
			_delay_ms(10);
			PORTD = 0x00;
			_delay_ms(10);
			PORTA = 0x01;
			_delay_ms(10);
			PORTA = 0x00;
			_delay_ms(10);
		}
		displayChar(text[i]);
	}
}

void wysInt(int x){
	char buffer [32];
	itoa (x,buffer,10);
	wysString(buffer);
}
void wysDouble(double x){
	char buffer [32];
	dtostrf (x,1,3,buffer);
	wysString(buffer);
}
void main() {
_delay_ms(100);
DDRD = 0xff;
DDRA = 0xff;
PORTD = 0x03;
_delay_ms(100);
PORTA = 0x01;
_delay_ms(100);
PORTA = 0x00;
_delay_ms(100);
PORTD = 0x03;
_delay_ms(100);
PORTA = 0x01;
_delay_ms(100);
PORTA = 0x00;
_delay_ms(100);
PORTD = 0x03;
_delay_ms(100);
PORTA = 0x01;
_delay_ms(100);
PORTA = 0x00;
_delay_ms(100);
PORTD = 0x02;
_delay_ms(100);
PORTA = 0x01;
_delay_ms(100);
PORTA = 0x00;
_delay_ms(100);
PORTD = 0x02;
_delay_ms(100);
PORTA = 0x01;
_delay_ms(100);
PORTA = 0x00;
_delay_ms(100);
PORTD = 0x08;
_delay_ms(100);
PORTA = 0x01;
_delay_ms(100);
PORTA = 0x00;
_delay_ms(100);
PORTD = 0x00;
_delay_ms(100);
PORTA = 0x01;
_delay_ms(100);
PORTA = 0x00;
_delay_ms(100);
PORTD = 0x01;
_delay_ms(100);
PORTA = 0x01;
_delay_ms(100);
PORTA = 0x00;
_delay_ms(100);
PORTD = 0x00;
_delay_ms(100);
PORTA = 0x01;
_delay_ms(100);
PORTA = 0x00;
_delay_ms(100);
PORTD = 0x06;
_delay_ms(100);
PORTA = 0x01;
_delay_ms(100);
PORTA = 0x00;
_delay_ms(100);
PORTD = 0x00;
_delay_ms(100);
PORTA = 0x01;
_delay_ms(100);
PORTA = 0x00;
_delay_ms(100);
PORTD = 0x0f;
_delay_ms(100);
PORTA = 0x01;
_delay_ms(100);
PORTA = 0x00;
_delay_ms(100);
wysString("ukw ");
wysInt(6789);
wysString(" ");
wysDouble(67.89);
while (1);
}