Relay BUZZER LED
#include <lpc17xx.h>
#define SwitchPinNumber 11// port P2.11 connected to switch
#define LedPinNumber 19 //port 1.19-p1.26 connected to 8 leds
#define relayPinNumber 28 //port P1.28 connected to relay
#define buzzerPinNumber 27 //port P1.27 connected to buzzer
int main (void)
uint32_t switchStatus;
LPC_GPIO1->FIODIR = 0x1ff80000; /* P1.xx defined as Outputs */
LPC_GPIO1->FIOCLR = 0x1ff80000; /* turn off all the LEDs&relay&buzzer */
LPC_GPIO2->FIODIR = 0x00000000; /* P2.xx defined as input */
while(1)
/* Turn On all the leds and wait for one second */
switchStatus = (LPC_GPIO2->FIOPIN>>SwitchPinNumber) & 0x01 ; // Read the switch status
if(switchStatus == 0) //if switch pressed
LPC_GPIO1->FIOPIN = (1<<buzzerPinNumber)|(1<<relayPinNumber)|(1<<LedPinNumber);//turn on led,relay and
buzzer
else //if switch released
LPC_GPIO1->FIOPIN = (0<<buzzerPinNumber)|(0<<relayPinNumber)|(0<<LedPinNumber); //if switch
released led,relay,buzzer off
DC MOTOR
#include <lpc17xx.h>
void delay_ms(unsigned int ms)
unsigned int i,j;
for(i=0;i<ms;i++)
for(j=0;j<60000;j++);
#define SBIT_CNTEN 0 //counter enable
#define SBIT_PWMEN 2 //pwm 2 block enable
#define SBIT_PWMMR0R 1 //This bit is used to Reset PWMTC whenever it Matches PWMRx(x:0-6)
#define SBIT_PWMENA3 11 //This bit is used to enable/disable the PWM output for PWMx(x:1-6)
#define PWM_3 4 //P2_2 (0-1 Bits of PINSEL4)
int main(void)
int dutyCycle;
SystemInit();
/* Cofigure pins(P2_2 ) for PWM mode. */
LPC_PINCON->PINSEL4 = (1<<PWM_3) ;
/* Enable Counters,PWM module */
LPC_PWM1->TCR = (1<<SBIT_CNTEN) | (1<<SBIT_PWMEN);
LPC_PWM1->PR = 0x00; /* No Prescalar */
LPC_PWM1->MCR = (1<<SBIT_PWMMR0R); /*Reset on PWMMR0, reset TC if it matches MR0 */
LPC_PWM1->MR0 = 100; /* set PWM cycle(Ton+Toff)=100) */
/* Enable the PWM output pins for PWM_1-PWM_4(P2_0 - P2_3) */
LPC_PWM1->PCR = (1<<SBIT_PWMENA3);
while(1)
LPC_PWM1->MR3 = dutyCycle; /* Increase the dutyCycle from 0-100 */
delay_ms(5);
}
if(!(LPC_GPIO2->FIOPIN & 0x00000800))//if sw 23 pressed
while(!(LPC_GPIO2->FIOPIN & 0x00000800));
dutyCycle-=10; //decrement duty cycle 10%
if(dutyCycle<0)
dutyCycle=0;
else if(!(LPC_GPIO2->FIOPIN & 0x00001000)) //if SW 22 pressed
while(!(LPC_GPIO2->FIOPIN & 0x00001000));
dutyCycle+=10; //increment duty cycle 10%
if(dutyCycle>100)
dutyCycle=99;
STEPPER DIRECTION
#include "lpc17xx.h"
void delay();
void delay()
int i,j;
for(i=0;i<0xff;i++)
for(j=0;j<0x400;j++);
}
int main (void)
char rotate=0;
SystemInit();
LPC_GPIO0->FIODIR |= 0x00078000;
while(1)
if(rotate==1)
LPC_GPIO0->FIOPIN = 0x00008000 ;
delay();
LPC_GPIO0->FIOPIN = 0x00010000 ;
delay();
LPC_GPIO0->FIOPIN = 0x00020000 ;
delay();
LPC_GPIO0->FIOPIN = 0x00040000 ;
delay();
else
LPC_GPIO0->FIOPIN = 0x00040000 ;
delay();
LPC_GPIO0->FIOPIN = 0x00020000 ;
delay();
LPC_GPIO0->FIOPIN = 0x00010000 ;
delay();
LPC_GPIO0->FIOPIN = 0x00008000 ;
delay();
}
if(!(LPC_GPIO2->FIOPIN & 0x00000800))
while(!(LPC_GPIO2->FIOPIN & 0x00000800));
rotate=1;
else if(!(LPC_GPIO2->FIOPIN & 0x00001000))
while(!(LPC_GPIO2->FIOPIN & 0x00001000));
rotate=0;
STEP ANGLE
#include <lpc17xx.h>
void delay(unsigned int ms)
unsigned int i,j;
for(i=0;i<ms;i++)
for(j=0;j<20000;j++); //delay subroutine
/* start the main program */
int main()
int cycle;
SystemInit(); //Clock and PLL configuration
LPC_GPIO0->FIODIR |= 0x00078000; //Configure the PORT0 pins as OUTPUT;
for(cycle=0; cycle<13; cycle++)// for loop condition for number of rotation.
LPC_GPIO0->FIOPIN = 0x00008000 ; // p0.15 pin
delay(100);
LPC_GPIO0->FIOPIN = 0x00010000 ;// p0.16 pin
delay(100);
LPC_GPIO0->FIOPIN = 0x00020000 ; // p0.17 pin
delay(100);
LPC_GPIO0->FIOPIN = 0x00040000 ;// p0.18 pin
delay(100);
TOGGLE LED
#include "lpc17xx.h"
#define Switch 11//p2.11
#define Led1 19//p1.19
#define Led2 20 //p1.20
#define Led3 21//p1.21
#define Led4 22 //p1.22
#define Led5 23//p1.23
#define Led6 24 //p1.24
#define Led7 25//p1.25
#define Led8 26 //p1.26
int main (void)
uint32_t switchStatus;
LPC_GPIO1->FIODIR = 0x07f80000; /* P1.xx defined as Outputs */
LPC_GPIO1->FIOCLR = 0x07f80000; /* turn off all the LEDs */
LPC_GPIO2->FIODIR = 0x00000000; /* P2.xx defined as Outputs */
while(1)
/* Turn On all the leds and wait for one second */
switchStatus = (LPC_GPIO2->FIOPIN>>Switch) & 0x01 ; // Read the switch status
if(switchStatus == 1) //Turn ON/OFF LEDs depending on switch status
LPC_GPIO1->FIOPIN = (1<<Led1)|(1<<Led2)|(1<<Led3)|(1<<Led4);//turn on 1st 4 leds (normal condition)
else
LPC_GPIO1->FIOPIN = (1<<Led5)|(1<<Led6)|(1<<Led7)|(1<<Led8);//turn on next 4 leds(switch
pressed)
TRIANGULAR WAVE
#include "LPC17xx.h"
uint32_t val;
int main()
SystemInit();
LPC_PINCON->PINSEL1 |= 0x02<<20; //p0.26 pinsel bits 20 and 21
while(1)
while(1)
val++;// increment values by 6
LPC_DAC->DACR=(val<<6);//send values to dac
if(val>=0x3ff)// if value exceeds 1024
break;
while(1)
val--; // decrement value by 6
LPC_DAC->DACR=(val<<6);// send value to dac
if(val<=0x000)// if value come down by 0
break;
SQUARE WAVE
#include "LPC17xx.h"
void delay(unsigned int ms)// delay subroutine
{ unsigned int i,j;
for(i=0;i<ms;i++)
for(j=0;j<2000;j++);
int main()
{ SystemInit();
LPC_PINCON->PINSEL1 |= 0x02<<20;//p0.26 pinsel bits 20 and 21
while(1)
{
LPC_DAC->DACR=0xffff;// send maximum values to dac
delay(20); // delay
LPC_DAC->DACR=0x0000;// send min values to dac
delay(20);
7SEGMENT
#include <lpc17xx.h>
void delay_ms(unsigned int ms)
unsigned int i,j;
for(i=0;i<ms;i++)
for(j=0;j<40000;j++);
/* start the main program */
int main()
SystemInit(); //Clock and PLL configuration
LPC_GPIO0->FIODIR = 0x00000100; //Configure the PORT0 pins as OUTPUT;
LPC_GPIO1->FIODIR = 0x00004713;
while(1)
{ LPC_GPIO0->FIOSET = 0x00000100; // Make all the Port pins as high
LPC_GPIO1->FIOCLR = 0x00004713;//clear all segments
LPC_GPIO1->FIOSET = 0x00004000;// set g to make 0
delay_ms(200);
LPC_GPIO1->FIOCLR = 0x00004713;//clear all segments
LPC_GPIO1->FIOSET = 0x00004701;//set a,d,e,f,g to make 1
delay_ms(200);
LPC_GPIO1->FIOCLR = 0x00004713;//clear all segments
LPC_GPIO1->FIOSET = 0x00000410;//set c,f to make 2
delay_ms(200);
LPC_GPIO1->FIOCLR = 0x00004713;//clear all segments
LPC_GPIO1->FIOSET = 0x00000600;//set e and f to make 3
delay_ms(200);
LPC_GPIO1->FIOCLR = 0x00004713;//clear all segments
LPC_GPIO1->FIOSET = 0x00000301;//set a,d,e to make 4
delay_ms(200);
LPC_GPIO1->FIOCLR = 0x00004713;//clear all segments
LPC_GPIO1->FIOSET = 0x00000202;//set b,e to make 5
delay_ms(200);
LPC_GPIO1->FIOCLR = 0x00004713;//clear all segments
LPC_GPIO1->FIOSET = 0x00000002;//set b to make 6
delay_ms(200);
LPC_GPIO1->FIOCLR = 0x00004713;//clear all segments
LPC_GPIO1->FIOSET = 0x00004700;//set d,e,f,g to make 7
delay_ms(200);
LPC_GPIO1->FIOCLR = 0x00004713;//clear all segments
LPC_GPIO1->FIOSET = 0x00000000;//set all 0 to make 8
delay_ms(200);
LPC_GPIO1->FIOCLR = 0x00004713;//clear all segments
LPC_GPIO1->FIOSET = 0x00000300;//set e to make 9
delay_ms(200);
LPC_GPIO1->FIOCLR = 0x00004713;//clear all segments
LPC_GPIO1->FIOSET = 0x00000100;//set d to make A
delay_ms(200);
LPC_GPIO1->FIOCLR = 0x00004713;//clear all segments
LPC_GPIO1->FIOSET = 0x00000003;//set a,b to make b
delay_ms(200);
LPC_GPIO1->FIOCLR = 0x00004713;//clear all segments
LPC_GPIO1->FIOSET = 0x00004012;//set set b,c,g to make C
delay_ms(200);
LPC_GPIO1->FIOCLR = 0x00004713;//clear all segments
LPC_GPIO1->FIOSET = 0x00000401;//set a,f to make d
delay_ms(200);
LPC_GPIO1->FIOCLR = 0x00004713;//clear all segments
LPC_GPIO1->FIOSET = 0x00000012;//set b,c to make E
delay_ms(200);
LPC_GPIO1->FIOCLR = 0x00004713;//clear all segments
LPC_GPIO1->FIOSET = 0x00000112;//set b,c,d to make F
delay_ms(200);
4x4 KEYPAD
#include "lpc17xx.h"
#include "lcd.h"
/////////////////////////////////////////////
// Matrix Keypad Scanning Routine
//
// COL1 COL2 COL3 COL4
// 0 1 2 3 ROW 1
// 4 5 6 7 ROW 2
// 8 9 A B ROW 3
// C D E F ROW 4
//////////////////////////////////////////////
#define COL1 0
#define COL2 1
#define COL3 4
#define COL4 8
#define ROW1 9
#define ROW2 10
#define ROW3 14
#define ROW4 15
#define COLMASK ((1<<COL1) |(1<< COL2) |(1<< COL3) |(1<< COL4))
#define ROWMASK ((1<<ROW1) |(1<< ROW2) |(1<< ROW3) |(1<< ROW4))
#define KEY_CTRL_DIR LPC_GPIO1->FIODIR
#define KEY_CTRL_SET LPC_GPIO1->FIOSET
#define KEY_CTRL_CLR LPC_GPIO1->FIOCLR
#define KEY_CTRL_PIN LPC_GPIO1->FIOPIN
/////////////// COLUMN WRITE /////////////////////
void col_write( unsigned char data )
unsigned int temp=0;
temp=(data) & COLMASK;
KEY_CTRL_CLR |= COLMASK;
KEY_CTRL_SET |= temp;
///////////////////////////////// MAIN ///////////////////////////////////////
int main (void)
unsigned char key, i;
unsigned char rval[] = {0x77,0x07,0x0d};
unsigned char keyPadMatrix[] =
{
'4','8','B','F',
'3','7','A','E',
'2','6','0','D',
'1','5','9','C'
};
SystemInit();
init_lcd();
KEY_CTRL_DIR |= COLMASK; //Set COLs as Outputs
KEY_CTRL_DIR &= ~(ROWMASK); // Set ROW lines as Inputs
lcd_putstring16(0,"Press HEX Keys..");
lcd_putstring16(1,"Key Pressed = ");
while (1)
key = 0;
for( i = 0; i < 4; i++ )
// turn on COL output one by one
col_write(rval[i]);
// read rows - break when key press detected
if (!(KEY_CTRL_PIN & (1<<ROW1)))
break;
key++;
if (!(KEY_CTRL_PIN & (1<<ROW2)))
break;
key++;
if (!(KEY_CTRL_PIN & (1<<ROW3)))
break;
key++;
if (!(KEY_CTRL_PIN & (1<<ROW4)))
break;
key++;
if (key == 0x10)
lcd_putstring16(1,"Key Pressed = ");
else
{ lcd_gotoxy(1,14);
lcd_putchar(keyPadMatrix[key]);
LCD DISPLAY
#include "lpc17xx.h"
#include "lcd.h"
void Lcd_CmdWrite(unsigned char cmd);
void Lcd_DataWrite(unsigned char dat);
#define LCDRS 9
#define LCDRW 10
#define LCDEN 11
#define LCD_D4 19
#define LCD_D5 20
#define LCD_D6 21
#define LCD_D7 22
#define LcdData LPC_GPIO0->FIOPIN
#define LcdControl LPC_GPIO0->FIOPIN
#define LcdDataDirn LPC_GPIO0->FIODIR
#define LcdCtrlDirn LPC_GPIO0->FIODIR
#define LCD_ctrlMask ((1<<LCDRS)|(1<<LCDRW)|(1<<LCDEN))
#define LCD_dataMask ((1<<LCD_D4)|(1<<LCD_D5)|(1<<LCD_D6)|(1<<LCD_D7))
void delay(unsigned int count)
int j=0, i=0;
for (j=0;j<count;j++)
for (i=0;i<30;i++);
void sendNibble(char nibble)
LcdData&=~(LCD_dataMask); // Clear previous data
LcdData|= (((nibble >>0x00) & 0x01) << LCD_D4);
LcdData|= (((nibble >>0x01) & 0x01) << LCD_D5);
LcdData|= (((nibble >>0x02) & 0x01) << LCD_D6);
LcdData|= (((nibble >>0x03) & 0x01) << LCD_D7);
void Lcd_CmdWrite(unsigned char cmd)
sendNibble((cmd >> 0x04) & 0x0F); //Send higher nibble
LcdControl &= ~(1<<LCDRS); // Send LOW pulse on RS pin for selecting Command register
LcdControl &= ~(1<<LCDRW); // Send LOW pulse on RW pin for Write operation
LcdControl |= (1<<LCDEN); // Generate a High-to-low pulse on EN pin
delay(100);
LcdControl &= ~(1<<LCDEN);
delay(10000);
sendNibble(cmd & 0x0F); //Send Lower nibble
LcdControl &= ~(1<<LCDRS); // Send LOW pulse on RS pin for selecting Command register
LcdControl &= ~(1<<LCDRW); // Send LOW pulse on RW pin for Write operation
LcdControl |= (1<<LCDEN); // Generate a High-to-low pulse on EN pin
delay(100);
LcdControl &= ~(1<<LCDEN);
delay(1000);
void Lcd_DataWrite(unsigned char dat)
sendNibble((dat >> 0x04) & 0x0F); //Send higher nibble
LcdControl |= (1<<LCDRS); // Send HIGH pulse on RS pin for selecting data register
LcdControl &= ~(1<<LCDRW); // Send LOW pulse on RW pin for Write operation
LcdControl |= (1<<LCDEN); // Generate a High-to-low pulse on EN pin
delay(100);
LcdControl &= ~(1<<LCDEN);
delay(1000);
sendNibble(dat & 0x0F); //Send Lower nibble
LcdControl |= (1<<LCDRS); // Send HIGH pulse on RS pin for selecting data register
LcdControl &= ~(1<<LCDRW); // Send LOW pulse on RW pin for Write operation
LcdControl |= (1<<LCDEN); // Generate a High-to-low pulse on EN pin
delay(100);
LcdControl &= ~(1<<LCDEN);
delay(1000);
void lcd_clear( void)
Lcd_CmdWrite( 0x01 );
int lcd_gotoxy( unsigned char x, unsigned char y)
{ unsigned char retval = TRUE;
if( (x > 1) && (y > 15) )
{ retval = FALSE;
else
{ if( x == 0 ) Lcd_CmdWrite( 0x80 + y );
else if( x==1 ) Lcd_CmdWrite( 0xC0 + y );
return retval;
void lcd_putchar( unsigned char c )
Lcd_DataWrite( c );
void lcd_putstring( char *string )
while(*string != '\0')
lcd_putchar( *string );
string++;
void lcd_putstring16( unsigned char line, char *string )
unsigned char len = 16;
lcd_gotoxy( line, 0 );
while(*string != '\0' && len--)
lcd_putchar( *string );
string++;
void init_lcd( void )
LcdDataDirn |= LCD_dataMask; // Configure all the LCD pins as output
LcdCtrlDirn |= LCD_ctrlMask;
// Initialize Lcd in 4-bit mode
Lcd_CmdWrite(0x03);
delay(2000);
Lcd_CmdWrite(0x03);
delay(1000);
Lcd_CmdWrite(0x03);
delay(100);
Lcd_CmdWrite(0x2);
Lcd_CmdWrite(0x28);
Lcd_CmdWrite(0x0e);
Lcd_CmdWrite(0x06);
Lcd_CmdWrite(0x01);
delay(1); // display on }
LED ON AND OFF
#include <lpc17xx.h>
void delay_ms(unsigned int ms)
unsigned int i,j;
for(i=0;i<ms;i++)
for(j=0;j<20000;j++);
}
/* start the main program */
int main()
SystemInit(); //Clock and PLL configuration
LPC_GPIO1->FIODIR = 0x07F80000; //Configure the PORT1 pins as OUTPUT;
while(1)
LPC_GPIO1->FIOSET = 0x07F80000; // Make all the Port pins as high
delay_ms(200);
LPC_GPIO1->FIOCLR = 0x07F80000; // Make all the Port pins as low
delay_ms(200);
stepper MOTOR CLOCKWISE 90 DEGREE
#include "lpc17xx.h"
void delay();
void delay()
int i,j;
for(i=0;i<0xff;i++)
for(j=0;j<0x250;j++);
int main (void)
SystemInit();
LPC_GPIO0->FIODIR |= 0x00078000;
while(1)
{
LPC_GPIO0->FIOPIN = 0x00008000 ;
delay();
LPC_GPIO0->FIOPIN = 0x00010000 ;
delay();
LPC_GPIO0->FIOPIN = 0x00020000 ;
delay();
LPC_GPIO0->FIOPIN = 0x00040000 ;
delay();
DC MOTOR
#include <lpc17xx.h>
void delay_ms(unsigned int ms)
unsigned int i,j;
for(i=0;i<ms;i++)
for(j=0;j<90000;j++);
}
#define SBIT_CNTEN 0
#define SBIT_PWMEN 2
#define SBIT_PWMMR0R 1
#define SBIT_PWMENA3 11
#define PWM_3 4 //P2_2 (0-1 Bits of PINSEL4)
int main(void)
int dutyCycle;
SystemInit();
/* Cofigure pins(P2_0 ) for PWM mode. */
LPC_PINCON->PINSEL4 = (1<<PWM_3) ;
/* Enable Counters,PWM module */
LPC_PWM1->TCR = (1<<SBIT_CNTEN) | (1<<SBIT_PWMEN);
LPC_PWM1->PR = 0x00; /* No Prescalar */
LPC_PWM1->MCR = (1<<SBIT_PWMMR0R); /*Reset on PWMMR0, reset TC if it matches MR0 */
LPC_PWM1->MR0 = 100; /* set PWM cycle(Ton+Toff)=100) */
/* Enable the PWM output pins for PWM_1-PWM_4(P2_0 - P2_3) */
LPC_PWM1->PCR = (1<<SBIT_PWMENA3);
while(1)
for(dutyCycle=0; dutyCycle<100; dutyCycle++)
LPC_PWM1->MR3 = dutyCycle; /* Increase the dutyCycle from 0-100 */
delay_ms(15);
for(dutyCycle=100; dutyCycle>0; dutyCycle--)
LPC_PWM1->MR3 = dutyCycle; /* Decrease the dutyCycle from 100-0 */
delay_ms(2);