GLCD Library
A C Library for Embedded Applications
 All Data Structures Files Functions Variables Enumerations Enumerator Macros Groups Pages
ST7565R.c
Go to the documentation of this file.
1 
7 #if defined(GLCD_CONTROLLER_ST7565R)
8 
9 #include "../glcd.h"
10 
11 void glcd_command(uint8_t c)
12 {
13  GLCD_A0_LOW();
14  glcd_spi_write(c);
15 }
16 
17 void glcd_data(uint8_t c)
18 {
19  GLCD_A0_HIGH();
20  glcd_spi_write(c);
21 }
22 
23 void glcd_set_contrast(uint8_t val) {
24  asm("break");
25 }
26 
27 void glcd_power_down(void)
28 {
29  asm("break");
30 }
31 
32 void glcd_power_up(void)
33 {
34  asm("break");
35 }
36 
37 void glcd_set_y_address(uint8_t y)
38 {
39  glcd_command(ST7565R_PAGE_ADDRESS_SET | (0b00001111 & y));
40 }
41 
42 void glcd_set_x_address(uint8_t x)
43 {
46 }
47 
48 void glcd_all_on(void)
49 {
51 }
52 
53 void glcd_normal(void)
54 {
56 }
57 
58 void glcd_set_column_upper(uint8_t addr)
59 {
61 }
62 
63 void glcd_set_column_lower(uint8_t addr)
64 {
66 }
67 
68 void glcd_set_start_line(uint8_t addr)
69 {
70  glcd_command( ST7565R_SET_START_LINE | (0b00111111 & addr));
71 }
72 
74 void glcd_clear_now(void)
75 {
76  uint8_t page;
77  for (page = 0; page < GLCD_NUMBER_OF_BANKS; page++) {
78  glcd_set_y_address(page);
80  uint8_t col;
81  for (col = 0; col < GLCD_NUMBER_OF_COLS; col++) {
82  glcd_data(0);
83  }
84  }
85 }
86 
87 void glcd_pattern(void)
88 {
89  uint8_t page;
90  for (page = 0; page < GLCD_NUMBER_OF_BANKS; page++) {
91  glcd_set_y_address(page);
93  uint8_t col;
94  for (col = 0; col < GLCD_NUMBER_OF_COLS; col++) {
95  glcd_data( (col / 8 + 2) % 2 == 1 ? 0xff : 0x00 );
96  }
97  }
98 }
99 
100 void glcd_write()
101 {
102 
103  uint8_t bank;
104 
105  for (bank = 0; bank < GLCD_NUMBER_OF_BANKS; bank++) {
106  /* Each bank is a single row 8 bits tall */
107  uint8_t column;
108 
109  if (glcd_bbox_selected->y_min >= (bank+1)*8) {
110  continue; /* Skip the entire bank */
111  }
112 
113  if (glcd_bbox_selected->y_max < bank*8) {
114  break; /* No more banks need updating */
115  }
116 
117  glcd_set_y_address(bank);
119 
120  for (column = glcd_bbox_selected->x_min; column <= glcd_bbox_selected->x_max; column++)
121  {
123  }
124  }
125 
126  glcd_reset_bbox();
127 
128 }
129 
130 #endif
#define ST7565R_DISPLAY_ALL_ON
Definition: ST7565R.h:51
void glcd_spi_write(uint8_t c)
Write a byte to the connected SPI slave.
void glcd_power_up(void)
Power up the device.
#define ST7565R_PAGE_ADDRESS_SET
Definition: ST7565R.h:47
glcd_BoundingBox_t * glcd_bbox_selected
Pointer to bounding box currently in use.
Definition: glcd.c:65
void glcd_write(void)
Update the display within the specified bounding box.
void glcd_set_column_upper(uint8_t addr)
void glcd_set_x_address(uint8_t x)
Set X address of RAM (column).
uint8_t y_max
Definition: glcd.h:166
void glcd_power_down(void)
Power down the device.
uint8_t y_min
Definition: glcd.h:164
#define ST7565R_COLUMN_ADDRESS_SET_LOWER
Definition: ST7565R.h:48
void glcd_all_on(void)
All display points on (native)
void glcd_data(uint8_t c)
Send data byte to LCD.
uint8_t * glcd_buffer_selected
Pointer to screen buffer currently in use.
Definition: glcd.c:60
#define GLCD_NUMBER_OF_BANKS
Definition: glcd.h:149
#define ST7565R_SET_START_LINE
Definition: ST7565R.h:55
void glcd_set_start_line(uint8_t addr)
Set start line/page.
void glcd_set_y_address(uint8_t y)
Set Y address of RAM (select bank).
void glcd_command(uint8_t c)
Send command byte to LCD.
#define GLCD_NUMBER_OF_COLS
Definition: glcd.h:150
#define ST7565R_DISPLAY_NORMAL
Definition: ST7565R.h:50
uint8_t x_min
Definition: glcd.h:163
void glcd_clear_now(void)
Clear the display immediately, does not buffer.
void glcd_pattern(void)
Show a black and white line pattern on the display.
void glcd_set_contrast(uint8_t val)
Set contrast.
void glcd_normal(void)
Set to normal mode.
void glcd_reset_bbox()
Reset the bounding box.
Definition: glcd.c:101
void glcd_set_column_lower(uint8_t addr)
#define ST7565R_COLUMN_ADDRESS_SET_UPPER
Definition: ST7565R.h:49