NetBurner 3.5.8
PDF Version
Toggle main menu visibility
hd44780.h
1
#ifndef __HD44780_H
2
#define __HD44780_H
3
/*NB_REVISION*/
4
5
/*NB_COPYRIGHT*/
6
7
#include <predef.h>
8
9
class
HD44780_LCD_Bus
10
{
11
volatile
uint8_t bus[2];
12
class
reg
13
{
14
uint8_t addr;
15
volatile
uint8_t *lcd;
16
17
public
:
18
reg(uint8_t addr,
volatile
uint8_t *lcd) : addr(addr), lcd(lcd) {}
19
operator
uint8_t() {
return
read(); }
20
uint8_t operator=(uint8_t val)
21
{
22
write(val);
23
return
val;
24
}
25
26
uint8_t read() {
return
lcd[addr]; }
27
void
write(uint8_t val)
28
{
29
while
(lcd[0] & 0x80)
30
{
31
asm
(
"dsb"
);
32
}
33
lcd[addr] = val;
34
}
35
};
36
37
public
:
38
HD44780_LCD_Bus();
39
40
void
init
(uint8_t cols, uint8_t rows);
41
void
putchar(
char
c);
42
void
putstr(
const
char
*str);
43
void
setCursor(
int
row,
int
col);
44
void
clr();
45
46
reg operator[](
int
i) {
return
reg(i & 0x1, bus); }
47
friend
class
HD44780_LCD;
48
};
49
50
class
HD44780_LCD
51
{
52
public
:
53
enum
cursorDisp_t
54
{
55
CURSOR_OFF = 0,
56
CURSOR_ON = 2,
57
CURSOR_BLINK = 3
58
};
59
60
private
:
61
HD44780_LCD_Bus &bus;
62
uint8_t cols;
63
uint8_t rows;
64
cursorDisp_t cursorDisp;
65
bool
dispState;
66
67
public
:
68
HD44780_LCD(HD44780_LCD_Bus &bus, uint8_t cols, uint8_t rows);
69
70
void
init
() { bus.init(cols, rows); }
71
void
putchar(
char
c) { bus.putchar(c); }
72
void
putstr(
const
char
*str) { bus.putstr(str); }
73
void
setCursor(
int
row,
int
col) { bus.setCursor(row, col); }
74
void
enableCursor(cursorDisp_t disp);
75
void
enableDisplay(
bool
enable);
76
void
clr();
77
78
HD44780_LCD_Bus::reg operator[](
int
i) {
return
bus[i]; }
79
};
80
81
#endif
/* ----- #ifndef __HD44780_H ----- */
init
void init()
System initialization. Ideally called at the beginning of all applications, since the easiest Recover...
examples
PlatformSpecific
SAME70
MODM7AE70
SSC_I2S
src
hd44780.h
Generated by
1.18.0