コネクタ4 : LED コネクタ7 : Buzzer コネクタ13 : Relay コネクタUART:Serial LCD 4つを動かしています

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
y_notsu
Date:
Thu Jan 16 13:27:49 2014 +0000
Commit message:
LPC800 MAX?Grove-Base Shield???????????????????????????

Changed in this revision

SerialLCD.cpp Show annotated file Show diff for this revision Revisions of this file
SerialLCD.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SerialLCD.cpp	Thu Jan 16 13:27:49 2014 +0000
@@ -0,0 +1,220 @@
+/*
+  SerialLCD.h - Serial LCD driver Library
+  2010 Copyright (c) Seeed Technology Inc.  All right reserved.
+ 
+  Original Author: Jimbo.We
+  Contribution: Visweswara R 
+  
+  This library is free software; you can redistribute it and/or
+  modify it under the terms of the GNU Lesser General Public
+  License as published by the Free Software Foundation; either
+  version 2.1 of the License, or (at your option) any later version.
+
+  This library is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  Lesser General Public License for more details.
+
+  You should have received a copy of the GNU Lesser General Public
+  License along with this library; if not, write to the Free Software
+  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+#include "mbed.h"
+#include "SerialLCD.h"
+/*
+SerialLCD::SerialLCD(uint8_t rx, uint8_t tx):SoftwareSerial(rx,tx)
+{
+
+}
+*/
+/********** High level commands, for the user! **********/
+/*
+// Initialize the Serial LCD Driver. SerialLCD Module initiates the communication.
+void SerialLCD::begin()
+{
+    SoftwareSerial::begin(9600);
+    delay(2);
+    SoftwareSerial::write(SLCD_CONTROL_HEADER);   
+    SoftwareSerial::write(SLCD_POWER_OFF); 
+    delay(1);
+    SoftwareSerial::write(SLCD_CONTROL_HEADER);   
+    SoftwareSerial::write(SLCD_POWER_ON);
+    delay(1);
+    SoftwareSerial::write(SLCD_INIT_ACK);
+    while(1)
+    {
+        if (SoftwareSerial::available() > 0 &&SoftwareSerial::read()==SLCD_INIT_DONE)
+            break;
+    }
+    delay(2);
+}
+
+// Clear the display
+void SerialLCD::clear()
+{
+    SoftwareSerial::write(SLCD_CONTROL_HEADER);   
+    SoftwareSerial::write(SLCD_CLEAR_DISPLAY);   
+}
+
+// Return to home(top-left corner of LCD)
+void SerialLCD::home()
+{
+    SoftwareSerial::write(SLCD_CONTROL_HEADER);
+    SoftwareSerial::write(SLCD_RETURN_HOME);  
+    delay(2);//this command needs more time;  
+}
+
+// Set Cursor to (Column,Row) Position
+void SerialLCD::setCursor(uint8_t column, uint8_t row)
+{
+    SoftwareSerial::write(SLCD_CONTROL_HEADER); 
+    SoftwareSerial::write(SLCD_CURSOR_HEADER); //cursor header command
+    SoftwareSerial::write(column);
+    SoftwareSerial::write(row);
+}
+
+// Switch the display off without clearing RAM
+void SerialLCD::noDisplay() 
+{
+    SoftwareSerial::write(SLCD_CONTROL_HEADER);
+    SoftwareSerial::write(SLCD_DISPLAY_OFF);    
+}
+
+// Switch the display on
+void SerialLCD::display() 
+{
+    SoftwareSerial::write(SLCD_CONTROL_HEADER);
+    SoftwareSerial::write(SLCD_DISPLAY_ON);    
+}
+
+// Switch the underline cursor off
+void SerialLCD::noCursor() 
+{
+    SoftwareSerial::write(SLCD_CONTROL_HEADER);
+    SoftwareSerial::write(SLCD_CURSOR_OFF);     
+}
+
+// Switch the underline cursor on
+void SerialLCD::cursor() 
+{
+    SoftwareSerial::write(SLCD_CONTROL_HEADER);
+    SoftwareSerial::write(SLCD_CURSOR_ON);     
+}
+
+// Switch off the blinking cursor
+void SerialLCD::noBlink() 
+{
+    SoftwareSerial::write(SLCD_CONTROL_HEADER);
+    SoftwareSerial::write(SLCD_BLINK_OFF);     
+}
+
+// Switch on the blinking cursor
+void SerialLCD::blink() 
+{
+    SoftwareSerial::write(SLCD_CONTROL_HEADER);
+    SoftwareSerial::write(SLCD_BLINK_ON);     
+}
+
+// Scroll the display left without changing the RAM
+void SerialLCD::scrollDisplayLeft(void) 
+{
+    SoftwareSerial::write(SLCD_CONTROL_HEADER);
+    SoftwareSerial::write(SLCD_SCROLL_LEFT);
+}
+
+// Scroll the display right without changing the RAM
+void SerialLCD::scrollDisplayRight(void) 
+{
+    SoftwareSerial::write(SLCD_CONTROL_HEADER);
+    SoftwareSerial::write(SLCD_SCROLL_RIGHT);
+}
+
+// Set the text flow "Left to Right"
+void SerialLCD::leftToRight(void) 
+{
+    SoftwareSerial::write(SLCD_CONTROL_HEADER);
+    SoftwareSerial::write(SLCD_LEFT_TO_RIGHT);
+}
+
+// Set the text flow "Right to Left"
+void SerialLCD::rightToLeft(void) 
+{
+    SoftwareSerial::write(SLCD_CONTROL_HEADER);
+    SoftwareSerial::write(SLCD_RIGHT_TO_LEFT);
+}
+
+// This will 'right justify' text from the cursor
+void SerialLCD::autoscroll(void) 
+{
+    SoftwareSerial::write(SLCD_CONTROL_HEADER);
+    SoftwareSerial::write(SLCD_AUTO_SCROLL);
+}
+
+// This will 'left justify' text from the cursor
+void SerialLCD::noAutoscroll(void) 
+{
+    SoftwareSerial::write(SLCD_CONTROL_HEADER);
+    SoftwareSerial::write(SLCD_NO_AUTO_SCROLL);
+}
+void SerialLCD::Power(void)
+{
+    SoftwareSerial::write(SLCD_CONTROL_HEADER);   
+    SoftwareSerial::write(SLCD_POWER_ON); 
+}
+void SerialLCD::noPower(void)
+{
+    SoftwareSerial::write(SLCD_CONTROL_HEADER);   
+    SoftwareSerial::write(SLCD_POWER_OFF); 
+}
+//Turn off the backlight
+void SerialLCD::noBacklight(void)
+{
+    SoftwareSerial::write(SLCD_CONTROL_HEADER);   
+    SoftwareSerial::write(SLCD_BACKLIGHT_OFF);   
+}
+//Turn on the back light
+void SerialLCD::backlight(void)
+{
+    SoftwareSerial::write(SLCD_CONTROL_HEADER);   
+    SoftwareSerial::write(SLCD_BACKLIGHT_ON);   
+}
+// Print Commands
+
+void SerialLCD::print(uint8_t b)
+{
+    SoftwareSerial::write(SLCD_CHAR_HEADER);
+    SoftwareSerial::write(b);
+}
+void SerialLCD::print(const char b[])
+{
+    SoftwareSerial::write(SLCD_CHAR_HEADER);
+    SoftwareSerial::write(b);
+}
+
+void SerialLCD::print(unsigned long n, uint8_t base)
+{
+    unsigned char buf[8 * sizeof(long)]; // Assumes 8-bit chars.
+    unsigned long i = 0;
+
+    if (base == 0) print(n);
+
+    else if(base!=0)
+    {
+        if (n == 0) {
+            print('0');
+            return;
+        }
+
+        while (n > 0) {
+            buf[i++] = n % base;
+            n /= base;
+        }
+
+        for (; i > 0; i--)
+            print((char) (buf[i - 1] < 10 ?
+                          '0' + buf[i - 1] :
+                          'A' + buf[i - 1] - 10));
+    }
+}
+
+*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SerialLCD.h	Thu Jan 16 13:27:49 2014 +0000
@@ -0,0 +1,97 @@
+/*
+  SerialLCD.h - Serial LCD driver Library
+  2010 Copyright (c) Seeed Technology Inc.  All right reserved.
+ 
+  Original Author: Jimbo.We
+  Contribution: Visweswara R 
+  
+  Modified 15 March,2012 for Arduino 1.0 IDE
+  by Frankie.Chu
+  
+  This library is free software; you can redistribute it and/or
+  modify it under the terms of the GNU Lesser General Public
+  License as published by the Free Software Foundation; either
+  version 2.1 of the License, or (at your option) any later version.
+
+  This library is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  Lesser General Public License for more details.
+
+  You should have received a copy of the GNU Lesser General Public
+  License along with this library; if not, write to the Free Software
+  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+#include "mbed.h"
+
+#ifndef SERIAL_LCD_H
+#define SERIAL_LCD_H
+
+
+//Initialization Commands or Responses
+
+#define SLCD_INIT   0xA3
+#define SLCD_INIT_ACK   0xA5
+#define SLCD_INIT_DONE  0xAA
+
+//WorkingMode Commands or Responses
+#define SLCD_CONTROL_HEADER 0x9F
+#define SLCD_CHAR_HEADER    0xFE
+#define SLCD_CURSOR_HEADER  0xFF
+#define SLCD_CURSOR_ACK     0x5A
+
+#define SLCD_RETURN_HOME    0x61
+#define SLCD_DISPLAY_OFF    0x63
+#define SLCD_DISPLAY_ON     0x64
+#define SLCD_CLEAR_DISPLAY  0x65
+#define SLCD_CURSOR_OFF     0x66
+#define SLCD_CURSOR_ON      0x67
+#define SLCD_BLINK_OFF      0x68
+#define SLCD_BLINK_ON       0x69
+#define SLCD_SCROLL_LEFT    0x6C
+#define SLCD_SCROLL_RIGHT   0x72
+#define SLCD_NO_AUTO_SCROLL 0x6A
+#define SLCD_AUTO_SCROLL    0x6D
+#define SLCD_LEFT_TO_RIGHT  0x70
+#define SLCD_RIGHT_TO_LEFT  0x71
+#define SLCD_POWER_ON       0x83
+#define SLCD_POWER_OFF      0x82
+#define SLCD_INVALIDCOMMAND 0x46
+#define SLCD_BACKLIGHT_ON   0x81
+#define SLCD_BACKLIGHT_OFF  0x80
+
+/*
+class SerialLCD : public SoftwareSerial{
+public:
+
+    SerialLCD(uint8_t, uint8_t);
+    void begin();
+    void clear();
+    void home();
+
+    void noDisplay();
+    void display();
+    void noBlink();
+    void blink();
+    void noCursor();
+    void cursor();
+    void scrollDisplayLeft();
+    void scrollDisplayRight();
+    void leftToRight();
+    void rightToLeft();
+    void autoscroll();
+    void noAutoscroll();
+
+    void setCursor(uint8_t, uint8_t);
+    void noPower(void);
+    void Power(void);
+    void noBacklight(void);
+    void backlight(void);
+    void print(uint8_t b);
+    void print(const char[]);
+    void print(unsigned long n, uint8_t base);
+
+};
+*/
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu Jan 16 13:27:49 2014 +0000
@@ -0,0 +1,121 @@
+#include "mbed.h"
+#include "SerialLCD.h"
+
+DigitalOut myled(P0_9);
+DigitalOut Buzzer(P0_7);
+Serial LCD(P0_4, P0_0); //tx, rx
+DigitalOut Relay(P0_12);
+
+void ClearDisplay()
+{
+    LCD.putc(SLCD_CONTROL_HEADER);
+    LCD.putc(SLCD_CLEAR_DISPLAY);
+}
+
+void LCDHome()
+{
+    LCD.putc(SLCD_CONTROL_HEADER);
+    LCD.putc(SLCD_RETURN_HOME);
+}
+
+void LCDsetCursor(uint8_t column, uint8_t row)
+{
+    LCD.putc(SLCD_CONTROL_HEADER);
+    LCD.putc(SLCD_CURSOR_HEADER);
+    LCD.putc(column);
+    LCD.putc(row);
+}
+
+// Switch the display off without clearing RAM
+void LCDnoDisplay()
+{
+    LCD.putc(SLCD_CONTROL_HEADER);
+    LCD.putc(SLCD_DISPLAY_OFF); 
+}
+
+// Switch the display on
+void LCDdisplay() 
+{
+    LCD.putc(SLCD_CONTROL_HEADER);
+    LCD.putc(SLCD_DISPLAY_ON);    
+}
+
+// Switch the underline cursor off
+void LCDnoCursor() 
+{
+    LCD.putc(SLCD_CONTROL_HEADER);
+    LCD.putc(SLCD_CURSOR_OFF);     
+}
+
+// Switch the underline cursor on
+void LCDcursor() 
+{
+    LCD.putc(SLCD_CONTROL_HEADER);
+    LCD.putc(SLCD_CURSOR_ON);     
+}
+
+//Turn off the backlight
+void LCDnoBacklight(void)
+{
+    LCD.putc(SLCD_CONTROL_HEADER);   
+    LCD.putc(SLCD_BACKLIGHT_OFF);   
+}
+//Turn on the back light
+void LCDbacklight(void)
+{
+    LCD.putc(SLCD_CONTROL_HEADER);   
+    LCD.putc(SLCD_BACKLIGHT_ON);   
+}
+
+void LCDprint(uint8_t b)
+{
+    LCD.putc(SLCD_CHAR_HEADER);
+    LCD.putc(b);
+}
+
+void LCDprintc(const char b[])
+{
+    LCD.putc(SLCD_CHAR_HEADER);
+    LCD.printf(b);
+}    
+    
+
+int main() {
+    LCD.baud(9600);
+    //LCD startup
+    LCD.putc(SLCD_CONTROL_HEADER);
+    LCD.putc(SLCD_POWER_OFF);
+    wait_ms(1);
+    LCD.putc(SLCD_CONTROL_HEADER);
+    LCD.putc(SLCD_POWER_ON);
+    wait_ms(1);
+    LCD.putc(SLCD_INIT_ACK);
+    while(1)
+    {
+        if(LCD.getc()==SLCD_INIT_DONE)
+        break;
+    }
+    wait_ms(2);
+    
+    //LCD printf
+    LCDprintc("Hello World");
+    
+    //LCD Backlight ON
+    LCDbacklight();
+    
+    //LCD Display ON
+    LCDdisplay();
+    
+    while(1) {
+        LCDnoBacklight();
+        myled = 1;
+        Buzzer=0;
+        Relay=1;
+        wait(0.2);
+        LCDbacklight();
+        myled = 0;
+        Buzzer=1;
+        Relay=0;
+        wait(0.2);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Thu Jan 16 13:27:49 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/a9913a65894f
\ No newline at end of file