logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Atmega32: Jak dodać wyświetlacz LCD do programu z silnikiem krokowym i potencjometrem?

nahirek 14 Sty 2018 17:34 813 2
REKLAMA
  • #1 16960500
    nahirek
    Poziom 7  
    Witam,
    Czy ktoś może mi zmodyfikować tak mój program aby działał mi wyświetlacz LCD ?
    Chodzi tutaj o to że mam podłączony mały silnik krokowy oraz potencjometr a do tego jeszcze przyciski "start, stop, zmień kierunek obrotu".
    Wszystkie przyciski działają, potencjometr również, a teraz chciałbym aby zakres mojego potencjometru był wyświetlany na LCD w %.
    np. przy połowie obrotów silnika(ustawionych na potencjometrze) był wyświetlany napis na LCD "50%"
    atmega32 + jtag ice
    MOJ KOD
    Cytat:
    #include<avr/io.h>
    #include<util/delay.h>
    #include <avr/interrupt.h>

    #define przyc0 (1<<PA0)
    #define przyc1 (1<<PA1)
    #define przyc2 (1<<PA2)
    #define przyc3 (1<<PA3)
    #define przyc4 (1<<PA4)
    int i=0;
    int START;
    uint8_t klaw_wcis(uint8_t klawisz)
    {
    if(!(PINA & klawisz))
    {
    _delay_ms(60);
    if(!(PINA & klawisz)) return 1;
    }
    return(0);
    }
    #define LCD PORTD
    #define E 3
    #define RS 2
    #define SET_E LCD |= _BV(E)
    #define CLR_E LCD &= ~_BV(E)
    #define SET_RS LCD |= _BV(RS)
    #define CLR_RS LCD &= ~_BV(RS)//do wyswietlacza

    int main(void)
    {
    ADCSRA|=((1<<ADEN)|(1<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0));
    ADMUX|=(1<<MUX0)|(1<<MUX1)|(1<<MUX2)|(1<<REFS0)|(1<<ADLAR);
    ADCSRA^=(1<<ADSC);


    TCCR0 |=(1<<WGM00) |(1<<WGM01) |(1<<COM01) |(1<<CS01);
    DDRB=0xFF;
    DDRA&=~(przyc0|przyc1|przyc2|przyc3|przyc4);
    PORTA |=(przyc0|przyc1|przyc2|przyc3|przyc4);
    OCR0=70;
    lcd_init();

    while(1)
    {


    if(klaw_wcis(przyc0))
    {
    START=1;
    }

    if(klaw_wcis(przyc1))
    {
    TCCR0 ^=(1<<COM00);
    PORTB ^=(1<<2);
    _delay_ms(600);
    }

    if(klaw_wcis(przyc2))
    {
    OCR0=0;
    PORTB &=~(1<<2);
    START=0;
    }
    if(START==0)
    {
    OCR0=0;

    write_text("HALO HALO nie dziala ");
    write_command(0xC0);
    write_text("STOP");
    while(1);


    }
    if(START==1)
    {
    OCR0=ADCH;
    write_command(0x01);
    write_text("START");
    while(1);
    }


    }
    return 0;
    }


    dziękuje
  • REKLAMA
  • #2 16960575
    Konto nie istnieje
    Konto nie istnieje  
  • #3 16961843
    el2010tmp
    Poziom 25  
    Pokaż funkcje lcd_init();
REKLAMA