nlgplay for mbed

Dependencies:   SDFileSystemEx mbed

Committer:
bkc_mbed
Date:
Mon Aug 18 22:32:46 2014 +0000
Revision:
7:7e183b33c3f9
Parent:
1:ec416e6d5739
Child:
8:88c89fd324bd
NBV3 support

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bkc_mbed 0:2053640461b5 1 #include "mbed.h"
bkc_mbed 0:2053640461b5 2
bkc_mbed 0:2053640461b5 3 I2C i2c(dp5, dp27); // sda, scl
bkc_mbed 0:2053640461b5 4
bkc_mbed 0:2053640461b5 5 const int AQM0802_addr = 0x7C;
bkc_mbed 0:2053640461b5 6
bkc_mbed 0:2053640461b5 7 void lcd_cmd(char x)
bkc_mbed 0:2053640461b5 8 {
bkc_mbed 0:2053640461b5 9 char data[2];
bkc_mbed 0:2053640461b5 10 data[0] = 0x00; // CO = 0,RS = 0
bkc_mbed 0:2053640461b5 11 data[1] = x;
bkc_mbed 0:2053640461b5 12 i2c.write(AQM0802_addr, data, 2);
bkc_mbed 0:2053640461b5 13 }
bkc_mbed 0:2053640461b5 14
bkc_mbed 0:2053640461b5 15 void lcd_contdata(char x)
bkc_mbed 0:2053640461b5 16 {
bkc_mbed 0:2053640461b5 17 char data[2];
bkc_mbed 0:2053640461b5 18 data[0] = 0xC0; //0b11000000 CO = 1, RS = 1
bkc_mbed 0:2053640461b5 19 data[1] = x;
bkc_mbed 0:2053640461b5 20 i2c.write(AQM0802_addr, data, 2);
bkc_mbed 0:2053640461b5 21 }
bkc_mbed 0:2053640461b5 22
bkc_mbed 0:2053640461b5 23 void lcd_lastdata(char x)
bkc_mbed 0:2053640461b5 24 {
bkc_mbed 0:2053640461b5 25 char data[2];
bkc_mbed 0:2053640461b5 26 data[0] = 0x40; //0b11000000 CO = 0, RS = 1
bkc_mbed 0:2053640461b5 27 data[1] = x;
bkc_mbed 0:2053640461b5 28 i2c.write(AQM0802_addr, data, 2);
bkc_mbed 0:2053640461b5 29 }
bkc_mbed 0:2053640461b5 30
bkc_mbed 7:7e183b33c3f9 31 void lcd_printStrFill(const char *s)
bkc_mbed 7:7e183b33c3f9 32 {
bkc_mbed 7:7e183b33c3f9 33 int idx = 0;
bkc_mbed 7:7e183b33c3f9 34 for(idx = 0; idx < 8; idx++)
bkc_mbed 7:7e183b33c3f9 35 {
bkc_mbed 7:7e183b33c3f9 36 if(idx < 7) {
bkc_mbed 7:7e183b33c3f9 37 lcd_contdata(*s);
bkc_mbed 7:7e183b33c3f9 38 } else {
bkc_mbed 7:7e183b33c3f9 39 lcd_lastdata(*s);
bkc_mbed 7:7e183b33c3f9 40 }
bkc_mbed 7:7e183b33c3f9 41 if (*s) s++;
bkc_mbed 7:7e183b33c3f9 42 }
bkc_mbed 7:7e183b33c3f9 43 }
bkc_mbed 7:7e183b33c3f9 44
bkc_mbed 7:7e183b33c3f9 45
bkc_mbed 0:2053640461b5 46 void lcd_printStr(const char *s)
bkc_mbed 0:2053640461b5 47 {
bkc_mbed 1:ec416e6d5739 48 int idx = 0;
bkc_mbed 1:ec416e6d5739 49 while(*s && idx < 8) {
bkc_mbed 0:2053640461b5 50 if(*(s + 1)) {
bkc_mbed 0:2053640461b5 51 lcd_contdata(*s);
bkc_mbed 0:2053640461b5 52 } else {
bkc_mbed 0:2053640461b5 53 lcd_lastdata(*s);
bkc_mbed 0:2053640461b5 54 }
bkc_mbed 0:2053640461b5 55 s++;
bkc_mbed 1:ec416e6d5739 56 idx++;
bkc_mbed 0:2053640461b5 57 }
bkc_mbed 0:2053640461b5 58 }
bkc_mbed 0:2053640461b5 59
bkc_mbed 0:2053640461b5 60 void lcd_setContrast(unsigned char c) {
bkc_mbed 0:2053640461b5 61 lcd_cmd(0x39);
bkc_mbed 0:2053640461b5 62 lcd_cmd(0x70 | (c & 0x0f)); // contrast Low
bkc_mbed 0:2053640461b5 63 lcd_cmd(0x5C | ((c >> 4) & 0x03)); // contast High/icon/power
bkc_mbed 0:2053640461b5 64 lcd_cmd(0x38);
bkc_mbed 0:2053640461b5 65 }
bkc_mbed 0:2053640461b5 66
bkc_mbed 0:2053640461b5 67 void lcd_printHex(unsigned char num)
bkc_mbed 0:2053640461b5 68 {
bkc_mbed 0:2053640461b5 69 lcd_contdata(num);
bkc_mbed 0:2053640461b5 70 }
bkc_mbed 0:2053640461b5 71
bkc_mbed 0:2053640461b5 72 void lcd_init() {
bkc_mbed 0:2053640461b5 73 int cont = 0;
bkc_mbed 0:2053640461b5 74 wait(0.04);
bkc_mbed 0:2053640461b5 75 // LCD initialize
bkc_mbed 0:2053640461b5 76 lcd_cmd(0x38); // function set
bkc_mbed 0:2053640461b5 77 lcd_cmd(0x39); // function set
bkc_mbed 0:2053640461b5 78 lcd_cmd(0x04); // EntryModeSet
bkc_mbed 0:2053640461b5 79 lcd_cmd(0x14); // interval osc
bkc_mbed 0:2053640461b5 80 lcd_cmd(0x70 | (cont & 0xF)); // contrast Low
bkc_mbed 0:2053640461b5 81 lcd_cmd(0x5C | ((cont >> 4) & 0x3)); // contast High/icon/power
bkc_mbed 0:2053640461b5 82 lcd_cmd(0x6C); // follower control
bkc_mbed 0:2053640461b5 83 wait(0.2);
bkc_mbed 0:2053640461b5 84 lcd_cmd(0x38); // function set
bkc_mbed 0:2053640461b5 85 lcd_cmd(0x0C); // Display On
bkc_mbed 0:2053640461b5 86 lcd_cmd(0x01); // Clear Display
bkc_mbed 0:2053640461b5 87 wait(0.2); // need additional wait to Clear Display
bkc_mbed 0:2053640461b5 88
bkc_mbed 0:2053640461b5 89 lcd_setContrast(36);
bkc_mbed 0:2053640461b5 90
bkc_mbed 0:2053640461b5 91 }
bkc_mbed 0:2053640461b5 92
bkc_mbed 0:2053640461b5 93 void lcd_setCursor(unsigned char x,unsigned char y) {
bkc_mbed 0:2053640461b5 94 lcd_cmd(0x80 | (y * 0x40 + x));
bkc_mbed 0:2053640461b5 95 }
bkc_mbed 0:2053640461b5 96
bkc_mbed 1:ec416e6d5739 97
bkc_mbed 1:ec416e6d5739 98 void lcd_printStrY(int y,const char *s)
bkc_mbed 1:ec416e6d5739 99 {
bkc_mbed 7:7e183b33c3f9 100 lcd_setCursor(0, y);
bkc_mbed 7:7e183b33c3f9 101 lcd_printStrFill(s);
bkc_mbed 1:ec416e6d5739 102 }
bkc_mbed 1:ec416e6d5739 103
bkc_mbed 1:ec416e6d5739 104 void lcd_printStrYscr(int y,const char *s)
bkc_mbed 1:ec416e6d5739 105 {
bkc_mbed 1:ec416e6d5739 106 int cnt = strlen(s) - 7;
bkc_mbed 1:ec416e6d5739 107 if (cnt <= 0)
bkc_mbed 1:ec416e6d5739 108 cnt = 1;
bkc_mbed 1:ec416e6d5739 109
bkc_mbed 1:ec416e6d5739 110 for(int i = 0; i < cnt; i++)
bkc_mbed 1:ec416e6d5739 111 {
bkc_mbed 1:ec416e6d5739 112 lcd_setCursor(0, y);
bkc_mbed 1:ec416e6d5739 113 lcd_printStr(s + i);
bkc_mbed 1:ec416e6d5739 114 wait(0.5);
bkc_mbed 1:ec416e6d5739 115 }
bkc_mbed 1:ec416e6d5739 116 }
bkc_mbed 1:ec416e6d5739 117
bkc_mbed 1:ec416e6d5739 118
bkc_mbed 1:ec416e6d5739 119 void lcd_printStr2(const char *s, const char *s2)
bkc_mbed 1:ec416e6d5739 120 {
bkc_mbed 1:ec416e6d5739 121 lcd_setCursor(0,0);
bkc_mbed 7:7e183b33c3f9 122 lcd_printStrFill(s);
bkc_mbed 1:ec416e6d5739 123 lcd_setCursor(0,1);
bkc_mbed 7:7e183b33c3f9 124 lcd_printStrFill(s2);
bkc_mbed 1:ec416e6d5739 125 }
bkc_mbed 1:ec416e6d5739 126
bkc_mbed 0:2053640461b5 127 void lcd_cls(void)
bkc_mbed 0:2053640461b5 128 {
bkc_mbed 0:2053640461b5 129 lcd_setCursor(0, 0);
bkc_mbed 7:7e183b33c3f9 130 lcd_printStrFill("");
bkc_mbed 0:2053640461b5 131 lcd_setCursor(0, 1);
bkc_mbed 7:7e183b33c3f9 132 lcd_printStrFill("");
bkc_mbed 0:2053640461b5 133 }
bkc_mbed 0:2053640461b5 134