Pomoc w modyfikacji programu

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
krzych.elektr.
-
Posty: 13
Rejestracja: 08 maja 2021, 18:07

Pomoc w modyfikacji programu

Post autor: krzych.elektr. » 19 paź 2022, 17:22

Witam.
Zrobiłem sobie taki oto układ do pomiaru temperatury oparty na układzie lm35 i na atmedze16 wszystko wyświetla mi się na wyświetlaczu lcd.
Czy ktoś z was wie może jak zmodyfikować program aby napis "Temperature" wyświetlał mi się w pierwszej linijce wyświetlacza, a napis "Celcius<C>=" w drugiej?
Pytanie może banalne ale jestem bardzo początkujący w tym temacie.
Oto schemat i kod.
termometr na atmega16.gif
(62.05 KiB) Pobrany 21 razy

Kod: Zaznacz cały

#include <avr/io.h>

#define F_CPU 1000000

#include <util/delay.h>

#include <stdlib.h>


#define enable            5

#define registerselection 6


void send_a_command(unsigned char command);

void send_a_character(unsigned char character);

void send_a_string(char *string_of_characters);


int main(void)

{

    DDRB = 0xFF;

    DDRA = 0;

    DDRD = 0xFF;

    _delay_ms(50);

    

    ADMUX |=(1<<REFS0)|(1<<REFS1);

    ADCSRA |=(1<<ADEN)|(1<<ADATE)|(1<<ADPS0)|(1<<ADPS1)|(1<<ADPS2);

    

    int16_t COUNTA = 0;

    char SHOWA [3];

     


    send_a_command(0x01); //Clear Screen 0x01 = 00000001

    _delay_ms(50);

    send_a_command(0x38);

    _delay_ms(50);

    send_a_command(0b00001111);

    _delay_ms(50);

    

    ADCSRA |=(1<<ADSC);

    while(1)

    {

        COUNTA = ADC/4;

        send_a_string ("CIRCUIT DIGEST");

        send_a_command(0x80 + 0x40 + 0);

        send_a_string ("Temp(C)=");

        send_a_command(0x80 + 0x40 + 8);

        itoa(COUNTA,SHOWA,10);

        send_a_string(SHOWA);

        send_a_string ("      ");

        send_a_command(0x80 + 0);

        

    }    

}


void send_a_command(unsigned char command)

{

    PORTB = command;

    PORTD &= ~ (1<<registerselection);

    PORTD |= 1<<enable;

    _delay_ms(20);

    PORTD &= ~1<<enable;

    PORTB = 0;

}


void send_a_character(unsigned char character)

{

    PORTB = character;

    PORTD |= 1<<registerselection;

    PORTD |= 1<<enable;

    _delay_ms(20);

    PORTD &= ~1<<enable;

    PORTB = 0;

}

void send_a_string(char *string_of_characters)

{

    while(*string_of_characters > 0)

    {

        send_a_character(*string_of_characters++);

    }

}

ODPOWIEDZ