1 | //
|
2 | // Display.c
|
3 | //
|
4 | // Created: 05.02.2013 09:13:46
|
5 | // Author: sh22666
|
6 | //
|
7 |
|
8 | #include <avr/io.h> //
|
9 | #include <util/delay.h> // Einbinden von Headerdateien
|
10 | #include <avr/i2cmaster.h> //
|
11 |
|
12 | #define Display 0b01110000 // Slaveadresse - Adresse des Display
|
13 |
|
14 | #ifndef F_CPU //
|
15 | #define F_CPU 8000000UL // Taktfrequenz des ATMega8 festlegen
|
16 | #endif //
|
17 |
|
18 |
|
19 | int main(void)
|
20 | {
|
21 |
|
22 | DDRB |= (1<<DDB0); // BankB = Ausgänge
|
23 | PORTB |= (1<<PB0); // PB0=0
|
24 | PORTB ^= (1<<PB0); // PB0=alternierend
|
25 |
|
26 | while(1)
|
27 | {
|
28 | _delay_ms(1000); // Warten
|
29 |
|
30 | i2c_init(); // Initialisierung des I2C-Bus
|
31 |
|
32 | if(!(i2c_start(Display+I2C_WRITE))) // Slave bereit zum schreiben?
|
33 | {
|
34 | i2c_write(0b11001000); // mode-set
|
35 | i2c_write(0b01001111); // load-data-pointer
|
36 | i2c_write(0b11100111); // device-select
|
37 | i2c_write(0b11111011); // bank-select
|
38 | i2c_write(0b11110000); // blink-select
|
39 | i2c_stop(); // Zugriff beenden
|
40 |
|
41 | PORTB ^= (1<<PB0); // PB0=alternierend
|
42 | _delay_ms(1000); // Warteschleife
|
43 | }
|
44 | else
|
45 | {
|
46 | PORTB ^= (1<<PB0); // PB0=alternierend
|
47 | _delay_ms(10000); // längere Warteschleife
|
48 | }
|
49 | }
|
50 | }
|