Un retraité Lyonnais de 68ans viens vous rejoindre sur votre forum, non pas qu'il veuille venir pour vous apporter sa science (il en n'a pas du moins dans ce domaine puisqu'il vient en chercher) mais simplement pour conforter sa passion de l'électronique et lancer un appel au secours sur le développement d'un programme "assembleur" sous MPLAB avec un PIC16F877 pour gérer un afficheur GLCD 240x64.
Je sais beaucoup me disent qu'il faut abandonner l'asm et migrer vers les outils modernes que c'est bcp plus simple, plus rapide et plus adapté à la gestion d'un GLCD. Le pb c'est qu'à mon âge on a pris ses habitudes et ses repères et que les moyens matériel ont un coût qu'un retraité ne peut malheureusement satisfaire. Il faut donc faire avec les moyens du bord et pour ça j'ai quand même du matos mais ça date de ma génération donc moins évident.
D'abord, afin de mieux cibler le personnage que je suis, commençons par ma carrière professionnel:
De formation électromécanique, j'étais dans un laboratoire de recherche d'une grande société automobile. J'avais en devoir de créer des systèmes électronique dédié à la mesure embarquée, de dépanner le matériel mesure et de l'entretenir, de mettre en place la norme ISO et manager un parc de matériel mesure. Bcp de diplômes en mécanique et des formations en électronique analogique et numérique. Pour résulter tout ça; mes connaissances électroniques me permettent de bien comprendre mais je suis vite limité quand il s'agit de programmer.
Passionné d'électronique, je continue dans le bricolage et la réalisation d'amplis audio à lampe mais aussi dans le dépannage dans un large domaine.
A présent que je me suis un peu mieux dévoilé, rentrons dans le vif du sujet.
Il s'agit et vous l'avez bien compris, de programmer un PIC 16f877 pour gérer un afficheur GLCD.
Côté matériel :
Afficheur OPTREX DMF5005 240x64
http://www.rigelcorp.com/8051/Optrex_Dmf5000.pdf
Outil de développement et de programmation:
MPLAB Version 5.5 et Easypic3 de chez Mikroelectronica
Pic utilisé :
PIC 16F877 avec quartz 4MHz
Langage assembleur .
La partie pilotage est réalisé sur une carte qui rassemble le PIC, les liaisons avec l’afficheur, l’alimentation et le rétroéclairage + une petite carte avec qq poussoirs et des LEDs.
Tout fonctionne correctement, le contraste réagit bien et l’alimentation 5V est correcte. J’ai monté un support 40 pins à force d’insertion nul pour pouvoir déplacer aisément le PIC du programmateur à la carte.
Les directives d’assemblage du PIC ont été définis en fonction des ports E/S affectés aux différents besoins.
Voici le début de programme que j'ai commencé à écrire et qui pourra vous servir à comprendre les raccordements. A partir de là je suis bloqué
; RB1 | 34 | E | Bouton poussoir "OK"
; RB2 | 35 | S | Ecriture afficheur
; RB3 | 36 | S | Lecture afficheur
; RB4 | 37 | S | Chip Enable
; RB5 | 38 | S | C/D
; RB6 | 39 | S | Font Size Select
; RB7 | 40 | S | Reset
; RC0 | 15 | S | Adressage entrée audio bit A
; RC1 | 16 | S | Adressage entrée audio bit B
; RC2 | 17 | S | Adressage entrée audio bit C
; RC3 | 18 | S | Adressage entrée audio bit D
; RC4 | 23 | S | LEDs Rouge droit et gauche
; RC5 | 24 | E | Bouton poussoir "INPUT"
; RC6 | 25 | E | Bouton poussoir "PHASE"
; RC7 | 26 | E | Bouton poussoir "MUTE"
; RD0 | 19 | S | Sortie bit D7 du LCD
; RD1 | 20 | S | Sortie bit D6 du LCD
; RD2 | 21 | S | Sortie bit D5 du LCD
; RD3 | 22 | S | Sortie bit D4 du LCD
; RD4 | 27 | S | Sortie bit D3 du LCD
; RD5 | 28 | S | Sortie bit D2 du LCD
; RD6 | 29 | S | Sortie bit D1 du LCD
; RD7 | 30 | S | Sortie bit D0 du LCD
;--------------------------------------------------DIRECTIVE D'ASSEMBLAGE POUR MPLAB-------------------------------------------------------
list p=16f877
#include <p16f877.inc>
__CONFIG _CP_OFF & _DEBUG_OFF & _WRT_ENABLE_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC
;-------------------------------------------------DEFINITION DES REGISTRES TEMPORAIRES------------------------------------------------------
PORTA EQU 0X05
PORTB EQU 0X06
PORTC EQU 0X07
PORTD EQU 0X08
PORTE EQU 0X09
TRISA EQU 0X85
TRISB EQU 0X86
TRISC EQU 0X87
TRISD EQU 0X88
TRISE EQU 0X89
CPT2 EQU 0X0D
CPT3 EQU 0X0E
RETARD1 EQU 0X0C
RETARD2 EQU 0X0F
RETARD3 EQU 0X10
RETARD4 EQU 0X11
RETARD5 EQU 0X12
CONVERT EQU 0X13
VAL1 EQU 0X14
VAL2 EQU 0X15
RESULT EQU 0X16
;--------------------------------------------PROGRAMME PRINCIPAL----------------------------------------
ORG 0000h ; Adresse de reset
GOTO INIT
;-----------------------------------------PROGRAMME D'INITIALISATION----------------------------------------
Les photos:
[imgPhoto1][/img]
Au plaisir de vous lire
JP


