Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of TextLCD_HelloWorld by
Revision 3:18ef2e771565, committed 2014-08-02
- Comitter:
- josmy
- Date:
- Sat Aug 02 07:47:48 2014 +0000
- Parent:
- 2:ad0b044d0a10
- Commit message:
- Analog Multiplexer using USART, SPI and LCD interfacing
Changed in this revision
--- a/TextLCD.lib Sat Dec 04 11:31:07 2010 +0000 +++ b/TextLCD.lib Sat Aug 02 07:47:48 2014 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/simon/code/TextLCD/#e4cb7ddee0d3 +http://mbed.org/users/simon/code/TextLCD/#308d188a2d3a
--- a/main.cpp Sat Dec 04 11:31:07 2010 +0000 +++ b/main.cpp Sat Aug 02 07:47:48 2014 +0000 @@ -1,10 +1,140 @@ -// Hello World! for the TextLCD +//Started USART, LCD Interfacing +//Inerfaced SPI and tested for top and bottom boards +//Keypress and Serial communication tested #include "mbed.h" #include "TextLCD.h" +#include "string.h" +#include "stdio.h" -TextLCD lcd(p15, p16, p17, p18, p19, p20); // rs, e, d4-d7 +TextLCD lcd(PA_10, PB_3, PB_5, PB_4, PB_8, PA_8); // rs, e, d4-d7 + +Serial pc(PB_10, PB_11);//TX = PB_10 RX = PB_11 +DigitalIn upbutton(USER_BUTTON);//PC_13 = upkey +DigitalIn downbutton(PB_9);//D14 = downkey +DigitalOut myled(PA_5); + +char SerialAvailable = 0; +char buf[10]; +char buffer[16]; +unsigned incomingByte = 0; +unsigned pointer = 0; +unsigned char ch00,ch01,ch02,ch03,ch04; +int RelaySelected; + +SPI SPIDevice(SPI_MOSI, SPI_MISO, SPI_SCK);//mosi=PA_7, miso=PA_6, sck=PA5 +DigitalOut OE(PA_9);//D8=OE +DigitalOut RCK595(PC_7);//D9=RCK595 + + + + +void RelaySelectFunction( ){ +unsigned uword; + + switch(RelaySelected){ + case 1:uword = 0x0080;lcd.locate(0,1);lcd.printf("CH1 ");break; + case 2:uword = 0x0040;lcd.locate(0,1);lcd.printf("CH2 ");break; + case 3:uword = 0x0020;lcd.locate(0,1);lcd.printf("CH3 ");break; + case 4:uword = 0x0010;lcd.locate(0,1);lcd.printf("CH4 ");break; + case 5:uword = 0x0008;lcd.locate(0,1);lcd.printf("CH5 ");break; + case 6:uword = 0x0004;lcd.locate(0,1);lcd.printf("CH6 ");break; + case 7:uword = 0x0002;lcd.locate(0,1);lcd.printf("CH7 ");break; + case 8:uword = 0x0001;lcd.locate(0,1);lcd.printf("CH8 ");break; + case 9:uword = 0x8000;lcd.locate(0,1);lcd.printf("CH9 ");break; + case 10:uword = 0x4000;lcd.locate(0,1);lcd.printf("CH10 ");break; + case 11:uword = 0x2000;lcd.locate(0,1);lcd.printf("CH11 ");break; + case 12:uword = 0x1000;lcd.locate(0,1);lcd.printf("CH12 ");break; + case 13:uword = 0x0800;lcd.locate(0,1);lcd.printf("CH13 ");break; + case 14:uword = 0x0400;lcd.locate(0,1);lcd.printf("CH14 ");break; + case 15:uword = 0x0200;lcd.locate(0,1);lcd.printf("CH15 ");break; + case 16:uword = 0x0100;lcd.locate(0,1);lcd.printf("CH16 ");break; + default: uword = 0x0000;lcd.locate(0,1);lcd.printf("No CH ");break; + } + RCK595 = 0;SPIDevice.write(uword); wait_ms(2);RCK595 = 1; + wait_ms(200); +} + +void SerialCom(){ + + + if(pc.readable()){ + buffer[0] = buffer[1]; + buffer[1] = buffer[2]; + buffer[2] = buffer[3]; + buffer[3] = buffer[4]; + buffer[4] = buffer[5]; + buffer[5] = pc.getc(); -int main() { - lcd.printf("Hello World!\n"); + if((buffer[0] == 'A') && (buffer[5] == 'B')){ + SerialAvailable = 1; + } + } } + +void Keypress(){ + + if(upbutton == 0){ + RelaySelected++; + if(RelaySelected > 16)RelaySelected = 1; + RelaySelectFunction(); + pc.printf("Relay:%u\n", RelaySelected); + wait_ms(50); + } + if(downbutton == 0){ + RelaySelected--; + if(RelaySelected < 1)RelaySelected = 16; + RelaySelectFunction(); + pc.printf("Relay:%u\n", RelaySelected); + wait_ms(50); + } +} +void SerialFunction(){ +int i; + i = buffer[2]; + switch(i){ + case 48:RelaySelected=1;break; + case 49:RelaySelected=2;break; + case 50:RelaySelected=3;break; + case 51:RelaySelected=4;break; + case 52:RelaySelected=5;break; + case 53:RelaySelected=6;break; + case 54:RelaySelected=7;break; + case 55:RelaySelected=8;break; + case 56:RelaySelected=9;break; + case 57:RelaySelected=10;break; + + case 65:RelaySelected=11;break; + case 66:RelaySelected=12;break; + case 67:RelaySelected=13;break; + case 68:RelaySelected=14;break; + case 69:RelaySelected=15;break; + case 70:RelaySelected=16;break; + default:RelaySelected=1;break; + } + RelaySelectFunction(); + SerialAvailable = 0; + +} +int main() { + + OE = 1; // Deselect device + RCK595 = 1; // Deselect device + SPIDevice.format(16,3); // Setup: bit data, high steady state clock, 2nd edge capture + SPIDevice.frequency(400000); //400kHz + SPIDevice.write(0x0000); + + pc.printf("Analog Multiplexer\n"); + lcd.printf("Analog Multiplexer"); + OE = 0; + downbutton.mode(PullUp); + lcd.locate(0,1);lcd.printf(" "); + RelaySelected = 1; + RelaySelectFunction(); + pc.attach(&SerialCom); + while(1){ + Keypress(); + if(SerialAvailable==1) + SerialFunction(); + } +}
--- a/mbed.bld Sat Dec 04 11:31:07 2010 +0000 +++ b/mbed.bld Sat Aug 02 07:47:48 2014 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/mbed_official/code/mbed/builds/e2ac27c8e93e +http://mbed.org/users/mbed_official/code/mbed/builds/04dd9b1680ae \ No newline at end of file