Hi ich hab seit langem mal wieder einen Display aus der Schublade gekramt und ein altes Programm geladen, womit er einst funktioniert hat. Doch jetzt funktioniert er nicht mehr. Hier das ist der Display: http://www.komputer.de/zen/index.php?main_page=product_info&cPath=30&products_id=74 Hier ist mein Code ich habe die Clearfunktion so abgeändert das der Display komplett schwarz sein sollte.
1 | #define LCD_RST PB1
|
2 | #define SPI_CS PB2
|
3 | #define LCD_DC PB0
|
4 | |
5 | #include <avr/io.h> |
6 | #include <util/delay.h> |
7 | |
8 | int main(void) |
9 | {
|
10 | DDRB = 0xff; |
11 | PORTB = 0x00; |
12 | |
13 | PORTB &= ~(1<<LCD_RST); |
14 | _delay_ms(5); |
15 | PORTB |= (1<<LCD_RST); |
16 | |
17 | spi_init(); |
18 | |
19 | lcd_out(0x21, 0); |
20 | lcd_out(0xc0, 0); |
21 | lcd_out(0x06, 0); |
22 | lcd_out(0x13, 0); |
23 | lcd_out(0x20, 0); |
24 | lcd_clear(); |
25 | lcd_out(0x0c, 0); |
26 | }
|
27 | |
28 | void lcd_out(unsigned char data, unsigned char datatype) |
29 | {
|
30 | PORTB &= ~(1 << SPI_CS); |
31 | |
32 | if(datatype == 0) |
33 | {
|
34 | PORTB &= ~(1 << LCD_DC); |
35 | }
|
36 | else
|
37 | {
|
38 | PORTB |= (1 << LCD_DC); |
39 | }
|
40 | |
41 | SPDR = data; |
42 | |
43 | while((SPSR & 0x80) == 0); |
44 | |
45 | PORTB |= (1 << SPI_CS); |
46 | }
|
47 | |
48 | void lcd_clear() |
49 | {
|
50 | unsigned int i; |
51 | |
52 | lcd_out(0x0c, 0); |
53 | lcd_out(0x80, 0); |
54 | |
55 | for (i=0; i<504; i++) |
56 | lcd_out(0xff, 1); |
57 | }
|
58 | |
59 | //spi
|
60 | void spi_init(void) |
61 | {
|
62 | SPCR = (1 << SPE) | (1 << MSTR) | (1 << SPR0); |
63 | }
|
Kann es sein das der Display kaputt gegangen ist? Und wie testet man das allgemein? Das Backlight funktioniert noch.