You have no items in your shopping cart.

Subtotal: 0.00

User Manual for ARM9 Stick Board

Introduction

ARM9_LPC2929 STICK BOARD, is proposed to smooth the progress of developing and debugging of various designs encompassing of High speed 32-bit MCU from NXP. The board supports NXP's LPC29XX family devices with various memory and peripheral options. Example: UARTs, CAN 2.0, LIN, LEDs, Switch, ADC input and GLCD/LCD Display to create a stand-alone versatile test platform

SPECIFICATIONS

MCU

  • NXP's ARM9 LPC2929 MCU

Memory

  • 768K FLASH - Program
  • 56K+2x32K SRAM - Data Memory

Clock

  • 12MHz crystal, Max = 125 MHz

On-Board Peripherals

  • 2 Nos. UART(RS232) UART 0/1
  • USB 2.0 device interface
  • USB to UART Converter
  • Interrupts Study, Reset Button
  • 64 General purpose I/O Lines
  • SPI 0/1 Interface Lines with 3 CS lines
  • I2C 0/1 Interface Lines
  • CAN 0/1 Interface Lines
  • LIN 1 Interface Lines
  • ADC 0 (5V ref) Interface Lines
  • ADC 1/2 (3.3V ref) Interface Lines

Power

  • Internal USB Supply/External Supply(J1),(On-board +3.3V | +1.8V Regulators)

Connectors

  • JTAG (Programming/ Debugging)
  • Mini USB Connector (UART, Supply)
  • 96 Pin Header (Power Out(5V,3.3V,1.8V)and Use as GPIO,SPI,I2C,CAN,LIN,UART,ADC,PWM etc.,)

General Block Diagram

block-diagram-of-arm9-stick-board

LPC2929 Processor Features

  • ARM968E-S processor running at frequencies of up to 125 MHz maximum.
  • Multi-layer AHB system bus at 125 MHz with four separate layers.
  • On-chip memory
  • Two Tightly Coupled Memories (TCM), up to 32 kB Instruction (ITCM), up to 32 Kb Data TCM (DTCM). Two separate internal Static RAM (SRAM) instances; 32 kB SRAM and 16 kB SRAM. 8 kB ETB SRAM. Up to 768 kB flash-program memory with 16 kB EEPROM.
  • Dual-master, eight-channel GPDMA controller on the AHB multilayer matrix which can be used with both I2C interfaces, the SPI interfaces, and the UARTs, as well as for memory-to-memory transfers including the TCM memories.
  • External Static Memory Controller (SMC) with eight memory banks; up to 32-bit data bus; up to 24-bit address bus.
  • Serial interfaces:

    - USB 2.0 full-speed device/OTG controller with dedicated DMA controller

    - Two-channel CAN controller supporting Full-CAN and extensive message filtering

    - Two LIN master controllers with full hardware support for LIN communication.

    - Two 550 UARTs with 16-byte TX and Rx FIFO depths, DMA support, and RS485 support.

    - Three full-duplex Q-SPIs with four slave-select lines; 16 bits wide; 8 locations deep; Tx FIFO and Rx FIFO.

    - Two I2C-bus interfaces.
  • Other peripherals:

    - Two 10-bit ADCs, 8-channels each, with 3.3 V measurement range and one, 8-channel 10-bit ADC with 5.0 V measurement range provide a total of up to 24 analog inputs, with conversion times as low as 2.44 μs per channel. Each channel provides a compare function to minimize interrupts.

    - Multiple trigger-start option for all ADCs: timer, PWM, other ADC and external signal input.

    - Four 32-bit timers each containing four capture-and-compare registers linked to I/Os.

    - Four six-channel PWMs (Pulse-Width Modulators) with capture and trap functionality.

    - Two dedicated 32-bit timers to schedule and synchronize PWM and ADC.

    - Quadrature encoder interface that can monitor one external quadrature encoder.

    - 32-bit watchdog with timer change protection, running on safe clock.
  • Up to 108 general-purpose I/O pins with programmable pull-up, pull-down, or bus keeper.
  • Vectored Interrupt Controller (VIC) with 16 priority levels.
  • Flexible Clock-Generation Unit (CGU) able to control clock frequency of individual modules: On-chip very low-power ring oscillator; fixed frequency of 0.4 MHz; always on to provide a Safe Clock source for system monitoring. On-chip crystal oscillator with a recommended operating range from 10 MHz to 25 MHz - max. PLL input 25 MHz On-chips PLL allows CPU operation up to a maximum CPU rate of 80 MHz Generation of up to 10 base clocks. Seven fractional dividers.
  • Highly configurable system Power Management Unit (PMU): clock control of individual modules. Allows minimization of system operating power consumption in any configuration.
  • Standard ARM test and debug interface with real-time in-circuit emulator.
  • ETM/ETB debug functions with 8 kB of dedicated SRAM also accessible for application code and data storage.
  • Dual power supply:

    - CPU operating voltage: 1.8 V ± 5 %.

    - I/O operating voltage: 2.7 V to 3.6 V; inputs tolerant up to 5.5 V.
  • 144-pin LQFP package.

Functional Pin Diagram

functional-pin-diagram-of-arm9-stick-board


Block Diagram




block diagramCONNECTOR DETAILS

Jumper & Connector Details

Power On Select

J1

power-select-j1

Power ON ARM9 Stick Board

JTAGE

J6

20 Pin

Header

JTAG (Prog / Debug)

JTAGE Select

J7

power-select-j1

Enable JTAG

UART 1

J2

uart-1-j2

Enable UART 1 TXD

Enable UART 1 RXD

UART 0

J2

uart-0-j2

Enable UART 0 TXD

Enable UART 0 RXD

 

JTAG Connector


arm9-stick-circuit-diagram-jtag-connector
Power and UART Connector

power-and-uart-connector-for-arm9-stick-board

POWER SUPPLY

The ARM9 Stick Board produces USB power out (+5V) , which provides supply to the peripherals. LM1117 3V3 Fixed +3.3V positive regulator and LM1117 1V8 Fixed +1.8V positive regulator used for processor & processor related peripherals. Ext power supply through J1.

On-board Peripherals and Interfacing

The ARM9 Stick Board comes with many interfacing options

  • LED's Interfacing (Digital Outputs)
  • Switch Interfacing (Digital Inputs)
  • GLCD Interfacing
  • LCD Interfacing
  • Buzzer Interfacing
  • SPI DAC Interfacing
  • Matrix Keypad Interfacing
  • Two UART 0/1 for serial communication
  • USB to UART Converter
  • On-chip CAN - CAN 0/1
  • On -chip LIN - LIN 0/1
  • On-chip ADC (ADC 3.3V | ADC 5V )
  • External interrupt INT 6

Interfacing LED with ARM9 Stick Board

Figure shows how to interface the LED to microcontroller. As you can see the Cathode is connected through a resistor to GND & the Anode is connected to the Microcontroller pin. So when the Port Pin is HIGH the LED is ON & when the Port Pin is LOW the LED is turned OFF.


interfacing-led-with-arm9-stick-board

Circuit Diagram to Interface LED with ARM9 Stick Board


circuit-diagram-to-interface-led-with-arm9-stick-board

Example for ARM9 Stick Interface with LED's

arm9-stick-interface-with-led

Interfacing Switch with ARM9 Stick Board

The circuit diagram shows how to interface the switch to microcontroller. A simple switch has an open state and closed state. However, a microcontroller needs to see a definite high or low voltage level at a digital input.

A switch requires a pull-up or pull-down resistor to produce a high or low voltage when it is open or closed. A resistor placed between a digital input and the supply voltage is called a "pull-up" resistor because it normally pulls the pin's voltage up to the supply. This ARM9 Stick Board has internal pull up as well as pull down, we have to enable any logic by using register SFPS Register.

Circuit Diagram for Interface Switch with ARM9-LPC2929 Microcontroller


circuit-diagram-for-interface-switch-with-arm9-stick-board

Example for Interface Switch with ARM9 Stick Board




interface-switch-with-arm9-stick-board

Interfacing LCD with ARM9 Stick Board

The circuit and Pin diagram shows how to interface the LCD to microcontroller. The 2x16 character LCD interface card with supports both modes 4-bit and 8-bit interface, and also facility to adjust contrast of LCD through trim pot (R1).

In 8-bit interface 11 lines needed to create 8-bit interface; 8 data lines (D0 - D7), three control lines, address bit (RS), read/write bit (R/W) and control signal (EN).

In 4-bit interface 7 lines needed to create 4-bit interface; 4 data line (D0 - D3), three control lines, address bit (RS), read/write bit (R/W) and control signal (EN).

Circuit and Pin Diagram for ARM9 Stick Interface with LCD



circuit-and-pin-diagram-for-arm9-stick-interface-with-lcd

Example for ARM9 Stick Interface with 8 bit LCD

arm9-stick-interface-with-8-bit-lcd

Interfacing GLCD with ARM9 Stick Board

The circuit and Pin diagram shows how to interface the GLCD to microcontroller. The 64x128 GLCD interface card support 8-bit interface and also have a facility to adjust contrast of GLCD through trim pot (R2).

In GLCD interface 14 lines needed to create 8-bit interface; 8 data lines (D0 - D7); Four control lines, address bit (RS), read/write bit (RW), control signal (EN) and GLCD reset (RST); Two chip select lines (CS0 and CS1).

Circuit and Pin Diagram for Interface GLCD with ARM9 Stick

circuit-and-pin-diagram-for-interface-glcd-with-arm9-stick

Example for Interface GLCD with ARM9 Stick

interface-glcd-with-arm9-stick

Interfacing ADC_LCD with ARM9 Stick Board

The circuit and Pin diagram shows how to interface the LCD to microcontroller and display the ADC value. The 2x16 character LCD interface card with supports both modes 4-bit and 8-bit interface, and also facility to adjust contrast of LCD using trim pot (R3).

In 8-bit interface 11 lines needed to create 8-bit interface; 8 data lines (D0 - D7), three control lines, address bit (RS), read/write bit (R/W) and control signal (EN).

Here the analog signal is 0V to 5V variable DC signal. For varying the trim pot (R4) get the digital output in the form of decimal value (0000 to 1023) at LCD Display.

Circuit and Pin Diagram for ARM9 Stick Interface with ADC_LCD

circuit-and-pin-diagram-for-arm9-stick-interface-with-adc-lcd

Example for ARM9 Stick Interface with ADC_LCD

arm9-stick-interface-with-adc-lcd

Interrupt Test in ARM9 Stick Board
General Description

The ARM9_LPC2929 contains a very flexible and powerful Vectored Interrupt Controller to interrupt the ARM processor on request.

The key features are:
  • Level-active interrupt request with programmable polarity.
  • 56 interrupt request inputs.
  • Software interrupt request capability associated with each request input.
  • Interrupt request state can be observed before masking.
  • Software-programmable priority assignments to interrupt requests up to 15 levels.
  • Software-programmable routing of interrupt requests towards the ARM-processor Inputs IRQ and FIQ.
  • Fast identification of interrupt requests through vector.
  • Support for nesting of interrupt service routines.
On Board Circuit Diagram

arm9-stick-board-circuit-diagram-for-interrupt

Circuit Diagram for Interrupt Test


arm9-stick-board-circuit-diagram-for-interrupt-test

Output for Interrupt Test
  • Main Function - Blinking LED Continuously (P1.5 and P1.6)
  • Interrupt Function -Blink the LED 5 times (P3.0 and P3.1)

Normally the main function running continuously. The Interrupt function will run when press the interrupt switch in the on board.

Interfacing Buzzer with ARM9 Stick Board

The circuit and Pin diagram shows how to interface the Buzzer to microcontroller and create the beep sound. Normally used in 5V operating range Buzzer.

The Buzzer GPIO line (P3.6) is configuring as Output direction. And create the delay in controller, by using delay continuously create the beep sound in buzzer.

Circuit and Pin Diagram for ARM9 Stick Interface with Buzzer


circuit-and-pin-diagram-for-arm9-stick-interface-with-buzzer

Interfacing Matrix Keypad with ARM9 Stick Board

The circuit and Pin diagram for Matrix Keypad shows how to interface the Matrix Keypad to microcontroller and display the value in 4 bit LED output.

The circuit diagram and Pin diagram for LED Output shows how to get the matrix keypad value in 4 bit LED.

Matrix Keypad port lines are configure as input direction and LED output lines are configure as output direction lines.

Circuit and Pin Diagram for ARM9 Stick Interface with Matrix Keypad


circuit-and-pin-diagram-for-arm9-stick-interface-with-matrix-keypad

Circuit and Pin Diagram for Matrix Keypad Output


circuit-and-pin-diagram-for-matrix-keypad-output-arm-9-stick

EXAMPLE SOURCE CODE FOR ARM9_LPC2929 STICK BOARD
Example 1: Interfacing LED's with ARM9 Stick Board
Procedure:

1. Configure GPIO Pins P3.0 to P3.7 as GPIO using the register SFSP3_0 to SFSP3_7

2. Configure the P3.0 to P3.7 as Digital output using GPIO0_DR(Direction Register)

3. Send High or Low on P3.0 to P3.7 using GPIO0_OR(Output Register)

4. For hardware connection refer page 13.

Source Code: 1
Blinking An LED on ARM9_LPC2929

 

#include <LPC29XX.H> //Register Description Header for LPC2929

#define LED 0xFF

void delay(unsigned int n) // Delay function

{

unsigned int i,j;

for(i=0;i<n;i++)

{

for(j=0;j<2000;j++)

{;}

}

}

int main() // Main function

{

SFSP3_0 = 0x0; // P3.0 set as GPIO line

SFSP3_1 = 0x0; // P3.1 set as GPIO line

SFSP3_2 = 0x0; // P3.2 set as GPIO line

SFSP3_3 = 0x0; // P3.3 set as GPIO line

SFSP3_4 = 0x0; // P3.4 set as GPIO line

SFSP3_5 = 0x0; // P3.5 set as GPIO line

SFSP3_6 = 0x0; // P3.6 set as GPIO line

SFSP3_7 = 0x0; // P3.7 set as GPIO line

GPIO3_DR |= LED; // P3.0 to P3.7 set as output Direction

GPIO3_OR |= LED; // P3.0 to P3.7 set as High

delay(50);

GPIO3_OR &= ~LED; // P3.0 to P3.7 set as Low

delay(50);

}

 

Example 2: Interfacing Switch with ARM9 Stick Board
A Bit More on SFSPx_n Register:

When SFSP register configured for Digital output, it simply does the job. But, when it is configured for Digital Input, we must specify the PAD_TYPE. There are 5 types of PAD_TYPE,

  • Analog Input(Default)
  • Digital Input Without PULLUP/DOWN
  • Digital Input With Internal PULLUP
  • Digital Input With Internal PULLDOWN
  • Digital Input with Bus Keeper

Bits 2 to 4 of SFSP register will be used to select one of the above five input. By default the PAD_TYPE is Analog Input. So when we configure the GPIOx_DR for input, nothing will happen in Dig

Bit

Symbol

Access

Value

Description

31 to 5

Reserved

R

0

Read As Zero

4 to 2

PAD_TYPE

R/W

000

Analog Input

     

001

Digital Input Without PULLUP/DOWN

     

011

Digital Input With PULLUP

     

101

Digital Input With PULLDOWN

     

111

Digital Input With Bus KEEPER

1 to 0

FUNC_SEL

R/W

00

GPIO Function or Function-0

     

01

Function-1*

     

10

Function-2*

     

11

Function-3*

  • These Functions can be seen in LPC2929 Pinning information Table. The Table is available in Datasheet as well as User Manual.

Datasheet : lpc2927_lpc2929_ds.pdf

User Manual: lpc2917_01_lpc2919_01_lpc29xx_um.pdf

Procedure:
  • Configure GPIO Pins P3.0 & P3.1 as GPIO using the register SFSP3_0 & SFSP3_1
  • Specify the PAD_TYPE as Digital Input Without PULLUP/DOWN using SFSP1_5 & SFSP1_6
  • Configure GPIO Pins P1.5 & P1.6 as GPIO using the register SFSP1_5 & SFSP1_6
  • Configure the P3.0 & P3.1 as Digital output and P1.5 & P1.6 as Digital input using GPIO0_DR (Direction Register)
  • Read the status of P1.5 & P1.6 using GPIO0_PINS register and display it in P3.0 & P3.1
  • For hardware connection refer page 15
Source Code: 2
Read Anigital Input and Display the Status- ARM9_LPC2929

 

#include <lpc29xx.h> //Register Description Header for LPC2929

#define SW1 0x20

#define SW2 0x40

#define LED1 0x01

#define LED2 0x02

int main() // Main function

{

int SW_Read;

SFSP3_0 = 0x0; // P3.0 set as GPIO lines

SFSP3_1 = 0x0; // P3.1 set as GPIO lines

SFSP1_5 = 0x4; // P1.5 set as Digital IN without PU & PD

SFSP1_6 = 0x4; // P1.6 set as Digital IN without PU & PD

GPIO1_DR &= ~SW1|SW2; // set as Input direction

GPIO3_DR |= LED1|LED2; // set as Output direction

SW_Read = GPIO1_PINS & 0x60; // Read switch data

GPIO3_OR = SW_Read >>5; // Write switch data

}

 

Example 3: Interfacing LCD with ARM9 Stick Board
Procedure:

1. Configure GPIO Pins P3.8 to P3.15 as LCD data lines

2. Configure the P3.5 to P3.7 as LCD control lines

Source Code: 3
LCD Display on ARM9_LPC2929

 

#include <LPC29xx.H> //Register Description Header for LPC2929

 

#define RS 0x0020 // Register Select

#define RW 0x0040 // Read Write Select

#define EN 0x0080 // Enable

#define D7 0x8000 // Data Line 7

#define D6 0x4000 // Data Line 6

#define D5 0x2000 // Data Line 5

#define D4 0x1000 // Data Line 4

#define D3 0x0400 // Data Line 3

#define D2 0x0300 // Data Line 2

#define D1 0x0200 // Data Line 1

#define D0 0x0100 // Data Line 0

 

void lcd_cmd (char);

void lcd_data (char);

void lcd_initialize (void);

void lcd_display (void);

void LCD4_Convert(char);

 

char cmd[4] = {0x38,0x0C,0x06,0x01}; // LCD Comments

char msg[] = {" ARM STICK V1.0"}; // First Line of LCD

char msg1[]= {" WELCOMES YOU"}; // Second Line of LCD

 

 

int main(void) // Main Function

 

{

GPIO3_DR = 0xFFFF; // P3.0 to P3.15 select as Input Direction

lcd_initialize();

lcd_display();

while(1);

}

 

void delay(int n) // Delay function

 

{

unsigned int i,j;

for(i=0;i<n;i++)

{

for(j=0;j<4000;j++)

{;}

}

}

 

void lcd_initialize(void) // LCD Initialize function

 

{

int i;

for(i=0;i<4;i++)

{

lcd_cmd(cmd[i]);

delay(15);

}

}

 

void lcd_cmd(char data)

 

{

GPIO3_OR &= ~RS; // LCD Select as Command mode

GPIO3_OR &= ~RW; // LCD Select as Write mode

LCD4_Convert(data);

}

 

void lcd_data (char data)

 

{

GPIO3_OR |= RS; // LCD Select as Data mode

GPIO3_OR &= ~RW; // LCD Select as Write mode

LCD4_Convert(data);

}

 

void lcd_display (void)

 

{

char i;

 

lcd_cmd(0x80); // command for LCD first line

delay(15);

 

 

 

 

for(i=0;msg[i]!='\0';i++)

{

delay(5);

lcd_data(msg[i]);

}

delay(15);

 

lcd_cmd(0xc0); // command for LCD first line

delay(15);

for(i=0;msg1[i]!='\0';i++)

{

delay(5);

lcd_data(msg1[i]);

}

delay(15);

}

 

void LCD4_Convert(char c)

 

{

if(c & 0x80) GPIO3_OR |= D7; else GPIO3_OR &= ~D7; // Set data for Data Line 7

if(c & 0x40) GPIO3_OR |= D6; else GPIO3_OR &= ~D6; // Set data for Data Line 6

if(c & 0x20) GPIO3_OR |= D5; else GPIO3_OR &= ~D5; // Set data for Data Line 5

if(c & 0x10) GPIO3_OR |= D4; else GPIO3_OR &= ~D4; // Set data for Data Line 4

if(c & 0x08) GPIO3_OR |= D3; else GPIO3_OR &= ~D3; // Set data for Data Line 3

if(c & 0x04) GPIO3_OR |= D2; else GPIO3_OR &= ~D2; // Set data for Data Line 2

if(c & 0x02) GPIO3_OR |= D1; else GPIO3_OR &= ~D1; // Set data for Data Line 1

if(c & 0x01) GPIO3_OR |= D0; else GPIO3_OR &= ~D0; // Set data for Data Line 0

 

GPIO3_OR |= EN; // Set High as Enable Line

delay(10);

GPIO3_OR &= ~EN; // Set Low as Enable Line

}

 

Example 4: Interfacing GLCD with ARM9 Stick Board

Procedure:

1. Configure GPIO Pins P3.7 to P3.14 as LCD data lines

2. Configure the P3.2 to P3.6 and P3.15 as LCD control lines

3. For hardware connection refer page 19.

Source Code: 4
GLCD Display on ARM9_LPC2929

 

#include<lpc29xx.h> //Register Description Header for LPC2929

#define CS0 0x0004 // Chip select line0

#define CS1 0x0008 // Chip select line1

#define RS 0x0010 // Register Select

#define RW 0x0020 // Read Write Enable

#define EN 0x0040 // Enable

#define RST 0x8000 // GLCD Reset

#define D7 0x4000 // Data Line 7

#define D6 0x2000 // Data Line 6

#define D5 0x1000 // Data Line 5

#define D4 0x0800 // Data Line 4

#define D3 0x0400 // Data Line 3

#define D2 0x0200 // Data Line 2

#define D1 0x0100 // Data Line 1

#define D0 0x0080 // Data Line 0

 

void GLCD_Init (void);

void GLCD_Page (char);

void GLCD_Cmd (char);

void GLCD_Data (char);

void GLCD_Draw (char *Base);

void Delay(unsigned int);

char i;

char CMD[] = {0x3E,0xC0,0xB8,0x40,0x3F}; // GLCD Commands

 

char PAN_LOGO[1024] = // Image Data

{

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 2, 2, 3, 1, 1,255, 1, 1, 1, 2,

2, 4, 4, 12, 16, 48,192, 0, 0, 0, 0, 0, 0,128,128,128,

128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0,128,128,128,128,128,128,128, 0, 0, 0, 0,255,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0,

0, 0, 0,128,192, 96, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,

1, 1, 1, 1, 1, 1, 1, 1, 1, 1,255, 1, 1, 1, 1, 1,

1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,

1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2,255, 2, 2, 2, 2,

3, 1, 1, 0, 0, 0, 0, 0, 0, 0,128, 64, 48, 16, 8, 8,

8, 24, 16,240, 0, 0, 0, 0, 0, 0,252, 32, 16, 24, 8, 8,

24,224,128, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0,

0, 0,252, 2, 2,194, 2, 2, 2, 6,252, 0, 0, 0, 0, 0,

240, 28, 6, 2, 2, 2, 2, 2, 2, 6, 0, 0, 0, 0, 0,255,

6, 2, 2, 2, 6, 28, 48, 96,192, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0,

0,192, 63,255, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0,

0, 0,255, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0,

0, 0, 63,224,128, 0, 3, 2, 2, 1, 1, 0, 0, 0, 0, 0,

63,224,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,

0, 0, 0, 0, 0, 0, 0, 0, 3,252, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 4, 8, 12,

6, 1, 0, 1, 3, 4, 4, 4, 0, 0, 7, 0, 0, 0, 0, 0,

0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0,

0, 0, 0, 0, 1, 6, 4, 4, 4, 4, 4, 6, 0, 0, 0, 0,

0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 7,

0, 0, 0, 0, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

};

int main() // Main Function

{

GPIO3_DR = 0xFFFF; // P3.0 to P3.15 select as Input Direction

GLCD_Init ();

while(1)

{

Delay(5);

GLCD_Draw(PAN_LOGO);

}

}

 

void GLCD_Init(void) // GLCD Initialize function

{

GPIO3_OR |= RST; // Set High as Reset

Delay(5);

GPIO3_OR &= ~RST; // Set Low as Reset Delay(5);

GPIO3_OR |= RST; // Set High as Reset

 

GLCD_Page(1);

 

for(i=0;i<5;i++)

{

GLCD_Cmd(CMD[i]);

}

GLCD_Page(0);

 

for(i=0;i<5;i++)

{

GLCD_Cmd(CMD[i]);

}

 

}

void GLCD_Page(char Page)

{

if (Page)

{

GPIO3_OR &= ~CS0; GPIO3_OR |= CS1; // Set High as CS1 and Low as CS0

}

else

{

GPIO3_OR &= ~CS1; GPIO3_OR |= CS0; // Set High as CS0 and Low as CS1

}

}

void GLCD_Cmd (char c)

{

if(c & 0x80) GPIO3_OR |= D7; else GPIO3_OR &= ~D7; // Set data for Data Line 7

if(c & 0x40) GPIO3_OR |= D6; else GPIO3_OR &= ~D6; // Set data for Data Line 6

if(c & 0x20) GPIO3_OR |= D5; else GPIO3_OR &= ~D5; // Set data for Data Line 5

if(c & 0x10) GPIO3_OR |= D4; else GPIO3_OR &= ~D4; // Set data for Data Line 4

if(c & 0x08) GPIO3_OR |= D3; else GPIO3_OR &= ~D3; // Set data for Data Line 3

if(c & 0x04) GPIO3_OR |= D2; else GPIO3_OR &= ~D2; // Set data for Data Line 2

if(c & 0x02) GPIO3_OR |= D1; else GPIO3_OR &= ~D1; // Set data for Data Line 1

if(c & 0x01) GPIO3_OR |= D0; else GPIO3_OR &= ~D0; // Set data for Data Line 0

 

GPIO3_OR &= ~RS; GPIO3_OR &= ~RW; // Set Low as RS and RW

GPIO3_OR |= EN; // Set High as Enable

Delay(5);

GPIO3_OR &= ~EN; // Set Low as Enable

}

void GLCD_Data (char c)

{

if(c & 0x80) GPIO3_OR |= D7; else GPIO3_OR &= ~D7; // Set data for Data Line 7

if(c & 0x40) GPIO3_OR |= D6; else GPIO3_OR &= ~D6; // Set data for Data Line 6

if(c & 0x20) GPIO3_OR |= D5; else GPIO3_OR &= ~D5; // Set data for Data Line 5

if(c & 0x10) GPIO3_OR |= D4; else GPIO3_OR &= ~D4; // Set data for Data Line 4

if(c & 0x08) GPIO3_OR |= D3; else GPIO3_OR &= ~D3; // Set data for Data Line 3

if(c & 0x04) GPIO3_OR |= D2; else GPIO3_OR &= ~D2; // Set data for Data Line 2

if(c & 0x02) GPIO3_OR |= D1; else GPIO3_OR &= ~D1; // Set data for Data Line 1

if(c & 0x01) GPIO3_OR |= D0; else GPIO3_OR &= ~D0; // Set data for Data Line 0

 

GPIO3_OR |= RS; GPIO3_OR &= ~RW; // Set Low as RS and RW

GPIO3_OR |= EN; // Set High as Enable

Delay(5);

GPIO3_OR &= ~EN; // Set Low as Enable

}

void GLCD_Draw (char *Base)

{

int Page, Column;

for (Page = 0; Page < 8 ; Page++)

{

GLCD_Page(1);

GLCD_Cmd ((0xB8 | Page));

GLCD_Cmd (0x40);

for (Column = 0; Column < 128; Column++)

{

if (Column == 64)

{

GLCD_Page (0);

GLCD_Cmd ((0xB8 | Page));

GLCD_Cmd (0x40);

}

GLCD_Data (*Base++);

Delay(5);

}

}

}

void Delay(unsigned int n) // Delay function

{

unsigned int i,j;

for(i=0;i<n;i++)

{

for(j=0;j<120;j++)

{;}

}

}

 

Example 5: Interfacing ADC_LCD with ARM9 Stick Board

Procedure:

1. Configure GPIO Pins P3.7 to P3.14 as LCD data lines

2. Configure the P3.2 to P3.6 and P3.15 as LCD control lines

 

3. For hardware connection refer page 21.

 

Source Code: 5

 

ADC_LCD Interface with ARM9_LPC2929

 

 

#include <LPC29xx.H> //Register Description Header for LPC2929

#define RS 0x0020 // Register Select

#define RW 0x0040 // Read Write Select

#define EN 0x0080 // Enable

#define D7 0x8000 // Data Line 7

#define D6 0x4000 // Data Line 6

#define D5 0x2000 // Data Line 5

#define D4 0x1000 // Data Line 4

#define D3 0x0400 // Data Line 3

#define D2 0x0300 // Data Line 2

#define D1 0x0200 // Data Line 1

#define D0 0x0100 // Data Line 0

void lcd_cmd (char);

void lcd_data (char);

void lcd_initialize (void);

void lcd_display (void);

void LCD4_Convert (char);

void Delay (unsigned int);

void ADC_Conversion (void);

void ADC_Init (void);

void delay (unsigned int);

void Disp_Calc (unsigned int);

char cmd[4] = {0x38,0x0C,0x06,0x01}; // LCD Comments

char msg[] = {"ARM STICK V 1.0"}; // First Line of LCD

char msg1[] = {"ADC VALUE ="}; // Second Line of LCD

int main(void) // Main function

{

unsigned int ADC_VALUE,A,B,C,D,E,F,i;

GPIO3_DR = 0xFFFF; // P3.0 to P3.15 select as Input Direction

lcd_initialize();

lcd_display();

ADC_Init();

 

while(1)

{

ADC_Conversion();

ADC_VALUE = ADC0_ACD10;

 

lcd_cmd(0xc0); // Command for second Line of LCD

for(i=0;msg1[i]!='\0';i++)

{

delay(2);

lcd_data(msg1[i]);

}

delay(2);

A = ADC_VALUE /1000; // ADC Value Calculation

B = ADC_VALUE %1000;

lcd_data(A+0x30);

delay(1);

C = B /100;

D = B %100;

lcd_data(C+0x30);

delay(1);

E = D /10;

F = D %10;

lcd_data(E+0x30);

delay(1);

lcd_data(F+0x30);

delay(1);

}

}

void lcd_initialize(void) // LCD Initialize function

{

int i;

for(i=0;i<4;i++)

{

lcd_cmd(cmd[i]);

delay(5);

}

}

void lcd_cmd(char data)

{

GPIO3_OR &= ~RS; // set RS as Low

GPIO3_OR &= ~RW; // set RW as Low

LCD4_Convert(data);

}

void lcd_data (char data)

{

GPIO3_OR |= RS; // set RS as High

GPIO3_OR &= ~RW; // set RW as Low

LCD4_Convert(data);

}

void lcd_display (void)

{

char i;

lcd_cmd(0x80); // Command for first Line of LCD

for(i=0;msg[i]!='\0';i++)

{

delay(5);

lcd_data(msg[i]);

}

delay(5);

}

void LCD4_Convert(char c)

{

if(c & 0x40) GPIO3_OR |= D6; else GPIO3_OR &= ~D6; // Set data for Data Line 6

if(c & 0x20) GPIO3_OR |= D5; else GPIO3_OR &= ~D5; // Set data for Data Line 5

if(c & 0x10) GPIO3_OR |= D4; else GPIO3_OR &= ~D4; // Set data for Data Line 4

if(c & 0x08) GPIO3_OR |= D3; else GPIO3_OR &= ~D3; // Set data for Data Line 3

if(c & 0x04) GPIO3_OR |= D2; else GPIO3_OR &= ~D2; // Set data for Data Line 2

if(c & 0x02) GPIO3_OR |= D1; else GPIO3_OR &= ~D1; // Set data for Data Line 1

if(c & 0x01) GPIO3_OR |= D0; else GPIO3_OR &= ~D0; // Set data for Data Line 0

GPIO3_OR |= EN; // set EN as High

delay(10);

GPIO3_OR &= ~EN; // set EN as Low

}

void ADC_Init(void)

{

SFSP3_0 = 1; // Funtion Select P3.0 as ADC IN6

ADC0_ACC10 = 0XA; // ADC0 config channel 10 and 10 bit

ADC0_CONFIG = 0; // ADC0 config as continuous scan or single scan

}

void ADC_Conversion(void)

{

ADC0_CTRL = 0x5; // ADC0 is update and start conversion

while((ADC0_STATUS & 0x1) == 1);

ADC0_CTRL = 0x2; // ADC0 is stop conversion

delay(10);

}

void delay(unsigned int n) // Delay function

{

unsigned int i,j;

for(i=0;i<n;i++)

{

for(j=0;j<2000;j++)

{;}

}

}

 

Example 6: UART 0 Serial communication with ARM9 Stick Board
Procedure:

1. Configure UART 0 Pins P1.22 to P1.23 lines

2. Configure the Baud rate

Source Code: 6
UART 0 Serial communication on ARM9_LPC2929

 

#include <LPC29xx.h>

#define CLK 12000000

#define BAUD 9600

#define DLAB_1 0x80

#define DLAB_0 0x7F

 

unsigned int Fdiv;

unsigned char Str_UART0[] = "Hello World!!! UART0-ARM9 STICK\r\n";

 

void CLOCK_Select(void);

void UART0_Init(void);

void Init_CGU0(void);

void Transmit(unsigned char);

unsigned char Receive(void);

void UART0_puts(unsigned char *);

void DelayMs(unsigned int);

int main()

{

CLOCK_Select();

DelayMs(10);

UART0_Init();

DelayMs(10);

while(1)

{

UART0_puts(Str_UART0);

DelayMs(500);

}

}

void UART0_Init(void)

{

SFSP1_22 = 1; //UART0 TXD, Configured as Digital Input without internal pullup

SFSP1_23 = 5; //UART0 RXD, Configured as Digital Input without internal pullup

U0IER = 0x00;

U0FCR = 0;

U0LCR = 0x83; //8 bits, no Parity, 1 Stop bit, DLAB = 1

U0FDR = 0x10; //DivAddVal=0, MulVal=1

Fdiv = ((CLK/16)/BAUD);

U0DLM = Fdiv/256; //Baud rate MSB register

U0DLL = Fdiv%256; //Baud rate LSB register

U0LCR = 0x03; //DLAB = 0

}

void Transmit(unsigned char Chr)

{

while((U0LSR & 0x20)==0); //Bit5 is used to indicate the status of Transmit buffer

U0THR = Chr; //if it is 1, the U0THR has data

}

unsigned char Receive(void)

{

while((U0LSR & 0x01)==0); //Bit0 is used to indicate the status of Receive buffer

return U0RBR; //if it is 1, the U0RBR has data

}

void UART0_puts(unsigned char *string)

{

while(*string)

Transmit(*string++);

}

void CLOCK_Select(void)

{

SYS_CLK_CONF = 0x01000000; //Direct Crystal Frequency = 12Mhz, no PLL

UART_CLK_CONF= 0x01000000; //Direct Crystal Frequency = 12Mhz, no PLL

}

void DelayMs(unsigned int Ms) //Delay Definition

{

int delay_cnst;

while(Ms>0)

{

Ms--;

for(delay_cnst = 0;delay_cnst<1200;delay_cnst++);

}

}

}

 

Example 7: UART 1 Serial communication with ARM9 Stick Board
Procedure:

1. Configure UART 1 Pins P2.16 to P2.17 lines

2. Configure the Baud rate

Source Code: 7
UART 1 Serial communication on ARM9_LPC2929

 

#include <LPC29xx.h>

#define CLK 12000000

#define BAUD 9600

#define DLAB_1 0x80

#define DLAB_0 0x7F

 

unsigned int Fdiv;

unsigned char Str_UART1[] = "Hello World!!! UART1-ARM9 STICK\r\n";

 

void CLOCK_Select(void);

void UART1_Init(void);

void Init_CGU0(void);

void Transmit(unsigned char);

unsigned char Receive(void);

void UART1_puts(unsigned char *);

void DelayMs(unsigned int);

int main()

{

CLOCK_Select();

DelayMs(10);

UART1_Init();

DelayMs(10);

while(1)

{

UART1_puts(Str_UART1);

DelayMs(500);

}

}

void UART1_Init(void)

{

SFSP2_16 = 0x1; //UART1 TXD, Configured as Digital Input without internal pullup

SFSP2_17 = 0x1; //UART1 RXD, Configured as Digital Input without internal pullup

U1IER = 0x00;

U1FCR = 0;

U1LCR = 0x83; //8 bits, no Parity, 1 Stop bit, DLAB = 1

U1FDR = 0x10; //DivAddVal=0, MulVal=1

Fdiv = ((CLK/16)/BAUD);

U1DLM = Fdiv/256; //Baud rate MSB register

U1DLL = Fdiv%256; //Baud rate LSB register

U1LCR = 0x03; //DLAB = 0

}

void Transmit(unsigned char Chr)

{

while((U1LSR & 0x20)==0); //Bit5 is used to indicate the status of Transmit buffer

U1THR = Chr; //if it is 1, the U0THR has data

}

unsigned char Receive(void)

{

while((U1LSR & 0x01)==0); //Bit0 is used to indicate the status of Receive buffer

return U1RBR; //if it is 1, the U0RBR has data

}

void UART1_puts(unsigned char *string)

{

while(*string)

Transmit(*string++);

}

void CLOCK_Select(void)

{

SYS_CLK_CONF = 0x01000000; //Direct Crystal Frequency = 12Mhz, no PLL

UART_CLK_CONF = 0x01000000; //Direct Crystal Frequency = 12Mhz, no PLL

}

void DelayMs(unsigned int Ms) //Delay Definition

{

int delay_cnst;

while(Ms>0)

{

Ms--;

for(delay_cnst = 0;delay_cnst<1200;delay_cnst++);

}

}

 

Example 8: Interrupt Test in ARM9 Stick Board

Procedure:

1. Configure GPIO_DR port register.

 

2. Configure the High and Low level using GPIO_OR register.

 

3. Configure the Interrupt function using Vector Interrupt Table and Event Router section in the datasheet of the ARM9_LPC2929.

 

4. For hardware connection refer page 23.

Source Code: 8

Interrupt Test in ARM9_LPC2929

 

#include <stdio.h>

#include <LPC29xx.H>

 

void DelayMs(unsigned int);

void ER_Init(void);

 

int main (void) // Main function

{

GPIO1_DR |= 0x60; //Initilize led direction port

GPIO3_DR |= 0x03; //Initilize led direction port

ER_Init(); //Initilize lnterrupt function

while(1)

{

GPIO1_OR |= 0x60; // set as High

DelayMs(500);

GPIO1_OR &= ~ 0x60; // set as Low

DelayMs(500);

}

}

void ER_Init(void)

{

SFSP2_26 = (0x01<<2)|(0x03<<0); /* Digital no PU and PD, func. 3. */

ER_APR = (0x0<<6); /* EINT6 is edge trigger, rising edge. */

ER_ATR = (0x0<<6);

ER_INT_CLR = 0x7FFFFFF;

ER_MASK_CLR = 0x7FFFFFF;

/* Setup Event Router interrupt generation */

INT_REQUEST_27 = (1 << 28) | /* Enable setting of priority level */

(1 << 27) | /* Enable setting interrupt target */

(1 << 26) | /* Write enable of new settings */

(1 << 16) | /* Enable interrupt request */

(1 << 8) | /* Interrupt target is IRQ interrupt */

(15 << 0) ; /* Priority level 15, disable nesting */

ER_MASK_SET |= (0x01<<6); /* Enable Interrupt */

return;

}

void ER_Handler (void) __irq /* Interrupt Function */

{

if( ER_PEND & (0x01<<6))

{

unsigned int i;

for(i=0;i<5;i++)

{

GPIO3_OR |= 0x03;;

DelayMs(1000);

GPIO3_OR &= ~0x03;;

DelayMs(1000);

}

ER_INT_CLR = (0x01<<6); /* Clear interrupt status */

}

}

void DelayMs(unsigned int Ms) //Delay Definition

{

int delay_cnst;

while(Ms>0)

{

Ms--;

for(delay_cnst = 0;delay_cnst<1200;delay_cnst++);

}

}

 

Example 9: Interfacing Buzzer with ARM9 Stick Board

Procedure:

1. Configure GPIO Pins P3.6 as output direction.

2. Set the Buzzer input as High and Low using GPIO_OR register

3. For hardware connection refer page 25.

Source Code: 9

Buzzer Interface with ARM9_LPC2929

 

#include<lpc29xx.h>

#define Buzzer 0x40

void DelayMs(unsigned int);

int main()

{

GPIO3_DR = 0x40; //GPIO pins configured as output

while(1)

{

GPIO3_OR |= Buzzer; //Sends High on GPIO

DelayMs(500);

GPIO3_OR &= ~ Buzzer; //Sends Low on GPIO

DelayMs(500);

}

}

void DelayMs(unsigned int Ms) //Delay Definition

{

int delay_cnst;

while(Ms>0)

{

Ms--;

for(delay_cnst = 0;delay_cnst<1200;delay_cnst++);

}

}

 

Example 10: Interfacing Matrix Keypad with ARM9 Stick Board

Procedure:

1. Configure GPIO Pins at output direction.

2. Configure Colum as input and Row as output direction ,get the value of Row

3. Configure Row as input and Colum as output direction ,get the value of Colum

4. For hardware connection refer page 26.

Source Code: 10

Matrix Keypad Interface with ARM9_LPC2929

 

#include <LPC29xx.h>

#include <stdio.h>

 

int a,b,Row,Col;

int array[4][4] = {0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF};

int main(void)

 

{

SFSP0_0 = 0xC;SFSP0_1 = 0xC;SFSP0_2 = 0xC;SFSP0_3 = 0xC; // Digital In no PU & PD and fn 0

SFSP1_0 = 0xC;SFSP1_1 = 0xC;SFSP1_2 = 0xC;SFSP1_3 = 0xC; // Digital In no PU & PD and fn 0

GPIO2_DR = 0xF00000; // Set as direction port

while(1)

{

GPIO0_DR = 0x0; // Set Row as input direction

GPIO1_DR = 0xF; // Set Colum as output direction

GPIO1_OR = 0x0; // Set as Colum as Low

a = GPIO0_PINS;

a = a & 0xF;

switch(a)

{

case 0xE:

Row = 0;

GPIO0_DR = 0xF; GPIO1_DR = 0x0; // Set Colum as input & Row as output direction

b = GPIO1_PINS & 0xF;

GPIO0_OR =0x0;

switch(b)

{

case 0xE:

Col = 0;

GPIO2_OR = ((array[Row][Col])<<20);

break;

 

case 0xD:

Col = 1;

GPIO2_OR = ((array[Row][Col])<<20);

break;

 

case 0xB:

Col = 2;

GPIO2_OR = ((array[Row][Col])<<20);

break;

 

case 0x7:

Col = 3;

GPIO2_OR = ((array[Row][Col])<<20);

break;

}

break;

 

case 0xD:

Row = 1;

GPIO0_DR = 0xF;

GPIO1_DR = 0x0;

GPIO0_OR =0x0;

b = GPIO1_PINS & 0xF;

 

switch(b)

 

{

case 0xE:

Col = 0;

GPIO2_OR = ((array[Row][Col])<<20);

break;

 

case 0xD:

Col = 1;

GPIO2_OR = ((array[Row][Col])<<20);

break;

 

case 0xB:

Col = 2;

GPIO2_OR = ((array[Row][Col])<<20);

break;

 

case 0x7:

Col = 3;

GPIO2_OR = ((array[Row][Col])<<20);

break;

}

break;

 

case 0xB:

Row = 2;

GPIO0_DR = 0xF;

GPIO1_DR = 0x0;

GPIO0_OR =0x0;

b = GPIO1_PINS & 0xF;

 

switch(b)

 

{

case 0xE:

Col = 0;

GPIO2_OR = ((array[Row][Col])<<20);

break;

 

case 0xD:

Col = 1;

GPIO2_OR = ((array[Row][Col])<<20);

break;

 

case 0xB:

Col = 2;

GPIO2_OR = ((array[Row][Col])<<20);

break;

 

case 0x7:

Col = 3;

GPIO2_OR = ((array[Row][Col])<<20);

break;

}

break;

 

case 0x7:

Row = 3;

GPIO0_DR = 0xF;

GPIO1_DR = 0x0;

GPIO0_OR =0x0;

b = GPIO1_PINS & 0xF;

 

switch(b)

 

{

case 0xE:

Col = 0;

GPIO2_OR = ((array[Row][Col])<<20);

break;

 

case 0xD:

Col = 1;

GPIO2_OR = ((array[Row][Col])<<20);

break;

 

case 0xB:

Col = 2;

GPIO2_OR = ((array[Row][Col])<<20);

break;

 

case 0x7:

Col = 3;

GPIO2_OR = ((array[Row][Col])<<20);

break;

}

break;

 

default:

GPIO2_OR = 0x0;

break;

}

}

}

 

 

Online Video demo link for ARM9 Stick Board

 

1. ARM9 Stick Board - Introduction

 

2. Interfacing LCD with ARM9 Stick Board

 

3. Interfacing ADC_LCD with ARM9 Stick Board

 

4. PWM Generation using ARM9 Stick Board

 

5. Interfacing Ultrasonic Sensor with ARM9 Stick Board

 

6. LED Blinking using ARM9 Stick Board

 

7. Interfacing GLCD with ARM9 Stick Board

 

8. Interfacing SPI DAC with LPC2929 ARM9 Board

 

9. Interfacing Switch with LPC2929 ARM9 Stick