Hallo, ich versuche schon seit geraumer Zeit ein Displaytech 64128c http://docs-europe.electrocomponents.com/webdocs/06dd/0900766b806dda2b.pdf , mit der Osama's Lab GLCD-Lib zum laufen zu bekommen. Leider schaffe ich es einfach nicht, die linke Hälfte des Displays anzusprechen! Das ist mein Code:
1 | #include <avr/io.h> |
2 | #include <util/delay.h> |
3 | #include "glcd.h" |
4 | #include "graph.h" |
5 | |
6 | |
7 | |
8 | int main(void) |
9 | { |
10 | |
11 | PORTC=0x00; |
12 | DDRC=0xFF; |
13 | |
14 | PORTD=0x00; |
15 | DDRD=0xFF; |
16 | |
17 | glcd_rst(); |
18 | |
19 | glcd_on(); |
20 | |
21 | bmp_disp(arr,1,1,127,63); |
22 | |
23 | } |
das der Headerinhalt:
1 | #include <avr/pgmspace.h> |
2 | #include <stdlib.h> |
3 | #include <math.h> |
4 | #include <string.h> |
5 | #include "font.h" |
6 | |
7 | typedef unsigned char byte; |
8 | //---------------------- |
9 | #define E_DELAY 20 |
10 | #define DATAPORT PORTD |
11 | #define CONTROLPORT PORTC |
12 | #define DATADDR DDRD |
13 | #define DATAPIN PIND |
14 | #define CS1 (1<<2) |
15 | #define CS2 (1<<3) |
16 | #define DI (1<<4) |
17 | #define RW (1<<0) |
18 | #define EN (1<<1) |
19 | #define RS (1<<5) |
20 | //#define CS_ACTIVE_LOW 1 //Define this if your GLCD CS |
21 | //is active low (refer to datasheet) |
22 | //--------Arabic---------- |
23 | static int prevLet = 193; |
24 | static byte stat = 0; |
25 | static byte prevX = 0; |
26 | static byte prevY = 0; |
27 | //------------------------ |
28 | void trigger() |
29 | { |
30 | CONTROLPORT |= EN; //EN high |
31 | _delay_us(E_DELAY); |
32 | CONTROLPORT &= ~EN; //EN low |
33 | _delay_us(E_DELAY); |
34 | } |
35 | //---------------------- |
36 | void glcd_rst() |
37 | { |
38 | #ifdef CS_ACTIVE_LOW |
39 | CONTROLPORT &= ~RS; //Activate both chips |
40 | #else |
41 | CONTROLPORT |= RS; //Activate both chips |
42 | #endif |
43 | } |
44 | |
45 | void glcd_on() |
46 | { |
47 | #ifdef CS_ACTIVE_LOW |
48 | CONTROLPORT &= ~CS1; //Activate both chips |
49 | CONTROLPORT &= ~CS2; |
50 | #else |
51 | CONTROLPORT |= CS1; //Activate both chips |
52 | CONTROLPORT |= CS2; |
53 | #endif |
54 | CONTROLPORT &= ~DI; //DI low --> command |
55 | CONTROLPORT &= ~RW; //RW low --> write |
56 | DATAPORT = 0x3F; //ON command |
57 | trigger(); |
58 | } |
59 | |
60 | |
61 | |
62 | //------------BMP Display-------------------- |
63 | void bmp_disp(byte *bmp,unsigned int x1,unsigned int y1, |
64 | unsigned int x2,unsigned int y2) |
65 | { |
66 | unsigned int i,j; |
67 | for(i=y1;i<=y2;i++) |
68 | { |
69 | for(j=x1;j<=x2;j++) |
70 | { |
71 | goto_xy(j,i); |
72 | glcd_write(pgm_read_byte(&bmp[(128*i)+j])); |
73 | _delay_us(10); |
74 | } |
75 | } |
76 | } |
bin für jeden Hinweis dankbar!! grüße gueee