Professional Documents
Culture Documents
Arm Microcontroller
Arm Microcontroller
Arm Microcontroller
#include <lpc17xx.h>
#define SwitchPinNumber 11
#define LedPinNumber 19
#define relayPinNumber 28
int main (void)
{
uint32_t switchStatus;
LPC_GPIO1->FIODIR = 0x1ff80000;
LPC_GPIO1->FIOCLR = 0x1ff80000;
LPC_GPIO2->FIODIR = 0x00000000;
while (1)
{
switchStatus = (LPC_GPIO2->FIOPIN>>SwitchPinNumber) & 0x01 ;
If (switchStatus == 0)
{
LPC_GPIO1->FIOPIN = (1<<buzzerPinNumber) | (1<<relayPinNumber) |
(1<<LedPinNumber);
}
else
{
LPC_GPIO1->FIOPIN = (0<<buzzerPinNumber) | (0<<relayPinNumber) |
(0<<LedPinNumber);
}
}
}
LPC_GPIO0->FIODIR = 0x000001f7;
while (1)
{
LPC_GPIO0->FIOSET = 0x00000004;
LPC_GPIO0->FIOCLR = 0x000001f3;
LPC_GPIO0->FIOSET = 0x00000100;
delay_ms(200);
LPC_GPIO0->FIOCLR = 0x000001f3;
LPC_GPIO0->FIOSET = 0x000001e1;
delay_ms(200);
LPC_GPIO0->FIOCLR = 0x000001f3;
LPC_GPIO0->FIOSET = 0x00000090;
delay_ms(200);
LPC_GPIO0->FIOCLR = 0x000001f3;
LPC_GPIO0->FIOSET = 0x000000c0;
delay_ms(200);
LPC_GPIO0->FIOCLR = 0x000001f3;
LPC_GPIO0->FIOSET = 0x00000061;
delay_ms(200);
LPC_GPIO0->FIOCLR = 0x000001f3;
LPC_GPIO0->FIOSET = 0x00000042;
delay_ms(200);
LPC_GPIO0->FIOCLR = 0x000001f3;
LPC_GPIO0->FIOSET = 0x00000002;
delay_ms(200);
LPC_GPIO0->FIOCLR = 0x000001f3;
LPC_GPIO0->FIOSET = 0x000001e0;
delay_ms(200);
LPC_GPIO0->FIOCLR = 0x000001f3;
LPC_GPIO0->FIOSET = 0x00000000;
delay_ms(200);
LPC_GPIO0->FIOCLR = 0x000001f3;
LPC_GPIO0->FIOSET = 0x00000040;
delay_ms(200);
LPC_GPIO0->FIOCLR = 0x000001f3;
LPC_GPIO0->FIOSET = 0x00000020;
delay_ms(200);
LPC_GPIO0->FIOCLR = 0x000001f3;
LPC_GPIO0->FIOSET = 0x00000003;
delay_ms(200);
LPC_GPIO0->FIOCLR = 0x000001f3;
LPC_GPIO0->FIOSET = 0x00000112;
delay_ms(200);
LPC_GPIO0->FIOCLR = 0x000001f3;
LPC_GPIO0->FIOSET = 0x00000081;
delay_ms(200);
LPC_GPIO0->FIOCLR = 0x000001f3;
LPC_GPIO0->FIOSET = 0x00000012;
delay_ms(200);
LPC_GPIO0->FIOCLR = 0x000001f3;
LPC_GPIO0->FIOSET = 0x00000032;
delay_ms(200);
}
}
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++);
}
int main()
{
int cycle;
SystemInit();
LPC_GPIO0->FIODIR | = 0x00078000;
for(cycle=0; cycle<13; cycle++)
{
LPC_GPIO0->FIOPIN = 0x00008000 ;
delay(100);
LPC_GPIO0->FIOPIN = 0x00010000 ;
delay(100);
LPC_GPIO0->FIOPIN = 0x00020000 ;
delay(100);
LPC_GPIO0->FIOPIN = 0x00040000 ;
delay(100);
}
}
Expt No 4:DAC
1.Triangular Waveform.
#include "LPC17xx.h"
uint32_t val;
int main()
{
SystemInit();
LPC_PINCON->PINSEL1 |= 0x02<<20;
while(1)
{
while(1)
{
val++;
LPC_DAC->DACR=(val<<6);
if(val>=0x3ff)
{
break;
}
}
while(1)
{
val--;
LPC_DAC->DACR=(val<<6);
if(val<=0x000)
{
break;
}
}
}
}
2.Square Waveform
#include "LPC17xx.h"
void delay(unsigned int ms) {
unsigned int i,j;
for(i=0;i<ms;i++)
for(j=0;j<2000;j++);
}
int main()
{
SystemInit();
LPC_PINCON->PINSEL1 |= 0x02<<20;
while(1)
{
LPC_DAC->DACR=0xffff;
delay(20);
LPC_DAC->DACR=0x0000;
delay(20);
}
KEY_CTRL_DIR1=colmask;
KEY_CTRL_DIR &= ~(rowmask);
#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
#define SBIT_PWMEN 2
#define SBIT_PWMMR0R 1
#define SBIT_PWMENA1 9
#define PWM_1 0
int main(void)
{
int dutyCycle;
SystemInit();
LPC_PINCON->PINSEL4 = (1<<PWM_1);
LPC_PWM1->TCR = (1<<SBIT_CNTEN) | (1<<SBIT_PWMEN);
LPC_PWM1->PR = 0x00;
LPC_PWM1->MCR = (1<<SBIT_PWMMR0R);
LPC_PWM1->MR0 = 100;
LPC_PWM1->PCR = (1<<SBIT_PWMENA1);
while(1)
{
for(dutyCycle=0; dutyCycle<100; dutyCycle++)
{
LPC_PWM1->MR1 = dutyCycle;
delay_ms(5);
}
for(dutyCycle=100; dutyCycle>0; dutyCycle--)
{
LPC_PWM1->MR1 = dutyCycle;
delay_ms(5);
}
}
}
Expt No: 7 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
#define SBIT_PWMEN 2
#define SBIT_PWMMR0R 1
#define SBIT_PWMENA3 11
#define PWM_3 4
int main(void)
{
int dutyCycle;
SystemInit();
LPC_PINCON->PINSEL4 = (1<<PWM_3);
LPC_PWM1->TCR = (1<<SBIT_CNTEN) | (1<<SBIT_PWMEN);
LPC_PWM1->PR = 0x00;
LPC_PWM1->MCR = (1<<SBIT_PWMMR0R);
LPC_PWM1->MR0 = 100
LPC_PWM1->PCR = (1<<SBIT_PWMENA3);
while (1)
{
{
LPC_PWM1->MR3 = dutyCycle;
delay_ms(5);
}
if(!(LPC_GPIO2->FIOPIN & 0x00000800)) //if sw 23 pressed
{
while(!(LPC_GPIO2->FIOPIN & 0x00000800));
dutyCycle-=10;
if(dutyCycle<0)
{
dutyCycle=0;
}
}
else if(!(LPC_GPIO2->FIOPIN & 0x00001000))
{
while(!(LPC_GPIO2->FIOPIN & 0x00001000));
dutyCycle+=10;
if(dutyCycle>100)
{
dutyCycle=99;
}
}
}
}
Expt No: 8 external interrupt switches toggle the led’s
#include "lpc17xx.h"
#define switch 11
#define led1 19
#define led2 20
#define led3 21
#define led4 22
#define led5 23
#define led6 24
#define led7 25
#define led8 26
int main(void)
{
uint32_t switchstatus;
LPC_GPIO1->FIODIR = 0x07F80000;
LPC_GPIO1->FIOCLR = 0x07F80000;
LPC_GPIO2->FIODIR = 0x00000000;
while(1)
{
switchstatus = (LPC_GPIO2->FIOPIN >> switch) & 0X01;
if(switchstatus == 1)
{
LPC_GPIO1->FIOPIN = (1<<led1) | (1<<led2) | (1<<led3) | (1<<led4);
}
else
{
LPC_GPIO1->FIOPIN = (1<<led5) | (1<<led6) | (1<<led7) | (1<<led8);
}
}
}
// using interrupts
#include <lpc17xx.h>
#define PINSEL_EINT1 22
#define PINSEL_EINT2 24
#define LED1 25
#define LED2 26
#define SBIT_EINT1 1
#define SBIT_EINT2 2
#define SBIT_EXTMODE1 1
#define SBIT_EXTMODE2 2
#define SBIT_EXTPOLAR1 1
#define SBIT_EXTPOLAR2 2
void EINT1_IRQHandler(void)
{
LPC_SC->EXTINT = 0x00400000;
LPC_GPIO1->FIOPIN ^= 0x02000000;
}
void EINT2_IRQHandler(void)
{
LPC_SC->EXTINT = 0x01000000;
LPC_GPIO1->FIOPIN ^= 0x04000000;
}
int main()
{
SystemInit();
LPC_SC->EXTINT = 0x00000006;
LPC_PINCON->PINSEL4 = 0x01400000;
LPC_SC->EXTMODE = 0x00000006;
LPC_SC->EXTPOLAR = 0x00000006;
LPC_GPIO1->FIODIR = 0x06000000;
LPC_GPIO1->FIOPIN = 0x00;
NVIC_EnableIRQ(EINT1_IRQn);
NVIC_EnableIRQ(EINT2_IRQn);
while(1)
{
}
}