nlgplay for mbed
Dependencies: SDFileSystemEx mbed
lcd.cpp@0:2053640461b5, 2014-05-17 (annotated)
- Committer:
- bkc_mbed
- Date:
- Sat May 17 12:54:13 2014 +0000
- Revision:
- 0:2053640461b5
- Child:
- 1:ec416e6d5739
first version.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
bkc_mbed | 0:2053640461b5 | 1 | #include "mbed.h" |
bkc_mbed | 0:2053640461b5 | 2 | |
bkc_mbed | 0:2053640461b5 | 3 | |
bkc_mbed | 0:2053640461b5 | 4 | I2C i2c(dp5, dp27); // sda, scl |
bkc_mbed | 0:2053640461b5 | 5 | |
bkc_mbed | 0:2053640461b5 | 6 | const int AQM0802_addr = 0x7C; |
bkc_mbed | 0:2053640461b5 | 7 | |
bkc_mbed | 0:2053640461b5 | 8 | void lcd_cmd(char x) |
bkc_mbed | 0:2053640461b5 | 9 | { |
bkc_mbed | 0:2053640461b5 | 10 | char data[2]; |
bkc_mbed | 0:2053640461b5 | 11 | data[0] = 0x00; // CO = 0,RS = 0 |
bkc_mbed | 0:2053640461b5 | 12 | data[1] = x; |
bkc_mbed | 0:2053640461b5 | 13 | i2c.write(AQM0802_addr, data, 2); |
bkc_mbed | 0:2053640461b5 | 14 | } |
bkc_mbed | 0:2053640461b5 | 15 | |
bkc_mbed | 0:2053640461b5 | 16 | void lcd_contdata(char x) |
bkc_mbed | 0:2053640461b5 | 17 | { |
bkc_mbed | 0:2053640461b5 | 18 | char data[2]; |
bkc_mbed | 0:2053640461b5 | 19 | data[0] = 0xC0; //0b11000000 CO = 1, RS = 1 |
bkc_mbed | 0:2053640461b5 | 20 | data[1] = x; |
bkc_mbed | 0:2053640461b5 | 21 | i2c.write(AQM0802_addr, data, 2); |
bkc_mbed | 0:2053640461b5 | 22 | } |
bkc_mbed | 0:2053640461b5 | 23 | |
bkc_mbed | 0:2053640461b5 | 24 | void lcd_lastdata(char x) |
bkc_mbed | 0:2053640461b5 | 25 | { |
bkc_mbed | 0:2053640461b5 | 26 | char data[2]; |
bkc_mbed | 0:2053640461b5 | 27 | data[0] = 0x40; //0b11000000 CO = 0, RS = 1 |
bkc_mbed | 0:2053640461b5 | 28 | data[1] = x; |
bkc_mbed | 0:2053640461b5 | 29 | i2c.write(AQM0802_addr, data, 2); |
bkc_mbed | 0:2053640461b5 | 30 | } |
bkc_mbed | 0:2053640461b5 | 31 | |
bkc_mbed | 0:2053640461b5 | 32 | void lcd_printStr(const char *s) |
bkc_mbed | 0:2053640461b5 | 33 | { |
bkc_mbed | 0:2053640461b5 | 34 | while(*s) { |
bkc_mbed | 0:2053640461b5 | 35 | if(*(s + 1)) { |
bkc_mbed | 0:2053640461b5 | 36 | lcd_contdata(*s); |
bkc_mbed | 0:2053640461b5 | 37 | } else { |
bkc_mbed | 0:2053640461b5 | 38 | lcd_lastdata(*s); |
bkc_mbed | 0:2053640461b5 | 39 | } |
bkc_mbed | 0:2053640461b5 | 40 | s++; |
bkc_mbed | 0:2053640461b5 | 41 | } |
bkc_mbed | 0:2053640461b5 | 42 | } |
bkc_mbed | 0:2053640461b5 | 43 | |
bkc_mbed | 0:2053640461b5 | 44 | void lcd_setContrast(unsigned char c) { |
bkc_mbed | 0:2053640461b5 | 45 | lcd_cmd(0x39); |
bkc_mbed | 0:2053640461b5 | 46 | lcd_cmd(0x70 | (c & 0x0f)); // contrast Low |
bkc_mbed | 0:2053640461b5 | 47 | lcd_cmd(0x5C | ((c >> 4) & 0x03)); // contast High/icon/power |
bkc_mbed | 0:2053640461b5 | 48 | lcd_cmd(0x38); |
bkc_mbed | 0:2053640461b5 | 49 | } |
bkc_mbed | 0:2053640461b5 | 50 | |
bkc_mbed | 0:2053640461b5 | 51 | void lcd_printHex(unsigned char num) |
bkc_mbed | 0:2053640461b5 | 52 | { |
bkc_mbed | 0:2053640461b5 | 53 | lcd_contdata(num); |
bkc_mbed | 0:2053640461b5 | 54 | } |
bkc_mbed | 0:2053640461b5 | 55 | |
bkc_mbed | 0:2053640461b5 | 56 | void lcd_init() { |
bkc_mbed | 0:2053640461b5 | 57 | int cont = 0; |
bkc_mbed | 0:2053640461b5 | 58 | wait(0.04); |
bkc_mbed | 0:2053640461b5 | 59 | // LCD initialize |
bkc_mbed | 0:2053640461b5 | 60 | lcd_cmd(0x38); // function set |
bkc_mbed | 0:2053640461b5 | 61 | lcd_cmd(0x39); // function set |
bkc_mbed | 0:2053640461b5 | 62 | lcd_cmd(0x04); // EntryModeSet |
bkc_mbed | 0:2053640461b5 | 63 | lcd_cmd(0x14); // interval osc |
bkc_mbed | 0:2053640461b5 | 64 | lcd_cmd(0x70 | (cont & 0xF)); // contrast Low |
bkc_mbed | 0:2053640461b5 | 65 | lcd_cmd(0x5C | ((cont >> 4) & 0x3)); // contast High/icon/power |
bkc_mbed | 0:2053640461b5 | 66 | lcd_cmd(0x6C); // follower control |
bkc_mbed | 0:2053640461b5 | 67 | wait(0.2); |
bkc_mbed | 0:2053640461b5 | 68 | lcd_cmd(0x38); // function set |
bkc_mbed | 0:2053640461b5 | 69 | lcd_cmd(0x0C); // Display On |
bkc_mbed | 0:2053640461b5 | 70 | lcd_cmd(0x01); // Clear Display |
bkc_mbed | 0:2053640461b5 | 71 | wait(0.2); // need additional wait to Clear Display |
bkc_mbed | 0:2053640461b5 | 72 | |
bkc_mbed | 0:2053640461b5 | 73 | lcd_setContrast(36); |
bkc_mbed | 0:2053640461b5 | 74 | |
bkc_mbed | 0:2053640461b5 | 75 | } |
bkc_mbed | 0:2053640461b5 | 76 | |
bkc_mbed | 0:2053640461b5 | 77 | void lcd_setCursor(unsigned char x,unsigned char y) { |
bkc_mbed | 0:2053640461b5 | 78 | lcd_cmd(0x80 | (y * 0x40 + x)); |
bkc_mbed | 0:2053640461b5 | 79 | } |
bkc_mbed | 0:2053640461b5 | 80 | |
bkc_mbed | 0:2053640461b5 | 81 | void lcd_cls(void) |
bkc_mbed | 0:2053640461b5 | 82 | { |
bkc_mbed | 0:2053640461b5 | 83 | lcd_setCursor(0, 0); |
bkc_mbed | 0:2053640461b5 | 84 | lcd_printStr(" "); |
bkc_mbed | 0:2053640461b5 | 85 | lcd_setCursor(0, 1); |
bkc_mbed | 0:2053640461b5 | 86 | lcd_printStr(" "); |
bkc_mbed | 0:2053640461b5 | 87 | } |
bkc_mbed | 0:2053640461b5 | 88 |