ARM 7 LPC 2148 lecture

4
LPC2148 Lecture Notes ENT505 Prof. Anish Goel Page 1 GPIO Seven Segment Display Interface Program Statement: Interface four seven segment displays on GPIO’s of ARM7 LPC2148 and write a C code to display count 0000 to 9999 on them with appropriate delay. Solution: # include<lpc214x.h> void delay(void); main() { char num[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x67}; char t,j,h,i,k; int m; char num1[] = {0x00,0x00,0x00,0x00}; char num2[] = {0x70,0xb0,0xd0,0xe0}; int y; IO0DIR = 0x00ffff00; for(y=1;y<10000;y++) { if(y<10) { num1[3]=num[0]; num1[2]=num[0]; num1[1]=num[0]; num1[0]=num[y]; } else if (y>= 10 && y <100) { num1[3]=num[0]; num1[2]=num[0]; num1[1]=num[y/10]; num1[0]=num[y-((y/10)*10)]; } else if (y>= 100 && y <1000) { num1[3]=num[0]; num1[2]=num[y/100]; num1[1]=num[(y-((y/100)*100))/10]; num1[0]=num[y-((y/100)*100)-(((y-((y/100)*100))/10)*10)]; } else { num1[3]=num[y/1000]; num1[2]=num[(y-((y/1000)*1000))/100];

description

 

Transcript of ARM 7 LPC 2148 lecture

Page 1: ARM 7 LPC 2148 lecture

LPC2148 Lecture Notes ENT505 Prof. Anish Goel Page 1

GPIO Seven Segment Display Interface Program Statement: Interface four seven segment displays on GPIO’s of ARM7 LPC2148 and write a C code to display count 0000 to 9999 on them with appropriate delay. Solution: # include<lpc214x.h> void delay(void); main() { char num[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x67}; char t,j,h,i,k; int m; char num1[] = {0x00,0x00,0x00,0x00}; char num2[] = {0x70,0xb0,0xd0,0xe0}; int y; IO0DIR = 0x00ffff00; for(y=1;y<10000;y++) { if(y<10) { num1[3]=num[0]; num1[2]=num[0]; num1[1]=num[0]; num1[0]=num[y]; } else if (y>= 10 && y <100) { num1[3]=num[0]; num1[2]=num[0]; num1[1]=num[y/10]; num1[0]=num[y-((y/10)*10)]; } else if (y>= 100 && y <1000) { num1[3]=num[0]; num1[2]=num[y/100]; num1[1]=num[(y-((y/100)*100))/10]; num1[0]=num[y-((y/100)*100)-(((y-((y/100)*100))/10)*10)]; } else { num1[3]=num[y/1000]; num1[2]=num[(y-((y/1000)*1000))/100];

Page 2: ARM 7 LPC 2148 lecture

LPC2148 Lecture Notes ENT505 Prof. Anish Goel Page 2

num1[1]=num[(y-((y/1000)*1000)-((y/100)*100))/10]; num1[0]=num[y-((y/1000)*1000)-((y/100)*100)-((y/10)*10)]; } for(m=0;m<2;m++) { for(t=0;t<4;t++) { IO0SET = (num1[t] << 16) | (num2[t] << 8); delay(); IO0CLR = (num1[t] << 16) | (num2[t] << 8); delay(); } } } } void delay(void) { long int t; for(t=0;t<30000;t++); }

Serial Interface UART Block Problem Statement: Write a program to send a string on serial port UART0 of LPC2148 continuously at 9600 baud. Solution Clue: #include"LPC214x.h" void Initialize(void); /* Macro Definitions */ #define TEMT (1<<6); #define LINE_FEED 0xA; #define CARRIAGE_RET 0xD; /************************* MAIN *************************/ int main() { int i; char c[]="Philips LPC"; Initialize(); /* Print forever */ while(1) { i=0;

Page 3: ARM 7 LPC 2148 lecture

LPC2148 Lecture Notes ENT505 Prof. Anish Goel Page 3

/* Keep Transmitting until Null character('\0') is reached */ while(c[i]) { U0THR=c[i]; i++; } U0THR=LINE_FEED; U0THR = CARRIAGE_RET; /* Wait till U0THR and U0TSR are both empty */ while(!(U0LSR & (1<<6))) {} } } /*************** System Initialization ***************/ void Initialize() { /* Initialize Pin Select Block for Tx and Rx */ PINSEL0=0x5; /* Enable FIFO's and reset them */ U0FCR=0x7; /* Set DLAB and word length set to 8bits */ U0LCR=0x83; /* Baud rate set to 9600 */ U0DLL=0x10; U0DLM=0x0; /* Clear DLAB */ U0LCR=0x3; } /*********************************************************/

16x2 LCD Program Hint #include<lpc214x.h> #include<STDIO.H> #define line0 0x80 #define line1 0xc0 void delay(void); void delay1(void); void comdisp(char); void comdata(char); void display(char*,char); main() { unsigned int x;

Page 4: ARM 7 LPC 2148 lecture

LPC2148 Lecture Notes ENT505 Prof. Anish Goel Page 4

IO0DIR=0xffffffff; comdisp(0x38); comdisp(0xf); comdisp(0x6); comdisp(0x87); comdisp(0x1); display("LPC 2148",line0); display("ARM 7",line1+3); } void display(char *dat,char addr) { char count; comdisp(addr); for(count=0;dat[count];count++) { comdata(dat[count]); } } void comdisp(char lcddata) { char word = 0xf9; char word1 = 0xf1; IO0SET = (lcddata<<8) | word; delay1(); IO0SET = IO0SET && word1; delay(); IO0CLR = 0x0000; } void comdata(char lcddata) { char word = 0xf3; char word1 = 0xfb; IO0SET = (lcddata<<8) | word; delay1(); IO0CLR = ~(IO0SET && word1); delay(); IO0CLR = 0xffff; } void delay(void) { int t; for(t=0;t<1;t++); } void delay1(void) { int t; for(t=0;t<1;t++); }