LCD série et picaxe 20M2

MGU

Senior Member
Bonjour,

Je me tourne vers les spécialistes qui ne sont pas en vacances.

Je viens de me bricoler un petit adaptateur pour transformer un LCD standard (HD77480) en LCD série.
J'ai repris l'essentiel du firmware open source basé sur un 18M2 de l'afficheur AXE133.
Je l'ai adapté à un 20M2 et ajouté des caractères français en CGRAM.
Tout fonctionne bien mis à part:

1) Qu'on ne peut ajouter aucun test pour modifier le code à l'arrivée d'un caractère français (ex: é) et l'adresser vers la CGRAM
Ce n'est pas bien grave, il faut lui donner le bon numéro dans le serout au départ. Mais j'aurais préféré taper un "é" sur le clavier AZERTY et voir un "é" sur le LCD.

2) Sur l'AXE133, il est prévu un test sur le code 253 pour accéder aux annonces préenregistrées ET un test sur 255 pour commander les sorties libres du 18X2.
Sur le 20M2, pour que le test sur 255 fonctionne, il faut supprimer le test sur 253. La suite des test précédents, même négatifs est trop longue.
On peut donc avoir l'un OU l'autre, mais pas les deux.

Questions:
Le picaxe 18M2 a-t-il, mis à part son prix plus élevé, des caractéristiques particulières?
Est-il mieux adapté dans cette application?

Un lien pour ceux que cela peut intéresser:

http://electromag1.over-blog.com/pages/LCD_SERIE_ET_PICAXE-8160161.html

Merci

MM
 

PieM

Senior Member
:Bonjour MGU,

Je vois nulle part la commande setfreq m16 ? (Sorry , je ne l'avais pas vu dans le LCD init !:rolleyes: )

Concernant le code, je le simplifierais un peu de cette façon :


Code:
main:
	serin RX,baud,b1			; wait for the next byte	

	; NB keep character mode test as first item in this list to optimise speed
	if b1 < 253 then		
		let pinsB = b1 		; output the data
		pulsout enable,1  	; pulse the enable pin to send data.
		goto main
	else			
		serin RX,baud,b1
	endif	
		
	select b1
	
	case b1 = 254	
		low rs 	     		; change to command mode for next character
		let pinsB = b1 		; output the data
		pulsout enable,1  	; pulse the enable pin to send data.
		high rs			; back to character mode		
		
	case b1 = 253 		
		gosub msg			; do the 16 character message

	case else 
		let pinsC = b1 & %00000111 | %10000000  [COLOR="#FF0000"](à revoir ..)[/COLOR]
	
	endselect
						
goto main			; back to top

En fait je n'attendrais pas les tests après celui du <253 pour lire le second caractère.
Et ce second caractère serait testé par un select case.

Ensuite, il y a une erreur sur la ligne let pinsC = b1 & %00000111 | %10000000

cette ligne n'autorise que les 3 lsb de b1 en activation de C.0, C.1 et C.2, et met C.7 à l'état haut. et C.6 à C.3 à l'état bas.
 
Last edited:

MGU

Senior Member
Bpnjour PieM,

En fait, j'ai lâchement pompé le code original, pensant que les programmeurs avaient choisi le plus efficace.
Je vais essayer le vôtre, le select case, c'est plus élégant.

J'ai essayé un 20X2 à 32MH et N4800 (obligatoire) et là tout fonctionne. Sauf pour le test sur les caractères ajoutés, le caractère est bien traité, mais la suite est illisible. L'idée de la conversion à ce niveau est à abandonner, il faudrait faire 8 tests et c'est impossible avec un picaxe.

Il n'y a pas d'erreur sur le pinsC, j'ai changé les ports de RX, E et RS pour faciliter le typon (voir schéma) et les ports disponibles sont bien C.3, C.4, C.5 et C.7 (un de plus que le 18M2). Le fonctionnement est normal en supprimant le test sur les messages.
La ligne pinsC est donc modifiée, dirsC aussi.

A + pour le rapport.

MM
 

MGU

Senior Member
Code testé:

Ben non, l'élégance ne paye pas, il faut rester rustique.
L'écran reste vide. Apparemment, les commandes ne sont pas interprétées.
Le code original fonctionne mais on est probablement proche des limites.

Je me demande quand même si toutes les fonctionnalités du Axe133 sont disponibles, comme annoncé dans la doc.
Un 18M2 fonctionnerait et pas un 20M2 ? Pourquoi ?

MM
 

PieM

Senior Member
En fait, l'idée était de ne pas attendre une cascade de test IF THEN pour effectuer le serin du second caractère ...
Le second caractère n'est pas reçu, ou il n'est pas interprété par le select case ?

C'est curieux car le 18M2 est plutôt de conception plus ancienne !

Dans votre programme, si vous inversez l'ordre des deux derniers tests (255 et 253), que se passe t-il ? ce sont les messages qui ne sont pas activés ?
 

MGU

Senior Member
Et bien, même punition, si on inverse les tests, les messages ne fonctionnent plus (j'ai une ligne de "é") et fonctionnent en supprimant le test précédent sur 255.

MAIS c'est pas grave, tout fonctionne, messages et activation ports en augmentant l'horloge de 16 à 32MHz, ce qui fait passer de 2400 à 4800 baud.
Et avec un 20M2 (je ne sais pas encore pourquoi je voulais utiliser un 20X2).
J'aimerais avoir la confirmation que le 18M2 arrive au même résultat à 16MHz.

Merci, le problème est classé :résolu.

MM
 
Top