library for aqm0802

Dependents:   00_yotsuba 10_motor-test 00_yotsuba 200_yotsuba_21

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?

UserRevisionLine numberNew 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 }