library for aqm0802
Dependents: 00_yotsuba 10_motor-test 00_yotsuba 200_yotsuba_21
aqm0802.cpp
- Committer:
- piroro4560
- Date:
- 2020-12-12
- Revision:
- 1:ab257f9b56d2
- Parent:
- 0:f86833c58a5f
File content as of revision 1:ab257f9b56d2:
#include "aqm0802.h" aqm0802::aqm0802(PinName sda, PinName scl) : i2c_(sda, scl) { thread_sleep_for(40); // LCD initialize cmd(0x39); // function set cmd(0x14); // interval osc cmd(0x70); // contrast Low cmd(0x56); // contast High/icon/power cmd(0x6C); // follower control thread_sleep_for(200); cmd(0x38); // function set cmd(0x0C); // Display On cmd(0x01); // Clear Display thread_sleep_for(200); } void aqm0802::cmd(char x) { char data[2]; data[0] = 0x00; // CO = 0,RS = 0 data[1] = x; i2c_.write(AQCM0802_addr, data, 2); } void aqm0802::contdata(char x) { char data[2]; data[0] = 0xC0; //0b11000000 CO = 1, RS = 1 data[1] = x; i2c_.write(AQCM0802_addr, data, 2); } void aqm0802::lastdata(char x) { char data[2]; data[0] = 0x40; //0b11000000 CO = 0, RS = 1 data[1] = x; i2c_.write(AQCM0802_addr, data, 2); } void aqm0802::print(const char *s) { while(*s) { if (*(s + 1)) { contdata(*s); } else { lastdata(*s); } s++; } } void aqm0802::print(int num) { char itoa[8]; sprintf(itoa, "%d", num); print(itoa); } void aqm0802::setCursor(uint8_t x,uint8_t y) { cmd(0x80 | (y*0x40 + x)); } void aqm0802::setCG(int src,int dst,int len) { cmd(0x38); cmd(0x40 + dst); for (int i = 0;i < len;i++) contdata(cg[src + i] * (src>=0)); } void aqm0802::setContrast(uint8_t c) { cmd(0x39); cmd(0x70 | (c & 0x0f)); // contrast Low cmd(0x5C | ((c >> 4) & 0x03)); // contast High/icon/power cmd(0x38); } void aqm0802::clear() { cmd(0x01); }