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 ---
- 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 ---
Modérateur : Jérémy
[RESOLU] LCD I2C
Bonjour a tous,
Certain on pu me lire sur ce topic de pspic qui a réalisé une communication entre un pic et un lcd 16x2
via ce module :
Je souhaite donc en faire autant mais en C. Pour ce projet je souhaite juste afficher du texte sur l’écran. Pour ce qui et du matériel, voici ce que j'ai:
pic 16f887 Datasheet
le module pcf8574AT Datasheet
un lcd 16x2 (pas de datasheet)
et une breadbord
Voilà pour ce qui est du matériel. J'ai fait un petitschema sous proteus pour vous montrer le branchement que j'ai fait (car niveau photo je n'ai pas de quoi faire une belle qualité)
Voici donc le schéma :
J'ai quand même fait une simulation sous isis (même si a plusieurs reprises vous m'avez dit que la simu reste de la simu)
sa fonctionne. biensur sur la breadbord ça ne fonctionne pas, si non j'aurais ecrit en gros et gras "youhou !!!!!!!"
J'ai récuperer un code sur libstock que j'ai modifier pour un 16f887.
Le voici :
Code mise a jour et fonctionnelle le 21/05/2018
Merci a paulfjujo qui a fait tout le code
Voici pour ceux qui est des options du projet:
Mais je pense repartir de zero niveau code. Deja pour mieux apprendre le fonctionnement de l'i2c puis pour repérer les éventuelles erreurs car la sa ne fonctionne pas sur la breadbord Et Jérémy l'a fait mais avec une puce PCF2119. Je pense donc m'inspirer de son code
Voila les news de mon nouveau projet.
Ps: en general je met du temps a mes projet (manque de temps, trop de hobby) Mais la je viens d'etre papa donc les nuits sont courtes et le temps libre a encore reduit Mais c'est du bonheur.
@++
Certain on pu me lire sur ce topic de pspic qui a réalisé une communication entre un pic et un lcd 16x2
via ce module :
Je souhaite donc en faire autant mais en C. Pour ce projet je souhaite juste afficher du texte sur l’écran. Pour ce qui et du matériel, voici ce que j'ai:
pic 16f887 Datasheet
le module pcf8574AT Datasheet
un lcd 16x2 (pas de datasheet)
et une breadbord
Voilà pour ce qui est du matériel. J'ai fait un petitschema sous proteus pour vous montrer le branchement que j'ai fait (car niveau photo je n'ai pas de quoi faire une belle qualité)
Voici donc le schéma :
J'ai quand même fait une simulation sous isis (même si a plusieurs reprises vous m'avez dit que la simu reste de la simu)
sa fonctionne. biensur sur la breadbord ça ne fonctionne pas, si non j'aurais ecrit en gros et gras "youhou !!!!!!!"
J'ai récuperer un code sur libstock que j'ai modifier pour un 16f887.
Le voici :
Code mise a jour et fonctionnelle le 21/05/2018
Merci a paulfjujo qui a fait tout le code
Code : Tout sélectionner
///////////////////////////////
// name : LCDI2C //
// create : venom //
// pic : 16f887 4MHz //
// Merci à Paulfjujo //
//Qui a corrigé tout le code //
///////////////////////////////
// config
//CONFIG1 : $2007 : 0x24F4
//CONFIG2 : $2008 : 0x0600
#define _LCD_FIRST_ROW 0x80 //Move cursor to the 1st row
#define _LCD_SECOND_ROW 0xC0 //Move cursor to the 2nd row
#define _LCD_THIRD_ROW 0x94 //Move cursor to the 3rd row
#define _LCD_FOURTH_ROW 0xD4 //Move cursor to the 4th row
#define _LCD_CLEAR 0x01 //Clear display
#define _LCD_RETURN_HOME 0x02 //Return cursor to home position, returns a shifted display to
//its original position. Display data RAM is unaffected.
#define _LCD_CURSOR_OFF 0x0C //Turn off cursor
#define _LCD_UNDERLINE_ON 0x0E //Underline cursor on
#define _LCD_BLINK_CURSOR_ON 0x0F //Blink cursor on
#define _LCD_MOVE_CURSOR_LEFT 0x10 //Move cursor left without changing display data RAM
#define _LCD_MOVE_CURSOR_RIGHT 0x14 //Move cursor right without changing display data RAM
#define _LCD_TURN_ON 0x0C //Turn Lcd display on
#define _LCD_TURN_OFF 0x08 //Turn Lcd display off
#define _LCD_SHIFT_LEFT 0x18 //Shift display left without changing display data RAM
#define _LCD_SHIFT_RIGHT 0x1E //Shift display right without changing display data RAM
// Adresse I2C du LCD
#define LCD_ADDR 0x7E // venom adresse du PCF8574A = 0x7E.
//test led fosc
sbit LED at PORTC.B0;
sbit LED_Dir at TRISC.B0;
unsigned int i,j;
char rs;
// Lcd constants
char txt1[] = "FantasPic ! ";
char txt2[] = "LCD I2C ! ";
void CRLF1(void){
UART1_Write(13);
UART1_Write(10);
}
void I2C_LCD_Cmd(char out_char) {
char hi_n, lo_n;
rs = 0x00;
hi_n = out_char & 0xF0;
lo_n = (out_char << 4) & 0xF0;
I2C1_Start();
I2C1_Is_Idle();
I2C1_Wr(LCD_ADDR);
I2C1_Is_Idle();
I2C1_Wr(hi_n | rs | 0x04 | 0x08);
I2C1_Is_Idle();
Delay_us(50);
I2C1_Wr(hi_n | rs | 0x00 | 0x08);
I2C1_Is_Idle();
Delay_us(100);
I2C1_Wr(lo_n | rs | 0x04 | 0x08);
I2C1_Is_Idle();
Delay_us(50);
I2C1_Wr(lo_n | rs | 0x00 | 0x08);
I2C1_Is_Idle();
I2C1_Stop();
if(out_char == 0x01)Delay_ms(25);
}
void I2C_LCD_Chr(char row, char column, char out_char) {
char hi_n, lo_n;
rs = 0x00;
switch(row){
case 1:
I2C_LCD_Cmd(0x80 + (column - 1));
break;
case 2:
I2C_LCD_Cmd(0xC0 + (column - 1));
break;
};
hi_n = out_char & 0xF0;
lo_n = (out_char << 4) & 0xF0;
rs = 0x01;
I2C1_Start();
Delay_us(50);
I2C1_Wr(LCD_ADDR);
Delay_us(50);
I2C1_Wr(hi_n | rs | 0x04 | 0x08);
Delay_us(50);
Delay_us(50);
I2C1_Wr(hi_n | rs | 0x00 | 0x08);
Delay_us(100);
I2C1_Wr(lo_n | rs | 0x04 | 0x08);
Delay_us(50);
I2C1_Wr(lo_n | rs | 0x00 | 0x08);
I2C1_Stop();
}
void I2C_LCD_Init()
{
rs=1;
Delay_ms(500); //30 // laisser le temps au LCD de s'alimenter correctement
I2C_LCD_Cmd(0x30);
Delay_ms(10);
I2C_LCD_Cmd(0x30);
Delay_ms(10);
I2C_LCD_Cmd(0x30);
Delay_ms(10);
I2C_LCD_Cmd(0x20);
Delay_ms(10);
I2C_LCD_Cmd(0x28);
Delay_ms(10);
I2C_LCD_Cmd(0x06);
Delay_ms(10);
I2C_LCD_Cmd(0x01);
Delay_ms(50);
}
void I2C_LCD_Out(char row, char col, char *text) {
while(*text)
I2C_LCD_Chr(row, col++, *text++);
}
void main()
{
OSCCON = 0b01101000; // configuration OSCCON interne 4mhz
// 0b01110000 oscillateur 8 Mhz
// 0b01101000 oscillateur 4 Mhz
// 0b01011000 oscillateur 2 Mhz
// 0b01001000 oscillateur 1 Mhz
// 0b00111000 oscillateur 500 Khz
// 0b00101000 oscillateur 250 Khz
// 0b00011000 oscillateur 125 Khz
// 0b00001000 oscillateur 31 kHz
while(OSCCON.HTS==0); // boucle en attendant de voir le flag à 1
C1ON_bit = 0; // Disable comparators
C2ON_bit = 0;
PORTA=0;
ANSEL = 0; // Configure AN pins as digital I/O
ANSELH = 0;
TRISA = 0b11101111;
PORTC=0;
TRISC = 0b10100110;
LED_Dir=0;
LED=0;
Delay_ms(100);
//test FOSC visuel avec une led
for (i=0;i<2;i++)
{
LED=1;
Delay_ms(1000);
LED=0;
Delay_ms(1000);
}
I2C1_Init(100000);
I2C_LCD_Init();
Delay_ms(500);
I2C_LCD_Cmd(_LCD_CLEAR); Delay_ms(50);
I2C_LCD_Cmd(_LCD_RETURN_HOME); Delay_ms(50);
I2C_LCD_Cmd(_LCD_CURSOR_OFF); Delay_ms(50);
I2C_LCD_Out(1,1,txt1);
I2C_LCD_Out(2,1,txt2);
while(1) {
}
}
Voici pour ceux qui est des options du projet:
Mais je pense repartir de zero niveau code. Deja pour mieux apprendre le fonctionnement de l'i2c puis pour repérer les éventuelles erreurs car la sa ne fonctionne pas sur la breadbord Et Jérémy l'a fait mais avec une puce PCF2119. Je pense donc m'inspirer de son code
Voila les news de mon nouveau projet.
Ps: en general je met du temps a mes projet (manque de temps, trop de hobby) Mais la je viens d'etre papa donc les nuits sont courtes et le temps libre a encore reduit Mais c'est du bonheur.
@++
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par venom le lun. 21 mai 2018 10:43, modifié 17 fois.
LCD I2C
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonjour,
Est-tu sur de ton adresse 0x7F , quid des strap d'adresse A0 A1 A2 sur le pigboard PCF8754A ?
Mets des resistances de rappel (pull up) de 2,7K entre SCL et +5V et idem pour SDA ...
Rajoute un delay de 500mS entre l'init I2C et l'init LCD
Essaie de remplacer tes delais en µS par des delais en mS
surtout pour l'init du LCD .
As tu bien configuré FOSC pour que les delais correspondent bien ..
32 MHz -> 8Mhz x 4 PLL ?
Est-tu sur de ton adresse 0x7F , quid des strap d'adresse A0 A1 A2 sur le pigboard PCF8754A ?
Mets des resistances de rappel (pull up) de 2,7K entre SCL et +5V et idem pour SDA ...
Rajoute un delay de 500mS entre l'init I2C et l'init LCD
Essaie de remplacer tes delais en µS par des delais en mS
surtout pour l'init du LCD .
As tu bien configuré FOSC pour que les delais correspondent bien ..
32 MHz -> 8Mhz x 4 PLL ?
LCD I2C
Bonjour venom, paulfjujo, et tout le forum,
Un petit cadeau en or, un petit ange dans votre vie, c’est de la douceur et tellement de bonheur ! Toutes mes félicitations
-------------------------------------------------------------------------------------------------------------------------------
A ma connaissance ce PIC16F887 n'a pas de PLL, un soucis en moins, mais il y a bien un oscillateur interne.
En assembleur il faut paramétrer OSCCON, par exemple pour un choix sur 8Mhz, voici ce que l'on fait.
C'est la configuration de __CONFIG _CONFIG1 qui mettra l'oscillateur interne en fonction
c'est pratiquement le même que le 16F88, il se configure presse de la même manière mais avec
plus de patte, très bon choix
A+
venom a écrit :
Source du message Mais la je viens d'etre papa
Un petit cadeau en or, un petit ange dans votre vie, c’est de la douceur et tellement de bonheur ! Toutes mes félicitations
-------------------------------------------------------------------------------------------------------------------------------
paulfjujo a écrit :
Source du message 2 MHz -> 8Mhz x 4 PLL ?
A ma connaissance ce PIC16F887 n'a pas de PLL, un soucis en moins, mais il y a bien un oscillateur interne.
En assembleur il faut paramétrer OSCCON, par exemple pour un choix sur 8Mhz, voici ce que l'on fait.
Code : Tout sélectionner
Errorlevel-302 ; Supprime le message "Ensure that bank bits are correct"
list p=16F887 ; processeur utilisé
#include <p16F887.inc> ; Définitions des constantes
__CONFIG _CONFIG1, _DEBUG_OFF & _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_OFF & _WDT_OFF & _INTRC_OSC_NOCLKOUT
__CONFIG _CONFIG2, _WRT_OFF & _BOR21V
ORG H'00'
goto debut
ORG H'04'
retfie
debut
; 01111000 oscillateur 8 Mhz
movlw B'01111000 ' ; 01101000 oscillateur 4 Mhz
movwf OSCCON ; 01011000 oscillateur 2 Mhz
; 01001000 oscillateur 1 Mhz
; 00111000 oscillateur 500 Khz
; 00101000 oscillateur 250 Khz
; 00011000 oscillateur 125 Khz
; 00001000 oscillateur 31 kHz
C'est la configuration de __CONFIG _CONFIG1 qui mettra l'oscillateur interne en fonction
c'est pratiquement le même que le 16F88, il se configure presse de la même manière mais avec
plus de patte, très bon choix
A+
LCD I2C
- Gérard
Expert- Messages : 1661
- Âge : 65
- Enregistré en : septembre 2015
- Localisation : Alsace - Haut-Rhin
venom a écrit :Bonjour a tous,
...
Mais la je viens d'etre papa donc les nuits sont courtes et le temps libre a encore reduit Mais c'est du bonheur.
@++
Toutes mes félicitations.
Oui, les nuits à venir seront courtes, mais du bonheur pour des décennies.
LCD I2C
paulfjujo a écrit :bonjour,
Est-tu sur de ton adresse 0x7F , quid des strap d'adresse A0 A1 A2 sur le pigboard PCF8754A ?
Bonsoir, pour ceux qui estde l'adresse, pspic m'a confirmé que c'etait bien ça. Je suis aussi tomber sur un tableau qui donner aussi 0x7F si A0 A1 A2 n'etaient pas relié.
J'ai exactement le PCF8754AT
paulfjujo a écrit : Mets des résistances de rappel (pull up) de 2,7K entre SCL et +5V et idem pour SDA ...
Pareil pspic m'a dit que sur les module a puces PCF8754AT les résistances pull-up étaient inutiles. Mais si ça ne mange pas de pain pas de souci je vais en mettre.
paulfjujo a écrit : Rajoute un delay de 500mS entre l'init I2C et l'init LCD
Essaie de remplacer tes delais en µS par des delais en mS
surtout pour l'init du LCD .
C'est fait, j'ai remit le code a jour au 1er post. J'ai tout passer en ms et ajouté un delay 500 entre i2c et le lcd.
paulfjujo a écrit :As tu bien configuré FOSC pour que les delais correspondent bien ..
32 MHz -> 8Mhz x 4 PLL ?
J'avoue que mon incompétence dans le domaine me joue encore des tours. Je ne connais pas trop FOSC je brule sans doute les etapes d'apprentissage.
J'ai regarder sur le net et si je ne me trompe pas je doit ajouter OSCCON = 0b11110010; pour avoir le FOSC a 32Mhz c'est bien ça ?
J'ai aussi vu sur le net que sa parle de 32Mhz diviser par 4 PLL ce qui égale a 8mhz. J'avoue partager dans la semoule pour le coup. Je n'y connais vraiment rien en ce qui concerne les valeurs Mhz.
Temps-x a écrit :A ma connaissance ce PIC16F887 n'a pas de PLL, un soucis en moins, mais il y a bien un oscillateur interne.
Je te renvoie a ma réponse du dessus
Bien évidement les modifications n'on rien donner de bon
Merci a tous pour vos félicitations. J'ai hésite a poster dans Coin Fourre-tout mais bon.
@++
LCD I2C
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
Bonjour,
Felicitations ! et bon courage . (surtout pour la maman!)
au fait un p'tit gars ou une fille ?
essaie de rajouter ceci dans l'init
et en debut de programme , une led qui clignote sur une sortie quelconque ... sur le port C.
Felicitations ! et bon courage . (surtout pour la maman!)
au fait un p'tit gars ou une fille ?
essaie de rajouter ceci dans l'init
Code : Tout sélectionner
C1ON_bit = 0; // Disable comparators
C2ON_bit = 0;
et en debut de programme , une led qui clignote sur une sortie quelconque ... sur le port C.
LCD I2C
Bonjour Paul et tout le forum.
HS: il s'agit d'une petite fille nommée Athénaïs.
Ok pour les modifications et la led. J'avais vu cette idée de led dans ce code Jérémy dans lequel tu a fort participé .
Après j'ai bien étudié ce code qui est davantage compréhensible pour moi car Jérémy l'a bien commenté en français.
Je pourrais sûrement partir de ce code la et l'adapter pour mon 16f887 qu'en pensé tu ???
@++
HS: il s'agit d'une petite fille nommée Athénaïs.
Ok pour les modifications et la led. J'avais vu cette idée de led dans ce code Jérémy dans lequel tu a fort participé .
Après j'ai bien étudié ce code qui est davantage compréhensible pour moi car Jérémy l'a bien commenté en français.
Je pourrais sûrement partir de ce code la et l'adapter pour mon 16f887 qu'en pensé tu ???
@++
LCD I2C
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonjour Venom et à tous,
Vu que tu as déja fait un Tuto en basic sur le LCD I2C, tu devrais pouvoir t'en sortir avec cette version C et 16F887..
Bien verifier les particularités de ce PIC .. et le comportement bizarre de MikroC avec les 16F lorsqu'on utilise beaucoup de RAM.
Verifier si tu n'as pas de warning ou IRP bit dans les messages resultant de la compilation.
La compil peut etre réussie .. mais un warning peut t'annoncer un disfonctionnement.
Ce serait plus profitable pour toi ,de deverminer TON programme.. c'est mon humble avis .
A+
Vu que tu as déja fait un Tuto en basic sur le LCD I2C, tu devrais pouvoir t'en sortir avec cette version C et 16F887..
Bien verifier les particularités de ce PIC .. et le comportement bizarre de MikroC avec les 16F lorsqu'on utilise beaucoup de RAM.
Verifier si tu n'as pas de warning ou IRP bit dans les messages resultant de la compilation.
La compil peut etre réussie .. mais un warning peut t'annoncer un disfonctionnement.
Ce serait plus profitable pour toi ,de deverminer TON programme.. c'est mon humble avis .
A+
LCD I2C
Bonjour Paul,
Non le code en basic n'est pas de moi il est de pspic. Moi le code que je présente ci-dessus est un code en C trouver sur libstock.
Ok pour les warning. Je ne savais pas que sa pouvait compiler avec des warning. Merci de ton aide et de ta patience
Pareil comment sa se calcule une résistance pull-up pour i2c ? Car j'ai croisé des montages, ils montent jusqu'à 10K
@++
Non le code en basic n'est pas de moi il est de pspic. Moi le code que je présente ci-dessus est un code en C trouver sur libstock.
Ok pour les warning. Je ne savais pas que sa pouvait compiler avec des warning. Merci de ton aide et de ta patience
Pareil comment sa se calcule une résistance pull-up pour i2c ? Car j'ai croisé des montages, ils montent jusqu'à 10K
@++
LCD I2C
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonsoir Venom et à tous ,
j'ai reactualisé un code que j'avais posté aussi sur libstock en 2014 , prevu initialement pour un 18F
adapté au LCD 2119 adresse 0x74 .. sera sans doute à adapter
3 fichiers
le fichier principal avec le main
le fichier de definition des parametres LCD
le fichier bibliotheque
je l'ai bien re-testé sur ma carte 44 Pin DEMO Board Microchip
( livrée avec mon Pickit2 ! mais pas tres pratique avec des trous à 0,127mm au lieu de 2,54)
J'alimente le tout avec le Pickit2.
FOSC=4MHz
J'ai bien séparé les fonctions pour ecrire du texte en ROM ou en RAM..
avec les 16F ,il faut faire attention .
projet complet
j'ai reactualisé un code que j'avais posté aussi sur libstock en 2014 , prevu initialement pour un 18F
adapté au LCD 2119 adresse 0x74 .. sera sans doute à adapter
3 fichiers
le fichier principal avec le main
le fichier de definition des parametres LCD
le fichier bibliotheque
je l'ai bien re-testé sur ma carte 44 Pin DEMO Board Microchip
( livrée avec mon Pickit2 ! mais pas tres pratique avec des trous à 0,127mm au lieu de 2,54)
J'alimente le tout avec le Pickit2.
FOSC=4MHz
J'ai bien séparé les fonctions pour ecrire du texte en ROM ou en RAM..
avec les 16F ,il faut faire attention .
Code : Tout sélectionner
// pic : 16f887 4MHz //
// rev Paulfjujo 24-02-2018
// config
//CONFIG1 : $2007 : 0x2CF4
//CONFIG2 : $2008 : 0x0600
const char txt1[] = "I2C LCD";
const char txt2[] = "PIC16f887"; // TEXTE dans le CODE FLASH ROM
unsigned char TEXTE[48]; // TEXTE en RAM
unsigned char *txt;
#define FOSC 4 // MHz
// HARDWARE = 44 Pin Demo Board Microchip 16F887 avec Pickit2
// pinout settings
sbit LD7 at RD7_bit;
sbit LD6 at RD6_bit;
sbit LD5 at RD5_bit;
sbit LD4 at RD4_bit;
sbit LD3 at RD3_bit;
sbit LD2 at RD2_bit;
sbit LD1 at RD1_bit;
sbit LD0 at RD0_bit;
sbit SW1 at RB0_bit ;
unsigned int i,j,k;
unsigned char Addr;
#define With_LCD_I2C
#ifdef With_LCD_I2C
#include "LCD_definitions.h"
//#define LCD_ADDR 0x7E // adresse du PCF8574A = 0x7E. adresse du PCF8574 = 0x4E
//#define LCD_ADDR 0x74 // adresse de mon LCD2119 !
// LCD 2119 2x16 cars en I2C hardware
void LCD_CLS(void);
int LCD2119_Init(void);
void LCD_RAZ_Ligne(int L);
void LCD_Write_Chr_At(int Ligne,int col,char c1,int special);
void LCD_Write_Text_At(unsigned int Ligne,unsigned int col,char * t1);
void LCD_Write_CText_At(unsigned int Ligne,unsigned int col,const char * t1);
void LCD_Write_CText(const char * t1);
void Cree_Euro(void) ;
void Cree_8_cars_CGRAM(void) ;
void LCD_Cde(unsigned char Cde);
void LCD_Gauche(void);
void LCD_Droite(void);
#endif
void main()
{
OSCCON=0;
OSCCON.IRCF2=1;
OSCCON.IRCF1=1;
OSCCON.IRCF0=0;
OSCCON.SCS=1;
//OSCCON=0b01110001 ; // 8MHz (111) & SCS=1 (sinon 4 MHz par defaut)
//OSCCON=0b01100001 ; // 4 MHz par defaut
//OSCCON = 0b11110010; // configuration osc interne 32Mhz (avec PLL)
ANSEL = 0; // Configure AN pins as digital I/O
ANSELH = 0;
TRISA=0xFF;
TRISB=0xFF;
TRISC = 0x00;
PORTC = 0x00;
TRISD=0; // 8 leds
PORTD = 0;
C1ON_bit = 0; // Disable comparators
C2ON_bit = 0;
// 1er test hardware sur les 8 leds PORT D
// pour verif FOSC
PORTD = 0;
for (j=0;j<8;j++)
{
k=1<<j;
PORTD=k;
Delay_ms(100);
}
PORTD=0;
I2C1_Init(100000);
Delay_ms(500); // ajout delay 500ms
Addr=LCD_ADDR;
k=LCD2119_Init() ; // l'affichage de >> >> >> EST NORMAL ( ROM type U dans le LCD2119 )
Cree_8_cars_CGRAM() ; // 8 caracteres speciaux (dont Euro et Degré)
LCD_Write_Chr_At(1,1,'A',0);
LCD_Write_Chr_At(1,2,'B',0);
LCD_Write_Chr_At(2,8,'C',0);
LCD_Write_Chr_At(2,9,'D',0);
Delay_ms(1000);
LCD_CLS();
Delay_ms(1000);
while(1)
{
LCD_RAZ_Ligne(1);
LCD_Write_CText("1ere ligne .....");
//1234567890123456
LCD_RAZ_Ligne(2);
LCD_Write_CText_At(2,1,"2 em ligne 12346");
Delay_ms(2000);
LCD_CLS(); // efface tout l'ecran
Delay_ms(100);
LCD_Write_CText(txt1);
LCD_Write_CText_At(2,3,txt2);
Delay_ms(2000);
LCD_RAZ_Ligne(1);
LCD_Write_CText_At(1,1," 8 car. speciaux");
LCD_RAZ_Ligne(2);
for(i=0;i<8;i++) LCD_Write_Chr_At(2,i,i,1);
Delay_ms(2000);
LD5=!LD5;
}
}
projet complet
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 76 invités