Library for the nRF6350 LCD display and joystick module.
The 2 wire interface of the nRF24LE1 on the nRFgo Development Kit modules are routed to the IO port sharing pins with it. To enable connection to a nRFgo Display module fitted in the extension port of the nRFgo Motherboard the 2 wire interface of the mounted nRF24LE1 must also be routed to the 2 wire interface of the nRFgo Development Kit module. This is done by shorting the SDA and SCL solder bridges SB1 and SB2 found on the nRF24LE1 development kit
Enumerations | |
| enum | lib_nrf6350_lcd_contrast_t { LCD_CONTRAST_LOW = 0x00, LCD_CONTRAST_MEDIUM = 0x02, LCD_CONTRAST_HIGH = 0x08 } |
| enum | lib_display_js_states_t { JS_BUTTON_NONE = 0, JS_BUTTON_PUSH = 1, JS_BUTTON_LEFT = 2, JS_BUTTON_RIGHT = 3, JS_BUTTON_UP = 4, JS_BUTTON_DOWN = 5 } |
Functions | |
| void | lcd_init (void) |
| void | lcd_write_string (char *text, uint8_t line, uint8_t pos) |
| void | lcd_clear (void) |
| void | lcd_set_contrast (lib_nrf6350_lcd_contrast_t contrast) |
| void | lcd_set_instruction (uint8_t instr) |
| void | lcd_on (void) |
| void | lcd_off (void) |
| void | js_get_value (int8_t *val) |
| _Bool | js_button_pushed (void) |
| lib_display_js_states_t | js_get_status (void) |
Enum describing the contrast of lcd display.
Definition at line 41 of file lib_display.h.
{
LCD_CONTRAST_LOW = 0x00,
LCD_CONTRAST_MEDIUM = 0x02,
LCD_CONTRAST_HIGH = 0x08
} lib_nrf6350_lcd_contrast_t;
Enum describing the different states of the joystick.
| JS_BUTTON_NONE | |
| JS_BUTTON_PUSH | |
| JS_BUTTON_LEFT | |
| JS_BUTTON_RIGHT | |
| JS_BUTTON_UP | |
| JS_BUTTON_DOWN |
Definition at line 50 of file lib_display.h.
{
JS_BUTTON_NONE = 0,
JS_BUTTON_PUSH = 1,
JS_BUTTON_LEFT = 2,
JS_BUTTON_RIGHT = 3,
JS_BUTTON_UP = 4,
JS_BUTTON_DOWN = 5
} lib_display_js_states_t;
| void lcd_init | ( | void | ) |
Function to initialize the LCD display prior to writing.
Definition at line 35 of file lib_display.c.
{
hal_w2_configure_master(HAL_W2_400KHZ);
delay_us(100);
lcd_set_instruction(0x38); // Function set
lcd_set_instruction(0x39); // Choose two-line mode
lcd_set_instruction(0x14); // Internal OSC frequency
lcd_set_contrast(LCD_CONTRAST_HIGH); // Contrast set (low byte)
lcd_set_instruction(0x5F); // Power/ICON control/
// Contrast set (high byte)
lcd_set_instruction(0x6A); // Follower control
delay_ms(200);
lcd_on(); // Display ON
lcd_clear(); // Clear display
lcd_set_instruction(0x06); // Entry mode set
}
| void lcd_write_string | ( | char * | text, |
| uint8_t | line, | ||
| uint8_t | pos | ||
| ) |
Function for writing a text string on the LCD-display.
| *text | A pointer to the text string to be written |
| line | The line the text should be written to |
| pos | The start position of the text on the line |
Definition at line 54 of file lib_display.c.
{
char str[18];
uint8_t buffer[2];
uint8_t i;
if(line == 0)
{
line = 0x00; // Upper row of LCD display
}
else
{
line = 0x40; // Lower row of LCD display
}
if(pos > 15) pos = 16; // Write to visible positions
buffer[0] = FUNC_SET; // Enter function setting
buffer[1] = DDRAM_ADR + (pos + line); // LCD adr counter set to pos
hal_w2_write(LCD_ADDR, buffer, 2); // Write the settings to the
// LCD display
for(i=0;i<17;i++) // Save text in a new string
{ // with space for function
str[i+1] = text[i]; // setting
}
str[0] = DDRAM_WR; // Enter function setting
hal_w2_write(LCD_ADDR, (const uint8_t *)str, strlen(text) + 1); // Transmit string to LCD
}
| void lcd_clear | ( | void | ) |
This function clears the contents of the LCD-display.
Definition at line 83 of file lib_display.c.
{
uint8_t buffer[2];
delay_ms(10);
buffer[0] = FUNC_SET;
buffer[1] = 0x01; // Clear display
hal_w2_write(LCD_ADDR, buffer, 2);
delay_ms(10);
}
| void lcd_set_contrast | ( | lib_nrf6350_lcd_contrast_t | contrast ) |
This function adjust the contrast of the LCD-display, select between LCD_CONTRAST_LOW, LCD_CONTRAST_MEDIUM and LCD_CONTRAST_HIGH
| contrast | The desired contrast of the lcd display |
Definition at line 94 of file lib_display.c.
{
uint8_t buffer[2];
delay_ms(10);
buffer[0] = FUNC_SET;
buffer[1] = 0x70 | contrast; // Contrast set (low byte)
hal_w2_write(LCD_ADDR, buffer, 2);
delay_ms(10);
}
| void lcd_set_instruction | ( | uint8_t | instr ) |
This function writes instructions to the LCD display
| instr | The desired instruction |
Definition at line 105 of file lib_display.c.
{
uint8_t buffer[2];
delay_ms(10);
buffer[0] = FUNC_SET;
buffer[1] = instr; // Instr. set
hal_w2_write(LCD_ADDR, buffer, 2);
delay_ms(10);
}
| void lcd_on | ( | void | ) |
Function that turns ON the LCD-display
Definition at line 116 of file lib_display.c.
{
uint8_t buffer[2];
delay_ms(10);
buffer[0] = FUNC_SET;
buffer[1] = 0x0C; // Display ON
hal_w2_write(LCD_ADDR, &buffer[0], 2);
delay_ms(10);
}
| void lcd_off | ( | void | ) |
Function that turns OFF the LCD-display
Definition at line 127 of file lib_display.c.
{
uint8_t buffer[2];
delay_ms(10);
buffer[0] = FUNC_SET;
buffer[1] = 0x08; // Display OFF
hal_w2_write(LCD_ADDR, buffer, 2);
delay_ms(10);
}
| void js_get_value | ( | int8_t * | val ) |
This function gets the position of the joystick.
| val | pointer to a 2 byte array where the X,Y position is stored |
< The value of bit 0
< The value of bit 0
< The value of bit 4
< The value of bit 4
< The value of bit 2
< The value of bit 2
< The value of bit 3
< The value of bit 3
Definition at line 138 of file lib_display.c.
{
uint8_t js_data;
uint8_t rx_buffer[1];
hal_w2_read(JS_ADDR, rx_buffer, 1); // Get data from the joystick
js_data = (~rx_buffer[0] & 0x1D); // Select the useful bits
if((js_data & BIT_0) == BIT_0) // Check joystick position
{
val[X] = -1;
}
else if((js_data & BIT_4) == BIT_4)
{
val[X] = 1;
}
else
{
val[X] = 0;
}
if((js_data & BIT_2) == BIT_2)
{
val[Y] = 1;
}
else if((js_data & BIT_3) == BIT_3)
{
val[Y] = -1;
}
else
{
val[Y] = 0;
}
}
| _Bool js_button_pushed | ( | void | ) |
This function checks if the joystick is pushed down
< The value of bit 1
< The value of bit 1
Definition at line 173 of file lib_display.c.
{
uint8_t js_data;
uint8_t rx_buffer[1];
hal_w2_read(JS_ADDR, rx_buffer, 1); // Get data from the joystick
js_data = (~rx_buffer[0] & BIT_1); // Mask button bit
return (js_data == BIT_1); // Check if button is pushed
}
| lib_display_js_states_t js_get_status | ( | void | ) |
This function gets the status of the joystick
Definition at line 184 of file lib_display.c.
{
uint8_t js_data;
hal_w2_read(JS_ADDR, &js_data, 1); // Get data from the joystick
js_data = ~js_data;
if( js_data & 0x02 ) return JS_BUTTON_PUSH;
if( js_data & 0x01 ) return JS_BUTTON_LEFT;
if( js_data & 0x10 ) return JS_BUTTON_RIGHT;
if( js_data & 0x08 ) return JS_BUTTON_UP;
if( js_data & 0x04 ) return JS_BUTTON_DOWN;
return JS_BUTTON_NONE;
}
1.7.2