Accueil > > > MISE EN OEUVRE DE L'ÉCRAN PICDEM 2 PLUS DEMO BOARD SUR 4 BITS - COMPILATEUR CCS
MISE EN OEUVRE DE L'ÉCRAN PICDEM 2 PLUS DEMO BOARD SUR 4 BITS - COMPILATEUR CCS
Information sur la source
Description
Ce code permet de faire fonctionner l'écran qui est disponible sur LE DEMOBOARD Picdem 2 PLUS de Microchip. Il peut aussi servir à d'autres écran (changer les broches si ce ne sont pas celles choisies). Le compilateur utilisé est CCS. Ce code à été prévu pour un microcontrôleur PIC 16f877.
Source
- /***************************************************************|*|
- \ Nom du fichier : ecran.c |*|
- / affichage sur écran PICDEM 2 Plus |*|
- \ Langage C compilateur CCS |*|
- / |*|
- \ Sous-programmes pour utiliser l'ecran PICDEM 2 PLUS |*|
- / Pour pic 16F877 - Langage C - Compilateur CCS |*|
- \ Conseils d'utilisation : |*|
- / -> mettre ce programme dans la rubrique Other Files |*|
- \ -> metttre #include "[ecran.c]" après la déclaration |*|
- / #device [ref du PIC] |*|
- \ pour envoyer afficher une donnée : envoiLCDd([donnée]) |*|
- / effacer : effaceLCD(); |*|
- \ commencer sur la ligne 2 : LCD_ligne([0->ligne 1|*|
- / 1->ligne2) |*|
- \_/~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\_/*/
-
-
-
-
- //#device *=16
- #use delay (clock=4000000)
-
- #byte PORTA=0x05
- #byte PORTD=0x08
-
- #byte ADCON1=0x9F
-
- //---- Définition des broches pour l'écran --------------//
-
- #bit LCD4=PORTD.0 // LCD data bits
- #bit LCD5=PORTD.1
- #bit LCD6=PORTD.2
- #bit LCD7=PORTD.3
-
- #bit LCD_E =PORTA.1 // LCD E clock
- #bit LCD_RW=PORTA.2 // LCD read/write line
- #bit LCD_RS=PORTA.3 // LCD register select line
-
- //------------------------------------------------------//
-
- //void initLCD(void);
- void envoiLCDn(int donnee_n, int1 rs); //(rs=0 ->instruction rs=1 -> données)
- void envoiLCD(int donnee, int1 rs);
- int lectureLCD(int1);
- void LCDoccupe(void);
- void effaceLCD (void);
- void envoiLCDd(int a);
- void LCD_ligne(int1 ligne);
-
- void initLCD(void) //initialisation de l'écran
- {
- SET_TRIS_A(0b11110001); // E/S port A
- SET_TRIS_D(0xF0); // E/S port D
- PORTA=0x00; //Port A à 0
-
- LCD_E=0; //} tout à 0
- LCD_RW=0;//} " "
- LCD_RS=0;//} " "
-
- ADCON1=0b00001110; // broches A/D
-
- envoiLCDn(0b00110000,0);// -> 1ère séquence de contôle
- delay_ms(4); //
-
- envoiLCDn(0b00110000,0);// -> 2ème séquence de contôle
- delay_us(100); //
-
- envoiLCDn(0b00110000,0);// -> 3ème séquence de contôle
- delay_us(100); //
-
- envoiLCDn(0b00100000,0);// -> 4ème séquence de contôle
- delay_ms(4); //
-
- LCDoccupe();
- envoiLCD(0b00101000,0);//5) Function set
- delay_ms(2);
- envoiLCD(0b00001101,0);//6) Display = ON
- delay_ms(2);
- envoiLCD(0b00000001,0);//7) Display Clear
- envoiLCD(0b00000110,0);//8) Entry Mod
- envoiLCD(0b10000000,0);//9) DDRAM addresss 0000
-
- return;
- }
-
-
- void envoiLCDn(int donnee_n, int1 rs) //LCD write Nibble
- {
- LCD_RS=rs; //(rs=0 ->instruction rs=1 -> données)
- LCD_RW=0; //on envoi
- //TRIS D est déjà en sortie
- delay_us(1);
- LCD_E=1;
-
- LCD7 = bit_test(donnee_n,7);
- LCD6=bit_test(donnee_n,6);
- LCD5=bit_test(donnee_n,5);
- LCD4=bit_test(donnee_n,4);
- delay_us(1);
- LCD_E=0;
- return;
- }
-
-
-
- void envoiLCD(int donnee, int1 rs) //
- {
- LCDoccupe();
- envoiLCDn(donnee,rs);
- swap(donnee);
- envoiLCDn(donnee,rs);
- swap(donnee);
- return;
- }
-
- int lectureLCD(int1 rs)
- {
- int donnee_lue_a,tmp;
- SET_TRIS_D(0xFF); // E/S port D données en entrée
- LCD_RS=rs;
- LCD_RW=1; //on fait une lecture
-
- delay_ms(1);
-
- LCD_E=1;
-
- delay_ms(2);
-
- donnee_lue_a=PORTD; //4 bits de poids fort
- swap(donnee_lue_a); //remis sur les 4 bits de poids fort de l'octet
- LCD_E=0;
-
- delay_us(9);
-
- LCD_E=1;
- tmp=PORTD & 0b00001111; //on ne prend que les bits de poids faible
- donnee_lue_a=donnee_lue_a | tmp; //on colle les bits de poids faible
- LCD_E=0;
-
- SET_TRIS_D(0xF0); // E/S port D
- return donnee_lue_a;
- }
-
-
- void LCDoccupe(void)
- {
- int donnee_lue;
- do {
- donnee_lue=lectureLCD(0);
- } while(bit_test(donnee_lue,7)==1);
- return;
- }
-
- void effaceLCD (void)
- {
- envoiLCD(0b00000001,0);//7) Display Clear
- envoiLCD(0b00000110,0);//8) Entry Mod
- envoiLCD(0b10000000,0);//9) DDRAM addresss 0000
- return;
- }
-
- void envoiLCDd(int a)
- {
- envoiLCD(a,1);
- }
-
- void LCD_ligne(int1 ligne)
- {
- if(!ligne) envoiLCD(0x80,0);
- else envoiLCD(0xC0,0);
- return;
- }
/***************************************************************|*|
\ Nom du fichier : ecran.c |*|
/ affichage sur écran PICDEM 2 Plus |*|
\ Langage C compilateur CCS |*|
/ |*|
\ Sous-programmes pour utiliser l'ecran PICDEM 2 PLUS |*|
/ Pour pic 16F877 - Langage C - Compilateur CCS |*|
\ Conseils d'utilisation : |*|
/ -> mettre ce programme dans la rubrique Other Files |*|
\ -> metttre #include "[ecran.c]" après la déclaration |*|
/ #device [ref du PIC] |*|
\ pour envoyer afficher une donnée : envoiLCDd([donnée]) |*|
/ effacer : effaceLCD(); |*|
\ commencer sur la ligne 2 : LCD_ligne([0->ligne 1|*|
/ 1->ligne2) |*|
\_/~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\_/*/
//#device *=16
#use delay (clock=4000000)
#byte PORTA=0x05
#byte PORTD=0x08
#byte ADCON1=0x9F
//---- Définition des broches pour l'écran --------------//
#bit LCD4=PORTD.0 // LCD data bits
#bit LCD5=PORTD.1
#bit LCD6=PORTD.2
#bit LCD7=PORTD.3
#bit LCD_E =PORTA.1 // LCD E clock
#bit LCD_RW=PORTA.2 // LCD read/write line
#bit LCD_RS=PORTA.3 // LCD register select line
//------------------------------------------------------//
//void initLCD(void);
void envoiLCDn(int donnee_n, int1 rs); //(rs=0 ->instruction rs=1 -> données)
void envoiLCD(int donnee, int1 rs);
int lectureLCD(int1);
void LCDoccupe(void);
void effaceLCD (void);
void envoiLCDd(int a);
void LCD_ligne(int1 ligne);
void initLCD(void) //initialisation de l'écran
{
SET_TRIS_A(0b11110001); // E/S port A
SET_TRIS_D(0xF0); // E/S port D
PORTA=0x00; //Port A à 0
LCD_E=0; //} tout à 0
LCD_RW=0;//} " "
LCD_RS=0;//} " "
ADCON1=0b00001110; // broches A/D
envoiLCDn(0b00110000,0);// -> 1ère séquence de contôle
delay_ms(4); //
envoiLCDn(0b00110000,0);// -> 2ème séquence de contôle
delay_us(100); //
envoiLCDn(0b00110000,0);// -> 3ème séquence de contôle
delay_us(100); //
envoiLCDn(0b00100000,0);// -> 4ème séquence de contôle
delay_ms(4); //
LCDoccupe();
envoiLCD(0b00101000,0);//5) Function set
delay_ms(2);
envoiLCD(0b00001101,0);//6) Display = ON
delay_ms(2);
envoiLCD(0b00000001,0);//7) Display Clear
envoiLCD(0b00000110,0);//8) Entry Mod
envoiLCD(0b10000000,0);//9) DDRAM addresss 0000
return;
}
void envoiLCDn(int donnee_n, int1 rs) //LCD write Nibble
{
LCD_RS=rs; //(rs=0 ->instruction rs=1 -> données)
LCD_RW=0; //on envoi
//TRIS D est déjà en sortie
delay_us(1);
LCD_E=1;
LCD7 = bit_test(donnee_n,7);
LCD6=bit_test(donnee_n,6);
LCD5=bit_test(donnee_n,5);
LCD4=bit_test(donnee_n,4);
delay_us(1);
LCD_E=0;
return;
}
void envoiLCD(int donnee, int1 rs) //
{
LCDoccupe();
envoiLCDn(donnee,rs);
swap(donnee);
envoiLCDn(donnee,rs);
swap(donnee);
return;
}
int lectureLCD(int1 rs)
{
int donnee_lue_a,tmp;
SET_TRIS_D(0xFF); // E/S port D données en entrée
LCD_RS=rs;
LCD_RW=1; //on fait une lecture
delay_ms(1);
LCD_E=1;
delay_ms(2);
donnee_lue_a=PORTD; //4 bits de poids fort
swap(donnee_lue_a); //remis sur les 4 bits de poids fort de l'octet
LCD_E=0;
delay_us(9);
LCD_E=1;
tmp=PORTD & 0b00001111; //on ne prend que les bits de poids faible
donnee_lue_a=donnee_lue_a | tmp; //on colle les bits de poids faible
LCD_E=0;
SET_TRIS_D(0xF0); // E/S port D
return donnee_lue_a;
}
void LCDoccupe(void)
{
int donnee_lue;
do {
donnee_lue=lectureLCD(0);
} while(bit_test(donnee_lue,7)==1);
return;
}
void effaceLCD (void)
{
envoiLCD(0b00000001,0);//7) Display Clear
envoiLCD(0b00000110,0);//8) Entry Mod
envoiLCD(0b10000000,0);//9) DDRAM addresss 0000
return;
}
void envoiLCDd(int a)
{
envoiLCD(a,1);
}
void LCD_ligne(int1 ligne)
{
if(!ligne) envoiLCD(0x80,0);
else envoiLCD(0xC0,0);
return;
}
Historique
- 09 mars 2007 17:12:52 :
- mots-clés changés
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
programmation du microcontrôleur PIC 16F877 et mesure de temperature [ par aurelienkam ]
Bonjour à tous je suis nouveau dans le site et je m'appelle aurelien Kameni. J’étudie cette année en licence le microcontrôleur PIC 16F877. J&#
liaison rs232 avec PIC 16F877A [ par aspire1640r ]
Salut tout le monde Dans le cadre de mon projet de fin d'étude une partie du travail consiste à réaliser une liaison série rs232 entre une carte élect
utilisation simultanée de 2 fenêtres sur 2 écrans [ par sf4 ]
Je vous expose mon problème. Je programme actuellement une application comprenant 2 Form, mon pc est branché à un rétroprojecteur et j'ai étendu le bu
PIC et LCD 2*16 [ par caela ]
Bonjour à tous svp est-ce que quequ'un peut me donner e nom de la librairie qu'il faut importer pour pouvoir gérer un LCD 2*16 en CPIC. MERCI
control entre vers de C++ [ par bolix ]
je recherche la ligne de commande qui puisse me faire appeler à partir du c++ des programme en asembleurs.je recherche aussi la ligne de commande pou
Récupérer la couleur d'un pixel à la position x,y de l'écran [ par atao ]
quelqu' un sait il comment peut on récupérer la couleur d'un pixel à la position x,y de l'écranmerciatao.
API capte l'écran [ par Bin Laden ]
Salut, Je cherche une fonction API qui capte le contenu de l'écran.
Problème d'IHM [ par FLOX ]
Bonjour à tous,Je vais construire 2 classes (avec C++ Builder) qui aurons pour fonctions de représenter deux écrans. La première représentera un écran
Effacer l'écran [ par JosueClement ]
Je ne réussi pas à utiliser la fonction "clrscr".les librairies que j'ai inclu sont:<iostream.h><stdlib.h><stdio.h><conio.h>&l
Plein écran [ par Thanatos ]
Bonjour,Comment fait-on pour mettre la fenêtre DOS en plein écran sous Borland C++ ?
|
Derniers Blogs
[WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|