ARM LCD CODES
ARM LCD CODES
#include<LPC21XX.H>
void delay_ms(int d)
{
int i;
for(;d>0;d--)
sfor(i=12000;i>0;i--);
}
int main()
{
PINSEL0=0;
IODIR0=0xff<<17;
while(1)
{
IOCLR0=0xff<<17;
delay_ms(300);
IOSET0=0xff<<17;
delay_ms(300);
}
}
LCD_INIT();
len=strlen("Happy Diwali");
while (1)
{
count=0;len1=len;
for(cmd=0x80;cmd<=0x8f;cmd++)
{
LCD_COMMAND(cmd);
LCD_STR(p);
delay_millisec(500);
LCD_COMMAND(0x01);
count++;
if(count>(16-len1))
{
LCD_COMMAND(0X80);
len1--;
LCD_STR(p+len1);
}
}
}
}
void LCD_INIT(void)
{
IODIR0=LCD_D|RS|E;
LCD_COMMAND(0X01);
LCD_COMMAND(0X02);
LCD_COMMAND(0X0C);
LCD_COMMAND(0X38);
LCD_COMMAND(0X80);
}
void LCD_COMMAND(unsigned char cmd)
{
IOCLR0=LCD_D;
IOSET0=cmd;
IOCLR0=RS;
IOSET0=E;
delay_millisec(2);
IOCLR0=E;
}
void LCD_DATA(unsigned char d)
{
IOCLR0=LCD_D;
IOSET0=d;
IOSET0=RS;
IOSET0=E;
delay_millisec(2);
IOCLR0=E;
}
void LCD_STR(unsigned char *s)
{
while(*s)
LCD_DATA(*s++);
}
#include<LPC21XX.H>
#include"delayy_header.h"
int main()
{
LCD_INIT();
LCD_COMMAND(0X82);
LCD_STR("PUSHPA PART2");
LCD_COMMAND(0XC2);
LCD_STR("AA BHAAI ");
}
void LCD_INIT(void)
{
IODIR0=LCD_D|RS|E;
LCD_COMMAND(0X01);
LCD_COMMAND(0X02);
LCD_COMMAND(0X0C);
LCD_COMMAND(0X28);
LCD_COMMAND(0X80);
}
#include<LPC21XX.H>
#include"delayy_header.h"
#define LCD_D 0X0F<<20
#define RS 1<<17
#define RW 1<<18
#define E 1<<19
void LCD_INIT(void);
void LCD_DATA(unsigned char d);
void LCD_COMMAND(unsigned char cmd);
void LCD_STR(unsigned char *s);
int main()
{
LCD_INIT();
LCD_COMMAND(0X82);
LCD_STR("PUSHPA PART2");
LCD_COMMAND(0XC2);
LCD_STR("AA BHAAI ");
}
void LCD_INIT(void)
{
IODIR1=LCD_D|RS|E;
LCD_COMMAND(0X01);
LCD_COMMAND(0X02);
LCD_COMMAND(0X0C);
LCD_COMMAND(0X28);
LCD_COMMAND(0X80);
}
#include<LPC21XX.H>
#define LED0 1<<0
#define slot_en 1<<5
#define Eint0 14
void FIQ_Handler(void)__irq
{
EXTINT=0x01;
IOSET0=LED0;
IOCLR0=LED0;
VICVectAddr=0;
}
int main()
{
unsigned int count=0;
PINSEL0=0;
PINSEL1=0X1;
IODIR0=LED0;
VICIntSelect=1<<Eint0;
EXTMODE=0x00;
EXTPOLAR=0x00;
VICIntEnable=1<<Eint0;
while(1)
{
count++;
}
}
Note:
In startup.c:
line 263 ;keep as comment
extend FIQ_Handler
VICIntSelect=0;
VICDefVectAddr=(int)ext_int_isr;
EXTMODE=0x03;
EXTPOLAR=0x00;
VICIntEnable=1<<EINT0|1<<EINT1;
while(1)
{
count++;
}
}
#include<LPC21XX.H>
#define LED0 1<<0
#define slot_en 1<<5
#define Eint0 14
int main()
{
unsigned int count=0;
PINSEL0=0;
PINSEL1=0X1;
IODIR0=LED0;
VICIntSelect=1<<14;
VICVectCntl0=slot_en|Eint0;
VICVectAddr0=(int)ext_int;
EXTMODE=0x00;
EXTPOLAR=0x00;
VICIntEnable=1<<Eint0;
while(1)
{
count++;
}
}
code: assissnment
using timer interrupt
#include<LPC21XX.H>
#define AH_LED 1<<16
#define AL_LED 1<<17
#define SW 14
#define slot_en 1<<5
#define timer0_int 4
int flag=0;
void timer_eint(void) __irq
{
T0IR=0x01;
if(flag==0)
{
IOSET1=AH_LED;
flag=1;
}
else
{
IOCLR1=AH_LED;
flag=0;
}
VICVectAddr=0;
}
int main()
{
IODIR0=AL_LED;
IODIR1=AH_LED;
VICIntSelect=0;
VICVectCntl0=slot_en|timer0_int;
VICVectAddr0=(int)timer_eint;
T0MR0=150000-1;
T0MCR=0x03;
VICIntEnable=1<<timer0_int;
T0TCR=0x01;
while(1)
{
if(((IOPIN0>>SW)&1)==0)
IOCLR0=AL_LED;
else
IOSET0=AL_LED;
}
}
code: 7 segment
#include<lpc21xx.h>
#define seg_d 0xff
typedef unsigned char u8;
u8 seg_lut[11]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90};
void delay_ms(int ms)
{
T0PR=15000-1;
T0TCR=0X01;
while(T0TC<ms);
T0TCR=0X03;
T0TCR=0X00;
}
int main()
{
u8 digit=0;
PINSEL0=0;
IODIR0=seg_d;
while(digit<10)
{
IOCLR0=seg_d;
IOSET0=seg_lut[digit++];
delay_ms(900);
if(digit==10)
digit=0;
}
}
#include<lpc21xx.h>
#define seg_d 0xff
typedef unsigned char u8;
u8 seg_lut[11]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90};
void delay_ms(int ms)
{
T0PR=15000-1;
T0TCR=0X01;
while(T0TC<ms);
T0TCR=0X03;
T0TCR=0X00;
}
int main()
{
u8 digit=0;
PINSEL0=0;
IODIR0=seg_d;
while(digit<10)
{
IOCLR0=seg_d;
IOSET0=seg_lut[digit++];
delay_ms(900);
if(digit==10)
digit=0;
}
}
#include<lpc21xx.h>
#define seg_d 0xff
#define seg_1 1<<8
#define seg_2 1<<9
typedef unsigned char u8;
u8 seg_lut[11]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90};
void display_digit(unsigned int );
void delay_ms(int);
int main()
{
PINSEL0=0;
IODIR0=seg_d|seg_1|seg_2;
while(1)
{
display_digit(69);
}
}
IOCLR0=seg_d;
IOSET0=seg_lut[n%10];
IOCLR0=seg_2;
delay_ms(5);
IOSET0=seg_2;
}
}
#include<lpc21xx.h>
#define seg_d 0xff
#define seg_1 1<<8
#define seg_2 1<<9
#define seg_3 1<<10
#define seg_4 1<<11
int main()
{
PINSEL0=0;
IODIR0=seg_d|seg_1|seg_2|seg_3|seg_4;
while(1)
{
display_digit(1432);
}
}
IOCLR0=seg_d;
IOSET0=seg_lut[(n/100)%10];
IOCLR0=seg_2;
delay_ms(5);
IOSET0=seg_2;
IOCLR0=seg_d;
IOSET0=seg_lut[(n/10)%10];
IOCLR0=seg_3;
delay_ms(5);
IOSET0=seg_3;
IOCLR0=seg_d;
IOSET0=seg_lut[n%10];
IOCLR0=seg_4;
delay_ms(5);
IOSET0=seg_4;
}
}
#include<lpc21xx.h>
#define seg_d 0xff
#define seg_1 1<<8
#define seg_2 1<<9
#define seg_3 1<<10
#define seg_4 1<<11
#define SW1 14
int main()
{
PINSEL0=0;
IODIR0=seg_d|seg_1|seg_2|seg_3|seg_4;
while(1)
{
display_digit();
//delay_ms(1000);
}
}
void display_digit(void)
{
char k;
u8 i;
if(((IOPIN0>>SW1)&1)==0)
{
for(i=0;i<5;i++)
{
for(k=0;k<50;k++)
{
IOCLR0=seg_d;
IOSET0=seg_lut[0];
IOCLR0=seg_1;
delay_ms(5);
IOSET0=seg_1;
IOCLR0=seg_d;
IOSET0=seg_lut[1];
IOCLR0=seg_2;
delay_ms(5);
IOSET0=seg_2;
IOCLR0=seg_d;
IOSET0=seg_lut[2];
IOCLR0=seg_3;
delay_ms(5);
IOSET0=seg_3;
IOCLR0=seg_d;
IOSET0=seg_lut[3];
IOCLR0=seg_4;
delay_ms(5);
IOSET0=seg_4;
}
delay_ms(1000);
}
}
}
void delay_ms(int ms)
{
T0PR=15000-1;
T0TCR=0X01;
while(T0TC<ms);
T0TCR=0X03;
T0TCR=0X00;
}
#include<LPC21XX.H>
#include"delay.h"
#define seg_d 0xff //p0.0 to p0.7
void digit_disply(int);
void float_disply(float);
int main()
{
PINSEL0=0;
IODIR0=seg_d|seg_1|seg_2;
while(1)
{
float_disply(2.1);
}
}
void digit_disply(int x)
{
char k;
for(k=0;k<100;k++)
{
IOCLR0=seg_d;
IOSET0=seg_lut[x/10]&dp1;
IOSET0=seg_1;
delay_milliseconds(5);
IOCLR0=seg_1;
IOCLR0=seg_d;
IOSET0=seg_lut[x%10];
IOSET0=seg_2;
delay_milliseconds(5);
IOCLR0=seg_2;
}
}
void float_disply(float f)
{
int temp=0;
if((f>=0.0)&&(f<10.0))
{
dp1=0x7f;
temp=f*10;
}
digit_disply(temp);
}
uart:
1) loop back
#include<lpc21xx.h>
void config(void);
void TX_data(unsigned char);
unsigned char RX_data(void);
int main()
{
unsigned char d;
config();
while(1)
{
d=RX_data();
TX_data(d);
}
}
void config(void)
{
PINSEL0=0x05;
U0LCR=0x83;
U0DLL=97;
U0DLM=0;
U0LCR=0X03;
}
void TX_data(unsigned char d)
{
while(((U0LSR>>5)&1)==0);
U0THR=d;
}
unsigned char RX_data(void)
{
while(((U0LSR>>0)&1)==0);
return U0RBR;
}
2)Assisgnment 1:
#include<lpc21xx.h>
#include"LCD4bit.h"
void config(void);
void TX_data(unsigned char);
unsigned char RX_data(void);
int main()
{
unsigned char d;
config();
LCD_INIT();
while(1)
{
d=RX_data();
TX_data(d);
LCD_COMMAND(0x80);
LCD_DATA(d);
}
}
void config(void)
{
PINSEL0=0x05;
U0LCR=0x83;
U0DLL=97;
U0DLM=0;
U0LCR=0X03;
}
void TX_data(unsigned char d)
{
while(((U0LSR>>5)&1)==0);
U0THR=d;
}
unsigned char RX_data(void)
{
while(((U0LSR>>0)&1)==0);
return U0RBR;
}
2)Assisgnment 2:
#include<lpc21xx.h>
#include"LCD4bit.h"
void config(void);
void TX_data(unsigned char);
unsigned char RX_data(void);
void TX_STR(unsigned char *);
int main()
{
unsigned char d;
unsigned char buffer[100];
unsigned char i = 0;
config();
LCD_INIT();
while(1)
{
d = RX_data();
if(d == '\n')
{
buffer[i] = '\0';
TX_STR(buffer);
LCD_COMMAND(0x01);
LCD_STR(buffer);
i = 0;
}
else
{
if (i < 99)
{
buffer[i++] = d;
}
}
}
}
void config(void)
{
PINSEL0=0x05;
U0LCR=0x83;
U0DLL=97;
U0DLM=0;
U0LCR=0X03;
}
void TX_STR(unsigned char *d)
{
while(*d)
TX_data(*d++);
}
void TX_data(unsigned char d)
{
while(((U0LSR>>5)&1)==0);
U0THR=d;
}
unsigned char RX_data(void)
{
while(((U0LSR)&1)==0);
return U0RBR;
}
code: Interrupt a to z
#include<LPC21XX.H>
#define SW 14
#define LED 1<<17
void UART0_CONFIG(void);
void CONFIG_UART0_INT(void);
char ch='A';
void UART0_isr(void) __irq
{
int temp;
temp=U0IIR;
if(temp==0x02)
{
if(ch<'Z')
U0THR=++ch;
}
VICVectAddr=0;
}
int main()
{
IODIR0=LED;
UART0_CONFIG();
CONFIG_UART0_INT();
U0THR=ch;
while(1)
{
if(((IOPIN0>>SW)&1)==0)
IOCLR0=LED;
else
IOSET0=LED;
}
}
void UART0_CONFIG(void)
{
PINSEL0=0x5;
U0LCR=0x83;
U0DLL=97;
U0DLM=0;
U0LCR=0x03;
}
void CONFIG_UART0_INT(void)
{
VICIntSelect=0;
VICVectCntl0=(1<<5)|6;
VICVectAddr0=(int)UART0_isr;
VICIntEnable=1<<6;
U0IER=1<<1;
}
#include<LPC21XX.H>
#define SW 14
#define LED 1<<17
void UART0_CONFIG(void);
void CONFIG_UART0_INT(void);
void UART0_isr(void) __irq
{
char temp;
temp=U0IIR;
if(temp==0x04)
{
U0THR=U0RBR;
}
VICVectAddr=0;
}
int main()
{
IODIR0=LED;
UART0_CONFIG();
CONFIG_UART0_INT();
//U0THR();
while(1)
{
if(((IOPIN0>>SW)&1)==0)
IOCLR0=LED;
else
IOSET0=LED;
}
}
void UART0_CONFIG(void)
{
PINSEL0=0x5;
U0LCR=0x83;
U0DLL=97;
U0DLM=0;
U0LCR=0x03;
}
void CONFIG_UART0_INT(void)
{
VICIntSelect=0;
VICVectCntl0=(1<<5)|6;
VICVectAddr0=(int)UART0_isr;
VICIntEnable=1<<6;
U0IER=1<<1|1<<0;
}
code: Keypad
#include<lpc21xx.h>
#include"lcd.h"
#define c0 (IOPIN0&(1<<16))
#define c1 (IOPIN0&(1<<17))
#define c2 (IOPIN0&(1<<18))
#define c3 (IOPIN0&(1<<19))
#define r0 1<<20
#define r1 1<<21
#define r2 1<<22
#define r3 1<<23
unsigned int key_lut[4][4]={{1,2,3,4},{5,6,
typedef unsigned char u8;
unsigned int keyscan (void)
{
u8 row_val,col_val;
IODIR0|=r0|r1|r2|r3;
while(1)
{
IOCLR0|=r0|r1|r2|r3;
IOSET0|=c0|c1|c2|c3;
while((c0&&c1&&c2&&c3)==1);
IOCLR0=r0;
IOSET0=r1|r2|r3;
if((c0&&c1&&c2&&c3)==0)
{
row_val=0;
break;
}
IOCLR0=r1;
IOSET0=r0|r2|r3;
if((c0&&c1&&c2&&c3)==0)
{
row_val=1;
break;
}
IOCLR0=r2;
IOSET0=r1|r0|r3;
if((c0&&c1&&c2&&c3)==0)
{
row_val=2;
break;
}
IOCLR0=r3;
IOSET0=r1|r0|r2;
if((c0&&c1&&c2&&c3)==0)
{
row_val=3;
break;
}
}
if(c0==0)
col_val=0;
else if(c1==0)
col_val=1;
else if(c2==0)
col_val=2;
else
col_val=3;
delay_millisec(150);
while((c0&&c1&&c2&&c3)==0);
return key_lut[row_val][col_val];
}
int main()
{
int res;
LCD_INIT();
LCD_STR("4x4 keypad");
while(1)
{
LCD_COMMAND(0xc0);
res=keyscan();
LCD_INTEGER(res);
delay_millisec(500);
LCD_COMMAND(0x01);
}
}
can :
/* main_nodeA_TX.c */
#include "header.h"
main(){
CAN2_MSG m1;
//m2;
can2_init();
/*sending data frame*/
m1.id=0x000001AF;
m1.rtr=0;//data frame
m1.dlc=4;
m1.byteA=0xDDCCBBAA;
m1.byteB=0;
/*m2.id=0x5;
m2.dlc=7;
m2.rtr=1;*/
while(1)
{
can2_tx(m1);//data-frame
delay_s(1);
/*can2_tx(m2);//remote frame
delay_ms(2000);*/
//can2_rx(&m2);
}
}
void can_init()
{
PINSEL1|=0X00014000;//P0.23 P0.24
VPBDIV=1;
C2MOD=0x1;
AFMR=0X02;
C2BTR=0X001C001D;
C2MOD=0x0;
}
void can_tx(struct can m1)
{
C2TID2=m1.id;
C2TFI2=m1.dlc<<16;
if(m1.rtr==0)
{
C2TFI2&=~(1<<30);//RTR=0
C2TDA2=m1.byteA;
C2TDB2=m1.byteB;
}
else
{
C2TFI2|=(1<<30);//RTR=1
}
C2CMR=(1<<0)|(1<<6);
while(C2GSR&(1<<3)==0);
}
void can_rx(struct can *m2)
{
while(C2GSR&(0X01)==0);
m2->id=C2RID;
m2->dlc=C2RFS>>16&0XF;
m2->rtr=C2RFS>>30&1;
if(m2->rtr==0){
m2->byteA=C2RDA;
m2->byteB=C2RDB;
}
C2CMR=1<<2;
}
/* main_nodeB_RX.c */
#include "header.h"
main(){
CAN2_MSG m1;
can2_init();
uart0_init(115200);
uart0_tx_string("nodeB TESTING CAN\r\n");
while(1){
can2_rx(&m1);
if(m1.rtr==0){
uart0_tx_string("nodeB: DATA-FRAME is
received\r\n");
uart0_tx_hex(m1.id);
uart0_tx(' ');
uart0_tx_hex(m1.dlc);
uart0_tx(' ');
uart0_tx_hex(m1.byteA);
uart0_tx(' ');
uart0_tx_hex(m1.byteB);
uart0_tx_string("\r\n");
}
else{
uart0_tx_string("nodeB: REMOTE-FRAME
is received\r\n");
uart0_tx_hex(m1.id);
uart0_tx(' ');
uart0_tx_hex(m1.dlc);
uart0_tx(' ');
uart0_tx_string("\r\n");
}
}
#include <LPC21xx.H>
#include <stdio.h>
void uart0_tx_integer(int num){
char buf[10];
sprintf(buf,"%d",num);
uart0_tx_string(buf);
}