Nokia 3310 LCD
Nokia 3310 LCD
Hello Every One
in this site there is 1 example with using pic and nokia 3310 lcd i have use pic16f628 and nokia lcd in that examples its using portc as in 628 there is not portc so i replace with PortC to PortB is this will work or not
i maded the circuit also but its not showing anything i have color lcd so i want to use that can u tell me is i have make any changes
i am waiting eagerly
in this site there is 1 example with using pic and nokia 3310 lcd i have use pic16f628 and nokia lcd in that examples its using portc as in 628 there is not portc so i replace with PortC to PortB is this will work or not
i maded the circuit also but its not showing anything i have color lcd so i want to use that can u tell me is i have make any changes
i am waiting eagerly
PIC16F628 With Nokia 3310 LCD
no one in this forms who knows how to connect not even the easypic2 user team come on guys plsssss
i want to connect nokia 3310 and 3150i lcd with pic16f628 in that example its using pic18f458 plsss suggest me
i want to connect nokia 3310 and 3150i lcd with pic16f628 in that example its using pic18f458 plsss suggest me
Hi NeoMatrix
Yes, you can use PortB. In the projects list there is a connecting diagram.
The code for the two lcd's are totally different. I'm busy with the code for the color Nokia 3510i LCD. If it is finish i'll upload it to mikroElektronika.
Here is the other topic with some pictures
http://www.mikroe.com/forum/viewtopic.php?t=1213
The problem with the P16 is the table of chars that is bigger than 255 bytes. I'll update the code and post it.
Anton
Yes, you can use PortB. In the projects list there is a connecting diagram.
The code for the two lcd's are totally different. I'm busy with the code for the color Nokia 3510i LCD. If it is finish i'll upload it to mikroElektronika.
Here is the other topic with some pictures
http://www.mikroe.com/forum/viewtopic.php?t=1213
The problem with the P16 is the table of chars that is bigger than 255 bytes. I'll update the code and post it.
Anton
Last edited by anton on 25 Apr 2005 20:42, edited 1 time in total.
I did same
i did the same i replace the PortC to PortB and deleted some fonts and image i am just using font then also its not displaying anything the screen is just blank
Did you insert a 0.47uF cap between gnd and pin 7. I see on the project page it says 47uFi did the same i replace the PortC to PortB and deleted some fonts and image i am just using font then also its not displaying anything the screen is just blank
Another proud user of LV 24-33A Development System and mikroPascal PRO for dsPIC :)
PortA not working? Add CMCON := 7; PortD not working? Add ADCON1 := 6;
To paste code on the forum, please use the [b] Code [/b] button !! ;)
PortA not working? Add CMCON := 7; PortD not working? Add ADCON1 := 6;
To paste code on the forum, please use the [b] Code [/b] button !! ;)
no
thanks for ur reply just i have last query and i will wait for 2 days so that u can write that nokia3310 progam in pic16f628
no i don't have 0.47uf i connected 47uf i think thats the problem thats why its not displaying anything
if u don't mind i have one more query
-----------------------------------------------------------------------------
in this site Pic Microcontrollers that in assembly and in that examples
7.7 Shift registers
7.7.1 Input shift register 74HC597
7.7.2 Output shift register (74HC595) and its rewritten in assembly its driving the leds
An example of how to use the HC595 macro is given in the following program. Data from variable TX is serially transferred to shift register. LEDs connected to the parallel output of the shift register will indicate the state of the lines. In this example value 0xCB (1100 1011) is sent so that the seventh, sixth, third, first, and zero LEDs are illuminated.
the code is
=======================================
;HC595.inc
HC595 macro Var,Var1
Local Loop
movlw .8
movwf Var1
LOOP rlf Var,f
btfss STATUS,C
bcf Data
btfsc STATUS,C
bsf Data
bsf Clock
nop
bcf Clock
decfsz Var1,f
goto Loop
bsf Latch
nop
bcf Latch
endm
=======================================
=========================================
HC595.asm
;=================================================================================
; Lesson7a.asm - example of double byte arithmetic
; 8-Jan-2003
;=================================================================================
;
processor pic16f84a
include <p16f84a.inc>
__config _XT_OSC & _PWRTE_ON & _WDT_OFF
;=================================================================================
cblock 0x0C
TX
CountSPI
endc
;****** Declaring The hardware ******************
;****** Structure of program memory **************
ORG 0x00
goto Main
ORG 0x04
goto Main
include "HC595.inc"
Main
banksel TRISA
movlw b'00011000' ;Intialilizing Port A
movwf TRISA ;TRISA <- 0x18
banksel PORTA
clrf PORTA
movlw 0xcb
movwf TX ;Fill Tx Buffer
HC595 TX,CountSPI
Loop goto Loop
End
================================================
this is code and the link is
http://www.mikroelektronika.co.yu/engli ... hapter.htm
i make this circuit same and wrote the progam in MPLAB its say that 1st it will glow 6,7,5,4,3,2,1 but all leds glowing at a time i can't modify the progam so i need in basic so that i can implment the above program by using shift registers of 74hc595
i don't no much assembly so i want this same code in basic so that i can understand clearly and which type its using i mean its a USART or SPI if i understand this in basic i think its easy for me to design moving message display of 5 5X7 Dot Matrix Leds
plsssssssssss can any bedy have the above code in mikrobasic plssssssssssssssssssssssssss
-
no i don't have 0.47uf i connected 47uf i think thats the problem thats why its not displaying anything
if u don't mind i have one more query
-----------------------------------------------------------------------------
in this site Pic Microcontrollers that in assembly and in that examples
7.7 Shift registers
7.7.1 Input shift register 74HC597
7.7.2 Output shift register (74HC595) and its rewritten in assembly its driving the leds
An example of how to use the HC595 macro is given in the following program. Data from variable TX is serially transferred to shift register. LEDs connected to the parallel output of the shift register will indicate the state of the lines. In this example value 0xCB (1100 1011) is sent so that the seventh, sixth, third, first, and zero LEDs are illuminated.
the code is
=======================================
;HC595.inc
HC595 macro Var,Var1
Local Loop
movlw .8
movwf Var1
LOOP rlf Var,f
btfss STATUS,C
bcf Data
btfsc STATUS,C
bsf Data
bsf Clock
nop
bcf Clock
decfsz Var1,f
goto Loop
bsf Latch
nop
bcf Latch
endm
=======================================
=========================================
HC595.asm
;=================================================================================
; Lesson7a.asm - example of double byte arithmetic
; 8-Jan-2003
;=================================================================================
;
processor pic16f84a
include <p16f84a.inc>
__config _XT_OSC & _PWRTE_ON & _WDT_OFF
;=================================================================================
cblock 0x0C
TX
CountSPI
endc
;****** Declaring The hardware ******************
;****** Structure of program memory **************
ORG 0x00
goto Main
ORG 0x04
goto Main
include "HC595.inc"
Main
banksel TRISA
movlw b'00011000' ;Intialilizing Port A
movwf TRISA ;TRISA <- 0x18
banksel PORTA
clrf PORTA
movlw 0xcb
movwf TX ;Fill Tx Buffer
HC595 TX,CountSPI
Loop goto Loop
End
================================================
this is code and the link is
http://www.mikroelektronika.co.yu/engli ... hapter.htm
i make this circuit same and wrote the progam in MPLAB its say that 1st it will glow 6,7,5,4,3,2,1 but all leds glowing at a time i can't modify the progam so i need in basic so that i can implment the above program by using shift registers of 74hc595
i don't no much assembly so i want this same code in basic so that i can understand clearly and which type its using i mean its a USART or SPI if i understand this in basic i think its easy for me to design moving message display of 5 5X7 Dot Matrix Leds
plsssssssssss can any bedy have the above code in mikrobasic plssssssssssssssssssssssssss
-
Helo To Connect Nokia 3310 LCD
and one more thing in that source code there is 1 procedure when i try to comiple by changing the device pic16f628 its giving error on this procedure
so i changed that m as word to byte then its cmpile success due u think that this also 1 problem
Code: Select all
-------------------------------------
sub procedure NOK_Chr(dim symlcd as byte)
dim k as byte
dim m as word
NOK_Write(0x00,1) ' Space between characters
for k = 1 to 5
m = (symlcd - 32)
m = m * 5
m = m + k
m = m - 1
NOK_Write(Font1[m],1)
next k
end sub
---------------------------------------------
sub procedure NOK_Chr(dim symlcd as byte)
dim k as byte
dim m as byte
NOK_Write(0x00,1) ' Space between characters
for k = 1 to 5
m = (symlcd - 32)
m = m * 5
m = m + k
m = m - 1
NOK_Write(Font1[m],1)
next k
end sub
no response
what happened to every one no response til now i am waiting since 3 hrs no reponse came
Hi NeoMatrix
I was sleeping
Yes. If you dont use a cap between 0.1uf and 0.47 the LCD won't switch on. It's something to do with the booster voltage.
The P16 can't use a word to point to a value in an array thats why you have to change it to a byte.
I've splitted up the array into two diffrent arrays.
The code is finish but i'll upload it if i get home.
Anton
I was sleeping
Yes. If you dont use a cap between 0.1uf and 0.47 the LCD won't switch on. It's something to do with the booster voltage.
The P16 can't use a word to point to a value in an array thats why you have to change it to a byte.
I've splitted up the array into two diffrent arrays.
The code is finish but i'll upload it if i get home.
Anton
Nokia 3310 LCD
Hello Anton
happy to hear that u completed the code i am eagerly waiting last nighi not sleep just waiting to get the reply from u only i will buy the capacitor now i have 4.7uf can i use this of 1 uf is it compulsory to put 0.47uf when i come to home pls upload that code mdaslamknl@yahoo.com
happy to hear that u completed the code i am eagerly waiting last nighi not sleep just waiting to get the reply from u only i will buy the capacitor now i have 4.7uf can i use this of 1 uf is it compulsory to put 0.47uf when i come to home pls upload that code mdaslamknl@yahoo.com
Hi NeoMatrix
Here is the source for the P16
Make a new unit and save it as NOKIA_LCD_16.ppas.
Now remember to include (uses) NOKIA_LCD_16 and not NOKIA_LCD_18 any more.
Please change the const values to match the correct line. My connection is different, so you have to change these values.
Anotn
Here is the source for the P16
Make a new unit and save it as NOKIA_LCD_16.ppas.
Now remember to include (uses) NOKIA_LCD_16 and not NOKIA_LCD_18 any more.
Please change the const values to match the correct line. My connection is different, so you have to change these values.
Code: Select all
eg. const ___NCS : byte = 3; // If CS is connected to PortB, 3
or const ___NCS : byte = 1; // If CS is connected to PortB, 1
Code: Select all
unit NOKIA_LCD_16;
//****************************************************************************//
// Written by ANTON RIECKERT
// anton.rieckert@gmail.com
//****************************************************************************//
implementation
//****************************************************************************//
Const // To match your connection
___NCS : byte = 3; // PortB,3 - CS - Chip Enable
___NRES : byte = 5; // PortB,5 - RES - Reset Input
___NSCLK : byte = 0; // PortB,0 - SCLK - Serial Clock Input
___NDC : byte = 2; // PortB,2 - DC - Data / Command
___NSDA : byte = 1; // PortB,1 - SDA - Serial Data Input
//****************************************************************************//
const font5x7_1 : array[230] of byte =
(0x00, 0x00, 0x00, 0x00, 0x00 , // sp
0x00, 0x00, 0x2f, 0x00, 0x00 , // !
0x00, 0x07, 0x00, 0x07, 0x00 , // "
0x14, 0x7f, 0x14, 0x7f, 0x14 , // #
0x24, 0x2a, 0x7f, 0x2a, 0x12 , // $
0xc4, 0xc8, 0x10, 0x26, 0x46 , // %
0x36, 0x49, 0x55, 0x22, 0x50 , // &
0x00, 0x05, 0x03, 0x00, 0x00 , // '
0x00, 0x1c, 0x22, 0x41, 0x00 , // (
0x00, 0x41, 0x22, 0x1c, 0x00 , // )
0x14, 0x08, 0x3E, 0x08, 0x14 , // *
0x08, 0x08, 0x3E, 0x08, 0x08 , // +
0x00, 0x00, 0x50, 0x30, 0x00 , // ,
0x10, 0x10, 0x10, 0x10, 0x10 , // -
0x00, 0x60, 0x60, 0x00, 0x00 , // .
0x20, 0x10, 0x08, 0x04, 0x02 , // /
0x3E, 0x51, 0x49, 0x45, 0x3E , // 0
0x00, 0x42, 0x7F, 0x40, 0x00 , // 1
0x42, 0x61, 0x51, 0x49, 0x46 , // 2
0x21, 0x41, 0x45, 0x4B, 0x31 , // 3
0x18, 0x14, 0x12, 0x7F, 0x10 , // 4
0x27, 0x45, 0x45, 0x45, 0x39 , // 5
0x3C, 0x4A, 0x49, 0x49, 0x30 , // 6
0x01, 0x71, 0x09, 0x05, 0x03 , // 7
0x36, 0x49, 0x49, 0x49, 0x36 , // 8
0x06, 0x49, 0x49, 0x29, 0x1E , // 9
0x00, 0x36, 0x36, 0x00, 0x00 , // :
0x00, 0x56, 0x36, 0x00, 0x00 , // ;
0x08, 0x14, 0x22, 0x41, 0x00 , // <
0x14, 0x14, 0x14, 0x14, 0x14 , // =
0x00, 0x41, 0x22, 0x14, 0x08 , // >
0x02, 0x01, 0x51, 0x09, 0x06 , // ?
0x32, 0x49, 0x59, 0x51, 0x3E , // @
0x7E, 0x11, 0x11, 0x11, 0x7E , // A
0x7F, 0x49, 0x49, 0x49, 0x36 , // B
0x3E, 0x41, 0x41, 0x41, 0x22 , // C
0x7F, 0x41, 0x41, 0x22, 0x1C , // D
0x7F, 0x49, 0x49, 0x49, 0x41 , // E
0x7F, 0x09, 0x09, 0x09, 0x01 , // F
0x3E, 0x41, 0x49, 0x49, 0x7A , // G
0x7F, 0x08, 0x08, 0x08, 0x7F , // H
0x00, 0x41, 0x7F, 0x41, 0x00 , // I
0x20, 0x40, 0x41, 0x3F, 0x01 , // J
0x7F, 0x08, 0x14, 0x22, 0x41 , // K
0x7F, 0x40, 0x40, 0x40, 0x40 , // L
0x7F, 0x02, 0x0C, 0x02, 0x7F); // M
const font5x7_2 : array[225] of byte = (
0x7F, 0x04, 0x08, 0x10, 0x7F , // N
0x3E, 0x41, 0x41, 0x41, 0x3E , // O
0x7F, 0x09, 0x09, 0x09, 0x06 , // P
0x3E, 0x41, 0x51, 0x21, 0x5E , // Q
0x7F, 0x09, 0x19, 0x29, 0x46 , // R
0x46, 0x49, 0x49, 0x49, 0x31 , // S
0x01, 0x01, 0x7F, 0x01, 0x01 , // T
0x3F, 0x40, 0x40, 0x40, 0x3F , // U
0x1F, 0x20, 0x40, 0x20, 0x1F , // V
0x3F, 0x40, 0x38, 0x40, 0x3F , // W
0x63, 0x14, 0x08, 0x14, 0x63 , // X
0x07, 0x08, 0x70, 0x08, 0x07 , // Y
0x61, 0x51, 0x49, 0x45, 0x43 , // Z
0x00, 0x7F, 0x41, 0x41, 0x00 , // [
0x55, 0x2A, 0x55, 0x2A, 0x55 , // 55
0x00, 0x41, 0x41, 0x7F, 0x00 , // ]
0x04, 0x02, 0x01, 0x02, 0x04 , // ^
0x40, 0x40, 0x40, 0x40, 0x40 , // _
0x00, 0x01, 0x02, 0x04, 0x00 , // '
0x20, 0x54, 0x54, 0x54, 0x78 , // a
0x7F, 0x48, 0x44, 0x44, 0x38 , // b
0x38, 0x44, 0x44, 0x44, 0x20 , // c
0x38, 0x44, 0x44, 0x48, 0x7F , // d
0x38, 0x54, 0x54, 0x54, 0x18 , // e
0x08, 0x7E, 0x09, 0x01, 0x02 , // f
0x0C, 0x52, 0x52, 0x52, 0x3E , // g
0x7F, 0x08, 0x04, 0x04, 0x78 , // h
0x00, 0x44, 0x7D, 0x40, 0x00 , // i
0x20, 0x40, 0x44, 0x3D, 0x00 , // j
0x7F, 0x10, 0x28, 0x44, 0x00 , // k
0x00, 0x41, 0x7F, 0x40, 0x00 , // l
0x7C, 0x04, 0x18, 0x04, 0x78 , // m
0x7C, 0x08, 0x04, 0x04, 0x78 , // n
0x38, 0x44, 0x44, 0x44, 0x38 , // o
0x7C, 0x14, 0x14, 0x14, 0x08 , // p
0x08, 0x14, 0x14, 0x18, 0x7C , // q
0x7C, 0x08, 0x04, 0x04, 0x08 , // r
0x48, 0x54, 0x54, 0x54, 0x20 , // s
0x04, 0x3F, 0x44, 0x40, 0x20 , // t
0x3C, 0x40, 0x40, 0x20, 0x7C , // u
0x1C, 0x20, 0x40, 0x20, 0x1C , // v
0x3C, 0x40, 0x30, 0x40, 0x3C , // w
0x44, 0x28, 0x10, 0x28, 0x44 , // x
0x0C, 0x50, 0x50, 0x50, 0x3C , // y
0x44, 0x64, 0x54, 0x4C, 0x44); // z
//****************************************************************************//
Procedure NOK_Write (data, mode : byte);
Var i : short;
Begin
// Pull DC high for DATA or low for COMMAND
If TestBit(mode,0) = 1 then SetBit(PortB,___NDC);
If TestBit(mode,0) = 0 then ClearBit(PortB,___NDC);
ClearBit(PortB,___NCS); // CS = low
// Clock in 8 bits of data - Highst bit first
For i := 7 downto 0 do
Begin
ClearBit(PortB,___NSCLK); // SCLK = low
If TestBit(Data,i) = 0 then ClearBit(PortB,___NSDA) // SDA = low
else SetBit(PortB,___NSDA); // SDA = high
SetBit(PortB,___NSCLK); // SCLK = high
End;
SetBit(PortB,___NCS); // CS = high
End;
//****************************************************************************//
// Draws a character on screen at current possition
Procedure NOK_Chr(symlcd : Byte);
Var l : Byte;
m : Byte;
Begin
NOK_Write(0x00,1); // Space between characters
If (symlcd < 78) then
Begin
For l := 1 to 5 do
Begin
m := (symlcd - 32);
m := m * 5;
m := m + l;
m := m - 1;
NOK_Write(Font5x7_1[m],1);
End;
End;
If (symlcd > 77) then
Begin
symlcd := symlcd - 46;
For l := 1 to 5 do
Begin
m := (symlcd - 32);
m := m * 5;
m := m + l;
m := m - 1;
NOK_Write(Font5x7_2[m],1);
End;
End;
End;
//****************************************************************************//
// Set the current position for data (0<= x <= 84, 0<= y <= 5)
Procedure NOK_GotoXY(x,y : byte);
Var n, o : Byte;
Begin
n := x;
o := y;
SetBit(n,7);
SetBit(o,6);
NOK_Write (o,0);
NOK_Write (n,0);
End;
//****************************************************************************//
// Inverts Display - Here is still a bug. It only inverst once and doesn't
// want to invert back again
Procedure NOK_Invert;
Begin
NOK_Write(0x0D,0);
End;
//****************************************************************************//
// Clear the LCD Data memory
Procedure NOK_Clear;
Var p, q, r : Byte;
Begin
ClearBit(PortB,___NSDA); // SDA = low - Data bit is low
SetBit(PortB,___NDC); // DC = high - Data mode
ClearBit(PortB,___NCS); // CS = low - Chip Enable
For p := 1 to 6 do // for 6 rows
Begin
For q := 1 to 84 do // for 84 colums
Begin
For r := 1 to 8 do // for 8 loop (8 bits)
Begin
ClearBit(PortB,___NSCLK); // SCLK = low - Serial Clock Input
SetBit(PortB,___NSCLK); // SCLK = high - Serial Clock Input
End;
End;
End;
SetBit(PortB,___NCS); // CS = high - Chip Enable
NOK_GotoXY(0,0);
End;
//****************************************************************************//
// Writes a string at x, y position (maks 14 char per row) (0 <= x <= 84 , 0 <= y <= 5)
Procedure NOK_Out(x, y : byte; var sentance : array[14] of char);
Var v : byte;
Begin
NOK_GotoXY(x,y);
For v := 1 to length(sentance) do
Begin
NOK_Chr(sentance[v]);
End;
End;
//****************************************************************************//
// Writes a string at current position
Procedure NOK_Out_CP(var sentance : array[14] of char);
Var v : byte;
Begin
For v := 1 to length(sentance) do
Begin
NOK_Chr(sentance[v]);
End;
End;
//****************************************************************************//
// LCD Initialization
Procedure NOK_Init;
Begin
// Set initial status of LCD pins
ClearBit(PortB,___NSCLK); // SCLK = low
ClearBit(PortB,___NSDA); // SDA = low
ClearBit(PortB,___NDC); // DC = low
ClearBit(PortB,___NCS); // CS = low
ClearBit(PortB,___NRES); // RES = low
// Toggle LCD reset
Delay_ms(200);
ClearBit(PortB,___NRES); // RES = low
Delay_ms(500);
SetBit(PortB,___NRES); // RES = high
SetBit(PortB,___NCS); // CS = high
NOK_Write(0x21,0); // Extended commands
NOK_Write(0xc5,0); // LCD Vop
NOK_Write(0x06,0); // Temp coef
NOK_Write(0x13,0); // LCD Bias 1:48
NOK_Write(0x20,0); // Standard commands
NOK_Write(0x0c,0); // Normal Mode
// Clear and position at top of LCD
NOK_Clear;
NOK_GotoXY(0,0);
End;
end.
Anotn
Nokia 3310 LCD
Thanks also anton
i appreciate ur effort
Hello anton
i appreciate ur effort and very thankful to u i am really sorry to disturb u as u told in the form i have to connect the capacitor of 0.1uf to 0.47uf in between this can i use 4.7 of its compulsory to use that only and how can i know that lcd is good not damage may be thats also 1 reason that its not displaying anything i will buy everything new and test when i have problems i will mail u u can reply me after ur exams finish u need to concentrate ur studies
once again sorry for disturbing u
good luck for ur exams freind
NeoMatrix
i appreciate ur effort
Hello anton
i appreciate ur effort and very thankful to u i am really sorry to disturb u as u told in the form i have to connect the capacitor of 0.1uf to 0.47uf in between this can i use 4.7 of its compulsory to use that only and how can i know that lcd is good not damage may be thats also 1 reason that its not displaying anything i will buy everything new and test when i have problems i will mail u u can reply me after ur exams finish u need to concentrate ur studies
once again sorry for disturbing u
good luck for ur exams freind
NeoMatrix
The datasheet says 1uF. I'm using a 0.47uF and it's working fine.
And yes, I broke 3 LCD before i got the code right. It won't just blow for nothing. Program the pic, make sure the wires at the back don't toutch each other and then het the reset button a few times to send the init a few times after each other.
Hope you get it right.
Talk Later
Anton
And yes, I broke 3 LCD before i got the code right. It won't just blow for nothing. Program the pic, make sure the wires at the back don't toutch each other and then het the reset button a few times to send the init a few times after each other.
Hope you get it right.
Talk Later
Anton
Nokia 3310 LCD
yes i did the same connected the 0.47uf from 6th pin to 7th pin then also no displays i checked the all supplies with multimeter its display the voltages also in each pic i think the lcd is not good a i will buy new one then try thanks alot for helping me till now
bye
bye