nlgplay for mbed
Dependencies: SDFileSystemEx mbed
Diff: lcd.cpp
- Revision:
- 0:2053640461b5
- Child:
- 1:ec416e6d5739
diff -r 000000000000 -r 2053640461b5 lcd.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lcd.cpp Sat May 17 12:54:13 2014 +0000 @@ -0,0 +1,88 @@ +#include "mbed.h" + + +I2C i2c(dp5, dp27); // sda, scl + +const int AQM0802_addr = 0x7C; + +void lcd_cmd(char x) +{ + char data[2]; + data[0] = 0x00; // CO = 0,RS = 0 + data[1] = x; + i2c.write(AQM0802_addr, data, 2); +} + +void lcd_contdata(char x) +{ + char data[2]; + data[0] = 0xC0; //0b11000000 CO = 1, RS = 1 + data[1] = x; + i2c.write(AQM0802_addr, data, 2); +} + +void lcd_lastdata(char x) +{ + char data[2]; + data[0] = 0x40; //0b11000000 CO = 0, RS = 1 + data[1] = x; + i2c.write(AQM0802_addr, data, 2); +} + +void lcd_printStr(const char *s) +{ + while(*s) { + if(*(s + 1)) { + lcd_contdata(*s); + } else { + lcd_lastdata(*s); + } + s++; + } +} + +void lcd_setContrast(unsigned char c) { + lcd_cmd(0x39); + lcd_cmd(0x70 | (c & 0x0f)); // contrast Low + lcd_cmd(0x5C | ((c >> 4) & 0x03)); // contast High/icon/power + lcd_cmd(0x38); +} + +void lcd_printHex(unsigned char num) +{ + lcd_contdata(num); +} + +void lcd_init() { + int cont = 0; + wait(0.04); + // LCD initialize + lcd_cmd(0x38); // function set + lcd_cmd(0x39); // function set + lcd_cmd(0x04); // EntryModeSet + lcd_cmd(0x14); // interval osc + lcd_cmd(0x70 | (cont & 0xF)); // contrast Low + lcd_cmd(0x5C | ((cont >> 4) & 0x3)); // contast High/icon/power + lcd_cmd(0x6C); // follower control + wait(0.2); + lcd_cmd(0x38); // function set + lcd_cmd(0x0C); // Display On + lcd_cmd(0x01); // Clear Display + wait(0.2); // need additional wait to Clear Display + + lcd_setContrast(36); + +} + +void lcd_setCursor(unsigned char x,unsigned char y) { + lcd_cmd(0x80 | (y * 0x40 + x)); +} + +void lcd_cls(void) +{ + lcd_setCursor(0, 0); + lcd_printStr(" "); + lcd_setCursor(0, 1); + lcd_printStr(" "); +} +