Subversion Repositories Code-Repo

Rev

Rev 126 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 126 Rev 128
Line 22... Line 22...
22
    0x79, /* E */
22
    0x79, /* E */
23
    0x71, /* F */
23
    0x71, /* F */
24
};
24
};
25
 
25
 
26
static LED_DATA led_data;
26
static LED_DATA led_data;
-
 
27
static LED_DATA *led_data_p = &led_data;
27
 
28
 
28
void LED_Init() {
29
void LED_Init() {
29
    led_data.i2c_address = 0x70;
30
    led_data_p->i2c_address = 0x70;
30
}
31
}
31
 
32
 
32
void LED_Start() {
33
void LED_Start() {
33
    unsigned char result;
34
    unsigned char result;
34
    unsigned char c = 0x21;     // Cmd to turn on oscillator
35
    unsigned char c = 0x21;     // Cmd to turn on oscillator
35
    
36
    
36
    I2C_Master_Send(led_data.i2c_address, 1, &c);
37
    I2C_Master_Send(led_data_p->i2c_address, 1, &c);
37
    result = I2C_Get_Status();
38
    result = I2C_Get_Status();
38
    while (!result) {
39
    while (!result) {
39
        result = I2C_Get_Status();
40
        result = I2C_Get_Status();
40
    }
41
    }
41
 
42
 
Line 49... Line 50...
49
    unsigned char result;
50
    unsigned char result;
50
    
51
    
51
    if (c > 15) c = 15;
52
    if (c > 15) c = 15;
52
    c |= 0xE0;
53
    c |= 0xE0;
53
 
54
 
54
    I2C_Master_Send(led_data.i2c_address, 1, &c);
55
    I2C_Master_Send(led_data_p->i2c_address, 1, &c);
55
    result = I2C_Get_Status();
56
    result = I2C_Get_Status();
56
    while (!result) {
57
    while (!result) {
57
        result = I2C_Get_Status();
58
        result = I2C_Get_Status();
58
    }
59
    }
59
}
60
}
Line 63... Line 64...
63
 
64
 
64
    if (c > 3) c = 0;
65
    if (c > 3) c = 0;
65
 
66
 
66
    buffer = HT16K33_BLINK_CMD | HT16K33_BLINK_DISPLAYON | (c << 1);
67
    buffer = HT16K33_BLINK_CMD | HT16K33_BLINK_DISPLAYON | (c << 1);
67
 
68
 
68
    I2C_Master_Send(led_data.i2c_address, 1, &buffer);
69
    I2C_Master_Send(led_data_p->i2c_address, 1, &buffer);
69
    buffer = I2C_Get_Status();
70
    buffer = I2C_Get_Status();
70
    while (!buffer) {
71
    while (!buffer) {
71
        buffer = I2C_Get_Status();
72
        buffer = I2C_Get_Status();
72
    }
73
    }
73
}
74
}
74
 
75
 
75
void LED_writeDisplay() {
76
void LED_writeDisplay() {
76
    unsigned char result;
77
    unsigned char result;
77
    
78
    
78
    led_data.display_buffer[0] = 0x00;  // Start at address 0x00
79
    led_data_p->display_buffer[0] = 0x00;  // Start at address 0x00
79
    I2C_Master_Send(led_data.i2c_address, 17, led_data.display_buffer);
80
    I2C_Master_Send(led_data_p->i2c_address, 17, led_data_p->display_buffer);
80
 
81
 
81
    result = I2C_Get_Status();
82
    result = I2C_Get_Status();
82
    while (!result) {
83
    while (!result) {
83
        result = I2C_Get_Status();
84
        result = I2C_Get_Status();
84
    }
85
    }
85
}
86
}
86
 
87
 
87
void LED_clear() {
88
void LED_clear() {
88
    unsigned char c;
89
    unsigned char c;
89
    for (c = 0; c < 17; c++) {
90
    for (c = 0; c < 17; c++) {
90
        led_data.display_buffer[c] = 0;
91
        led_data_p->display_buffer[c] = 0;
91
    }
92
    }
92
}
93
}
93
 
94
 
94
void LED_drawColon(unsigned char c) {
95
void LED_drawColon(unsigned char c) {
95
    if (c) {
96
    if (c) {
96
        led_data.display_buffer[5] = 0xFF;
97
        led_data_p->display_buffer[5] = 0xFF;
97
    } else {
98
    } else {
98
        led_data.display_buffer[5] = 0;
99
        led_data_p->display_buffer[5] = 0;
99
    }
100
    }
100
}
101
}
101
 
102
 
102
void LED_writeDigitRaw(unsigned char loc, unsigned char bitmask) {
103
void LED_writeDigitRaw(unsigned char loc, unsigned char bitmask) {
103
    if (loc > 4) return;
104
    if (loc > 4) return;
104
    led_data.display_buffer[(loc<<1)+1] = bitmask;
105
    led_data_p->display_buffer[(loc<<1)+1] = bitmask;
105
}
106
}
106
 
107
 
107
void LED_writeDigitNum(unsigned char loc, unsigned char num, unsigned char dot) {
108
void LED_writeDigitNum(unsigned char loc, unsigned char num, unsigned char dot) {
108
    if (loc > 4) return;
109
    if (loc > 4) return;
109
    if (loc > 1) loc++;
110
    if (loc > 1) loc++;