Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur le langage C !

Modérateur : Jérémy

afficheur Nokia 3310
PRNN-lab
Amateur
Amateur
Messages : 114
Enregistré en : août 2019

#61 Message par PRNN-lab » jeu. 15 août 2019 14:33

D'accord.. Merci pour cette éclairage :idea:
j'apprends beaucoup chaque jour grasse a vous.
Au niveau de l’écran (bien que n'ayant pas encore simuler votre code). Lorsque je faissais avec mon code arduino mon ecrant n'acceptais que des valeurs de types char. et en convertissant mon analog read en char (j'ai oublier l'expression) est ce qu'il y'qura un visuel sur l'afficheur nokia??
ex
float valeur = capteur (mis pour le code jusqua la convertion en mv)
Nokia_ affiche(char(valeur))
est ce que ça peut fonctionner?
Ce qui doit marcher jamais ne doit être pressé...... :idea:

afficheur Nokia 3310
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 1422
Âge : 68
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#62 Message par paulfjujo » jeu. 15 août 2019 18:00

:sifflotte: la réponse est déja dans le source du zip posté précedement !


En simulation
F1 evolue de 0.00 à 999.75 par pas de 0.25
affiché en Gros carateres sur la 4em ligne , avec effacement des zero inutiles avant la virgule

à remplacer par ta mesure ADC avec +VRef=Vcc=5V -Vref=Vss
EA0=ADC_Read(0); // channel RA0
F1=(float) EA0 * 0.00488;

Code : Tout sélectionner


 
 
// init 
 
float f1;
 
unisgned int EA0;
 
 
void Float_To_Ascii_2_decim(float chiffreDecichar pt)
{

unsigned int e=0;
unsigned int d=0;
e=(int)chiffreDeci ;                                // partie entière
d=(int)((chiffreDeci-(float)e)*100.0);                  // partie décimale(2 chiffres)
if (e/100>0pt[0]=(char)((e/100)+0x30);                  // partie entiere de 999 a 0
else  pt[0]=' ';
e=e%100;
if (
e/10>0)pt[1]=(char)((e/10)+0x30);
else    
pt[1]=' ';
pt[2]=(char)((e%10)+0x30);
pt[3]=0x2C;                             
pt[4]=(char)((d/10)+0x30);    
pt[5]=(char)((d%10)+0x30);
pt[6]=0  ;
}

 
 
void main()
 {
 
F1=0.0;
 ........
 ........
do
 {
 ....
 
 
UART1_Write_CText("Bigger Size..."); CRLF1();
  
Float_To_Ascii_2_decim(f1,txt);
  
Nokia_Write_Text_At(2,4,txt,1);    // argument 1 =gros caratere  sinon mettre 0 =normal
  
f1=f1+0.25;
  if (
f1>999.75)f1=0.0    ;
 ....

} while(
1);

 
Aides toi, le ciel ou Fantastpic t'aideras

afficheur Nokia 3310
PRNN-lab
Amateur
Amateur
Messages : 114
Enregistré en : août 2019

#63 Message par PRNN-lab » jeu. 15 août 2019 18:48

C'est vraiment génial ça :eek: :eek: :eek:
Je ne pouvais pas trouver ça par moi même Merci !
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Ce qui doit marcher jamais ne doit être pressé...... :idea:

afficheur Nokia 3310
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 1422
Âge : 68
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#64 Message par paulfjujo » jeu. 15 août 2019 19:27

verifie bien si le fichier *.h et *.mcl sont dans ton projet

Projet_MikroC_Nokia5110.jpg


le contenu de ma fenettre Message apres compilation

Code : Tout sélectionner



0 1 mikroCPIC1618
.exe -MSF -DBG -pP18F26K22 -RA --DL -O11111114 -fo16 -EH"^C
C:\_MikroC\_MesProjets_MikroC\_Nokia_LCD_5110_2019\18F45K22_UART_Eeprom.ihex" 
-N"^C
C:\_MikroC\_MesProjets_MikroC\_Nokia_LCD_5110_2019\18F26K22_BASE_Test_My_Lib_Nokia5110_SPI1_Hard_or_Soft_2019.mcppi" 
-SP"^C
C:\_MikroC\mikroC PRO for PIC\Defs\" -SP"
^C
C
:\_MikroC\mikroC PRO for PIC\uses\P18\" -SP"^C
C
:\_MikroC\_MesProjets_MikroC\_Nokia_LCD_5110_2019\" -SP"^C
C
:\_MikroC\mikroC PRO for PIC\Packages\Nokia_5110_Advanced_Graphics_1_1\Uses\" -IP"^C
C
:\_MikroC\mikroC PRO for PIC\uses\P18\" "_18F26k22_Test_Nokia_51110_SPI_Hard_or_soft_190813.c" "My_Nokia_5110_MC_lib.mcl" "
_Lib_Math.mcl" "
_Lib_MathDouble.mcl" "
_Lib_System.mcl" "
_Lib_Delays.mcl" "
_Lib_CType.mcl" "
_Lib_CString.mcl" "
_Lib_CStdlib.mcl" "
_Lib_CMath.mcl" "
_Lib_Conversions.mcl" "
_Lib_SPI_c345b123.mcl" "
_Lib_UART_c67b67.mcl"  
0 1139 Available RAM: 3875 [bytes], Available ROM: 65536 [bytes]  
0 122 Compilation Started P18F26K22.c
2623 123 Compiled Successfully P18F26K22.c
0 122 Compilation Started 
_Lib_Delays.c
172 123 Compiled Successfully 
_Lib_Delays.c
0 122 Compilation Started _18F26k22_Test_Nokia_51110_SPI_Hard_or_soft_190813.c
312 1509 Generated baud rate is 19231 bps (error = 0.16 percent) _18F26k22_Test_Nokia_51110_SPI_Hard_or_soft_190813.c
431 123 Compiled Successfully _18F26k22_Test_Nokia_51110_SPI_Hard_or_soft_190813.c
200 1164 Variable 'x6' has been eliminated by optimizer _18F26k22_Test_Nokia_51110_SPI_Hard_or_soft_190813.c
200 1164 Variable 'n' has been eliminated by optimizer _18F26k22_Test_Nokia_51110_SPI_Hard_or_soft_190813.c
200 1164 Variable 'temp' has been eliminated by optimizer _18F26k22_Test_Nokia_51110_SPI_Hard_or_soft_190813.c
201 1164 Variable 'f1' has been eliminated by optimizer _18F26k22_Test_Nokia_51110_SPI_Hard_or_soft_190813.c
0 127 All files Compiled in 266 ms  
0 1144 Used RAM (bytes): 968 (25%)  Free RAM (bytes): 2907 (75%) Used RAM (bytes): 968 (25%)  Free RAM (bytes): 2907 (75%)
0 1144 Used ROM (bytes): 8374 (13%)  Free ROM (bytes): 57162 (87%) Used ROM (bytes): 8374 (13%)  Free ROM (bytes): 57162 (87%)
0 125 Project Linked Successfully 18F26K22_BASE_Test_My_Lib_Nokia5110_SPI1_Hard_or_Soft_2019.mcppi
0 128 Linked in 234 ms  
0 129 Project '18F26K22_BASE_Test_My_Lib_Nokia5110_SPI1_Hard_or_Soft_2019.mcppi' completed: 1016 ms  
0 103 Finished successfully: 15 août 2019, 19:34:04 18F26K22_BASE_Test_My_Lib_Nokia5110_SPI1_Hard_or_Soft_2019.mcppi


Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par paulfjujo le jeu. 15 août 2019 19:38, modifié 1 fois.
Aides toi, le ciel ou Fantastpic t'aideras

afficheur Nokia 3310
PRNN-lab
Amateur
Amateur
Messages : 114
Enregistré en : août 2019

#65 Message par PRNN-lab » jeu. 15 août 2019 19:33

j'ai trouve les fichier qui ne sont pas de le projet
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Ce qui doit marcher jamais ne doit être pressé...... :idea:

afficheur Nokia 3310
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 1422
Âge : 68
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#66 Message par paulfjujo » jeu. 15 août 2019 19:39

enleve le fichier manquant
mais rajoute le fichier *.mcl

voir capture image au dessus
Aides toi, le ciel ou Fantastpic t'aideras

afficheur Nokia 3310
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 1422
Âge : 68
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#67 Message par paulfjujo » jeu. 15 août 2019 19:39

enleve le fichier manquant
mais rajoute le fichier *.mcl

voir capture image au dessus
Aides toi, le ciel ou Fantastpic t'aideras

afficheur Nokia 3310
PRNN-lab
Amateur
Amateur
Messages : 114
Enregistré en : août 2019

#68 Message par PRNN-lab » jeu. 15 août 2019 21:10

OK je l'ai fait ça a fonctionné merci
J'avais appercu ce fichier depuis longtemps et je refusais de croire que ça avait été écrit pas un Homme
S'il vous plait dite moi que le fichier .mcl est un fichier système par ce que la je ne comprend absolument rien de son contenue :roll:
Et aussi le contenue de vos fonctions se trouve dans quel fichier svp??? Ou bien elles sont deja pris en comptre par le compilateur?
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Ce qui doit marcher jamais ne doit être pressé...... :idea:

afficheur Nokia 3310
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 1422
Âge : 68
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#69 Message par paulfjujo » ven. 16 août 2019 13:19

PRNN-lab a écrit :OK je l'ai fait ça a fonctionné merci
J'avais appercu ce fichier depuis longtemps et je refusais de croire que ça avait été écrit pas un Homme
S'il vous plait dite moi que le fichier .mcl est un fichier système par ce que la je ne comprend absolument rien de son contenue :roll:
Et aussi le contenue de vos fonctions se trouve dans quel fichier svp??? Ou bien elles sont deja pris en comptre par le compilateur?



le fichier *.mcl n'est pas un fichier systeme
c'est un fichier semi-compilé
qui est le resultat de la compilation du fichier source My_Nokia_5110_MC_lib.c

pour generer ce fichier *.MCL , utilisable sans le source C originel.
MikroC a une option dans
Tools
Options
Ouptut
Output Settings
compiler
build all files as libray (coché!)
je recommande aussi l'option
case sentitive (cochée !)

il faudra ,bien sur inclure d'abord une premiere fois, le fichier source original dans le projet , pour qu'il puisse être compilé !
et par la suite , on aura plus besoin de celui-ci
puisse qu'on recuperera le *.mcl à la fin de cette 1ere compilation.


Dans ce fichier *.mcl , on trouve donc toutes les fonctions détaillées , presentées par le fichier Header *.H
Le fichier Header servant à faire connaitre au compilateur le nom des fonctions à inclure.


ci dessous le fichier source yant servi préalablement à obtenir le fichier *.MCL ( utilisé par la suite)

Code : Tout sélectionner


 
// rev  13/08/2019

#include "My_Nokia_5110_MC_lib.h"
//#define  Mode_SPI_Bit_Bang
//#define  Mode_SPI_HARDWARE

extern sfr bit Nokia_DC ;//   LATC.B1; // choix Data ou Cde
extern sfr bit Nokia_CE ; //   LATC.B0;  // selection device
extern sfr bit  Nokia_RST ; //  LATC.B2;  // RESET
extern sfr bit  Nokia_MOSI; //  LATC.B5 ; // SSP1 DOUT  MOSI
extern sfr bit  Nokia_SCLK ;//  LATC.B3;  // SSP1 clock


unsigned char  LcdCache [768]; //need 768 !
unsigned int   LcdPos = 0;
unsigned short newline=0;
int ddram;
// modif 24-02-2014  was unsigned short = byte
unsigned int charsel,char_row,charpos,chardata,plot_value;
long plot_value32,plot_llsb,plot_ulsb,plot_lmsb,plot_umsb;


//Table 5x7   96 rows * 5 bytes= 480 bytes
const char TABLE_car[480]=
                 {0x00,0x00,0x00,0x00,0x00,   // 20 space  ASCII table for NOKIA
                  0x00,0x00,0x5f,0x00,0x00,   // 21 !
                  0x00,0x07,0x00,0x07,0x00,   // 22 "
                  0x14,0x7f,0x14,0x7f,0x14,   // 23 #
                  0x24,0x2a,0x7f,0x2a,0x12,   // 24 $
                  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
                  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
                  0x78,0x46,0x41,0x46,0x78   // 7f
};


/*   Rappel 
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_Clean_Ddram(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_lowbatdegree(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);
*/

void Nokia_Pixel(unsigned char pixelX,unsigned char pixelY,unsigned char pixelMode)
{
        unsigned int index;
        unsigned char offset;
    if ( pixelX > 83 ) return;
    if ( pixelY > 47 ) return;
        index = ((pixelY / 8) * 84) + pixelX;
        offset= pixelY - ((pixelY / 8) * 8);
        if (pixelMode == 0) LcdCache[index] &= ~(0x01 << offset);
        if (pixelMode == 1) LcdCache[index] |= (0x01 << offset);
        if (pixelMode == 2) LcdCache[index] ^= (0x01 << offset);
}

void Nokia_Line(unsigned char x1,unsigned char y1,
                unsigned char x2,unsigned char y2,
                unsigned char lineMode)
{
    int dx, dy, stepx, stepy, fraction;
    dy = y2 - y1;
    dx = x2 - x1;
    if ( dy < 0 )
    {
        dy    = -dy;
        stepy = -1;
    }
    else  stepy = 1;
    if ( dx < 0 )
    {
        dx    = -dx;
        stepx = -1;
    }
    else   stepx = 1;
    dx <<= 1;
    dy <<= 1;
    Nokia_Pixel( x1, y1, lineMode );
    if ( dx > dy )
    {
        fraction = dy - (dx >> 1);
        while ( x1 != x2 )
        {
            if ( fraction >= 0 )
            {
                y1 += stepy;
                fraction -= dx;
            }
            x1 += stepx;
            fraction += dy;
            Nokia_Pixel( x1, y1, lineMode );
        }
    }
    else
    
{
        fraction = dx - (dy >> 1);
        while ( y1 != y2 )
        {
            if ( fraction >= 0 )
            {
                x1 += stepx;
                fraction -= dy;
            }
            y1 += stepy;
            fraction += dx;
            Nokia_Pixel( x1, y1, lineMode );
        }
    }
}

void Nokia_Redraw(void)
{
        unsigned int a;
    Nokia_Gotoxy(0,0);                                                                  // Se placer en 0,0
    LcdPos = 0;
    for (a=0;a<504;a++)
    {
     Nokia_Write_Donnee(LcdCache[a]);
    }
}

void Nokia_Rect(unsigned char x1,unsigned char y1,
                unsigned char x2,unsigned char y2,
                unsigned char rectMode)
{
        Nokia_Line(x1,y1,x2,y1,rectMode);
        Nokia_Line(x2,y1,x2,y2,rectMode);
        Nokia_Line(x2,y2,x1,y2,rectMode);
        Nokia_Line(x1,y2,x1,y1,rectMode);
        Nokia_Redraw();
}


void Nokia_Circle(unsigned char centerX,unsigned char centerY,
                  unsigned char radius,
                  unsigned char circleMode)
{
        signed int tswitch;
        unsigned char y, x = 0;
        unsigned char d;

        d = centerY - centerX;
        y = radius;
        tswitch = 3 - 2 * radius;
        while (<= y)
                {
                Nokia_Pixel(centerX + x,centerY + y, circleMode);
                Nokia_Pixel(centerX + x,centerY - y, circleMode);
                Nokia_Pixel(centerX - x,centerY + y, circleMode);
                Nokia_Pixel(centerX - x,centerY - y, circleMode);
                Nokia_Pixel(centerY + y - d, centerY + x, circleMode);
                Nokia_Pixel(centerY + y - d, centerY - x, circleMode);
                Nokia_Pixel(centerY - y - d, centerY + x, circleMode);
                Nokia_Pixel(centerY - y - d, centerY - x, circleMode);
                if (tswitch < 0) tswitch += (* x + 6);
                else {
                        tswitch += (* (- y) + 10);
                        y--;
                }
                x++;
        }
        Nokia_Redraw();
}


void Nokia_Init(void)
{
Nokia_SCLK=1;
Nokia_DC=1;
Nokia_CE=0;
Nokia_RST=0;     // reset chip during 100ms
Delay_ms(250);
Nokia_CE=1;
Nokia_RST=1;
Delay_ms(200);
Nokia_Write_Command(0x21);   // set extended instruction set
Nokia_Write_Command(0x90);   // 0x90 was 0xc2  LCD=;3.06+162*0.06=4.02
Nokia_Write_Command(0x05);
Nokia_Write_Command(0x13);   //0x13   bias   1:48 -> n=4
Nokia_Write_Command(0x20);   // horiz mode Droite, X autoincremente
Delay_ms(150);
Nokia_Write_Command(0x0c);   // mod control normal change
Delay_ms(50);
}

void Nokia_Clean_Ddram(void)
{
 Nokia_CE=0;
 Nokia_Gotoxy(0,0);         //   96*8=768   84*6=504    clear LCD
 for (ddram=0;ddram<504;ddram++)
 {
 Nokia_Write_Donnee(0x00);
 LcdCache[ddram]=0;
 Delay_us(20);
 }
 Nokia_Gotoxy(0,0);
 Nokia_CE=1;
 }

void Nokia_Write_Command(char Nokia_cmd)
{
Nokia_DC=0;   // byte is a command it is read with the eight SCLK pulse
Nokia_CE=0;   // chip enabled
Delay_us(25);
Nokia_Write_Byte(Nokia_cmd);
Nokia_CE=1;   // chip disabled
}

void Nokia_Write_Donnee(char Nokia_data)
{
Nokia_DC=1;
Nokia_CE=0;   // chip enabled
Delay_us(25);
Nokia_Write_Byte(Nokia_data);
Nokia_CE=1;   // chip disabled
}


void Nokia_Write_Byte(char Nokia_byte)    // serial write data or command
{
char caa;
  #ifdef Mode_SPI_Bit_Bang
   for (caa=8;caa>0;caa--)
    {
      Nokia_SCLK=0;
      Delay_us(10);
      if ((Nokia_byte&0x80)==0){Nokia_MOSI=0;}
      else {Nokia_MOSI=1;}
      Nokia_SCLK=1;
      Nokia_byte= Nokia_byte << 1;
      }
  #endif
      #ifdef  Mode_SPI_HARDWARE
       SPI1_Write(Nokia_byte);
      #endif
}


void Nokia_Gotoxy(unsigned char Xnokia, unsigned char Ynokia)
{
  Nokia_Write_Command(0x40|(Ynokia&0x07));   // Y axe initialisation: 0100 0yyy
  Nokia_Write_Command(0x80|(Xnokia&0x7f));   // X axe initialisation: 1xxx xxxx
}

void Nokia_Erase_y(unsigned char Ynokia)
{
char row;
for(
row=0;row<84;row=row+6)  // 84-6 sinon car un ' '=6 pixels sinon deborde ligne suivante
{
Nokia_Gotoxy(row,Ynokia);
Delay_us(10);
Nokia_Print_Char(' ',0);
Delay_us(10);
}
Nokia_Gotoxy(0,Ynokia);
}

void Nokia_CLS()
{
int i;
  Nokia_Gotoxy(0,0);
  for (i=0;i<84;i=i+8)
  {
    Nokia_Write_Donnee(0x00);  Nokia_Write_Donnee(0x00);
    Nokia_Write_Donnee(0x00);  Nokia_Write_Donnee(0x00);
    Nokia_Write_Donnee(0x00);  Nokia_Write_Donnee(0x00);
    Nokia_Write_Donnee(0x00);  Nokia_Write_Donnee(0x00);
   }
     Nokia_Gotoxy(0,0);
}



void Nokia_Erase_x(unsigned char Xnokia)
{
char column;
for (column=0;column<8;column++){
      Nokia_Gotoxy(Xnokia,column);
      Nokia_Write_Donnee(0x00);  Nokia_Write_Donnee(0x00);
      Nokia_Write_Donnee(0x00);  Nokia_Write_Donnee(0x00);
      Nokia_Write_Donnee(0x00);  Nokia_Write_Donnee(0x00);
      Nokia_Write_Donnee(0x00);  Nokia_Write_Donnee(0x00);

       }
}

void Nokia_Print_Char(unsigned char cvar,char Bold)        // Write 1 character to LCD
{
charsel=cvar;
if (charsel<0x0020)return;
if (charsel>0x007f)return;
for (char_row=0;char_row<5;char_row++)
  {    // 5 bytes largeur matrice caractere
   charpos=(charsel-0x0020)*5;
   chardata=TABLE_car[(charpos+char_row)];
   Nokia_Write_Donnee(chardata);      // send data to nokia
   if(Bold>0) Nokia_Write_Donnee((unsigned char)chardata);
 }
 Nokia_Write_Donnee(0x00);      //    1 byte (always blank)
}


void Nokia_Plot(unsigned char Xnokia,unsigned char plot_value8)
{
char i;
plot_value32=0;
//plot_value32|=1;         // unremark this if you want dotgraph instead of bargraph
for (i=0;i!=plot_value8;i++){
//   plot_value32|=1;         // remark this if you want dotgraph instead of bargraph
   plot_value32<<=1;
   }
plot_value32|=2;            // bottom line is always filled
plot_llsb=(plot_value32&0xff);
plot_ulsb=((plot_value32>>8)&0xff);
plot_lmsb=((plot_value32>>16)&0xff);
plot_umsb=((plot_value32>>24)&0xff);
Nokia_Gotoxy(Xnokia,1);
Nokia_Write_Donnee_Inv(plot_umsb);
Nokia_Gotoxy(Xnokia,2);
Nokia_Write_Donnee_Inv(plot_lmsb);
Nokia_Gotoxy(Xnokia,3);
Nokia_Write_Donnee_Inv(plot_ulsb);
Nokia_Gotoxy(Xnokia,4);
Nokia_Write_Donnee_Inv(plot_llsb);
}

void Nokia_Write_Donnee_Inv(char Nokia_data_inv)
{
char caa;
Nokia_DC=1;
Nokia_CE=0;   // chip enabled
for (caa=8;caa>0;caa--) {
      Nokia_SCLK=0;
      Delay_us(10);
      if ((Nokia_data_inv&0x01)==0){Nokia_MOSI=0;}
      else {Nokia_MOSI=1;}
      Nokia_SCLK=1;
      Nokia_data_inv=Nokia_data_inv>>1;
         }
Nokia_CE=1;   // chip disabled
}

void Nokia_Clear_Screen(void)
{
Nokia_Erase_y(0);
Nokia_Erase_y(1);
Nokia_Erase_y(2);
Nokia_Erase_y(3);
Nokia_Erase_y(4);
Nokia_Erase_y(5);
Nokia_Erase_y(6);
Nokia_Erase_y(7);
}

void Nokia_Clear_XY(unsigned char Xnokia, unsigned char Ynokia)
{
Nokia_Gotoxy(Xnokia,Ynokia);
Nokia_Print_Char(' ',0);
Nokia_Gotoxy(Xnokia,Ynokia);
}

void Nokia_Print_uparrow(void)
{
Nokia_Write_Donnee(0x00);Nokia_Write_Donnee(0x04);
Nokia_Write_Donnee(0x02);Nokia_Write_Donnee(0x7f);
Nokia_Write_Donnee(0x02);Nokia_Write_Donnee(0x04);
Nokia_Write_Donnee(0x00);Nokia_Write_Donnee(0x00);
}
//
void Nokia_Print_downarrow(void)
{

Nokia_Write_Donnee(0x10);Nokia_Write_Donnee(0x20);
Nokia_Write_Donnee(0x7f);Nokia_Write_Donnee(0x20);
Nokia_Write_Donnee(0x10);Nokia_Write_Donnee(0x00);
Nokia_Write_Donnee(0x00);Nokia_Write_Donnee(0x00);

}
//
void Nokia_Print_leftarrow(void)
{

Nokia_Write_Donnee(0x08);Nokia_Write_Donnee(0x1c);
Nokia_Write_Donnee(0x2a);Nokia_Write_Donnee(0x08);
Nokia_Write_Donnee(0x08);Nokia_Write_Donnee(0xf8);
Nokia_Write_Donnee(0x00);Nokia_Write_Donnee(0x00);
}
//
void Nokia_Print_rightarrow(void)
{
Nokia_Write_Donnee(0x08);Nokia_Write_Donnee(0x08);
Nokia_Write_Donnee(0x2a);Nokia_Write_Donnee(0x1c);
Nokia_Write_Donnee(0x08);Nokia_Write_Donnee(0x00);
Nokia_Write_Donnee(0x00);Nokia_Write_Donnee(0x00);
}
//
void Nokia_Print_degree(void)
{
Nokia_Write_Donnee(0x00);Nokia_Write_Donnee(0x06);
Nokia_Write_Donnee(0x09);Nokia_Write_Donnee(0x09);
Nokia_Write_Donnee(0x06);Nokia_Write_Donnee(0x00);
Nokia_Write_Donnee(0x00);Nokia_Write_Donnee(0x00);
}

void Nokia_Print_lowbatdegree(void)
{
Nokia_Write_Donnee(0x00);Nokia_Write_Donnee(0x06);
Nokia_Write_Donnee(0x0f);Nokia_Write_Donnee(0x0f);
Nokia_Write_Donnee(0x06);Nokia_Write_Donnee(0x00);
Nokia_Write_Donnee(0x00);Nokia_Write_Donnee(0x00);
}


void Nokia_Write_CText_At(char x, char y, const char *ptr,char Bold)
{
  Nokia_Gotoxy(x,y);
  while(*ptr!=0)
  {
      Nokia_Print_Char(*ptr++,Bold);
      Delay_us(200);
   }
}


void Nokia_Write_Text_At(char x, char y, char *ptr,char Bold)
{
  Nokia_Gotoxy(x,y);
  while(*ptr!=0)
  {
      Nokia_Print_Char(*ptr++,Bold);
      Delay_us(200);
   }
}

//--------------------------------
void Nokia_Write_Text(char *ptr,char Bold)
{
  while(*ptr!=0)
  {
      Nokia_Print_Char(*ptr++,Bold);
      Delay_us(200);
   }
}





Nota: les Packages de librairies externe à MikroE , voir Libstock sur la page internet de mIKROeLEKTRONICA OU VIA Le HELP de MikroC
contiennent aussi , à titre d'exmemple , un fichier "Nokia_5110_Basics.mcl " à inclure dans le projet , directorie "Binaries"
EXEMPLE / Nokia_5110_Advanced_Graphics_1_1 ( mais ce n'est pas ce package qui a été utilisé dans mon cas)
il faut Package_Manager pour importer et utiliser des package externes à MikroC, dispo sur libstock
une fois installé, ils s'ajoute dans la liste du " Libraries Manager" , apres la liste system.
exit ...ça necesssiterait un tuto complet ..
Aides toi, le ciel ou Fantastpic t'aideras

afficheur Nokia 3310
PRNN-lab
Amateur
Amateur
Messages : 114
Enregistré en : août 2019

#70 Message par PRNN-lab » ven. 16 août 2019 14:37

Non je comprend justement c'est ce package que j'ai installée et que j'ai pas pu utiliser.
Si le fichier .clm est un fichier crée lors de la compilation ça répond a ma question j'avais juste peur que c'etais a moi de l’écrire :-D :-D
Encore merci pour ces explication. Je n'ai pas encore atteins le niveau de création de ma propre librairie mais lors des simulations réel que je ferais je saurais comment utiliser la votre et la modifier pour mon résultat final encore Grand merci.
Ça prouve que j'ai encore beaucoup a apprendre sur la programmation des pic :cry: :cry: :cry: .
Vous concernant c’était une matière dispensée a l’école ou bien vous y êtes aller en autodidacte?
Ce qui doit marcher jamais ne doit être pressé...... :idea:


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité