lib_LCD_oem http://www.lextronic.fr/P764-afficheur-4-x-20-caracteres-retro-eclaire-vert.html YSI
Dependents: lib_LCD_oem_example libs_YSI_example TP3exo1
lib_LCD_oem_ELCD.cpp
- Committer:
- YSI
- Date:
- 2017-06-06
- Revision:
- 6:02f5e2861a9b
- Parent:
- 5:291652c14402
File content as of revision 6:02f5e2861a9b:
/** LCD oem ELCD class
*
* @purpose library for oem ELCD
*
* Utilisée pour écrire sur l'afficheur oem ELCD 4x20.
*
* http://www.lextronic.fr/P764-afficheur-4-x-20-caracteres-retro-eclaire-vert.html
*
* Copyright (c) 2014, cstyles (http://mbed.org)
*
* Exemple:
* @code
* #include "mbed.h"
* #include "lib_LCD_oem_ELCD.h"
*
* LCD_OEM LCD;
* //LCD_OEM LCD(p13); //Tx
*
* int main()
* {
* while(1)
* {
* for(int i = 0; i < 9999; i++)
* {
* LCD.clear();
* LCD.print(i);
* wait(0.25);
* }
* }
* }
* @endcode
* @file lib_LCD_oem_ELDC.cpp
* @date Jan 2014
* @author Yannic Simon
*/
#include "lib_LCD_oem_ELCD.h"
#define lcd_soft_boot 0xA0
#define lcd_cursor_pos 0xA1
#define lcd_display 0xA2
#define lcd_cursor 0xA3
#define lcd_redef_print 0xA4
#define lcd_redef 0xA5
LCD_OEM::LCD_OEM(PinName pin_tx) : Serial(pin_tx, NC)
{
init();
clear();
}
void LCD_OEM::init(void)
{
LCD_OEM::baud(19200);
LCD_OEM::putc(lcd_soft_boot);
wait_ms(50);
}
void LCD_OEM::clear(void)
{
LCD_OEM::printf("%c%c", lcd_cursor, 0x01);
X_position_cursor = 0;
Y_position_cursor = 0;
wait_ms(2);
}
void LCD_OEM::turn_off_cursor(void)
{
LCD_OEM::printf("%c%c", lcd_cursor, 0x0C);
}
void LCD_OEM::turn_on_cursor(void)
{
LCD_OEM::printf("%c%c", lcd_cursor, 0x0E);
}
void LCD_OEM::shift_line_cursor(void)
{
if(Y_position_cursor < 3) Y_position_cursor++;
LCD_OEM::printf("%c%c%c", lcd_cursor_pos, 0, Y_position_cursor);
}
void LCD_OEM::set_position_cursor(int X)
{
if(X < 0) X = 0;
else if(X > 19) X = 19;
X_position_cursor = X;
LCD_OEM::printf("%c%c%c", lcd_cursor_pos, X_position_cursor, Y_position_cursor);
}
void LCD_OEM::set_position_cursor(int X, int Y)
{
if(X < 0) X = 0;
else if(X > 19) X = 19;
if(Y < 0) Y = 0;
else if(Y > 3) Y = 3;
X_position_cursor = X;
Y_position_cursor = Y;
LCD_OEM::printf("%c%c%c", lcd_cursor_pos, X_position_cursor, Y_position_cursor);
}
void LCD_OEM::X_move_position(int n)
{
X_position_cursor += n;
while(X_position_cursor > 19)
{
X_position_cursor -= 20;
Y_position_cursor += 2;
if(Y_position_cursor > 4) Y_position_cursor -= Y_position_cursor;
else if(Y_position_cursor == 4) Y_position_cursor = 1;
}
}
int LCD_OEM::get_X_position_cursor(void)
{
return X_position_cursor;
}
int LCD_OEM::get_Y_position_cursor(void)
{
return Y_position_cursor;
}
void LCD_OEM::define_and_print_caractere(char c, char l1, char l2, char l3, char l4, char l5, char l6, char l7, char l8)
{
print((char)c);
define_caractere(c, l1, l2, l3, l4, l5, l6, l7, l8);
}
void LCD_OEM::define_caractere(char c, char l1, char l2, char l3, char l4, char l5, char l6, char l7, char l8)
{
char data[]={lcd_redef,c,l1,l2,l3,l4,l5,l6,l7,l8};
if(c > 7 && c < 16)
{
for(int i=0;i<10;i++)
{
LCD_OEM::putc(data[i]);
wait_ms(1);
}
}
set_position_cursor(X_position_cursor, Y_position_cursor);
}
int LCD_OEM::print(char c)
{
int n = LCD_OEM::printf("%c%c%c", lcd_display, c, 0) - 2;
X_move_position(n);
return n;
}
int LCD_OEM::print(short nb)
{
int n = LCD_OEM::printf("%c%d%c", lcd_display, nb, 0) - 2;
X_move_position(n);
return n;
}
int LCD_OEM::print(unsigned short nb)
{
int n = LCD_OEM::printf("%c%u%c", lcd_display, nb, 0) - 2;
X_move_position(n);
return n;
}
int LCD_OEM::print(int nb)
{
int n = LCD_OEM::printf("%c%d%c", lcd_display, nb, 0) - 2;
X_move_position(n);
return n;
}
int LCD_OEM::print(unsigned int nb)
{
int n = LCD_OEM::printf("%c%u%c", lcd_display, nb, 0) - 2;
X_move_position(n);
return n;
}
int LCD_OEM::print(long long nb)
{
int n = LCD_OEM::printf("%c%lld%c", lcd_display, nb, 0) - 2;
X_move_position(n);
return n;
}
int LCD_OEM::print(unsigned long long nb)
{
int n = LCD_OEM::printf("%c%llu%c", lcd_display, nb, 0) - 2;
X_move_position(n);
return n;
}
int LCD_OEM::print(float nb)
{
int n = LCD_OEM::printf("%c%f%c", lcd_display, nb, 0) - 2;
X_move_position(n);
return n;
}
int LCD_OEM::print(double nb)
{
int n = LCD_OEM::printf("%c%lf%c", lcd_display, nb, 0) - 2;
X_move_position(n);
return n;
}
int LCD_OEM::print(char *s)
{
int n = LCD_OEM::printf("%c%s%c", lcd_display, s, 0) - 2;
X_move_position(n);
return n;
}
int LCD_OEM::print(const char *format, ... )
{
char buffer[256]={0x00};
va_list args;
va_start(args, format);
vsnprintf(buffer,256,format,args);
va_end(args);
int n = LCD_OEM::printf("%c%s%c", lcd_display, buffer, 0) - 2;
X_move_position(n);
return n;
}
void LCD_OEM::putnc(char *s, int n)
{
for(int i = 0; i < n; i++)
{
LCD_OEM::putc(s[i]);
}
X_move_position(n);
}
Y SI