Professional Documents
Culture Documents
Description:- To display Hindi characters , Custom characters ,Smileys and other symbols on 16*2 alphanumeric lcd and also with the help of keypad. There are 8 symbol locations in LCDs controller where a custom character can be stored. These locations can have a particular bitmap layout which would correspond to a custom made character. In this case these bitmap layouts are set according to Hindi alphabets. To display location 96 (ASCII code 4). , the bitmap values are mapped to first base address
This is achieved by first sending the address location (96) to LCD command register. Next, the bitmap values (0, 10, 21, 17, 10, 4, 0, 0) are sent to the LCD data register. Now the gets stored at this address. Similarly other alphabets can also be stored at different (up to 8) addresses. Now whenever an alphabet is to be displayed, its location should be sent as a command instruction to LCD.
Components Used:1. 16*2 alphanumeric LCD 2. 8051 Development Board 3. 4*4 matrix Keypad 4. 4 Pin Keypad Connectors
Pics:-
Application of :1. 2. 3. Video:Hindi Character keyboard Custom Characters keyboard Smileys and other Special symbols Keyboard
Code:// C code to create and display custom characters, hindi char., // smilies, heart and musical note symbol #include<reg52.h> sbit d1=P1^0; sbit d2=P1^1; sbit d3=P1^2; sbit d4=P1^3;
sbit row1=P2^0; sbit row2=P2^1; sbit row3=P2^2; sbit row4=P2^3; sbit sbit sbit sbit col1=P3^0; col2=P3^1; col3=P3^2; col4=P3^3;
unsigned char slogan1[]="Enter any key"; unsigned int count=0; void l_delay(); void s_delay(); void data_tr(); void send_data(); void send_cmd(); void clr_lcd(); void lcd_int(); action();
void l_delay() { int i,j; for(i=0; i<=20;i++) { for(j=0;j<=500;j++); } } void s_delay() { int v,b; for(v=0;v<=40;v++) for(b=0;b<=50;b++); }
nib_tr( unsigned char data1) //function to transfer higher nibble to lower nible// { unsigned char data2 ,temp1; temp1=data1; data1=data1<<4; data2=temp1>>4;
data1=data1|data2; return(data1); }
void data_tr(unsigned char data1) { d1= data1&0x01; data1=data1>>1; d2=data1&0x01; data1=data1>>1; d3=data1&0x01; data1=data1>>1; d4=data1&0x01; }
void send_cmd(unsigned char data1) { unsigned char data2; rs=0; s_delay(); en=1; s_delay(); data2 =nib_tr(data1); data_tr(data2); en=0; s_delay(); en=1; s_delay(); data_tr(data1); en=0; }
void send_data(unsigned char data1) { unsigned char data2; rs=1; s_delay(); en=1; s_delay(); data2 =nib_tr(data1); data_tr(data2); en=0;
s_delay(); en=1; s_delay(); data_tr(data1); en=0; } void display_slogan(unsigned char *p) //Function to display String on LCd// { unsigned char data1; while(*p) { data1=*p; send_data(data1); p++; } } void clr_lcd() { send_cmd(0x01); s_delay(); send_cmd(0x02); } //to clear the lcd//
void lcd_int() // Function to initialize the LCD// { send_cmd(0x28); s_delay(); send_cmd(0x28); s_delay(); send_cmd(0x28); s_delay(); send_cmd(0x06); s_delay(); send_cmd(0x0E); s_delay(); } void character() //Function to store values of characters and displaying that char. on LCD { send_cmd(64); // Base address where values of first custom character is to stored send_data(31); send_data(4); send_data(14); send_data(21); send_data(13); send_data(4); send_data(4); send_data(0);
send_cmd(0x80); send_data(0); send_cmd(72); send_data(31); send_data(9); send_data(11); send_data(21); send_data(19); send_data(9); send_data(9); send_data(0); send_cmd(0x82); send_data(1); send_cmd(80); send_data(31); send_data(9); send_data(9); send_data(9); send_data(9); send_data(25); send_data(25); send_data(0); send_cmd(0x84); send_data(2); send_cmd(88); send_data(31); send_data(9); send_data(17); send_data(13); send_data(17); send_data(17); send_data(15); send_data(1); send_cmd(0x86); send_data(3); send_cmd(96); send_data(0); send_data(10); send_data(21); send_data(17); send_data(10); send_data(4); send_data(0); send_data(0); send_cmd(0xC0);
// Address of the location where the Character is to be displayed// // Displaying the Character created at address 0x64// // Base address where values of second custom character is to stored
send_data(4); send_cmd(104); send_data(0); send_data(0); send_data(10); send_data(0); send_data(4); send_data(17); send_data(14); send_data(0); send_cmd(0xc2); send_data(5); send_cmd(112); send_data(0); send_data(10); send_data(0); send_data(4); send_data(0); send_data(14); send_data(17); send_data(0); send_cmd(0xc4); send_data(6); send_cmd(120); send_data(1); send_data(3); send_data(5); send_data(9); send_data(9); send_data(11); send_data(27); send_data(24); send_cmd(0xc6); send_data(7); } // Base address where values of eighth custom character is to stored
// Function to display the Characters by pressing keys //to check for row1 make it grounded//
if(col1==0) pressed// {
//if col1=0 means key no.1 is pressed(i.e. in 1st row ,key in 1st column is
l_delay(); //l_delay(); send_data(0); //to send the value stored at AScii code 0// send_data(' '); l_delay(); count+=2; return; }
if(col2==0) is pressed// {
//if col2=0 means key no.2 is pressed(i.e. in 1st row ,key in 2nd column
l_delay(); send_data(1); send_data(' '); l_delay(); count+=2; return; } if(col3==0) { l_delay(); send_data(2); send_data(' '); l_delay(); count+=2; return; }
if(col2==0) { l_delay(); send_data(5); send_data(' '); l_delay(); count+=2; return; } if(col3==0) { l_delay(); send_data(6); send_data(' '); l_delay(); count+=2; return; }
if(col2==0) { l_delay(); send_data('B'); send_data(' '); l_delay(); count+=2; return; } if(col3==0) { l_delay(); send_data('C'); send_data(' '); l_delay(); count+=2; return; }
if(col2==0) { l_delay(); send_data('1'); send_data(' '); l_delay(); count+=2; return; } if(col3==0) { l_delay(); send_data('2'); send_data(' '); l_delay(); count+=2; return; }
display_characters1() // to diisplay the characters one by one { send_cmd(0x80); while(count<=16) { key_press(); } } display_characters2() // to diisplay the characters one by one { send_cmd(0xC0); while(count<=16) { key_press(); } } display() { display_characters1(); count=0; display_characters2(); }
} } main() { int a=0; int d=0; clr_lcd(); s_delay(); lcd_int(); s_delay(); clr_lcd();
s_delay(); s_delay(); clr_lcd(); character(); for(d=0;d<=10;d++) l_delay(); clr_lcd(); display_slogan(slogan1); for(a=0;a<=10;a++) { l_delay(); } clr_lcd(); s_delay(); action(); return 0; }