Simple libary for AQM1602XA I2C Character LCD.
AQM1602XA.cpp@0:933748ca1307, 2016-04-24 (annotated)
- Committer:
- kazz12211
- Date:
- Sun Apr 24 11:50:38 2016 +0000
- Revision:
- 0:933748ca1307
Simple class for AQM1602XA I2C LCD.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kazz12211 | 0:933748ca1307 | 1 | #include "AQM1602XA.h" |
kazz12211 | 0:933748ca1307 | 2 | |
kazz12211 | 0:933748ca1307 | 3 | AQM1602XA::AQM1602XA(PinName sda, PinName scl, char slave_adr) |
kazz12211 | 0:933748ca1307 | 4 | : wire(sda, scl) { |
kazz12211 | 0:933748ca1307 | 5 | address = slave_adr; |
kazz12211 | 0:933748ca1307 | 6 | initialize(); |
kazz12211 | 0:933748ca1307 | 7 | } |
kazz12211 | 0:933748ca1307 | 8 | |
kazz12211 | 0:933748ca1307 | 9 | |
kazz12211 | 0:933748ca1307 | 10 | void AQM1602XA::writeCommand(char cmd) { |
kazz12211 | 0:933748ca1307 | 11 | char bytes[2]; |
kazz12211 | 0:933748ca1307 | 12 | bytes[0] = 0x00; |
kazz12211 | 0:933748ca1307 | 13 | bytes[1] = cmd; |
kazz12211 | 0:933748ca1307 | 14 | wire.write(address, bytes, 2); |
kazz12211 | 0:933748ca1307 | 15 | wait(0.01); |
kazz12211 | 0:933748ca1307 | 16 | } |
kazz12211 | 0:933748ca1307 | 17 | |
kazz12211 | 0:933748ca1307 | 18 | void AQM1602XA::writeData(char data) { |
kazz12211 | 0:933748ca1307 | 19 | char bytes[2]; |
kazz12211 | 0:933748ca1307 | 20 | bytes[0] = 0x40; |
kazz12211 | 0:933748ca1307 | 21 | bytes[1] = data; |
kazz12211 | 0:933748ca1307 | 22 | wire.write(address, bytes, 2); |
kazz12211 | 0:933748ca1307 | 23 | wait(0.001); |
kazz12211 | 0:933748ca1307 | 24 | } |
kazz12211 | 0:933748ca1307 | 25 | |
kazz12211 | 0:933748ca1307 | 26 | void AQM1602XA::initialize() { |
kazz12211 | 0:933748ca1307 | 27 | char cmd[] = {0x38, 0x39, 0x14, 0x73, 0x56, 0x6c, 0x38, 0x01, 0x0c}; |
kazz12211 | 0:933748ca1307 | 28 | wait(0.1); |
kazz12211 | 0:933748ca1307 | 29 | for(int i = 0; i < 9; i++) { |
kazz12211 | 0:933748ca1307 | 30 | writeCommand(cmd[i]); |
kazz12211 | 0:933748ca1307 | 31 | } |
kazz12211 | 0:933748ca1307 | 32 | } |
kazz12211 | 0:933748ca1307 | 33 | |
kazz12211 | 0:933748ca1307 | 34 | void AQM1602XA::printString(int row, char *str) { |
kazz12211 | 0:933748ca1307 | 35 | int len = strlen(str); |
kazz12211 | 0:933748ca1307 | 36 | if(len > 16) |
kazz12211 | 0:933748ca1307 | 37 | len = 16; |
kazz12211 | 0:933748ca1307 | 38 | if(row == 1) { |
kazz12211 | 0:933748ca1307 | 39 | writeCommand(0x40 + 0x80); |
kazz12211 | 0:933748ca1307 | 40 | } |
kazz12211 | 0:933748ca1307 | 41 | for(int i = 0; i < len; i++) { |
kazz12211 | 0:933748ca1307 | 42 | writeData(*(str + i)); |
kazz12211 | 0:933748ca1307 | 43 | } |
kazz12211 | 0:933748ca1307 | 44 | } |