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

Napisanie programu w języku "c".Zasady budowy programu

Norcio12 09 Mar 2011 19:02 4144 4
REKLAMA
  • #1 9255778
    Norcio12
    Poziom 13  
    Witam Panowie piszę do was w sprawie pomocy w napisaniu programu do ćwiczenia, gdyż nie potrafię napisać tego kodu a mianowicie:

    Chodzi o pomiar wielkości elektrycznych
    Trzeba wykorzystać przetwornik A/C
    -należy go skonfigórować i uruchomić go
    -rozpocząć konwersję,następnie odczytać z rejestru ADDAT(0xD9)
    - po zakończeniu konwersji BSY=0.
    Następnie przeskalować wynik i zaprezentować go na wyświetlaczu LCD.

    P.S prosił bym moderatora o nie usuwanie mojego postu jak w złym dziale to proszę o przeniesienie.

    pozdrawiam
  • REKLAMA
  • REKLAMA
  • #3 9256338
    Norcio12
    Poziom 13  
    Dżyszla napisał:
    Masz jakiś programowalny przetwornik? Jak go programujesz?


    Ja nic nie programuje muszę tylko napisać kod w c a problem mam z tym że nie umiem tego języka i mam za mało czasu się go nauczyć a już czytam o nim ale nie wiem jak za bardzo się za to zabrać.
    Dziękuje za odp.
  • REKLAMA
  • #4 9256538
    Wizer
    Poziom 11  
    Z tego co napisałeś to chcesz napisać kod pod jakiś mikrokontroler i chcesz mierzyć napięcie na przetworniku analogowo-cyfrowym... i dane wyswietlać na jakimś podłączonym ekranie...

    później piszesz że potrzebujesz sam kod ? w ogóle się to "kupy" nie trzyma...

    no chyba że chodzi Ci o zaimplementowanie przetwornika w c... napisz jasniej o co Ci chodzi :)
  • #5 9259754
    Norcio12
    Poziom 13  
    Kod otrzymałem od kolegi tylko teraz mam problem.

    Chodziło mi o ten kod :


    #include <stdio.h>

    _xdat unsigned char WRINST _at(0xFE00); // "Rejestry" wyświetlacza LCD
    _xdat unsigned char WRDATA _at(0xFE01);
    _xdat unsigned char RDBUSY _at(0xFE02);
    _xdat unsigned char RDDATA _at(0xFE03);



    void TIME(unsigned char c) // opóźnienie czasowe
    {int i; while(c--) for(i=0;i<1000;i++);}

    void LCD_BUSY(void) // sprawdzenie flagi zajętości wyświetlacza
    {while (RDBUSY & 0x80);}

    void LCD_INSTR(unsigned char ins) // podanie instrukcji sterującej wyświetlaczem
    {LCD_BUSY();WRINST=ins;}

    void LCD_PUTCHAR(unsigned char c) // wyprowadzenie znaku na wyświetlacz
    {LCD_BUSY();WRDATA=c;}

    void LCD_INIT(void) // inicjowanie wyświetlacza
    { WRINST=0x30; TIME(2); WRINST=0x30; TIME(2); WRINST=0x30;
    LCD_INSTR(0x38); //8-bit, 2 linie, znak 5x7
    LCD_INSTR(0x06); //ruch kursora w prawo
    LCD_INSTR(0x0E); //wyświetlacz załączony, kursor widoczny
    LCD_INSTR(0x01); //czyszczenie wskaźnika, kursor na 1 pozycji
    }
    void main(void)
    {
    unsigned int u,c,d,b,e,a;
    unsigned char x,y,z;
    LCD_INIT();
    ADCON=1;
    while(1)
    {
    DAPR=0;
    while(BSY);
    u=ADDAT*1.960785; //1,96078431372549019607843137254902
    c=u%10;
    d=u/10;
    b=d%10;
    e=d/10;
    a=e%10;
    x=a;
    y=b;
    z=c;
    LCD_INSTR(2);
    LCD_PUTCHAR(x+0x30);
    LCD_PUTCHAR(',');
    LCD_PUTCHAR(y+0x30);
    LCD_PUTCHAR(z+0x30);
    LCD_PUTCHAR('V');
    LCD_PUTCHAR(':');
    LCD_PUTCHAR(')');
    }
    }

    Tylko teraz mam prośbę do kogoś kto by mógł pomóc zrozumieć jak ten kod się zachowuje.Co za co odpowiada.

    Pozdrawiam Norek12
REKLAMA