version 0.0 Fevrier 2014
last rev 20/09/2019
Afficheur Nokia 5110 6 lignes de
14 cars (84x48)
version
Mplab C18 (2014)
version
MikroC (2019)
....Ameliorations (190920)
autre lien à voir :
Afficheur Nokia 3110 avec 8 lignes de 16
cars ( 96x64)
en C18 (2013)
PIC 18F26K22
et Afficheur Nokia 5110 : (en
C18)
(6x14 cars)
usage d'un PIC18F26K22 en DIP28 et du Pickit2 Microchip
pour charger l'executable
Environnemen t: MPLAB IDE
V8.92 et C18 v3.45.00
Testé avec oscillateur interne
Fosc=16Mhz
Nokia
LCD 5110 datasheet (modele
6x14)
Afficheur de 6 lignes de 14 cars
table specifique de caracteres Nokia 5x7 (128-32)*5=480 bytes
placée en (Flash Memory ) Program ROM en 1 seule table au lieu de 2 banks en RAM
ce qui implique l'usage de int au lieu de byte pour parcourir la table (taille > 255)
TABLE_car 0x002e6a program extern C:\_C18\_MesProjets_C18\_18F26K22\Nokia5110\Nokia_51110.c
Attention ! si vous enlever la partie LCD,
à ne pas decaler ou perdre la partie connection entre LCD et platine ( espece de mousse conductrice)
Liaison nokia au PortC :
Liaisons PIC <-> Nokia
Vcc alim PIC= 5,08V
Sortie RA4 sur Led rouge --2,2K--+5V pour flag dans le programme
Sortie RA3= Alim VDD du LCD 5110 : 3,60V
Tension Vout sur C2 nokia LCD 5110 : 7,2V
Retro eclairage bleu via 4 leds, R=150 deja sur la platine.,direct sur 5V , consomme ~13mA !
.avec Rserie 2,2Kohms ----> +5V , ce qui donne ~1mA
avec Rserie de 1Kohms ----> +5V => 1,9mA
avec Rserie de 470 ohms --> +5V => 10mA !
RB7 et RB6 reste libres pour l' ICSP
Usage du Pickit2 (mon Pickit3 utilisé par ailleurs!)
Alim 3,3V converter interface TTL / RS232 aliment"é en 3,3V RC6 utilisé comme sortie Tx UART 19200,8,N,1-> module MAX3222 (alimenté en 3,3V!!)-> PC
Result sur terminal RS232 :
Running ...
Prototype Schema 18F26K22_Nokia5110.DSN
Affichage:
Ligne 1 :titre : 18F26K22_Nokia
Ligne 2 affichage de LCD 5110 6x14C
Ligne 3 Affichage date fixe
Ligne 4 Fleche droite parcourant la largeur de l'ecran LCD, de gauche à droite,puis de droite à gauche
Ligne 5 valeur d'un entier sur 5 digits , en format GRAS
Ligne 6 valeur d'un flottant format 7 carcateres (avec 3 decimales)
Test fonctions Nokia LCD OK de FOsc=1MHz to 16MHz: .. OK (mais adapter la lib Delay!!)
Fonctions dispos:
void nokia_init(void);
void nokia_CLS(void);
void nokia_write_command(char nokia_cmd);
void nokia_write_data(char nokia_data);
void nokia_write_byte(char nokia_byte);
void nokia_gotoxy(unsigned char Xnokia, unsigned char Ynokia);
void nokia_erase_y(unsigned char Ynokia);
void nokia_erase_x(unsigned char Xnokia);
void nokia_printchar(unsigned char cvar, char Bold);
void nokia_print_str(char *ptr,char Bold); // size 5x7 ou 10x7
void nokia_clean_ddram(void);
void nokia_write_data_inv(char nokia_data_inv);
void nokia_clear_screen(void);
void nokia_print_leftarrow(void);
void nokia_print_rightarrow(void);
void nokia_print_degree(void);
*void nokia_print_uparrow(void);
*void nokia_print_downarrow(void);
*void nokia_print_lowbatdegree(void);
fonctions Grafiques not yet tested ! ...
Nota: Apres plusieurs tests SANS SUCCES avec un PIC18F26K20 (alimenté en 3,3V)
j'ai abandonné pour me remettre sur un 18F26K22 alim 5V , et là, SUCCES d'affichage
meme avec la librairie du Nokia 3310 ..puis adaptation au 5110...
Projet complet en MPLAB IDE V8.92 et C18 v 3.45
liste des fichiers
Zip contenant le projet .
Adapter la lib Delay16M prevue pour Fosc=16Mhz si besoin est..
Version avec Fonctions Grafiques et Pic 18F26K20 sous 3,3V alim (C18)
Le hardware est le meme , à part le modele de PIC et l'alim du LCD sur le +3,3V
A noter que l'afficheur ne fonctionne plus si alimenté par sortie RA3 , niveau=2,6V INSUFFISANT.
alors qu'il etait de 3,6V avec le pic18F26K22 alimenté en 5V
Affichage:
Ligne 1 :titre : 18F26K20_Nokia
Ligne 2 affichage de LCD 5110 6x14C
Ligne 3 Affichage date fixe
Ligne 4 Fleche droite parcourant la largeur de l'ecran LCD, de gauche à droite,puis de droite à gauche
Ligne 5 valeur d'un entier sur 5 digits , en format GRAS
Ligne 6 valeur d'un flottant format 7 carcateres (avec 3 decimales)
puis affichage en mode grafique
3 rectangles concentriques
3 cercles concentriques
3 lignes horizontales
6 barres verticales
3 barres horizontales avec reperes sens Y 0 et 47 et sens x 83
Sinusoide sur 360° avec axes Y et X + graduations
Fonctions Grafiques
void nokia_clear_xy(unsigned char Xnokia, unsigned char Ynokia);
void nokia_plot(unsigned char Xnokia,unsigned char plot_value8);
void nokia_pixel(unsigned char pixelX,unsigned char pixelY,unsigned char pixelMode);
void nokia_line(unsigned char x1,unsigned char y1,unsigned char x2,unsigned char y2,unsigned char lineMode);
void nokia_rect(unsigned char x1,unsigned char y1,unsigned char x2,unsigned char y2,unsigned char rectMode);
void nokia_circle(unsigned char centerX,unsigned char centerY,unsigned char radius,unsigned char circleMode);
void nokia_redraw(void);
Projet C18:
Liste des fichiers : _18F26K20_Nokia51110_Graf_140224.htm
Zip du projet : _18F26K20_Nokia51110_Graf_140224.zip
Afficheur Nokia 5110 version MikroC 7.50:
6 lignes de 14 cars
ou 84*43 pixels
* Même connectique qu'avec la version en C18
Utilisation de la carte de BASE 18F
// mode Bit Bang
sbit SQA at LATB.B1;
sbit Nokia_DC at LATC.B1; // /DC (DC barre!) choix DATA=1
ou Cde=0
sbit Nokia_CE at LATC.B0; // /CE (CE Barre!)Chip Enable
sbit Nokia_RST at LATC.B2; // / Reset (Reste Barre!)
sbit Nokia_MOSI at LATC.B5 ; // SSP1 Dout MOSI
sbit Nokia_SCLK at LATC.B3; // SSP1 clock
Hardware:
Carte BASE
avec 18F26K22
Projet Mikro C :
Source : _18F26k22_Test_My_Lib_Nokia_5110_190811.c
Lib : My_Nokia_5110_SPI1_Hardw_lib.mcl
Header : My_Nokia_5110_MC_lib.h
Chargeur : 18F26K22_BASE_Test_My_Lib_Nokia5110_SPI1_Hardware_190813.hex
Nota: Usage
possible des 2 modes SPI bit Bang ou SPI1_Hardware
Advanced
choix avec #define dans le fichier main.
Amenagements version SPI Hardware
(only) :
Rajout affichage de 4 images BMP ( merci
à TempsX , voir sa version " Ecran
Nokia 5110 100% ASM"
Un feuille Excel pour transformer une declaration image
BPM en ASM -> vers une version declaration Image en C
Nokia_84x48_BMP.xls
* Rajout d'une fonction Bargraph .. en mode Texte , et en
mode Graphique Pixel
* Rajout de la sauvegarde Arriere Plan grafique lorsqu'on
ecrit du texte
cela permet d'imbriquer Texte et Grafique
Ce qui donne l'ensemble des fonctions , regroupées dans
:
My_Lib_Nokia_5110_SPI_Hard_1910.h
void Nokia_Init(void);
void Nokia_Write_Command(char Nokia_cmd);
void Nokia_Write_Donnee(char Nokia_data);
void Nokia_Write_Byte(char Nokia_byte);
void Nokia_Gotoxy(unsigned char Xnokia, unsigned char
Ynokia);
void Nokia_Erase_y(unsigned char Ynokia);
void Nokia_Erase_x(unsigned char Xnokia);
void Nokia_Print_Char(unsigned char cvar, char Bold);
void Nokia_Print_Str(char *ptr,char Bold); // size 5x7 ou
10x7
void Nokia_Raz_Lcd_Cache(void);
void Nokia_Plot(unsigned char Xnokia,unsigned char plot_value8);
void Nokia_Write_Donnee_Inv(char Nokia_data_inv);
void Nokia_Clear_Screen(void);
void Nokia_Clear_XY(unsigned char Xnokia, unsigned char
Ynokia);
void Nokia_Print_uparrow(void);
void Nokia_Print_downarrow(void);
void Nokia_Print_leftarrow(void);
void Nokia_Print_rightarrow(void);
void Nokia_Print_degree(void);
void Nokia_Print_lowbat(void);
void Nokia_Write_Text_At(char x, char y, char *ptr,char
Bold) ;
void Nokia_Write_Text(char *ptr,char Bold) ;
void Nokia_Write_CText_At(char x, char y, const char *ptr,char
Bold);
void Nokia_Pixel(unsigned char pX,unsigned char pY,unsigned
char pMode);
void Nokia_Line(unsigned char x1,unsigned char y1,unsigned
char x2,unsigned char y2,unsigned char lineMode);
void Nokia_Rect(unsigned char x1,unsigned char y1,unsigned
char x2,unsigned char y2,unsigned char rectMode);
void Nokia_Circle(unsigned char centerX,unsigned char
centerY,unsigned char radius,unsigned char circleMode);
void Nokia_Redraw(void);
void Nokia_CLS(void);
Au niveau Hardware , avec Carte de BASE 18F26K22
croisement CE et DC
sbit SQA at LATB.B1; // pour outil ANALYSER SQA50
sbit Led_R at LATA.B4; //
led rouge
sbit Nokia_DC at LATC.B0; // /DC (DC barre!) choix DATA=1
ou Cde=0
sbit Nokia_CE at LATC.B1; // /CE (CE Barre!)Chip Enable
sbit Nokia_RST at LATC.B2; // / Reset (Reste Barre!)
sbit Nokia_SCLK at LATC.B3; // SSP1 clock
sbit Nokia_MOSI at LATC.B5; // SSP1 Dout MOSI
![]() |
![]() |
rectangles imbriqués | image BMP 84x48 |
Software MikroC 7.50
projet : My_Nokia_LCD_5110_BASE_18F26K22_190919.zip
source C : _18F26k22_Test_My_Lib_Nokia_5110_SPI_Hardw_190919.c
Graphics BMP : Graphiques_BPM_to_C_pour_Nokia_51110.inc
librairie : My_Lib_Nokia_5110_SPI1_Hardw_1910.mcl
header : My_Lib_Nokia_5110_SPI_Hard_1910.h
Video : Nokia_84x48_5110_1909.webm
Ma Conclusion:
Hormis l'aspect interressant du montage LCD sur la platine etudiée Pour ,
je prefere le Nokia3310 8x16cars au Nokia 5110 6x14 cars..
Mais cela reste aussi preferable au classique LCD2x16 , surtout avec un cout aussi bas...(<5)
le seul inconvenient est qu'il faut avoir un PIC un peu costaud (en RAM) et mobilise 5 sorties PIC.