ARM 7 LPC 2148 lecture

11,714 views
11,402 views

Published on

Published in: Technology, Business
1 Comment
4 Likes
Statistics
Notes
No Downloads
Views
Total views
11,714
On SlideShare
0
From Embeds
0
Number of Embeds
1,853
Actions
Shares
0
Downloads
689
Comments
1
Likes
4
Embeds 0
No embeds

No notes for slide

ARM 7 LPC 2148 lecture

  1. 1. GPIO Seven Segment Display InterfaceProgram Statement: Interface four seven segment displays on GPIO’s of ARM7 LPC2148 and write aC 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];LPC2148 Lecture Notes ENT505 Prof. Anish Goel Page 1
  2. 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 BlockProblem Statement: Write a program to send a string on serial port UART0 of LPC2148 continuouslyat 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;LPC2148 Lecture Notes ENT505 Prof. Anish Goel Page 2
  3. 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 FIFOs 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 0xc0void delay(void);void delay1(void);void comdisp(char);void comdata(char);void display(char*,char);main(){ unsigned int x;LPC2148 Lecture Notes ENT505 Prof. Anish Goel Page 3
  4. 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++);}LPC2148 Lecture Notes ENT505 Prof. Anish Goel Page 4

×