AQM1602 library

Dependents:   mbed_AQM1602 CatPot_Main_T_2v00 CatPot_2v10_T_Main CatPot_2v20_T_Main ... more

See https://developer.mbed.org/users/yasuyuki/notebook/AQM1602/

Committer:
yasuyuki
Date:
Fri Mar 06 12:51:41 2015 +0000
Revision:
0:4c3df2da124c
release

Who changed what in which revision?

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