nlgplay for mbed
Dependencies: SDFileSystemEx mbed
lcd.cpp@7:7e183b33c3f9, 2014-08-18 (annotated)
- Committer:
- bkc_mbed
- Date:
- Mon Aug 18 22:32:46 2014 +0000
- Revision:
- 7:7e183b33c3f9
- Parent:
- 1:ec416e6d5739
- Child:
- 8:88c89fd324bd
NBV3 support
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 | I2C i2c(dp5, dp27); // sda, scl |
bkc_mbed | 0:2053640461b5 | 4 | |
bkc_mbed | 0:2053640461b5 | 5 | const int AQM0802_addr = 0x7C; |
bkc_mbed | 0:2053640461b5 | 6 | |
bkc_mbed | 0:2053640461b5 | 7 | void lcd_cmd(char x) |
bkc_mbed | 0:2053640461b5 | 8 | { |
bkc_mbed | 0:2053640461b5 | 9 | char data[2]; |
bkc_mbed | 0:2053640461b5 | 10 | data[0] = 0x00; // CO = 0,RS = 0 |
bkc_mbed | 0:2053640461b5 | 11 | data[1] = x; |
bkc_mbed | 0:2053640461b5 | 12 | i2c.write(AQM0802_addr, data, 2); |
bkc_mbed | 0:2053640461b5 | 13 | } |
bkc_mbed | 0:2053640461b5 | 14 | |
bkc_mbed | 0:2053640461b5 | 15 | void lcd_contdata(char x) |
bkc_mbed | 0:2053640461b5 | 16 | { |
bkc_mbed | 0:2053640461b5 | 17 | char data[2]; |
bkc_mbed | 0:2053640461b5 | 18 | data[0] = 0xC0; //0b11000000 CO = 1, RS = 1 |
bkc_mbed | 0:2053640461b5 | 19 | data[1] = x; |
bkc_mbed | 0:2053640461b5 | 20 | i2c.write(AQM0802_addr, data, 2); |
bkc_mbed | 0:2053640461b5 | 21 | } |
bkc_mbed | 0:2053640461b5 | 22 | |
bkc_mbed | 0:2053640461b5 | 23 | void lcd_lastdata(char x) |
bkc_mbed | 0:2053640461b5 | 24 | { |
bkc_mbed | 0:2053640461b5 | 25 | char data[2]; |
bkc_mbed | 0:2053640461b5 | 26 | data[0] = 0x40; //0b11000000 CO = 0, RS = 1 |
bkc_mbed | 0:2053640461b5 | 27 | data[1] = x; |
bkc_mbed | 0:2053640461b5 | 28 | i2c.write(AQM0802_addr, data, 2); |
bkc_mbed | 0:2053640461b5 | 29 | } |
bkc_mbed | 0:2053640461b5 | 30 | |
bkc_mbed | 7:7e183b33c3f9 | 31 | void lcd_printStrFill(const char *s) |
bkc_mbed | 7:7e183b33c3f9 | 32 | { |
bkc_mbed | 7:7e183b33c3f9 | 33 | int idx = 0; |
bkc_mbed | 7:7e183b33c3f9 | 34 | for(idx = 0; idx < 8; idx++) |
bkc_mbed | 7:7e183b33c3f9 | 35 | { |
bkc_mbed | 7:7e183b33c3f9 | 36 | if(idx < 7) { |
bkc_mbed | 7:7e183b33c3f9 | 37 | lcd_contdata(*s); |
bkc_mbed | 7:7e183b33c3f9 | 38 | } else { |
bkc_mbed | 7:7e183b33c3f9 | 39 | lcd_lastdata(*s); |
bkc_mbed | 7:7e183b33c3f9 | 40 | } |
bkc_mbed | 7:7e183b33c3f9 | 41 | if (*s) s++; |
bkc_mbed | 7:7e183b33c3f9 | 42 | } |
bkc_mbed | 7:7e183b33c3f9 | 43 | } |
bkc_mbed | 7:7e183b33c3f9 | 44 | |
bkc_mbed | 7:7e183b33c3f9 | 45 | |
bkc_mbed | 0:2053640461b5 | 46 | void lcd_printStr(const char *s) |
bkc_mbed | 0:2053640461b5 | 47 | { |
bkc_mbed | 1:ec416e6d5739 | 48 | int idx = 0; |
bkc_mbed | 1:ec416e6d5739 | 49 | while(*s && idx < 8) { |
bkc_mbed | 0:2053640461b5 | 50 | if(*(s + 1)) { |
bkc_mbed | 0:2053640461b5 | 51 | lcd_contdata(*s); |
bkc_mbed | 0:2053640461b5 | 52 | } else { |
bkc_mbed | 0:2053640461b5 | 53 | lcd_lastdata(*s); |
bkc_mbed | 0:2053640461b5 | 54 | } |
bkc_mbed | 0:2053640461b5 | 55 | s++; |
bkc_mbed | 1:ec416e6d5739 | 56 | idx++; |
bkc_mbed | 0:2053640461b5 | 57 | } |
bkc_mbed | 0:2053640461b5 | 58 | } |
bkc_mbed | 0:2053640461b5 | 59 | |
bkc_mbed | 0:2053640461b5 | 60 | void lcd_setContrast(unsigned char c) { |
bkc_mbed | 0:2053640461b5 | 61 | lcd_cmd(0x39); |
bkc_mbed | 0:2053640461b5 | 62 | lcd_cmd(0x70 | (c & 0x0f)); // contrast Low |
bkc_mbed | 0:2053640461b5 | 63 | lcd_cmd(0x5C | ((c >> 4) & 0x03)); // contast High/icon/power |
bkc_mbed | 0:2053640461b5 | 64 | lcd_cmd(0x38); |
bkc_mbed | 0:2053640461b5 | 65 | } |
bkc_mbed | 0:2053640461b5 | 66 | |
bkc_mbed | 0:2053640461b5 | 67 | void lcd_printHex(unsigned char num) |
bkc_mbed | 0:2053640461b5 | 68 | { |
bkc_mbed | 0:2053640461b5 | 69 | lcd_contdata(num); |
bkc_mbed | 0:2053640461b5 | 70 | } |
bkc_mbed | 0:2053640461b5 | 71 | |
bkc_mbed | 0:2053640461b5 | 72 | void lcd_init() { |
bkc_mbed | 0:2053640461b5 | 73 | int cont = 0; |
bkc_mbed | 0:2053640461b5 | 74 | wait(0.04); |
bkc_mbed | 0:2053640461b5 | 75 | // LCD initialize |
bkc_mbed | 0:2053640461b5 | 76 | lcd_cmd(0x38); // function set |
bkc_mbed | 0:2053640461b5 | 77 | lcd_cmd(0x39); // function set |
bkc_mbed | 0:2053640461b5 | 78 | lcd_cmd(0x04); // EntryModeSet |
bkc_mbed | 0:2053640461b5 | 79 | lcd_cmd(0x14); // interval osc |
bkc_mbed | 0:2053640461b5 | 80 | lcd_cmd(0x70 | (cont & 0xF)); // contrast Low |
bkc_mbed | 0:2053640461b5 | 81 | lcd_cmd(0x5C | ((cont >> 4) & 0x3)); // contast High/icon/power |
bkc_mbed | 0:2053640461b5 | 82 | lcd_cmd(0x6C); // follower control |
bkc_mbed | 0:2053640461b5 | 83 | wait(0.2); |
bkc_mbed | 0:2053640461b5 | 84 | lcd_cmd(0x38); // function set |
bkc_mbed | 0:2053640461b5 | 85 | lcd_cmd(0x0C); // Display On |
bkc_mbed | 0:2053640461b5 | 86 | lcd_cmd(0x01); // Clear Display |
bkc_mbed | 0:2053640461b5 | 87 | wait(0.2); // need additional wait to Clear Display |
bkc_mbed | 0:2053640461b5 | 88 | |
bkc_mbed | 0:2053640461b5 | 89 | lcd_setContrast(36); |
bkc_mbed | 0:2053640461b5 | 90 | |
bkc_mbed | 0:2053640461b5 | 91 | } |
bkc_mbed | 0:2053640461b5 | 92 | |
bkc_mbed | 0:2053640461b5 | 93 | void lcd_setCursor(unsigned char x,unsigned char y) { |
bkc_mbed | 0:2053640461b5 | 94 | lcd_cmd(0x80 | (y * 0x40 + x)); |
bkc_mbed | 0:2053640461b5 | 95 | } |
bkc_mbed | 0:2053640461b5 | 96 | |
bkc_mbed | 1:ec416e6d5739 | 97 | |
bkc_mbed | 1:ec416e6d5739 | 98 | void lcd_printStrY(int y,const char *s) |
bkc_mbed | 1:ec416e6d5739 | 99 | { |
bkc_mbed | 7:7e183b33c3f9 | 100 | lcd_setCursor(0, y); |
bkc_mbed | 7:7e183b33c3f9 | 101 | lcd_printStrFill(s); |
bkc_mbed | 1:ec416e6d5739 | 102 | } |
bkc_mbed | 1:ec416e6d5739 | 103 | |
bkc_mbed | 1:ec416e6d5739 | 104 | void lcd_printStrYscr(int y,const char *s) |
bkc_mbed | 1:ec416e6d5739 | 105 | { |
bkc_mbed | 1:ec416e6d5739 | 106 | int cnt = strlen(s) - 7; |
bkc_mbed | 1:ec416e6d5739 | 107 | if (cnt <= 0) |
bkc_mbed | 1:ec416e6d5739 | 108 | cnt = 1; |
bkc_mbed | 1:ec416e6d5739 | 109 | |
bkc_mbed | 1:ec416e6d5739 | 110 | for(int i = 0; i < cnt; i++) |
bkc_mbed | 1:ec416e6d5739 | 111 | { |
bkc_mbed | 1:ec416e6d5739 | 112 | lcd_setCursor(0, y); |
bkc_mbed | 1:ec416e6d5739 | 113 | lcd_printStr(s + i); |
bkc_mbed | 1:ec416e6d5739 | 114 | wait(0.5); |
bkc_mbed | 1:ec416e6d5739 | 115 | } |
bkc_mbed | 1:ec416e6d5739 | 116 | } |
bkc_mbed | 1:ec416e6d5739 | 117 | |
bkc_mbed | 1:ec416e6d5739 | 118 | |
bkc_mbed | 1:ec416e6d5739 | 119 | void lcd_printStr2(const char *s, const char *s2) |
bkc_mbed | 1:ec416e6d5739 | 120 | { |
bkc_mbed | 1:ec416e6d5739 | 121 | lcd_setCursor(0,0); |
bkc_mbed | 7:7e183b33c3f9 | 122 | lcd_printStrFill(s); |
bkc_mbed | 1:ec416e6d5739 | 123 | lcd_setCursor(0,1); |
bkc_mbed | 7:7e183b33c3f9 | 124 | lcd_printStrFill(s2); |
bkc_mbed | 1:ec416e6d5739 | 125 | } |
bkc_mbed | 1:ec416e6d5739 | 126 | |
bkc_mbed | 0:2053640461b5 | 127 | void lcd_cls(void) |
bkc_mbed | 0:2053640461b5 | 128 | { |
bkc_mbed | 0:2053640461b5 | 129 | lcd_setCursor(0, 0); |
bkc_mbed | 7:7e183b33c3f9 | 130 | lcd_printStrFill(""); |
bkc_mbed | 0:2053640461b5 | 131 | lcd_setCursor(0, 1); |
bkc_mbed | 7:7e183b33c3f9 | 132 | lcd_printStrFill(""); |
bkc_mbed | 0:2053640461b5 | 133 | } |
bkc_mbed | 0:2053640461b5 | 134 |