- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 4 von 4

Thema: HP12542R-DYO ansteuern!

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    06.10.2005
    Beiträge
    9

    HP12542R-DYO ansteuern!

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo,
    versuche mein HP12542R-DYO von pollin anzusteuern. Die beispielsoftware geht. Aber warum muss man das unbedingt in delphi schreiben, meiner meinung nach ENORM hässlich! . Auf jedenfall versuche ich die funktion des displays zu verstehen. Ich habe mir folgenden code gebaut. Er funktioniert irgendwie nur teilweise . Das init geht. Ich kann auch den pixeltest einschalten und zum beispiel invertieren. ABER wenn ich meine lcd clear funktion aufrufe passiert nicht wirklich viel. ein paar pixel werden verschoben aber mehr nicht. Sieht hier irgendjemand ob ich einen großen fehler mache? Vielleicht hat ja schonmal jemand hier das HP12542R-DYO angesteuert... Vielen Dank!

    Code:
    #include "s1d1565.h"
    #include "font6x8s.cpp"
    
    #define BIT(x) (1 << (x))
    #define SETBITS(x,y) ((x) |= (y))
    #define CLEARBITS(x,y) ((x) &= (~(y)))
    #define SETBIT(x,y) SETBITS((x), (BIT((y))))
    #define CLEARBIT(x,y) CLEARBITS((x), (BIT((y))))
    
    #pragma comment(lib, "inpout32.lib")
    
    short _stdcall Inp32(short PortAddress);
    void _stdcall Out32(short PortAddress, short data);
    
    #define outp(x,y) Out32(y,x)
    
    #define En           0 // Strobe
    #define RES          2 // Autofeed
    #define CS           3 // Init 
    #define A0           1 // Select In
    
    #define LCDP	0x378 // Dataport
    #define LCD     0x37A // Controlport
    
    unsigned char Control = 0x0; // Controlregister
    
    void cbi(int adress,int value) // Clear Bit
    {
         CLEARBIT(Control,value);
         outp(Control,adress);
    }
    
    void sbi(int adress,int value) // Set Bit
    {
         SETBIT(Control,value);
         outp(Control,adress);
    }
    
    void cycle(int times)
    {
    	for(int i=0;i<times;i++);
    }
    
    void lcd_writecom (unsigned char byte)
    {                  
        cbi(LCD,A0);
        outp(byte,LCDP);
        cbi(LCD,CS);
        sbi(LCD,En);
        cbi(LCD,En);
        sbi(LCD,CS);
    }
    
    
    
    void lcd_init(void)         //Initialize LCD
    {
    	unsigned int i;
        cbi(LCD,RES);
        for (i=0; i<10000; i++)
        cycle(30);
        sbi(LCD,RES);
        for (i=0; i<100000; i++)
        cycle(30);
        lcd_writecom(0x40);		// Start Display Line = 0
        lcd_writecom(0xA0);		// ADC = normal (Anzeigerichtung nicht gespiegelt)
        lcd_writecom(0xA3);		// LCD-Bias = 1/7 für 4,5-5,5V    1/9 für 3,3-4,5V
        lcd_writecom(0xC0);		// Output Mode = nicht gespiegelt
        lcd_writecom(0x2F);		// LCD-Spannungserzeugung/Regelung einschalten
        lcd_writecom(0x20);		// V5 Regulator Resistor Ratio = 0
        lcd_writecom(0xAC);		// Static Indicator off
        lcd_writecom(0x81);		// Kontrasteinstellung auswählen
        lcd_writecom(32);		// Kontrast = mittel (für Bias 1/7: 20-50, für 1/9: 2-10)
        lcd_writecom(0xA4);		// Displaytest aus
        lcd_writecom(0xAF);		// Display ein
        lcd_writecom(0xA6);		// Display normal (nicht invertiert)
        lcd_clear();
    }
    
    void lcd_clear()
    {
    	unsigned char x, y;
    	for (y=0;y<8; y++)
    	{
    		lcd_setadress(0,y);
    		for (x=0;x<128; x++) {
    			lcd_writecom(0);
    		}
    	}
        lcd_setadress(0,0);
    }
    
    
    
    void lcd_setadress(unsigned char Spalte, unsigned char Zeile)    //Set Adresspointer
    {   
    	lcd_writecom(0xB0|Zeile);
    	lcd_writecom(0x10|(Spalte/16));
    	lcd_writecom(Spalte&15);
    }
    [/code]

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.09.2004
    Ort
    Düsseldorf
    Beiträge
    3.948
    Gruß
    Ratber

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    06.10.2005
    Beiträge
    9
    das hab ich schon gesehen aber das ist doch für den AVR UND noch Bascom bzw. asm. ich arbeite doch am pc. meine basis war auch code für den AVR in c daraus habe ich dann pc code gemacht aber irgendwie klappt es nicht so ganz.

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.09.2004
    Ort
    Düsseldorf
    Beiträge
    3.948
    Oh,Sorry,hab ich übersehen.

    So groß hab ich damit auch noch nix gemacht ausser mit LCDhype rumgetestet und natürlich am Controller.
    (Albundy war so frei letzten Herbst was reinzustellen.)
    Sobald ich Zeit habe muß ich selber erstmal das Datanblatt studieren bevor ich was mache.
    Gruß
    Ratber

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad