Display: queue up display_set_cursor(), too.
This commit is contained in:
parent
8d7471d3a4
commit
1d4ebbd7fa
19
display.c
19
display.c
|
|
@ -37,6 +37,25 @@ void display_clear(void) {
|
||||||
display_writechar((uint8_t)low_code_clear);
|
display_writechar((uint8_t)low_code_clear);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Sets the cursor to the given position.
|
||||||
|
|
||||||
|
\param line The vertical cursor position to set, in lines. First line is
|
||||||
|
zero.
|
||||||
|
|
||||||
|
\param column The horizontal cursor position to set. In characters on
|
||||||
|
character based displays, in pixels on pixel based displays.
|
||||||
|
First column is zero.
|
||||||
|
|
||||||
|
Use this directly for debugging purposes, only. Regular display updates
|
||||||
|
happen in display_clock().
|
||||||
|
*/
|
||||||
|
void display_set_cursor(uint8_t line, uint8_t column) {
|
||||||
|
display_writechar((uint8_t)low_code_set_cursor);
|
||||||
|
display_writechar((uint8_t)line);
|
||||||
|
display_writechar((uint8_t)column);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Prints a character at the current cursor position.
|
Prints a character at the current cursor position.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -37,23 +37,6 @@ void display_init(void) {
|
||||||
displaybus_write(0x0C, parallel_4bit_instruction);
|
displaybus_write(0x0C, parallel_4bit_instruction);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
Sets the cursor to the given position.
|
|
||||||
|
|
||||||
\param line The vertical cursor position to set, in lines. First line is
|
|
||||||
zero. Line height is character height, which is currently
|
|
||||||
fixed to 8 pixels.
|
|
||||||
|
|
||||||
\param column The horizontal cursor position to set, in pixels. First
|
|
||||||
column is zero.
|
|
||||||
|
|
||||||
Use this for debugging purposes, only. Regular display updates happen in
|
|
||||||
display_clock().
|
|
||||||
*/
|
|
||||||
void display_set_cursor(uint8_t line, uint8_t column) {
|
|
||||||
// Currently unimplemented.
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Show a nice greeting. Pure eye candy.
|
Show a nice greeting. Pure eye candy.
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -35,8 +35,6 @@
|
||||||
|
|
||||||
TODO list:
|
TODO list:
|
||||||
|
|
||||||
- Move code in display_set_cursor() would to display_tick().
|
|
||||||
|
|
||||||
- Lot's of prettification. Like a nice background picture with the Teacup
|
- Lot's of prettification. Like a nice background picture with the Teacup
|
||||||
logo, like "Welcome to Teacup" as a greeting screen, like writing numbers
|
logo, like "Welcome to Teacup" as a greeting screen, like writing numbers
|
||||||
to readable places and so on.
|
to readable places and so on.
|
||||||
|
|
@ -114,30 +112,6 @@ void display_init(void) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
Sets the cursor to the given position.
|
|
||||||
|
|
||||||
\param line The vertical cursor position to set, in lines. First line is
|
|
||||||
zero. Line height is character height, which is currently
|
|
||||||
fixed to 8 pixels.
|
|
||||||
|
|
||||||
\param column The horizontal cursor position to set, in pixels. First
|
|
||||||
column is zero.
|
|
||||||
|
|
||||||
Use this for debugging purposes, only. Regular display updates happen in
|
|
||||||
display_clock().
|
|
||||||
*/
|
|
||||||
void display_set_cursor(uint8_t line, uint8_t column) {
|
|
||||||
|
|
||||||
// Enter command mode.
|
|
||||||
displaybus_write(0x00, 0);
|
|
||||||
// Set line.
|
|
||||||
displaybus_write(0xB0 | (line & 0x03), 0);
|
|
||||||
// Set column.
|
|
||||||
displaybus_write(0x00 | (column & 0x0F), 0);
|
|
||||||
displaybus_write(0x10 | ((column >> 4) & 0x0F), 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Show a nice greeting. Pure eye candy.
|
Show a nice greeting. Pure eye candy.
|
||||||
*/
|
*/
|
||||||
|
|
@ -220,6 +194,24 @@ void display_tick() {
|
||||||
displaybus_write(0x02, 1);
|
displaybus_write(0x02, 1);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case low_code_set_cursor:
|
||||||
|
/**
|
||||||
|
Set the cursor to the given position.
|
||||||
|
|
||||||
|
This is a three-byte control command, so we fetch additional bytes
|
||||||
|
from the queue and cross fingers they're actually there.
|
||||||
|
*/
|
||||||
|
// Enter command mode.
|
||||||
|
displaybus_write(0x00, 0);
|
||||||
|
// Set line.
|
||||||
|
buf_pop(display, data);
|
||||||
|
displaybus_write(0xB0 | (data & 0x03), 0);
|
||||||
|
// Set column.
|
||||||
|
buf_pop(display, data);
|
||||||
|
displaybus_write(0x00 | (data & 0x0F), 0);
|
||||||
|
displaybus_write(0x10 | ((data >> 4) & 0x0F), 1);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
// Should be a printable character.
|
// Should be a printable character.
|
||||||
index = data - 0x20;
|
index = data - 0x20;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue