Display-Controller
maschinell erzeugt
Im Forum und im Wiki
-
Thread
Atmega8 läuft nur mit internen Quarz, nicht aber mit externen
--------------------------------------------------------------- void GLCD_InitPorts(void) { SED1520_DATA_DDR = 0xFF; SED1520_CONTROL_DDR |= (SED1520_E2 | SED1520_E1 | SED1520_A0 | SED1520_RES); DDRB |= (SED1520_RW); _delay_ms(10); SED1520_CONTROL_PORT &= ~SED1520_RES; _delay_ms(100); SED1520
SED1520_DATA_PIN; SED1520_CONTROL_PORT &= ~SED1520_E1; } else { SED1520_CONTROL_PORT |= SED1520_E2; asm("nop");asm("nop"); tmp = SED1520_DATA_PIN; SED1520_CONTROL_PORT &=
-
Thread
SED1520: Lesen vom Display
&= ~SED1520_E2; asm("nop");asm("nop"); SED1520_CONTROL_PORT |= SED1520_E2; asm("nop");asm("nop"); tmp = SED1520_DATA_PIN; SED1520_CONTROL_PORT &= ~SED1520_E2; } SED1520_DATA_DDR = 0xFF
Befehl) SED1520_CONTROL_PORT |= SED1520_RW; //von Display lesen if(lcd_x < 61) SED1520_CONTROL_PORT &= ~SED1520_CS1; else SED1520_CONTROL_PORT &= ~SED1520_CS2; asm("nop");asm("nop"); SED1520_DATA_DDR
-
Thread
SED1520 - Pollinkompatibel und flink
#define SED1520_CTRLDDR DDRD #define SED1520_RES 0 #define SED1520_RW (1 << 0) #define SED1520_E (1 << 3) #define SED1520_A0 (1 << 6) #define SED1520_CS1 (1 << 1) #define SED1520
Falsch gemacht? Bin leider noch nicht solange dabei :( In der Header Datei steht: [c]#define SED1520_DATAPORT PORTC #define SED1520_DATAPIN PINC #define SED1520_DATADDR DDRC #define SED1520_CTRLPORT PORTD #define SED1520_CTRLDDR DDRD #define SED1520_RES 0 #define SED1520
-
Thread
pollin dot matrix lcd 122x32 dots dg 12232
GLCD_WriteData(unsigned char dataToWrite) { GLCD_WaitForStatus(0x80, 0); GLCD_WaitForStatus(0x80, 1); SED1520_CONTROL_PORT |= SED1520_A0; SED1520_CONTROL_PORT &= ~SED1520_RW; SED1520_DATA_PORT = dataToWrite; if(lcd_x < 61) { SED1520_CONTROL_PORT |= SED1520_E1; asm("nop");asm("nop"); SED1520_CONTROL_PORT &= ~SED1520_E1; } else { SED1520_CONTROL_PORT |= SED1520_E2; asm("nop");asm("nop"); SED1520_CONTROL_PORT &= ~SED1520_E2; } lcd_x++; if(lcd_x >= SCREEN_WIDTH) lcd_x = 0; } void GLCD_WriteChar
-
Thread
DG-12232 Ansteuerung von 2xSED1520 Controller
#define SED1520_Enable (1 << 1) #define SED1520_CS1 (1 << 2) #define SED1520_CS2 (1 << 3) #define SED1520_A0 (1 << 4) #define SED1520_RES (1 << 5) ---------------------------------------------------
A0 #define SED1520_CS1 (1 << 1) // A1 #define SED1520_CS2 (1 << 2) // A2 #define SED1520_RW (1 << 3) // A3 #define SED1520_RES (1 << 4) // A4 #define SED1520_E (1 << 5) // A5 An Vee habe ich die
-
Thread
Display Wintek Pollin
SED1520_A0 R/W ist SED1520_RW /RES ist SED1520_RES das war der einfache Teil, aber SED1520_E1 ist enable für chip1 und NICHT /CS1 SED1520_E2 ist enable für chip2 und NICHT /CS2 Mann müsste den Code so umbauen, dass man die CS Signal noch (aus den SED1520_E1 und SED1520_E2) generiert. Das E-Signal kommt dann durch E = ( SED1520_E1 or SED1520_E2 ) zustande. Mal sehen ob das funktioniert, oder bin ich da ganz falsch ?
-
Thread
Pollin LCD12232 bleibt dunkel
lässt mich auf jeden Fall die Prozedur GLCD_InitPorts vermuten: [c]void GLCD_InitPorts(void) { SED1520_DATA_DDR = 0xFF; //Output // Set Controll-Bits to Output SED1520_CONTROL_DDR |= (SED1520_CS2 | SED1520_CS1 | SED1520_RW | SED1520_A0 | SED1520_RES | SED1520_Enable); _delay_ms(
#define SED1520_Enable (1 << 1) #define SED1520_CS1 (1 << 2) #define SED1520_CS2 (1 << 3) #define SED1520_A0 (1 << 4) #define SED1520_RES (1 << 5)[/c] Und so sollte doch vom Programmablauf her RES
-
Thread
122x32 Display
GLCD_ReadData(void) { unsigned char tmp; GLCD_WaitForStatus(0x80, 0); GLCD_WaitForStatus(0x80, 1); SED1520_CONTROL_PORT |= SED1520_A0; SED1520_CONTROL_PORT |= SED1520_RW; SED1520_DATA_DDR = 0x00; SED1520_DATA_PORT = 0xFF; if(lcd_x < 61) { SED1520_CONTROL_PORT |= SED1520_E1; asm("nop");asm("nop"); SED1520_CONTROL_PORT &= ~SED1520_E1; asm("nop");asm("nop"); SED1520_CONTROL_PORT |= SED1520_E1; asm("nop");asm("nop"); tmp = SED1520_DATA_PIN; SED1520_CONTROL_PORT &= ~SED1520_E1; }