#include #include #include "miosix.h" #include "interfaces/delays.h" #include "lcd44780.h" namespace miosix { Lcd44780::Lcd44780(miosix::GpioPin rs, miosix::GpioPin e, miosix::GpioPin d4, miosix::GpioPin d5, miosix::GpioPin d6, miosix::GpioPin d7, int row, int col) : rs(rs), e(e), d4(d4), d5(d5), d6(d6), d7(d7), row(row), col(col) { rs.mode(Mode::OUTPUT); e.mode(Mode::OUTPUT); d4.mode(Mode::OUTPUT); d5.mode(Mode::OUTPUT); d6.mode(Mode::OUTPUT); d7.mode(Mode::OUTPUT); e.low(); Thread::sleep(50); //Powerup delay init(); clear(); } void Lcd44780::go(int x, int y) { if(x<0 || x>=col || y<0 || y>=row) return; // 4x20 is implemented as 2x40. // TODO Test 4x16 display. if(y>1) { x += col; } comd(0x80 | ((y & 1) ? 0x40 : 0) | x); //Move cursor } int Lcd44780::printf(const char* fmt, ...) { va_list arg; char line[40]; va_start(arg,fmt); int len=vsnprintf(line,sizeof(line),fmt,arg); va_end(arg); for(int i=0;i