library for aqm0802
Dependents: 00_yotsuba 10_motor-test 00_yotsuba 200_yotsuba_21
aqm0802.cpp@1:ab257f9b56d2, 2020-12-12 (annotated)
- Committer:
- piroro4560
- Date:
- Sat Dec 12 05:06:17 2020 +0000
- Revision:
- 1:ab257f9b56d2
- Parent:
- 0:f86833c58a5f
mbed-os 6
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
piroro4560 | 0:f86833c58a5f | 1 | #include "aqm0802.h" |
piroro4560 | 0:f86833c58a5f | 2 | |
piroro4560 | 0:f86833c58a5f | 3 | aqm0802::aqm0802(PinName sda, PinName scl) |
piroro4560 | 0:f86833c58a5f | 4 | : i2c_(sda, scl) |
piroro4560 | 0:f86833c58a5f | 5 | { |
piroro4560 | 1:ab257f9b56d2 | 6 | thread_sleep_for(40); |
piroro4560 | 0:f86833c58a5f | 7 | // LCD initialize |
piroro4560 | 0:f86833c58a5f | 8 | cmd(0x39); // function set |
piroro4560 | 0:f86833c58a5f | 9 | cmd(0x14); // interval osc |
piroro4560 | 0:f86833c58a5f | 10 | cmd(0x70); // contrast Low |
piroro4560 | 0:f86833c58a5f | 11 | cmd(0x56); // contast High/icon/power |
piroro4560 | 0:f86833c58a5f | 12 | cmd(0x6C); // follower control |
piroro4560 | 1:ab257f9b56d2 | 13 | thread_sleep_for(200); |
piroro4560 | 0:f86833c58a5f | 14 | cmd(0x38); // function set |
piroro4560 | 0:f86833c58a5f | 15 | cmd(0x0C); // Display On |
piroro4560 | 0:f86833c58a5f | 16 | cmd(0x01); // Clear Display |
piroro4560 | 1:ab257f9b56d2 | 17 | thread_sleep_for(200); |
piroro4560 | 0:f86833c58a5f | 18 | } |
piroro4560 | 0:f86833c58a5f | 19 | |
piroro4560 | 0:f86833c58a5f | 20 | void aqm0802::cmd(char x) |
piroro4560 | 0:f86833c58a5f | 21 | { |
piroro4560 | 0:f86833c58a5f | 22 | char data[2]; |
piroro4560 | 0:f86833c58a5f | 23 | data[0] = 0x00; // CO = 0,RS = 0 |
piroro4560 | 0:f86833c58a5f | 24 | data[1] = x; |
piroro4560 | 0:f86833c58a5f | 25 | i2c_.write(AQCM0802_addr, data, 2); |
piroro4560 | 0:f86833c58a5f | 26 | } |
piroro4560 | 0:f86833c58a5f | 27 | |
piroro4560 | 0:f86833c58a5f | 28 | void aqm0802::contdata(char x) |
piroro4560 | 0:f86833c58a5f | 29 | { |
piroro4560 | 0:f86833c58a5f | 30 | char data[2]; |
piroro4560 | 0:f86833c58a5f | 31 | data[0] = 0xC0; //0b11000000 CO = 1, RS = 1 |
piroro4560 | 0:f86833c58a5f | 32 | data[1] = x; |
piroro4560 | 0:f86833c58a5f | 33 | i2c_.write(AQCM0802_addr, data, 2); |
piroro4560 | 0:f86833c58a5f | 34 | } |
piroro4560 | 0:f86833c58a5f | 35 | |
piroro4560 | 0:f86833c58a5f | 36 | void aqm0802::lastdata(char x) |
piroro4560 | 0:f86833c58a5f | 37 | { |
piroro4560 | 0:f86833c58a5f | 38 | char data[2]; |
piroro4560 | 0:f86833c58a5f | 39 | data[0] = 0x40; //0b11000000 CO = 0, RS = 1 |
piroro4560 | 0:f86833c58a5f | 40 | data[1] = x; |
piroro4560 | 0:f86833c58a5f | 41 | i2c_.write(AQCM0802_addr, data, 2); |
piroro4560 | 0:f86833c58a5f | 42 | } |
piroro4560 | 0:f86833c58a5f | 43 | |
piroro4560 | 0:f86833c58a5f | 44 | void aqm0802::print(const char *s) |
piroro4560 | 0:f86833c58a5f | 45 | { |
piroro4560 | 0:f86833c58a5f | 46 | while(*s) { |
piroro4560 | 0:f86833c58a5f | 47 | if (*(s + 1)) { |
piroro4560 | 0:f86833c58a5f | 48 | contdata(*s); |
piroro4560 | 0:f86833c58a5f | 49 | } else { |
piroro4560 | 0:f86833c58a5f | 50 | lastdata(*s); |
piroro4560 | 0:f86833c58a5f | 51 | } |
piroro4560 | 0:f86833c58a5f | 52 | s++; |
piroro4560 | 0:f86833c58a5f | 53 | } |
piroro4560 | 0:f86833c58a5f | 54 | } |
piroro4560 | 0:f86833c58a5f | 55 | |
piroro4560 | 0:f86833c58a5f | 56 | void aqm0802::print(int num) |
piroro4560 | 0:f86833c58a5f | 57 | { |
piroro4560 | 0:f86833c58a5f | 58 | char itoa[8]; |
piroro4560 | 0:f86833c58a5f | 59 | sprintf(itoa, "%d", num); |
piroro4560 | 0:f86833c58a5f | 60 | print(itoa); |
piroro4560 | 0:f86833c58a5f | 61 | } |
piroro4560 | 0:f86833c58a5f | 62 | |
piroro4560 | 0:f86833c58a5f | 63 | void aqm0802::setCursor(uint8_t x,uint8_t y) |
piroro4560 | 0:f86833c58a5f | 64 | { |
piroro4560 | 0:f86833c58a5f | 65 | cmd(0x80 | (y*0x40 + x)); |
piroro4560 | 0:f86833c58a5f | 66 | } |
piroro4560 | 0:f86833c58a5f | 67 | |
piroro4560 | 0:f86833c58a5f | 68 | void aqm0802::setCG(int src,int dst,int len) |
piroro4560 | 0:f86833c58a5f | 69 | { |
piroro4560 | 0:f86833c58a5f | 70 | cmd(0x38); |
piroro4560 | 0:f86833c58a5f | 71 | cmd(0x40 + dst); |
piroro4560 | 0:f86833c58a5f | 72 | |
piroro4560 | 0:f86833c58a5f | 73 | for (int i = 0;i < len;i++) contdata(cg[src + i] * (src>=0)); |
piroro4560 | 0:f86833c58a5f | 74 | } |
piroro4560 | 0:f86833c58a5f | 75 | |
piroro4560 | 0:f86833c58a5f | 76 | void aqm0802::setContrast(uint8_t c) |
piroro4560 | 0:f86833c58a5f | 77 | { |
piroro4560 | 0:f86833c58a5f | 78 | cmd(0x39); |
piroro4560 | 0:f86833c58a5f | 79 | cmd(0x70 | (c & 0x0f)); // contrast Low |
piroro4560 | 0:f86833c58a5f | 80 | cmd(0x5C | ((c >> 4) & 0x03)); // contast High/icon/power |
piroro4560 | 0:f86833c58a5f | 81 | cmd(0x38); |
piroro4560 | 0:f86833c58a5f | 82 | } |
piroro4560 | 0:f86833c58a5f | 83 | |
piroro4560 | 0:f86833c58a5f | 84 | void aqm0802::clear() |
piroro4560 | 0:f86833c58a5f | 85 | { |
piroro4560 | 0:f86833c58a5f | 86 | cmd(0x01); |
piroro4560 | 0:f86833c58a5f | 87 | } |