David Buck
/
voltmeter
Diff: LCD_setup.cpp
- Revision:
- 0:d322a5241da8
diff -r 000000000000 -r d322a5241da8 LCD_setup.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LCD_setup.cpp Wed Dec 16 12:04:23 2009 +0000 @@ -0,0 +1,113 @@ +// LCD_setup.cpp + +#include "header.h" +/***************************************************** + subroutines +*****************************************************/ +/****initialise LCD function ****/ +void LCD_init(void){ + delay_l(); + FIO2DIR0=0xFF; /* set port 2 byte 0 (ctrl) to output */ + FIO2PIN0=0x00; //clear Port 2 byte 0 + //FIO2PIN bit0=R/W (read/write) + //FIO2PIN bit1=RS (register select) + //FIO2PIN bit2=E (enable) + //all initialised low + + // set Port 0 and 1 to operate as fast registers + SCS |= 0x00000001; // by setting the GPIOM bit of the SCS register + FIO0DIR2=0xFF; // set port 0 byte 2 (data) to output + FIO0PIN2=0x00; // clear Port 0 byte 2 + + /* RS already initialised to 'instruction' (low) */ + + /**** Function set*/ + FIO0PIN2=0x38; /* 2-line mode, 7 dot characters */ + toggle_enable(); + + /**** Display on/off*/ + FIO0PIN2=0x0C; /* display on, cursor off, blink off */ + toggle_enable(); + + /**** Clear display */ + FIO0PIN2=0x01; /* clear */ + toggle_enable(); + + /**** Set entry mode */ + FIO0PIN2=0x06; /* increment cursor, shift off */ + toggle_enable(); + +} + + +/**** LCD Display 'Voltmeter' */ +void LCD_displayV(){ + FIO2CLR0=0x02; /* set RS to 'control' */ + FIO0PIN2=0x01; /* clear display*/ + toggle_enable(); + FIO2SET0=0x02; /* set RS to 'data' */ + + FIO0PIN2=_sp; // process and display character + toggle_enable(); + FIO0PIN2=_sp; + toggle_enable(); + FIO0PIN2=_sp; + toggle_enable(); + FIO0PIN2=_V; + toggle_enable(); + FIO0PIN2=_O; + toggle_enable(); + FIO0PIN2=_L; + toggle_enable(); + FIO0PIN2=_T; + toggle_enable(); + FIO0PIN2=_M; + toggle_enable(); + FIO0PIN2=_E; + toggle_enable(); + FIO0PIN2=_T; + toggle_enable(); + FIO0PIN2=_E; + toggle_enable(); + FIO0PIN2=_R; + toggle_enable(); + + /* start of line 2 */ + FIO2CLR0=0x02; /* set RS to 'instruction' */ + FIO0PIN2=0xC6; /* set address to line 2 */ + toggle_enable(); + FIO2SET0=0x02; /* set RS to 'data' */ + + FIO0PIN2=_0; + toggle_enable(); + FIO0PIN2=0x2e; + toggle_enable(); + FIO0PIN2=_0; + toggle_enable(); + FIO0PIN2=_V; + toggle_enable(); +} + +/*** toggle_enable */ +void toggle_enable(void){ + FIO2SET0=0x04; // Toggle enable flag on */ + delay_s(); + FIO2CLR0=0x04; /* Toggle enable flag off */ + delay_s(); +} + +/************************************************************************** +* DEM16217 LCD connected to mbed as follows: +************************************************************************** +RW = Read/Write = LCD pin05 = mbed pin16 = LPC pin75 = GPIO P2.0 (Port2,byte0,bit0) +RS = RegisterSelect = LCD pin04 = mbed pin15 = LPC pin74 = GPIO P2.1 (0,1) +E = Enable = LCD pin06 = mbed pin14 = LPC pin73 = GPIO P2.2 (0,2) +DB0 = Data Bit 0 = LCD pin07 = mbed pin10 = LPC pin63 = GPIO P0.16 (Port0,byte2,bit0) +DB1 = Data Bit 1 = LCD pin08 = mbed pin08 = LPC pin61 = GPIO P0.17 (2,1) +DB2 = Data Bit 2 = LCD pin09 = mbed pin07 = LPC pin60 = GPIO P0.18 (2,2) +DB3 = Data Bit 3 = LCD pin10 = mbed pin06 = LPC pin59 = GPIO P0.19 (2,3) +DB4 = Data Bit 4 = LCD pin11 = mbed pin05 = LPC pin58 = GPIO P0.20 (2,4) +DB5 = Data Bit 5 = LCD pin12 = mbed pin04 = LPC pin57 = GPIO P0.21 (2,5) +DB6 = Data Bit 6 = LCD pin13 = mbed pin03 = LPC pin56 = GPIO P0.22 (2,6) +DB7 = Data Bit 7 = LCD pin14 = mbed pin36 = LPC pin09 = GPIO P0.23 (2,7) +**************************************************************************/ \ No newline at end of file