0% found this document useful (0 votes)
61 views

Embedded Lab C Program

The document contains code snippets for various microcontroller projects including blinking LEDs, 8-bit upcounter, 7-segment multiplexing and single digit display, LCD display, real time clock, wireless transmitter/receiver, matrix switch, stepper motor control, and ADC temperature reading. The code snippets set up the microcontroller pins and peripherals and implement the core functionality for each project.

Uploaded by

guna seelan
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
61 views

Embedded Lab C Program

The document contains code snippets for various microcontroller projects including blinking LEDs, 8-bit upcounter, 7-segment multiplexing and single digit display, LCD display, real time clock, wireless transmitter/receiver, matrix switch, stepper motor control, and ADC temperature reading. The code snippets set up the microcontroller pins and peripherals and implement the core functionality for each project.

Uploaded by

guna seelan
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 23

LED BLINKING(TWO HEXA VLAUES 0X12 AND 0X24)

#include <LPC214X.H>
void delay(unsigned int x);
int main(void)
{
PLL0CON=0;
PLL0FEED=0XAA;
PLL0FEED=0X55;
VPBDIV=1;
PINSEL0=0;
PINSEL1=0;
IODIR0=0X0000FF00;
while(1)
{
IOSET0=0XFF<<8;
IOCLR0=0X12<<8;
delay(1000);
IOSET0=0XFF<<8;
IOCLR0=0X24<<8;
delay(1000);
}
}
void delay(unsigned int x)
{
int i,j;
for(i=0;i<x;i++)
for(j=0;j<1007;j++);
}
8 BIT UPCOUNTER
#include <LPC214X.H>
void delay(unsigned int x);
int main(void)
{
int n;
PLL0CON=0;
PLL0FEED=0XAA;
PLL0FEED=0X55;
VPBDIV=1;
PINSEL0=0X00000000;
IODIR0=0X00FFFF00;
IOCLR0=0X00FFF000;
while(1)
{
IOSET0=0X00FF0000;
for(n=0;n<256;n++)
{
IOSET0=0X0000FF00;
IOCLR0=n<<8;
delay(300);
}
}
}
void delay(unsigned int x)
{
int i,j;
for(i=0;i<x;i++)
for(j=0;j<1007;j++);
}
7 SEGMENT MULTIPLEXING:
#include <LPC214X.H>
void delay(unsigned int);
int main(void)
{
PLL0CON=0;
PLL0FEED=0XAA;
PLL0FEED=0X55;
VPBDIV=1;
PINSEL0=0X00000000;
PINSEL1=0X00000000;
IODIR0=0X00FF3000;
IOSET0=0X00003000;
while(1)
{
IOSET0=0X00002000;
IOCLR0=0X00001000;
IOCLR0=0X00FF0000;
IOSET0=0X00060000;
delay(10);
IOSET0=0X00001000;
IOCLR0=0X00002000;
IOCLR0=0X00FF0000;
IOSET0=0X005B0000;
delay(10);
}
}
void delay(unsigned int x)
{
int i,j;
for(i=0;i<x;i++)
for(j=0;j<1007;j++);
}
7 SEGMENT SINGLE DIGIT DISPLY:
#include <LPC214X.H>
void delay(unsigned int);
int main(void)
{
PLL0CON=0;
PLL0FEED=0XAA;
PLL0FEED=0X55;
VPBDIV=1;
PINSEL0=0X00000000;
PINSEL1=0X00000000;
IODIR0=0X00FF3000;

IOSET0=0X00001000;
IOCLR0=0X00002000;
IOCLR0=0X00FF0000;
IOSET0=0X005B0000;

while(1);
}
void delay(unsigned int x)
{
int i,j;
for(i=0;i<x;i++)
for(j=0;j<1007;j++);
}
LCD DISPLAY “E” AND RIGHT SHIFT 6 TIMES
#include <LPC214X.H>
#define rw 1<<16
#define en 1<<17
#define rs 1<<24
#define data 0XFF <<16
void cmd(unsigned char x);
void dat(unsigned char m);
void delayms(unsigned int k);
void send(char *);
void init(void);
int main()
{
int n;
PLL0CON=0;
PLL0FEED=0XAA;
PLL0FEED=0X55;
VPBDIV=1;
PINSEL0=0X00000000;
PINSEL1=0X00000000;
PINSEL2=0X00000000;
IODIR0=0|rw|en;
IODIR1=0|rs|data;
IOCLR0=rw;
IOCLR1=data;
init();
dat('A');
for(n=0;n<6;n++)
{
delayms(1000);
cmd(0x1C);
}
while(1);
}

void cmd(unsigned char x)


{
unsigned long int y;
y=x<<16;
IOCLR1=rs;
IOCLR1=data;
IOSET1=y;
IOSET0=en;
delayms(10);
IOCLR0=en;

}
void dat(unsigned char m)
{
unsigned long int n;
n=m<<16;
IOSET1=rs;
IOCLR1=data;
IOSET1=n;
IOSET0=en;
delayms(10);
IOCLR0=en;
}
void init(void)
{
cmd(0X38);
delayms(100);
cmd(0X01);
delayms(100);
cmd(0X06);
delayms(100);
cmd(0X0C);
delayms(100);
}
void delayms(unsigned int k)
{
int i,j;
for(i=0;i<k;i++)
for(j=0;j<1007;j++);
}
void send(char*p)
{
char a;
while(*p)
{
a=*p++;
dat(a);
delayms(100);
}
}
LCD DISPLAY “ECE”
#include <LPC214X.H>
#define rw 1<<16
#define en 1<<17
#define rs 1<<24
#define data 0XFF <<16
void cmd(unsigned char x);
void dat(unsigned char m);
void delayms(unsigned int k);
void send(char *);
void init(void);
int main()
{
PLL0CON=0;
PLL0FEED=0XAA;
PLL0FEED=0X55;
VPBDIV=1;
PINSEL0=0X00000000;
PINSEL1=0X00000000;
PINSEL2=0X00000000;
IODIR0=0|rw|en;
IODIR1=0|rs|data;
IOCLR0=rw;
IOCLR1=data;
init();
send(“ECE”);
while(1);
}

void cmd(unsigned char x)


{
unsigned long int y;
y=x<<16;
IOCLR1=rs;
IOCLR1=data;
IOSET1=y;
IOSET0=en;
delayms(10);
IOCLR0=en;

}
void dat(unsigned char m)
{
unsigned long int n;
n=m<<16;
IOSET1=rs;
IOCLR1=data;
IOSET1=n;
IOSET0=en;
delayms(10);
IOCLR0=en;
}
void init(void)
{
cmd(0X38);
delayms(100);
cmd(0X01);
delayms(100);
cmd(0X06);
delayms(100);
cmd(0X0C);
delayms(100);
}
void delayms(unsigned int k)
{
int i,j;
for(i=0;i<k;i++)
for(j=0;j<1007;j++);
}
void send(char*p)
{
char a;
while(*p)
{
a=*p++;
dat(a);
delayms(100);
}
}
REAL TIME CLOCK (RTC)
NOTE:
BUILD AND LOAD THE FOLLOWING PROGRAM
TWO TIMES.
1. FIRST TIME WITH CURRENT “TIME AND DATE”:
SEC=0;
MIN=54;
HOUR=2;
DOM=17;
MONTH=10;
YEAR=18;

2. SECOND TIME WITHOUT “TIME AND DATE”:


#include <LPC214X.H>
#define rw 1<<16
#define en 1<<17
#define rs 1<<24
#define data 0XFF <<16
void cmd(unsigned char x);
void dat(unsigned char m);
void delayms(unsigned int k);
void send(char *);
void init(void);
int main()
{
PLL0CON=0;
PLL0FEED=0XAA;
PLL0FEED=0X55;
VPBDIV=1;
PINSEL0=0X00000000;
PINSEL1=0X00000000;
PINSEL2=0X00000000;
IODIR0=0|rw|en;
IODIR1=0|rs|data;
IOCLR0=rw;
IOCLR1=data;
init();
CCR=0X11;
SEC=0;
MIN=54;
HOUR=2;
DOM=17;
MONTH=10;
YEAR=18;
while(1)
{
cmd(0x80);
send("TIME:");
dat(HOUR/10+'0');
dat(HOUR%10+'0');
dat(':');
dat(MIN/10+'0');
dat(MIN%10+'0');
dat(':');
dat(SEC/10+'0');
dat(SEC%10+'0');
cmd(0xC0);
send("DATE:");
dat(DOM/10+'0');
dat(DOM%10+'0');
dat(':');
dat(MONTH/10+'0');
dat(MONTH%10+'0');
dat(':');
dat(YEAR/10+'0');
dat(YEAR%10+'0');
}
}

void cmd(unsigned char x)


{
unsigned long int y;
y=x<<16;
IOCLR1=rs;
IOCLR1=data;
IOSET1=y;
IOSET0=en;
delayms(10);
IOCLR0=en;

}
void dat(unsigned char m)
{
unsigned long int n;
n=m<<16;
IOSET1=rs;
IOCLR1=data;
IOSET1=n;
IOSET0=en;
delayms(10);
IOCLR0=en;
}
void init(void)
{
cmd(0X38);
delayms(100);
cmd(0X01);
delayms(100);
cmd(0X06);
delayms(100);
cmd(0X0C);
delayms(100);
}
void delayms(unsigned int k)
{
int i,j;
for(i=0;i<k;i++)
for(j=0;j<1007;j++);
}
void send(char*p)
{
char a;
while(*p)
{
a=*p++;
dat(a);
delayms(100);
}
}
WIRELESS TRANSMITTER

#include <LPC214X.H>
void delay_ms(unsigned int x);
void serial_init(void);
int main(void)
{
unsigned int key;
IODIR0=0X0000FF00;
while(1)
{
IOSET0=0xFF<<8;
key=IOPIN0;
key=key>>16;
while(!(U1LSR&0X20));
U1THR=key;
IOCLR0=key<<8;
delay_ms(10);
}
}
void serial_init(void)
{
PINSEL0=0X00050000;
PLL0CON=0;
PLL0FEED=0XAA;
PLL0FEED=0X55;
VPBDIV=1;
U1LCR=0X83;
U1DLM=0X00;
U1DLL=0X4E;
U1LCR=0X03;
}
void delay_ms(unsigned int k)
{
int i,j;
for(i=0;i<k;i++)
for(j=0;j<1007;j++);
}
WIRELESS RECEIVER

#include <LPC214X.H>
void delay_ms(unsigned int k);
void serial_init(void);
int main(void)
{
unsigned int A;
serial_init();
IODIR0=0X0000FF00;
while(1)
{
while(!(U1LSR&0X01));
IOSET0=0X0000FF00;
A=U1RBR;
A=A<<8;
IOCLR0=A;
}
}
void serial_init()
{
PINSEL0=0X00050000;
PLL0CON=0;
PLL0FEED=0xAA;
PLL0FEED=0x55;
VPBDIV=1;
U1LCR=0X83;
U1DLM=0X00;
U1DLL=0X4E;
U1LCR=0X03;
}
void delay_ms(unsigned int k)
{
int i,j;
for(i=0;i<k;i++);
for(j=0;j<1007;j++);
}
MATRIX SWITCH(DISPLAY 1 2 3 4 IN LCD)
#include <LPC214X.H>
#define rw 1<<16
#define en 1<<17
#define rs 1<<24
#define data 0XFF <<16
#define SL 0XF << 12
#define SL0 1<<12
#define SL1 1<<13
#define SL2 1<<14
#define SL3 1<<15
void cmd(unsigned char x);
void dat(unsigned char m);
void delayms(unsigned int k);
void send(char *);
void init(void);
void keypad(void);
int main()
{
PLL0CON=0;
PLL0FEED=0XAA;
PLL0FEED=0X55;
VPBDIV=1;
PINSEL0=0X00000000;
PINSEL1=0X00000000;
PINSEL2=0X00000000;
IODIR0=0|rw|en|SL;
IODIR1=0|rs|data;
IOCLR0=rw;
IOCLR1=data;
init();
while(1)
{
cmd(0X80);
IOCLR0=SL;
keypad();
delayms(30);
}
}

void cmd(unsigned char x)


{
unsigned long int y;
y=x<<16;
IOCLR1=rs;
IOCLR1=data;
IOSET1=y;
IOSET0=en;
delayms(10);
IOCLR0=en;
}
void dat(unsigned char m)
{
unsigned long int n;
n=m<<16;
IOSET1=rs;
IOCLR1=data;
IOSET1=n;
IOSET0=en;
delayms(10);
IOCLR0=en;
}
void init(void)
{
cmd(0X38);
delayms(100);
cmd(0X01);
delayms(100);
cmd(0X06);
delayms(100);
cmd(0X0C);
delayms(100);
}
void delayms(unsigned int k)
{
int i,j;
for(i=0;i<k;i++)
for(j=0;j<1007;j++);
}
void send(char*p)
{
char a;
while(*p)
{
a=*p++;
dat(a);
delayms(100);
}
}
void keypad(void)
{
int inkey=IOPIN0;
inkey=inkey&0X00000F00;
inkey=inkey>>8;
switch(inkey)
{
case 0X0E:
dat('1');
break;
case 0X0D:
dat('2');
break;
case 0X0B:
dat('3');
break;
case 0X07:
dat('4');
break;
}

}
SWITCH CONTROL FORWARD AND REVERSE
STEPPER MOTOR
#include <LPC214X.H>
#define fd 1<<23
#define rv 1<<22
void delay(unsigned int k);
void forward(void);
void reverse(void);
void stop(void);
int main()
{
PINSEL0=0;
IODIR0=0X00000F00;
while(1)
{
if(IOPIN0&fd)
{forward();}

if(IOPIN0&rv)
{reverse();}
else
{stop();}
}
}
void delay(unsigned int k)
{
int i,j;
for(i=0;i<k;i++)
for(j=0;j<1007;j++);
}
void forward()
{
IOCLR0=0X0000F00;
IOSET0=0X00000500;
delay(100);
IOCLR0=0X00000F00;
IOSET0=0X00000900;
delay(100);
IOCLR0=0X00000F00;
IOSET0=0X00000A00;
delay(100);
IOCLR0=0X00000F00;
IOSET0=0X00000600;
delay(100);
}
void reverse()
{
IOCLR0=0X0000F00;
IOSET0=0X00000600;
delay(100);
IOCLR0=0X00000F00;
IOSET0=0X00000A00;
delay(100);
IOCLR0=0X00000F00;
IOSET0=0X00000900;
delay(100);
IOCLR0=0X00000F00;
IOSET0=0X00000500;
delay(100);
}
void stop()
{
IOCLR0=0X00000F00;
}
ADC (TEMPERATURE)
#include <LPC214X.H>
#define AD03 1<<28
#define sel 1<<3
#define clkdiv 1<<9
#define brust 1<<16
#define pdn 1<<21
#define start 1<<24
#define rw 1<<16
#define en 1<<17
#define rs 1<<24
#define data 0XFF <<16
void cmd(unsigned char x);
void dat(unsigned char m);
void delayms(unsigned int k);
void send(char *);
void init(void);
int main()
{
unsigned long int val;
PLL0CON=0;
PLL0FEED=0XAA;
PLL0FEED=0X55;
VPBDIV=1;
PINSEL0=0X00000000;
PINSEL1=0|AD03;
PINSEL2=0X00000000;
AD0CR=0|sel|clkdiv|brust|pdn;
AD0CR=0|sel|clkdiv|brust|pdn|start;
IODIR0=0|rw|en;
IODIR1=0|rs|data;
IOCLR0=rw;
IOCLR1=data;
init();
delayms(1000);
while(1)
{
val=AD0DR3;
val=val>>6;
val=val&0x1FF;
val=(val*100)/465;
cmd(0x80);
send("temperature:");
dat(val/10+'0');
dat(val%10+'0');
}
}

void cmd(unsigned char x)


{
unsigned long int y;
y=x<<16;
IOCLR1=rs;
IOCLR1=data;
IOSET1=y;
IOSET0=en;
delayms(10);
IOCLR0=en;

}
void dat(unsigned char m)
{
unsigned long int n;
n=m<<16;
IOSET1=rs;
IOCLR1=data;
IOSET1=n;
IOSET0=en;
delayms(10);
IOCLR0=en;
}
void init(void)
{
cmd(0X38);
delayms(100);
cmd(0X01);
delayms(100);
cmd(0X06);
delayms(100);
cmd(0X0C);
delayms(100);
}
void delayms(unsigned int k)
{
int i,j;
for(i=0;i<k;i++)
for(j=0;j<1007;j++);
}
void send(char*p)
{
char a;
while(*p)
{
a=*p++;
dat(a);
delayms(100);
}
}
DAC TRIANGLE
#include <LPC214X.H>
void delay(int n);
#define AOUT 1<<19
int main(void)
{
unsigned int x;
PINSEL0=0;
PINSEL1=AOUT;
while(1)
{
for(x=0;x<1024;x++)
{
DACR=x<<6;
delay(3);
}
for(x=1023;x>0;x--)
{
DACR=x<<6;
delay(3);
}
}
}
void delay (int n)
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<5;j++);
}

DAC SQUARE

#include <LPC214X.H>
#define AOUT 1<<19
void delay(int n);
int main(void)
{
unsigned short val;
PINSEL0=0;
PINSEL1=AOUT;
while(1)
{
val=0x00000000;
DACR=val<<6;
delay(10);
val=0XFFFFFFFF;
DACR=val<<6;
delay(10);
}
}
void delay(int n)
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<5;j++);
}
DC MOTOR CONTROL USING PWM
#include <LPC214X.H>
int main()
{
PLL0CON=0;
PLL0FEED=0XAA;
PLL0FEED=0X55;
VPBDIV=0;
PINSEL0=0X00000000;
IODIR0=0XFFFFFFFF;
PINSEL1=1<<10;
PWMPCR=0|1<<13;
PWMLER=1<<0|1<<5;
PWMPR=2;
PWMMR0=100;
PWMMR5=50;// on time 0 to 100 to change dc motor speed
PWMMCR=1<<1;
PWMTCR=9;
while(1);
}

You might also like