Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
hello..
i am working on a project that involves use of a nokia 3315 lcd. i have written the program in mikroC. i am using PIC18F452 as controller.
but when i assembled the circuit and applied +5 volts to it, noting appeared on the screen.
please look at the code and comment.
I have used the schematic similar to the pic with difference of processor.
Added after 2 minutes:
the code is:
Code:// Connections between PIC and LCD. #define D_C PORTD.F5 #define SCE PORTD.F4 #define RES PORTD.F3 #define SCK PORTD.F7 #define SDI PORTD.F6 #define pi 3.14159 // Constant pi. #define num_of_points 64 // Number of points to plot in a graph. void initlcd(void); // Initializes the LCD. void sendcmd(char); // Writes a command. void senddata(char); // Writes data to DDRAM to illuminate the pixels. void cleanram(void); // Erase the DDRAM contents. void gotoxy(char,char); // Position cursor to x,y. void sendchar(char); // Write one character. void sendstr(const char *); // Writes a string of characters. void sendpack(char); const char table[480] = { 0x00,0x00,0x00,0x00,0x00, // 20 space ASCII table for NOKIA LCD: 96 rows * 5 bytes= 480 bytes 0x00,0x00,0x5f,0x00,0x00, // 21 ! Note that this is the same set of codes for character you 0x00,0x07,0x00,0x07,0x00, // 22 " would find on a HD44780 based character LCD. :) 0x14,0x7f,0x14,0x7f,0x14, // 23 # Also, given the size of the LCD (84 pixels by 48 pixels), 0x24,0x2a,0x7f,0x2a,0x12, // 24 $ the maximum number of characters per row is only 14. :) 0x23,0x13,0x08,0x64,0x62, // 25 % 0x36,0x49,0x55,0x22,0x50, // 26 & 0x00,0x05,0x03,0x00,0x00, // 27 ' 0x00,0x1c,0x22,0x41,0x00, // 28 ( 0x00,0x41,0x22,0x1c,0x00, // 29 ) 0x14,0x08,0x3e,0x08,0x14, // 2a * 0x08,0x08,0x3e,0x08,0x08, // 2b + 0x00,0x50,0x30,0x00,0x00, // 2c , 0x08,0x08,0x08,0x08,0x08, // 2d - 0x00,0x60,0x60,0x00,0x00, // 2e . 0x20,0x10,0x08,0x04,0x02, // 2f / 0x3e,0x51,0x49,0x45,0x3e, // 30 0 0x00,0x42,0x7f,0x40,0x00, // 31 1 0x42,0x61,0x51,0x49,0x46, // 32 2 0x21,0x41,0x45,0x4b,0x31, // 33 3 0x18,0x14,0x12,0x7f,0x10, // 34 4 0x27,0x45,0x45,0x45,0x39, // 35 5 0x3c,0x4a,0x49,0x49,0x30, // 36 6 0x01,0x71,0x09,0x05,0x03, // 37 7 0x36,0x49,0x49,0x49,0x36, // 38 8 0x06,0x49,0x49,0x29,0x1e, // 39 9 0x00,0x36,0x36,0x00,0x00, // 3a : 0x00,0x56,0x36,0x00,0x00, // 3b ; 0x08,0x14,0x22,0x41,0x00, // 3c < 0x14,0x14,0x14,0x14,0x14, // 3d = 0x00,0x41,0x22,0x14,0x08, // 3e > 0x02,0x01,0x51,0x09,0x06, // 3f ? 0x32,0x49,0x79,0x41,0x3e, // 40 @ 0x7e,0x11,0x11,0x11,0x7e, // 41 A 0x7f,0x49,0x49,0x49,0x36, // 42 B 0x3e,0x41,0x41,0x41,0x22, // 43 C 0x7f,0x41,0x41,0x22,0x1c, // 44 D 0x7f,0x49,0x49,0x49,0x41, // 45 E 0x7f,0x09,0x09,0x09,0x01, // 46 F 0x3e,0x41,0x49,0x49,0x7a, // 47 G 0x7f,0x08,0x08,0x08,0x7f, // 48 H 0x00,0x41,0x7f,0x41,0x00, // 49 I 0x20,0x40,0x41,0x3f,0x01, // 4a J 0x7f,0x08,0x14,0x22,0x41, // 4b K 0x7f,0x40,0x40,0x40,0x40, // 4c L 0x7f,0x02,0x0c,0x02,0x7f, // 4d M 0x7f,0x04,0x08,0x10,0x7f, // 4e N 0x3e,0x41,0x41,0x41,0x3e, // 4f O 0x7f,0x09,0x09,0x09,0x06, // 50 P 0x3e,0x41,0x51,0x21,0x5e, // 51 Q 0x7f,0x09,0x19,0x29,0x46, // 52 R 0x46,0x49,0x49,0x49,0x31, // 53 S 0x01,0x01,0x7f,0x01,0x01, // 54 T 0x3f,0x40,0x40,0x40,0x3f, // 55 U 0x1f,0x20,0x40,0x20,0x1f, // 56 V 0x3f,0x40,0x38,0x40,0x3f, // 57 W 0x63,0x14,0x08,0x14,0x63, // 58 X 0x07,0x08,0x70,0x08,0x07, // 59 Y 0x61,0x51,0x49,0x45,0x43, // 5a Z 0x00,0x7f,0x41,0x41,0x00, // 5b [ 0x02,0x04,0x08,0x10,0x20, // 5c Yen Currency Sign 0x00,0x41,0x41,0x7f,0x00, // 5d ] 0x04,0x02,0x01,0x02,0x04, // 5e ^ 0x40,0x40,0x40,0x40,0x40, // 5f _ 0x00,0x01,0x02,0x04,0x00, // 60 ` 0x20,0x54,0x54,0x54,0x78, // 61 a 0x7f,0x48,0x44,0x44,0x38, // 62 b 0x38,0x44,0x44,0x44,0x20, // 63 c 0x38,0x44,0x44,0x48,0x7f, // 64 d 0x38,0x54,0x54,0x54,0x18, // 65 e 0x08,0x7e,0x09,0x01,0x02, // 66 f 0x0c,0x52,0x52,0x52,0x3e, // 67 g 0x7f,0x08,0x04,0x04,0x78, // 68 h 0x00,0x44,0x7d,0x40,0x00, // 69 i 0x20,0x40,0x44,0x3d,0x00, // 6a j 0x7f,0x10,0x28,0x44,0x00, // 6b k 0x00,0x41,0x7f,0x40,0x00, // 6c l 0x7c,0x04,0x18,0x04,0x78, // 6d m 0x7c,0x08,0x04,0x04,0x78, // 6e n 0x38,0x44,0x44,0x44,0x38, // 6f o 0x7c,0x14,0x14,0x14,0x08, // 70 p 0x08,0x14,0x14,0x18,0x7c, // 71 q 0x7c,0x08,0x04,0x04,0x08, // 72 r 0x48,0x54,0x54,0x54,0x20, // 73 s 0x04,0x3f,0x44,0x40,0x20, // 74 t 0x3c,0x40,0x40,0x20,0x7c, // 75 u 0x1c,0x20,0x40,0x20,0x1c, // 76 v 0x3c,0x40,0x30,0x40,0x3c, // 77 w 0x44,0x28,0x10,0x28,0x44, // 78 x 0x0c,0x50,0x50,0x50,0x3c, // 79 y 0x44,0x64,0x54,0x4c,0x44, // 7a z 0x00,0x08,0x36,0x41,0x00, // 7b < 0x00,0x00,0x7f,0x00,0x00, // 7c | 0x00,0x41,0x36,0x08,0x00, // 7d > 0x10,0x08,0x08,0x10,0x08, // 7e Right Arrow -> 0x78,0x46,0x41,0x46,0x78}; // 7f Left Arrow <- void main() { int i; char a; TRISD=0x00; TRISB=0x00; PORTB.F7=0; PORTD=0x00; initlcd(); while(1) {gotoxy(12,15); sendstr("Kamal"); if(PORTB.F7==0) PORTB.F7=1; else PORTB.F7=0; Delay_ms(1000); } // gotoxy(0,0); // for(i=0;i<480;i++) // {a=table[i]; // senddata(a);} } void initlcd() { RES =1; SCE =1; RES =0; Delay_ms(100); RES=1; /// come out of lcd state sendcmd(0x21); sendcmd(0xC2); sendcmd(0x13); sendcmd(0x20); sendcmd(0x09); if (PORTB.F6==1) PORTB.F6=0; else PORTB.F6=1; cleanram(); PORTB.F5=1; sendcmd(0x08); sendcmd(0x0C); gotoxy(0,0); } void sendcmd(char x) { D_C= 0; SCE=0; sendpack(x); SCE=1; //deselect the display return; } void senddata(char x) { D_C= 1; SCE=0; sendpack(x); SCE=1; //deselect the display } void cleanram() {int i; gotoxy(0,0); for(i=504;i>0;i--) senddata(0x00); } void gotoxy( char x, char y) { sendcmd(0x40|(y&0x07)); sendcmd(0x80|(x&0x7f)); } void sendchar(char x) { int a,b; char c; if((x<0x20)||(x>0x7f)) return; a=((5*x)-160); for(b=5;b>0;b--) { c=table[a]; senddata(c); a++; } senddata(0x00); } void sendstr(const char *s) { while(*s) sendchar(*s++); } void sendpack(char x) { int i; for(i=0;i<8;i++) { SCK=0; if ((x&0x80)==0x80) 0 SDI=1; else SDI=0; SCK=1; x=x<<1; } }
Added after 5 minutes:
one more thng i have used three LEDs in order to debug the program at PB7,PB6 and PB5. they glow at different instant in the program.
these leds were wworking fine as per program. so my guess is that Program is working iside the chip..Also through PRoteus i have checked the SPI communication.it is also as expected.
i heve checked each annd every connection many times.
so i think either the LCD is faulty or i have done something wrong in initialisation routine....
please help..
thx in advance
Added after 24 minutes:
Added after 28 minutes:
wait a min...
when i used inverse mode (sending 0D istead of 0C in init routine) i am getting routine, i can see a very light output in the screen.
now the only question is how to increase the contrast of the display????
any idea???