AQM0802 library

Dependents:   mbed_EEPROM mbed_UV mbed_DEMO mbed_LPS25H ... more

See https://mbed.org/users/yasuyuki/notebook/AQM0802/

Committer:
yasuyuki
Date:
Tue Jun 24 08:40:21 2014 +0000
Revision:
0:6fa303916aa8
first revision

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yasuyuki 0:6fa303916aa8 1 //**********************
yasuyuki 0:6fa303916aa8 2 // AQM0802.cpp for mbed
yasuyuki 0:6fa303916aa8 3 //
yasuyuki 0:6fa303916aa8 4 // AQM0802 lcd(P0_5,P0_4);
yasuyuki 0:6fa303916aa8 5 // or
yasuyuki 0:6fa303916aa8 6 // I2C i2c(P0_5,P0_4);
yasuyuki 0:6fa303916aa8 7 // AQM0802 lcd(i2c);
yasuyuki 0:6fa303916aa8 8 //
yasuyuki 0:6fa303916aa8 9 // (C)Copyright 2014 All rights reserved by Y.Onodera
yasuyuki 0:6fa303916aa8 10 // http://einstlab.web.fc2.com
yasuyuki 0:6fa303916aa8 11 //**********************
yasuyuki 0:6fa303916aa8 12
yasuyuki 0:6fa303916aa8 13 #include "mbed.h"
yasuyuki 0:6fa303916aa8 14 #include "AQM0802.h"
yasuyuki 0:6fa303916aa8 15
yasuyuki 0:6fa303916aa8 16 AQM0802::AQM0802 (PinName sda, PinName scl) : _i2c(sda, scl) {
yasuyuki 0:6fa303916aa8 17 init();
yasuyuki 0:6fa303916aa8 18 }
yasuyuki 0:6fa303916aa8 19 AQM0802::AQM0802 (I2C& p_i2c) : _i2c(p_i2c) {
yasuyuki 0:6fa303916aa8 20 init();
yasuyuki 0:6fa303916aa8 21 }
yasuyuki 0:6fa303916aa8 22
yasuyuki 0:6fa303916aa8 23 void AQM0802::put(unsigned char a, unsigned char b)
yasuyuki 0:6fa303916aa8 24 {
yasuyuki 0:6fa303916aa8 25 buf[0]=a;
yasuyuki 0:6fa303916aa8 26 buf[1]=b;
yasuyuki 0:6fa303916aa8 27 _i2c.write(AQM0802_ADDR, buf, 2);
yasuyuki 0:6fa303916aa8 28 }
yasuyuki 0:6fa303916aa8 29
yasuyuki 0:6fa303916aa8 30
yasuyuki 0:6fa303916aa8 31 void AQM0802::get(unsigned char a)
yasuyuki 0:6fa303916aa8 32 {
yasuyuki 0:6fa303916aa8 33 buf[0] = a;
yasuyuki 0:6fa303916aa8 34 _i2c.write(AQM0802_ADDR, buf, 1, true); // no stop, repeated
yasuyuki 0:6fa303916aa8 35 _i2c.read( AQM0802_ADDR, buf, 1);
yasuyuki 0:6fa303916aa8 36
yasuyuki 0:6fa303916aa8 37 }
yasuyuki 0:6fa303916aa8 38
yasuyuki 0:6fa303916aa8 39 void AQM0802::cls()
yasuyuki 0:6fa303916aa8 40 {
yasuyuki 0:6fa303916aa8 41 // Clear Display = 0x01
yasuyuki 0:6fa303916aa8 42 put(CMD, 0x01);
yasuyuki 0:6fa303916aa8 43 // Wait 1.08ms
yasuyuki 0:6fa303916aa8 44 wait_ms(2);
yasuyuki 0:6fa303916aa8 45
yasuyuki 0:6fa303916aa8 46 }
yasuyuki 0:6fa303916aa8 47
yasuyuki 0:6fa303916aa8 48 void AQM0802::locate(int x, int y)
yasuyuki 0:6fa303916aa8 49 {
yasuyuki 0:6fa303916aa8 50
yasuyuki 0:6fa303916aa8 51 // 8x2
yasuyuki 0:6fa303916aa8 52 put(CMD, 0x80 + y*0x40 + x);
yasuyuki 0:6fa303916aa8 53
yasuyuki 0:6fa303916aa8 54 }
yasuyuki 0:6fa303916aa8 55
yasuyuki 0:6fa303916aa8 56 void AQM0802::print(const char *a)
yasuyuki 0:6fa303916aa8 57 {
yasuyuki 0:6fa303916aa8 58
yasuyuki 0:6fa303916aa8 59 while(*a != '\0')
yasuyuki 0:6fa303916aa8 60 {
yasuyuki 0:6fa303916aa8 61 put(DAT, *a);
yasuyuki 0:6fa303916aa8 62 a++;
yasuyuki 0:6fa303916aa8 63 }
yasuyuki 0:6fa303916aa8 64
yasuyuki 0:6fa303916aa8 65 }
yasuyuki 0:6fa303916aa8 66
yasuyuki 0:6fa303916aa8 67 void AQM0802::init()
yasuyuki 0:6fa303916aa8 68 {
yasuyuki 0:6fa303916aa8 69 // Wait 40ms
yasuyuki 0:6fa303916aa8 70 wait_ms(100);
yasuyuki 0:6fa303916aa8 71 // Function set = 0x38
yasuyuki 0:6fa303916aa8 72 put(CMD, 0x38);
yasuyuki 0:6fa303916aa8 73 // Wait 26.3us
yasuyuki 0:6fa303916aa8 74 wait_ms(1);
yasuyuki 0:6fa303916aa8 75 // Function set = 0x39
yasuyuki 0:6fa303916aa8 76 put(CMD, 0x39);
yasuyuki 0:6fa303916aa8 77 // Wait 26.3us
yasuyuki 0:6fa303916aa8 78 wait_ms(1);
yasuyuki 0:6fa303916aa8 79 // Internal OSC frequency = 0x14
yasuyuki 0:6fa303916aa8 80 put(CMD, 0x14);
yasuyuki 0:6fa303916aa8 81 // Wait 26.3us
yasuyuki 0:6fa303916aa8 82 wait_ms(1);
yasuyuki 0:6fa303916aa8 83 // Contrast set = 0x70
yasuyuki 0:6fa303916aa8 84 put(CMD, 0x70);
yasuyuki 0:6fa303916aa8 85 // Wait 26.3us
yasuyuki 0:6fa303916aa8 86 wait_ms(1);
yasuyuki 0:6fa303916aa8 87 // Power/ICON/Contrast control = 0x56
yasuyuki 0:6fa303916aa8 88 put(CMD, 0x56);
yasuyuki 0:6fa303916aa8 89 // Wait 26.3us
yasuyuki 0:6fa303916aa8 90 wait_ms(1);
yasuyuki 0:6fa303916aa8 91 // Follower control = 0x6C
yasuyuki 0:6fa303916aa8 92 put(CMD, 0x6C);
yasuyuki 0:6fa303916aa8 93 // Wait 200ms
yasuyuki 0:6fa303916aa8 94 wait_ms(200);
yasuyuki 0:6fa303916aa8 95 // Function set = 0x38
yasuyuki 0:6fa303916aa8 96 put(CMD, 0x38);
yasuyuki 0:6fa303916aa8 97 // Wait 26.3us
yasuyuki 0:6fa303916aa8 98 wait_ms(1);
yasuyuki 0:6fa303916aa8 99 // Display ON/OFF control = 0x0C
yasuyuki 0:6fa303916aa8 100 put(CMD, 0x0C);
yasuyuki 0:6fa303916aa8 101 // Wait 26.3us
yasuyuki 0:6fa303916aa8 102 wait_ms(1);
yasuyuki 0:6fa303916aa8 103 // Clear Display = 0x01
yasuyuki 0:6fa303916aa8 104 put(CMD, 0x01);
yasuyuki 0:6fa303916aa8 105 // Wait 1.08ms
yasuyuki 0:6fa303916aa8 106 wait_ms(2);
yasuyuki 0:6fa303916aa8 107
yasuyuki 0:6fa303916aa8 108 }
yasuyuki 0:6fa303916aa8 109
yasuyuki 0:6fa303916aa8 110
yasuyuki 0:6fa303916aa8 111