Dotmatrix LCD Library. More...
#include <avr/io.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <util/delay.h>
#include "lcd.h"
Go to the source code of this file.
Functions | |
void | print_buffer (void) |
send the buffer contents to the display | |
void | lcd_scroll (void) |
scroll individual lines | |
void | push_char (uint8_t data) |
push a character into the buffer. | |
int | lcd_putchar (char data, FILE *stream) |
Write one Character on the Display. | |
Variables | |
char | display_buffer [LCD_ROWS][LCD_COLS+1] |
buffer used when scrolling is enabled | |
char | input_buffer [LCD_ROWS][INPUT_BUFFER_SIZE+1] |
buffer used to store the received characters and rotate the lines | |
uint8_t | buffer_index = 0 |
always pints to the first line | |
uint8_t | char_index = 0 |
points to the next char to write | |
uint8_t | formfeed = 0 |
is set is an formfeed () is received to parse a sequence of special characters | |
uint8_t | escape = 0 |
is set if an escape is received, to parse control secquences | |
uint8_t | firstchar = 0 |
contains the first char of a sequence of 2 chars that schould be parsed | |
uint8_t | scroll = 0 |
scroll enable flag | |
char | remap [256] |
lookup table to translate display charset to ASCII charset |
Dotmatrix LCD Library.
Definition in file lcd.c.
int lcd_putchar | ( | char | data, |
FILE * | sream | ||
) |
Write one Character on the Display.
Characters received are transformer by a lookup-table because the charset of the Display is not equal to ASCII. As input to this function any ASCII character that can be typed ba a German or American Keyboard is valid and displayed correctly on the screen.
As the Display has some amazing special characters, like fancy arrows, there are some sequences that are parsed and replaced by the corresponding symbol. See https://wiki.fs-et.de/student-lab/UartDisplay for details on the parser.
data | ASCII Character to print. |
stream | (is necessary to be compatible with printf) |
Definition at line 181 of file lcd.c.
void lcd_scroll | ( | void | ) |
scroll individual lines
This function should be called by the main loop regularly if scroll mode is activated. Each time this function is executed the content of a line longer than the physical display lentgh is rotated by one position.
Definition at line 128 of file lcd.c.
void print_buffer | ( | void | ) |
void push_char | ( | uint8_t | data ) |
push a character into the buffer.
This is a internal function, that should not be called from other files. To print the buffer to the display call print_buffer()
data | Character to print. |
Definition at line 163 of file lcd.c.
char input_buffer[LCD_ROWS][INPUT_BUFFER_SIZE+1] |
char remap[256] |
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 162, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 160, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 250, 251, 252, 29, 196, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 253, 254, 255, 206, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 45, 45, 152, 153, 154, 155, 156, 157, 158, 159, 160, 40, 162, 64, 164, 163, 254, 95, 168, 169, 170, 171, 172, 173, 174, 175, 128, 140, 130, 131, 180, 143, 182, 183, 184, 185, 186, 187, 139, 138, 190, 96, 192, 193, 194, 195, 91, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 92, 215, 216, 217, 218, 219, 94, 221, 222, 190, 127, 225, 226, 227, 123, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 125, 242, 243, 244, 245, 124, 247, 248, 249, 250, 251, 126, 253, 254, 255 }
lookup table to translate display charset to ASCII charset