nlgplay for mbed

Dependencies:   SDFileSystemEx mbed

Committer:
bkc_mbed
Date:
Mon May 19 03:10:50 2014 +0000
Revision:
1:ec416e6d5739
Parent:
0:2053640461b5
Child:
7:7e183b33c3f9
ver 1.04

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