Você está na página 1de 25

Estes displays são pequenos, apenas cerca de 1,5" de diâmetro. Possui uma resolução de 84x48 pixels, assim você pode usá-lo para gráficos, textos ou bitmaps. Necessitam de poucos pinos de I/O digitais e são de baixo consumo de energia também.

O display utiliza o chip controlador PCD8544 da Philips que foram utilizados no telefones celulares Nokia 3310 e Nokia 5110. Este chip é projetado para rodar apenas em 3.3V. Mas nos teste que faço utilizo 5V sem problema algum.

O código original era para arduino, onde vocês encontram aqui, mas adaptei para rodar nosmicrocontroladores PIC.

FUNÇÕES:

void Nokia_Init() - Inicializa o lcd;

void Nokia_Write(char dc, char dat) - Envia um dado ou comando para o lcd; dc - define se o valor enviado é um comando ou um dado. LCD_CMD - comando, LCD_DATA - dado; dat - valor a ser enviado;

void Nokia_Fill(char val) - preenche o display com um valor; val - valor, quando for 0x00, limpa a tela;

void Nokia_Set_Cursor(char x, char y) - define a posição do cursor no lcd; x - posição horizontal (0 - 83); y - página situada, posição vertical ( 0 - 5);

void Nokia_Chr(char character, char color) - Escreve um caracter no lcd;

void Nokia_Out(char *s, char color) - Escreve um texto no lcd;

void Nokia_Image(const char *bmp) - Desenha uma imagem.

void Nokia_putMedNumber(char x, char y, char number, char color) - Escreve um número de tamanho médio. Obs.: x deve ser incrementado de 11 em 11. y deve ser incrementado de 2 em 2.

void Nokia_putBigNumber(char x, char y, char number, char color) - Escreve um número de tamanho grande. Obs.: x deve ser incrementado de 14 em 14. y deve ser incrementado de 3 em 3.

BIBLIOTECA:

1.

#define LCD_CMD

0

2.

#define LCD_DATA

1

3.

4.

#define LCD_X

84

5.

#define LCD_Y

48

6.

7.

#define BLACK 1

8.

#define WHITE 0

9.

10.

#define Nokia_Inverse() Nokia_Write( LCD_CMD, 0x0D )

11.

#define Nokia_Clear() Nokia_Fill( 0x00 )

12.

13.

extern sfr sbit Nokia_Clk;

14.

extern sfr sbit Nokia_Data;

15.

extern sfr sbit Nokia_DC;

16.

extern sfr sbit Nokia_RST;

17.

extern sfr sbit Nokia_SCE;

18.

extern sfr sbit Nokia_Clk_Direction;

19.

extern sfr sbit Nokia_Data_Direction;

20.

extern sfr sbit Nokia_DC_Direction;

21.

extern sfr sbit Nokia_RST_Direction;

22.

extern sfr sbit Nokia_SCE_Direction;

23.

24.

const code char ASCII_TABLE[][5] =

25.

{

26.

{0x00, 0x00, 0x00, 0x00, 0x00} // 20

27.

,{0x00, 0x00, 0x5f, 0x00, 0x00} // 21 !

28.

,{0x00, 0x07, 0x00, 0x07, 0x00} // 22 "

29.

,{0x14, 0x7f, 0x14, 0x7f, 0x14} // 23 #

30.

,{0x24, 0x2a, 0x7f, 0x2a, 0x12} // 24 $

31.

,{0x23, 0x13, 0x08, 0x64, 0x62} // 25 %

32.

,{0x36, 0x49, 0x55, 0x22, 0x50} // 26 &

33.

,{0x00, 0x05, 0x03, 0x00, 0x00} // 27 '

34.

,{0x00, 0x1c, 0x22, 0x41, 0x00} // 28 (

35.

,{0x00, 0x41, 0x22, 0x1c, 0x00} // 29 )

36.

,{0x14, 0x08, 0x3e, 0x08, 0x14} // 2a *

37.

,{0x08, 0x08, 0x3e, 0x08, 0x08} // 2b +

38.

,{0x00, 0x50, 0x30, 0x00, 0x00} // 2c ,

39.

,{0x08, 0x08, 0x08, 0x08, 0x08} // 2d -

40.

,{0x00, 0x60, 0x60, 0x00, 0x00} // 2e .

41.

,{0x20, 0x10, 0x08, 0x04, 0x02} // 2f /

42.

,{0x3e, 0x51, 0x49, 0x45, 0x3e} // 30 0

43.

,{0x00, 0x42, 0x7f, 0x40, 0x00} // 31 1

44.

,{0x42, 0x61, 0x51, 0x49, 0x46} // 32 2

  • 45. ,{0x21, 0x41, 0x45, 0x4b, 0x31} // 33 3

  • 46. ,{0x18, 0x14, 0x12, 0x7f, 0x10} // 34 4

  • 47. ,{0x27, 0x45, 0x45, 0x45, 0x39} // 35 5

  • 48. ,{0x3c, 0x4a, 0x49, 0x49, 0x30} // 36 6

  • 49. ,{0x01, 0x71, 0x09, 0x05, 0x03} // 37 7

  • 50. ,{0x36, 0x49, 0x49, 0x49, 0x36} // 38 8

  • 51. ,{0x06, 0x49, 0x49, 0x29, 0x1e} // 39 9

  • 52. ,{0x00, 0x36, 0x36, 0x00, 0x00} // 3a :

  • 53. ,{0x00, 0x56, 0x36, 0x00, 0x00} // 3b ;

  • 54. ,{0x08, 0x14, 0x22, 0x41, 0x00} // 3c <

  • 55. ,{0x14, 0x14, 0x14, 0x14, 0x14} // 3d =

  • 56. ,{0x00, 0x41, 0x22, 0x14, 0x08} // 3e >

  • 57. ,{0x02, 0x01, 0x51, 0x09, 0x06} // 3f ?

  • 58. ,{0x32, 0x49, 0x79, 0x41, 0x3e} // 40 @

  • 59. ,{0x7e, 0x11, 0x11, 0x11, 0x7e} // 41 A

  • 60. ,{0x7f, 0x49, 0x49, 0x49, 0x36} // 42 B

  • 61. ,{0x3e, 0x41, 0x41, 0x41, 0x22} // 43 C

  • 62. ,{0x7f, 0x41, 0x41, 0x22, 0x1c} // 44 D

  • 63. ,{0x7f, 0x49, 0x49, 0x49, 0x41} // 45 E

  • 64. ,{0x7f, 0x09, 0x09, 0x09, 0x01} // 46 F

  • 65. ,{0x3e, 0x41, 0x49, 0x49, 0x7a} // 47 G

  • 66. ,{0x7f, 0x08, 0x08, 0x08, 0x7f} // 48 H

  • 67. ,{0x00, 0x41, 0x7f, 0x41, 0x00} // 49 I

  • 68. ,{0x20, 0x40, 0x41, 0x3f, 0x01} // 4a J

  • 69. ,{0x7f, 0x08, 0x14, 0x22, 0x41} // 4b K

  • 70. ,{0x7f, 0x40, 0x40, 0x40, 0x40} // 4c L

  • 71. ,{0x7f, 0x02, 0x0c, 0x02, 0x7f} // 4d M

  • 72. ,{0x7f, 0x04, 0x08, 0x10, 0x7f} // 4e N

  • 73. ,{0x3e, 0x41, 0x41, 0x41, 0x3e} // 4f O

  • 74. ,{0x7f, 0x09, 0x09, 0x09, 0x06} // 50 P

  • 75. ,{0x3e, 0x41, 0x51, 0x21, 0x5e} // 51 Q

  • 76. ,{0x7f, 0x09, 0x19, 0x29, 0x46} // 52 R

  • 77. ,{0x46, 0x49, 0x49, 0x49, 0x31} // 53 S

  • 78. ,{0x01, 0x01, 0x7f, 0x01, 0x01} // 54 T

  • 79. ,{0x3f, 0x40, 0x40, 0x40, 0x3f} // 55 U

  • 80. ,{0x1f, 0x20, 0x40, 0x20, 0x1f} // 56 V

  • 81. ,{0x3f, 0x40, 0x38, 0x40, 0x3f} // 57 W

  • 82. ,{0x63, 0x14, 0x08, 0x14, 0x63} // 58 X

  • 83. ,{0x07, 0x08, 0x70, 0x08, 0x07} // 59 Y

  • 84. ,{0x61, 0x51, 0x49, 0x45, 0x43} // 5a Z

  • 85. ,{0x00, 0x7f, 0x41, 0x41, 0x00} // 5b [

  • 86. ,{0x02, 0x04, 0x08, 0x10, 0x20} // 5c ¥

  • 87. ,{0x00, 0x41, 0x41, 0x7f, 0x00} // 5d ]

  • 88. ,{0x04, 0x02, 0x01, 0x02, 0x04} // 5e ^

  • 89. ,{0x40, 0x40, 0x40, 0x40, 0x40} // 5f _

  • 90. ,{0x00, 0x01, 0x02, 0x04, 0x00} // 60 `

  • 91. ,{0x20, 0x54, 0x54, 0x54, 0x78} // 61 a

  • 92. ,{0x7f, 0x48, 0x44, 0x44, 0x38} // 62 b

  • 93. ,{0x38, 0x44, 0x44, 0x44, 0x20} // 63 c

  • 94. ,{0x38, 0x44, 0x44, 0x48, 0x7f} // 64 d

  • 95. ,{0x38, 0x54, 0x54, 0x54, 0x18} // 65 e

  • 96. ,{0x08, 0x7e, 0x09, 0x01, 0x02} // 66 f

  • 97. ,{0x0c, 0x52, 0x52, 0x52, 0x3e} // 67 g

  • 98. ,{0x7f, 0x08, 0x04, 0x04, 0x78} // 68 h

  • 99. ,{0x00, 0x44, 0x7d, 0x40, 0x00} // 69 i

100.

,{0x20, 0x40, 0x44, 0x3d, 0x00} // 6a j

101.

,{0x7f, 0x10, 0x28, 0x44, 0x00} // 6b k

102.

,{0x00, 0x41, 0x7f, 0x40, 0x00} // 6c l

103.

,{0x7c, 0x04, 0x18, 0x04, 0x78} // 6d m

104.

,{0x7c, 0x08, 0x04, 0x04, 0x78} // 6e n

105.

,{0x38, 0x44, 0x44, 0x44, 0x38} // 6f o

106.

,{0x7c, 0x14, 0x14, 0x14, 0x08} // 70 p

107.

,{0x08, 0x14, 0x14, 0x18, 0x7c} // 71 q

108.

,{0x7c, 0x08, 0x04, 0x04, 0x08} // 72 r

109.

,{0x48, 0x54, 0x54, 0x54, 0x20} // 73 s

110.

,{0x04, 0x3f, 0x44, 0x40, 0x20} // 74 t

111.

,{0x3c, 0x40, 0x40, 0x20, 0x7c} // 75 u

112.

,{0x1c, 0x20, 0x40, 0x20, 0x1c} // 76 v

113.

,{0x3c, 0x40, 0x30, 0x40, 0x3c} // 77 w

114.

,{0x44, 0x28, 0x10, 0x28, 0x44} // 78 x

115.

,{0x0c, 0x50, 0x50, 0x50, 0x3c} // 79 y

116.

,{0x44, 0x64, 0x54, 0x4c, 0x44} // 7a z

117.

,{0x00, 0x08, 0x36, 0x41, 0x00} // 7b {

118.

,{0x00, 0x00, 0x7f, 0x00, 0x00} // 7c |

119.

,{0x00, 0x41, 0x36, 0x08, 0x00} // 7d }

120.

,{0x00, 0x07, 0x05, 0x07, 0x00} // 7e °

121.

};

122.

123.

static void Nokia_SPI_Wr( char dat )

124.

{

125.

char i;

126.

for( i = 0; i < 8; i++ )

127.

{

128.

Nokia_Clk = 0;

129.

Nokia_Data = dat.B7;

130.

dat <<= 1;

131.

Nokia_Clk = 1;

132.

asm nop;

133.

asm nop;

134.

}

135.

}

136.

137.

void Nokia_Write( char dc, char _data )

138.

{

139.

Nokia_DC = dc.B0;

140.

Nokia_SCE = 0;

141.

Nokia_SPI_Wr( _data );

142.

Nokia_SCE = 1;

143.

}

144.

145.

void Nokia_Init()

146.

{

147.

Nokia_Clk_Direction = 0;

148.

Nokia_Data_Direction = 0;

149.

Nokia_SCE_Direction = 0;

150.

Nokia_RST_Direction = 0;

151.

Nokia_DC_Direction = 0;

152.

153.

//Reset

154.

Nokia_RST = 0;

155.

Delay_us(1);

156.

Nokia_RST = 1;

157.

158.

Nokia_Write( LCD_CMD, 0x21 ); // LCD Extended Commands.

159.

Nokia_Write( LCD_CMD, 0xBC ); // Set LCD Vop (Contrast).

160.

Nokia_Write( LCD_CMD, 0x04 ); // Set Temp coefficent. //0x04

161.

Nokia_Write( LCD_CMD, 0x14 );

Nokia_Write( LCD_CMD, 0x0C );

// LCD bias mode 1:48. //0x13

162.

// LCD in normal mode.

163.

Nokia_Write( LCD_CMD, 0x20 );

164.

Nokia_Write( LCD_CMD, 0x0C );

165.

}

166.

167.

void Nokia_Set_Cursor( char x, char y )

168.

{

169.

Nokia_Write( LCD_CMD, 0x40 | y );

//

linha

( 0

- 5)

170.

Nokia_Write( LCD_CMD, 0x80 | x );

//

coluna (0 - 83)

171.

}

172.

173.

void Nokia_Chr( char Caracter, char Color )

 

174.

{

175.

char i, chr;

176.

177.

for (i = 0; i < 5; i++)

178.

{

179.

chr = ASCII_TABLE[Caracter - 0x20][i];

 

180.

if(Color == 0)

181.

{

182.

chr = ~(chr);

183.

}

184.

Nokia_Write( LCD_DATA, chr );

185.

}

186.

}

187.

188.

void Nokia_Custom_Char( char *map )

189.

{

190.

char i;

191.

192.

for (i = 0; i < 5; i++)

193.

{

194.

Nokia_Write( LCD_DATA, *map++ );

195.

}

196.

}

197.

198.

void Nokia_Fill( char Buffer )

199.

{

200.

unsigned index;

201.

Nokia_Set_Cursor( 0, 0 );

202.

203.

for(index = 0; index < 504; index++)

204.

{

205.

Nokia_Write( LCD_DATA, Buffer );

206.

}

207.

}

208.

209.

void Nokia_Out( char row, char col, char *String, char Color )

210.

{

211.

Nokia_Set_Cursor( col, row );

212.

213.

while(*String)

214.

{

215.

Nokia_Chr( *String++, Color );

216.

}

217.

}

218.

219.

void Nokia_Out_CP( char *String, char Color )

220.

{

221.

while(*String)

222.

{

223.

Nokia_Chr( *String++, Color );

224.

}

225.

}

226.

227.

void Nokia_Image( const char *Bmp )

228.

{

229.

unsigned i;

230.

Nokia_Set_Cursor( 0, 0 );

231.

232.

for (i = 0; i < 504; i++)

233.

{

234.

Nokia_Write( LCD_DATA, Bmp[i] );

235.

}

236.

}

237.

238.

void Nokia_Write_Big_Number( char x, char y, char n, char Color

)

239.

{

240.

char i, chr;

241.

for(i=0; i < 42; i++)

242.

{

243.

if(i % 14 == 0)

244.

{

245.

Nokia_Set_Cursor( x, y++ );

246.

}

247.

248.

chr = BigNumbers[n][i];

249.

250.

if(Color == 0)

251.

{

252.

chr = ~chr;

253.

}

254.

255.

Nokia_Write( LCD_DATA, chr );

256.

}

257.

}

258.

259.

void Nokia_Write_Med_Number( char x, char y, char n, char Color

)

260.

{

261.

char i, chr;

262.

for(i=0; i < 24; i++)

263.

{

264.

if(i % 12 == 0)

265.

{

266.

Nokia_Set_Cursor( x, y++ );

267.

}

268.

269.

chr = MediumNumbers[n][i];

270.

271.

if(Color == 0)

272.

{

273.

chr = ~chr;

274.

}

275.

276.

Nokia_Write( LCD_DATA, chr );

277.

}

278.

}

EXEMPLO

1.

#include "bitmap.h"

2.

3.

//copie e cole o código da biblioteca aqui!!

4.

//Ou arquivo externo:

5.

#include "NOKIA3310.C"

6.

7.

sbit Nokia_Clk at RD7_Bit;

8.

sbit Nokia_Data at RD6_Bit;

9.

sbit Nokia_DC at RD5_Bit;

10.

sbit Nokia_RST at RD4_Bit;

11.

sbit Nokia_SCE at RD3_Bit;

12.

sbit Nokia_Clk_Direction at TRISD7_Bit;

13.

sbit Nokia_Data_Direction at TRISD6_Bit;

14.

sbit Nokia_DC_Direction at TRISD5_Bit;

15.

sbit Nokia_RST_Direction at TRISD4_Bit;

16.

sbit Nokia_SCE_Direction at TRISD3_Bit;

17.

18.

void main()

19.

{

20.

Nokia_Init();

21.

Nokia_Fill( 0x00 );

22.

Nokia_Set_Cursor( 0, 3 ); //linha 3, coluna 0

23.

Nokia_Out_CP( "Microcontrolandos", 0); //cor inversa

24.

Delay_ms( 3000 );

25.

Nokia_Image( Logo );

26.

Delay_ms( 3000 );

27.

Nokia_Inverse();

28.

}

1. #include "bitmap.h" 2. 3. //copie e cole o código da biblioteca aqui!! 4. //Ou arquivo

(30/10/13) - Adicionado fonte para números de tamanho Médio e Grande.

(30/10/13) - Adicionado fonte para números de tamanho Médio e Grande. Converter Imagem Para converter umaNOKIA3310.C Nokia LCDs para o Proteus: NokiaLCD.zip Poderá também gostar de: PIC: RFID MFRC522 Mouse e Teclado USB PIC: Display 7 Segmentos com MAX7219 " id="pdf-obj-9-4" src="pdf-obj-9-4.jpg">

Converter Imagem Para converter uma imagem para ser mostrada neste display, o compilador MikroC dispõe de uma ferramenta para isso. Selecione o menu TOOLS >> GLCD BITMAP EDITOR >> Nokia 3310.

(30/10/13) - Adicionado fonte para números de tamanho Médio e Grande. Converter Imagem Para converter umaNOKIA3310.C Nokia LCDs para o Proteus: NokiaLCD.zip Poderá também gostar de: PIC: RFID MFRC522 Mouse e Teclado USB PIC: Display 7 Segmentos com MAX7219 " id="pdf-obj-9-14" src="pdf-obj-9-14.jpg">

DOWNLOAD Biblioteca Completa: NOKIA3310.C Nokia LCDs para o Proteus: NokiaLCD.zip

Poderá também gostar de:

<a href=PIC: MCP23008 PIC: ADXL345 Linkwithin Enviar por e-mailBlogThis !Compartilhar no TwitterCompartilhar no Facebook 29 comentários: 1. Anderson Martinssábado, 20 de julho de 2013 23:31:00 BRT Tens esta biblioteca para CCS? Responder 2. Jairo Piranquarta-feira, 24 de julho de 2013 16:24:00 BRT Olá Tiago Copiei o programa acima colei no mickoC porém na hora de compilar está dando um erro, veja o erro: (0 357 main function is not defined main function is not defined) (0 102 Finished (with errors): 24 jul 2013, 16:13:31 lcd_nokiaII.mcppi) Como não manjo nada de linguagem C você podeira me ajudar, gostaria de simular este projeto no proteus porém não consigo o arquivo HEX mas eu não gostaria de só obter o arquivo hex e sim começar a aprender C. Valeu! agradeço desde já. Grande abraço! Responder Respostas 1. Tiago Henriquequarta-feira, 24 de julho de 2013 17:21:00 BRT esse código é somente a biblioteca. Voce terá que copiar Deste e colar e logo após você deve iniciar a funcão main() jeito: " id="pdf-obj-10-2" src="pdf-obj-10-2.jpg">
29 comentários: 1. Anderson Martinssábado, 20 de julho de 2013 23:31:00 BRT Tens esta biblioteca para
29 comentários:
1.
Anderson Martinssábado, 20 de julho de 2013 23:31:00 BRT
Tens esta biblioteca para CCS?
Responder
2.
Jairo Piranquarta-feira, 24 de julho de 2013 16:24:00 BRT
Olá Tiago Copiei o programa acima colei no mickoC porém na hora de compilar está dando um
erro,
veja
o
erro:
(0
357
main
function
is
not
defined
main
function
is
not
defined)
(0
102
Finished
(with
errors):
24
jul
2013,
16:13:31
lcd_nokiaII.mcppi)
Como não manjo nada de linguagem C você podeira me ajudar, gostaria de simular este projeto
no proteus porém não consigo o arquivo HEX mas eu não gostaria de só obter o arquivo hex e
sim
começar
a
aprender
C.
Valeu! agradeço desde já. Grande abraço!
Responder
Respostas
1.
Tiago Henriquequarta-feira, 24 de julho de 2013
17:21:00 BRT
esse
código
é
somente
a
biblioteca.
Voce terá que copiar
Deste
e colar
e
logo
após
você deve iniciar
a funcão
main()
jeito:
void main()//Sempre tem que ter esta funcao no arquivo { Nokia3310_Init();//Obrigatorio p iniciar o display lcd
void
main()//Sempre
tem
que
ter
esta
funcao
no
arquivo
{
Nokia3310_Init();//Obrigatorio
p
iniciar
o
display
lcd
Nokia3310_setCursor(0,0);//posiciona
o
cursor
para
escrever
Nokia3310_Write_Text("Jairo
Piran");//escreve
o
texto
}
2.
Jairo Piranquarta-feira, 24 de julho de 2013 17:37:00
BRT
Valeu!!! Obrigado!!! Gostei muito do Blog. vamos Fazer o fórum bombar!!! já me
inscrevi nele. Grande abraço!
Responder
3.
Anônimosábado, 28 de dezembro de 2013 11:48:00 BRST
Olá, sabe me dizer se o comando "Soft_SPI_Write( dat )" escreve no lcd como se fosse um
registrador
de
deslocamentos?
(como
o
CI
4094)
Obrigado e parabens pelo blog
Responder
Respostas
1.
Tiago Henriquesábado, 28 de dezembro de 2013
12:05:00 BRST
Exatamente!!
O comando envia o dado do bit MSB ao bit LSB, com clock de subida (LOW para
HIGH), e pode ser usado perfeitamente para o 4094.
Responder
4. rogério campossábado, 18 de janeiro de 2014 02:12:00 BRST Olá, Tiago, tudo bem? desde que
4.
rogério campossábado, 18 de janeiro de 2014 02:12:00 BRST
Olá,
Tiago,
tudo
bem?
desde que vc me ajudou com a conversão de texto do glcd do mikroBasic ao mikroCPRO, eu
consulto
o
blog
sempre
(rsrs).
eu estava mesmo procurando este projeto, pois quase ninguém converteu isso que era do
arduino. Vai me ajudar muito este código, apesar
Parabéns e abraços
de
eu
ainda usar
muito o mikrobasic.
Responder
5.
rogério campossábado, 18 de janeiro de 2014 02:17:00 BRST
Olá,
Tiago,
tudo
bem?
desde que vc me ajudou com a conversão de texto do glcd do mikroBasic ao mikroCPRO, eu
consulto
o
blog
sempre
(rsrs).
eu estava mesmo procurando este projeto, pois quase ninguém converteu isso que era do
arduino. Vai me ajudar muito este código, apesar
Parabéns e abraços
de
eu
ainda usar
muito o mikrobasic.
Responder
6.
Gilteixeirasábado, 22 de março de 2014 19:36:00 BRT
Olá
Tiago.
Sou
novo
por
aqui
e
um
pouco
também
com
microcontroladores.
Tenho
uma
dúvida.
Esta
biblioteca
irá
funcionar
no
CCS?
Grato.
Gilson S. Teixeira
Responder
Respostas
1.
Tiago Henriquesábado, 22 de março de 2014 20:05:00
BRT
Olá amigo. Esta biblioteca não funciona no CCS!! Responder 7. Claudiodomingo, 20 de abril de 2014
Olá amigo. Esta biblioteca não funciona no CCS!!
Responder
7.
Claudiodomingo, 20 de abril de 2014 16:58:00 BRT
Olá Tiago. Poderia me explicar para que serve o comando ''asm nop;''? Estou convertendo a
biblioteca para utilizar no compilador MPLAB X.
Responder
Respostas
1.
Tiago Henriquedomingo, 20 de abril de 2014 18:45:00
BRT
é uma instrução assembly ...
2.
Arthur Lemos Nogueira Filhosegunda-feira, 8 de
dezembro de 2014 16:20:00 BRST
Esta instrução
"nop" não
faz nada,
mas
utiliza um ciclo
de clock
para ser
executada
...
então um nop faz o micro parar por 1 ciclo de clock
Responder
8.
Rafael Martinsdomingo, 18 de maio de 2014 23:54:00 BRT
Boa
noite
tiago.
destou
usando
o
mikroc
pro
for
pic
estou
adicionando
a
Biblioteca
Completa:
NOKIA3310.C
no
sources
do
copilador
mikroc
pro
for
pic
e
no
progama
coloco
a
estençao
#include
"NOKIA3310.C"
 

do

mesmo

 

jeito

que

ta

nesse

progama

 
 

#include

 

"NOKIA3310.C"

 

sbit

Nokia_Clk

 

at

RD7_Bit;

sbit

Nokia_Data

 

at

RD6_Bit;

sbit

Nokia_DC

 

at

RD5_Bit;

sbit

Nokia_RST

 

at

RD4_Bit;

sbit

Nokia_SCE

 

at

RD3_Bit;

sbit

Nokia_Clk_Direction

 

at

TRISD7_Bit;

 

sbit

Nokia_Data_Direction

 

at

TRISD6_Bit;

sbit

Nokia_DC_Direction

 

at

TRISD5_Bit;

sbit

Nokia_RST_Direction

 

at

TRISD4_Bit;

sbit

Nokia_SCE_Direction

 

at

TRISD3_Bit;

void

main()

{

Nokia_Init();

 

Nokia_Fill(

 

0x00

);

Nokia_Set_Cursor(

 

0,

3

);

//linha

 

3,

coluna

0

Nokia_Out_CP(

 

"Microcontrolandos",

 

0);

//cor

 

inversa

Delay_ms(

 

3000

);

}

quando mando copilar

da

esse

erro

na

extençao

#include

"NOKIA3310.C"

 

28 355 Redefinition of 'ASCII_TABLE [NOKIA3310.c] '. 'ASCII_TABLE' already defined in

'nokia

 

5110.c'

NOKIA3310.c

127

355 Redefinition of 'MediumNumbers [NOKIA3310.c] '. 'MediumNumbers' already

defined

 

in

'nokia

5110.c'

 

NOKIA3310.c

144

355 Redefinition of 'BigNumbers [NOKIA3310.c] '. 'BigNumbers' already defined in

'nokia

 

5110.c'

NOKIA3310.c

177

355 Redefinition of 'Nokia_Write [NOKIA3310.c] '. 'Nokia_Write' already defined in

'nokia

 

5110.c'

NOKIA3310.c

185

355 Redefinition of 'Nokia_Init [NOKIA3310.c] '. 'Nokia_Init' already defined in 'nokia

5110.c'

 

NOKIA3310.c

e

assim

vai

 

diante

 

.

sera que

é

por

que

estou uzando a

por versao mikroc por

for

pic

e

nao

a

verçao mikroc .

 

teria como fazer algo que deixe funcionando.ou estou erando em algo na hora de adicionar a

Biblioteca,

 

ou

esta

certinho

o

passo

 

a

passo

ficaria muito grato se puder me ajudar pois estou com muita dificuldade para utilizar esse lcd obrigado

 

Att: Rafael

 
Respostas 1. Tiago Henriquesegunda-feira, 19 de maio de 2014 09:06:00 BRT Olá Rafael!! Você não pode
Respostas
1.
Tiago Henriquesegunda-feira, 19 de maio de 2014
09:06:00 BRT
Olá
Rafael!!
Você não pode fazer isso. Ou adicione o código no sources do compilador ou você
insere
o
include,
nunca
os
dois
viu.
Abraços,
Tiago
Responder
9.
Rafael Martinssexta-feira, 20 de junho de 2014 21:22:00 BRT
Boa noite Tiago gostaria de ver com você se tem algo pronto para o modulo de 2.4GHZ
NRF24L01 em mikroc mais bem simples, pois gostaria muito de aprender a trabalhar com ele ,
olhei no libstock ,mais não entendi como funciona o código e vejo que é muito útil esse modulo
para aplicações você teria para postar no blog, gostaria de pegar um coselho com vc pois você
é muito bom no que faz , programar, sou de Campinas e programo a 3 anos mais ainda sou muito
novato e gostaria muito de entra de careça nessa área, mais não vejo muito trabalho para
programação em pic , o que vc me falaria sobre essa área , não devo desistir e me
empenho mais , para ser um profissional registrado na área ou somente robby , e vc conhece
algumas empresas para esse lado de campinas onde poderia esta mandando currículos, e quanto
ganha um programador de microcontrolado inicialmente hoje ,por não ter muitas vagas para
esse ramo especifico, ficaria muito grato pois admiro muito seu trabalho esse blog e como vem
ajudando muitas pessoas.coso tenha o programa para o NRF24L01 teria como postar. Abraço.
Rafael
Responder
10.
Anônimoquarta-feira, 6 de agosto de 2014 08:10:00 BRT
Bom
dia
Tiago.
Parabéns
pelo
seu
artigo.
Muito
bom
!
Sou principiante no uso deste versátil display e gostaria de saber como implementar o uso de
caracteres grandes usando código ASM para o pic16f628. Desde já obrigado ! Abs Glaucio
       
 

11.

 
11.
 
   
     
   

Antes de qualquer coisa, excelente seu artigo. Não estou conseguindo fazer funcionar o teclado 4x4 "(kp = Keypad_Key_Click();" em conjunto com a biblioteca, quando envio o comando Nokia_Out_CP(kp,1); ao invés de mostrar a tecla que digitei, ele mostra partes do último texto enviado para o LCD. Segue anaixo o código que estou usando para o keypad 4x4:

 

//Teclado

 

4x4

do

{

kp

=

0;

//

Reset

key

code

variable

do

kp

=

Keypad_Key_Click();

//

Store

key

code

in

kp

variable

while

 

(!kp);

//

Prepare

value

for

output,

transform

key

to

it's

ASCII

value

switch

 

(kp)

{

case

1:

kp

=

49;

break;

//

1

case

2:

kp

=

50;

break;

//

2

case

3:

kp

=

51;

break;

//

3

case

4:

kp

=

65;

break;

//

A

case

5:

kp

=

52;

break;

//

4

case

6:

kp

=

53;

break;

//

5

case

7:

kp

=

54;

break;

//

6

case

8:

kp

=

66;

break;

//

B

case

9:

kp

=

55;

break;

//

7

case

10:

kp

=

56;

break;

//

8

case

11:

kp

=

57;

break;

//

9

case

12:

kp

=

67;

break;

//

C

case

13:

kp

=

42;

break;

//

*

case

14:

kp

=

48;

break;

//

0

case

15:

kp

=

35;

break;

//

#

case

16:

kp

=

68;

break;

//

D

}

Nokia_Out_CP(kp,1);

 

}

while

(1);

//Teclado

 

4x4

Desde já agradeço pelo auxílio.

 
 
   
   

1.

1.
 
Tiago Henriquesábado, 13 de dezembro de 2014 08:41:00 BRST Olá! "kp" é um caracter, por isso,
Tiago Henriquesábado, 13 de dezembro de 2014
08:41:00 BRST
Olá!
"kp" é um caracter, por isso, voce deve utilizar a função "Nokia_Chr( kp, 1 )".
Nokia_Out_CP
é
somente
utilizado
para
strings.
Abraços.
2.
Anônimosábado, 13 de dezembro de 2014 11:57:00 BRST
Muito obrigado, realmente era esse o problema. (RESOLVIDO)
Responder
12.
Anônimosexta-feira, 9 de janeiro de 2015 15:15:00 BRST
Estou com certa dificuldade em unir na tela uma String e uma contagem, como mostrado no
texto, abaixo, sei que grande parte da dificuldade diretamente ligado a falta do conhecimento
correto em relação ao uso das String. Mas se puder de alguma forma me auxiliar desde já
agradeço.
Veja
o
Exemplo
do
pretendido:
dentro
cnt++;
da
função ...
Nokia_Fill(0x00);
Nokia_Set_Cursor(0,1);
Nokia_Out_CP("Texto
"+cnt,1);
tentei
também
sem
exscito:
Nokia_Chr("Texto "+cnt,1);
Responder
Respostas
1.
Tiago Henriqueterça-feira, 13 de janeiro de 2015 08:30:00 BRST Voce tem que fazer separadamente. Crie um
Tiago Henriqueterça-feira, 13 de janeiro de 2015
08:30:00 BRST
Voce tem que fazer separadamente. Crie um vetor "contString" e utilize a
funcao WordToStr() para converter um numero inteiro (16 bits ) pra string.
Assim:
char
contString[6];
//para
armazenar
string
de
numeros
inteiros
Nokia_Out_CP( "Texto
",
1
);
//
escreve
texto
WordToStr( cnt, contString ); // converte a variavel "cnt" para string e salva
em
Nokia_Out_CP( contString, 1 ); //escreve cnt
"contString"
2.
Anônimosegunda-feira, 2 de fevereiro de 2015 10:08:00
BRST
Obrigado. Realmente eu já havia pensado nisso, fazer um e depois o outro, é que
pensei que de alguma forma poderia fazer
os dois
em uma
única
linha,
tipo:
WordToStr( cnt, contString ); // converte a variavel "cnt" para string e salva
em
"contString"
Nokia_Out_CP("Texto
"+contString,
1
);
//escreve
cnt
Mas OK, vou fazer então UM e depois o OUTRO. Novamente muito obrigado pela
atenção.
Responder
13.
Rildo Serafim Diasquarta-feira, 11 de fevereiro de 2015 19:48:00
BRST
Poderia citar quais são os pinos de interligação do pic ao lcd nokia, pois o desenho com o
esquema não aparece aqui pra mim, obrigado.
Responder
Respostas
1.
       

Usando

o

PIC16F877A:

----------------------------------------------------------

 

#include

 

"NOKIA3310.C"

sbit

Nokia_Clk

at

RD7_Bit;

sbit

Nokia_Data

at

RD6_Bit;

sbit

Nokia_DC

at

RD5_Bit;

sbit

Nokia_RST

at

RD3_Bit;

sbit

Nokia_SCE

at

RD4_Bit;

sbit

Nokia_Clk_Direction

at

TRISD7_Bit;

sbit

Nokia_Data_Direction

at

TRISD6_Bit;

sbit

Nokia_DC_Direction

at

TRISD5_Bit;

sbit

Nokia_RST_Direction

at

TRISD4_Bit;

sbit Nokia_SCE_Direction at TRISD3_Bit;

 
 
   

2.

2.
 
     

No sistema conseguir com êxito fazer os testes, com as configurações abaixo:

#include

 

"NOKIA3310.C"

sbit

Nokia_Clk

at

RD7_Bit;

sbit

Nokia_Data

at

RD6_Bit;

sbit

Nokia_DC

at

RD5_Bit;

sbit

Nokia_RST

at

RD3_Bit;

sbit

Nokia_SCE

at

RD4_Bit;

sbit

Nokia_Clk_Direction

at

TRISD7_Bit;

sbit

Nokia_Data_Direction

at

TRISD6_Bit;

sbit

Nokia_DC_Direction

at

TRISD5_Bit;

sbit

Nokia_RST_Direction

at

TRISD4_Bit;

sbit

Nokia_SCE_Direction

at

TRISD3_Bit;

Mas não consigo conectar fisicamente o monitor à placa 100MHz (Easy Device - Easy Design) - PIC DIP40 MINI KIT

 
 
     
 
 

14.

 
14.
 
   
SureShot Arisoft - Senhor do Bonfimsegunda-feira, 9 de março de 2015 21:08:00 BRT Estou com outra,
SureShot Arisoft - Senhor do Bonfimsegunda-feira, 9 de março
de 2015 21:08:00 BRT
Estou com outra, acredito que pequena, dificuldade. Tenho um cronômetro utilizando o NOKIA
3310 dessa biblioteca, mas quando coloco a função para exibir uma imagem, intervalor e em
seguida o restante do código, o cronômetro não inicia, muda apenas alguns número iniciais e
para, como se não houvesse memória e a mesma tivesse sido utilizada pela imagem. Quando
comento a linha que exibe a imagem volta tudo ao normal. O que poderia ser?
Responder
15.
SureShot Arisoft - Senhor do Bonfimquinta-feira, 19 de março
de 2015 22:53:00 BRT
Letra GRANDE e CENTRALIZADA tem como com essa biblioteca?
Responder
16.
Anônimosexta-feira, 15 de maio de 2015 17:37:00 BRT
Como poderia escrever uma função pra alterar o valor do contraste durante a execução do
programa?
Responder
Assinar: Postar comentários (Atom) PESQUISAR NESTE BLOG NOVIDADES DO BLOG - 05/06/15  PIC: MCP3201 
Assinar: Postar comentários (Atom)
PESQUISAR NESTE BLOG
NOVIDADES DO BLOG - 05/06/15
PIC: MCP3201
PIC: DS1631
AVR: Display 7 Segmentos
AVR: Pull-ups
AVR: Pisca-Pisca com ATMega328P
Curso: Aula 03 - Variaveis, vetores e funções
PIC: 25XX320
PIC: RDA5807
PIC: SSD1306
Curso: Ementa Atualizada
Curso: Aula 02 - Portas I/O
PIC: PCF8583
Curso: Aula 01
Atualização de Código: DHT11
Tutorial: Ellipsis
PIC: MCP4XXX
TRANSLATE
Powered by
Tradutor
MARCADORES
Apostilas e Livros (3)
   

Arduino (11)

 
 

AVR (12)

 

 
 

 

 

Curso (4)

 

 
 

Games (2)

Ladder (1)

PIC (79)

 

Projetos (47)

 

   

SEGUIR-ME POR EMAIL

 
   
 <a href=Arduino (11)  AVR (12)  Bibliotecas (39)  Circuitos (3)  Componentes (1)  Curso (4)  Downloads (10)  Games (2)  Ladder (1)  PIC (79)  Projetos (47)  Sensores (9)  Tutoriais (47)  Wireless (2) SEGUIR-ME POR EMAIL Submit POSTAGENS DO BLOG   ► 2015 (7) ► 2014 (34)  ▼ 2013 (60) o o o o o o o o ► Dezembro (6) ► Novembro (3) ► Outubro (1) ► Setembro (6) ► Agosto (2) ► Julho (7) ► Junho (9) ▼ Maio (5)  PIC: Nokia 3310  PIC: Hino de Clubes  TUTORIAL: Ponteiros  PIC: Calculadora Simples TUTORIAL: Comunicação Serial com PIC ► Abril (4) ► Março (8) ► Fevereiro (3) o ► Janeiro (6)  ► 2012 (48)  o o o TOP SEMANAL  Proteus 8.1 Professional " id="pdf-obj-22-122" src="pdf-obj-22-122.jpg">
Submit
Submit
POSTAGENS DO BLOG   ► 2015 (7) ► 2014 (34)  ▼ 2013 (60) o