Lcd Ks0713
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

Lcd Ks0713



  1. #1
    dreamstyle

    Exclamation Lcd Ks0713


    ------

    Bonsoir,

    Tout d’abord je tien a préciser que c’est le premier LCD sur le quelle je travaille depuis que j’ai démarré l’aventures des PIC.
    Ayant pu récupère un LCD de type KS0713 sur un D.A.P de créative HS, et voulais l’utiliser pour mes montages électronique,
    je me suis donc lancer dans l’aventure en cherchant un maximum d’informations sur ce LCD.

    Je suis donc tombé sur ce lien http://www.techdesign.be/projects/042/042.htm
    Ou j’ai pu trouver un code en C++ pour PIC18F452 et les datasheet me permettant ainsi de comprendre comment utiliser mon LCD.

    Le petit souci est que je ne programme pas en c++ et que je ne dispose pas non plu d’un PIC18F452.

    J’ai donc tenté d’écrire le début de l’initialisation de mon LCD en ASM pour un PIC16F627, mais j’errais voulu avoir vos avis sur ce que j’ai déjà fait.

    Code:
    ;**********************************************************************
    ;   																  *
    ;	Programme pour réalisation d'un controleur LCD KS0713			  *
    ;																	  *
    ;                                                                     *
    ;**********************************************************************
    ;                                                                     *
    ;    NOM:      LED_DS                                                 *
    ;    Date:     16/10/2006                                             *
    ;    Version:  1.0                                                    *
    ;    Circuit:  LCD KS0713				                              *
    ;    Auteur:   Dreamstyle                                             *
    ;                                                                     *
    ;**********************************************************************
    ;                                                                     *
    ;    Fichier requis: P16F627.inc                                      *
    ;                                                                     *
    ;**********************************************************************
    ;                                                                     *
    ;    Notes: controleur du LCD KS0713							 	  *
    ;                                                                     *
    ;**********************************************************************
    
    
    	LIST      p=16F627            ; Définition de processeur
    	#include <p16F627.inc>        ; Définitions de variables
    
    	__CONFIG   _CP_OFF & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT & _LVP_OFF  & _MCLRE_OFF
    
    ; '__CONFIG' précise les paramètres encodés dans le processeur au moment de
    ; la programmation du processeur. Les définitions sont dans le fichier include.
    ; Voici les valeurs et leurs définitions :
    ;	_CP_ON		Code protection ON : impossible de relire
    ;	_CP_OFF		Code protection OFF
    ;	_PWRTE_ON	Timer reset sur power on en service
    ;	_PWRTE_OFF	Timer reset hors-service
    ;	_WDT_ON		Watch-dog en service
    ;	_WDT_OFF	Watch-dog hors service
    ;	_LP_OSC		Oscillateur quartz basse vitesse
    ;	_XT_OSC		Oscillateur quartz moyenne vitesse
    ;	_HS_OSC		Oscillateur quartz grande vitesse
    ;	_RC_OSC		Oscillateur à réseau RC
    
    ;*********************************************************************
    ;                              ASSIGNATIONS                          *
    ;*********************************************************************
    
    OPTIONVAL	EQU	B'00001000'	; Valeur registre option
    
    ;*********************************************************************
    ;                             DEFINE                                 *
    ;*********************************************************************
    
    
    #DEFINE MI				PORTA,0		; LCD_MI
    #DEFINE E				PORTA,1		; LCD_E
    #DEFINE RW				PORTA,2		; LCD_RW
    #DEFINE RS				PORTA,3		; LCD_RS
    #DEFINE RST				PORTA,4		; LCD_RST
    #DEFINE CS1B			PORTA,6		; LCD_CS1B
    
    
    #DEFINE DB0				PORTB,0		; DB0
    #DEFINE DB1				PORTB,1		; DB1
    #DEFINE DB2				PORTB,2		; DB2
    #DEFINE DB3				PORTB,3		; DB3
    #DEFINE DB4				PORTB,4		; DB4
    #DEFINE DB5				PORTB,5		; DB5
    #DEFINE DB6				PORTB,6		; DB6
    #DEFINE DB7				PORTB,7		; DB7
    
    #DEFINE LCD_PORT		TRISB		; LCD_PORT
    
    
    #DEFINE LED_LCD_STATUS		PORTA,7		; LED
    
    
    
    ;*********************************************************************
    ;                             MACRO                                  *
    ;*********************************************************************
    
    ; #### Sortie ON ####
    
    
    ;EX:
    ;---
    
    ;LED_1_ON macro	
    ;		bsf	LED1
    ;	endm
    
    
    ;________________________________________________________________ 
    ;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
    
    ;	Bank 0 & 1 & 2 & 3
    ;   ------------------
    
    goto_bank0 macro	; sélectionner banque 0
    		bcf	STATUS,RP0
    		bcf	STATUS,RP1	
    	endm
    
    
    goto_bank1 macro	; sélectionner banque 1
    		bsf	STATUS,RP0
    		bcf	STATUS,RP1	
    	endm
    
    
    goto_bank2 macro	; sélectionner banque 2
    		bcf	STATUS,RP0
    		bsf	STATUS,RP1	
    	endm
    
    
    goto_bank3 macro	; sélectionner banque 3	
    		bsf	STATUS,RP0
    		bsf	STATUS,RP1	
    	endm
    
    
    ;*********************************************************************
    ;                   DECLARATIONS DE VARIABLES                        *
    ;*********************************************************************
    
    BUSY_1				EQU			0x7B	; variable nécessaire a la temporisation de 500µS
    NB_TEMPO			EQU			0x7C	; variable pour indiquer le nombre de tempo de 500µS a effectuer
    
    
    	CBLOCK 0x020  		; début de la zone variables
    	
    ; /!\ ATTENTION : a ne pas utiliser si on définit 
    ;					des mémoires manuellement
    
    	ENDC		; fin des déclarations memory avec attribution automatique ( :1)
    
    
    ;**********************************************************************
    ;                      DEMARRAGE SUR RESET                            *
    ;**********************************************************************
    
    	org 0x000 		; Adresse de départ après reset
      	goto    init		; Adresse 0: initialiser
    
    ;*********************************************************************
    ;                       INITIALISATIONS                              *
    ;*********************************************************************
    
    init
    	clrf	PORTA		; Sorties portA à 0
    	clrf	PORTB		; sorties portB à 0
            bsf	STATUS,RP0	; sélectionner banque 1
    	clrf	EEADR		; permet de diminuer la consommation
    	movlw	OPTIONVAL	; charger masque
    	movwf	OPTION_REG	; initialiser registre option
    
    			; Effacer RAM
    			; ------------
    
    
    	movlw	0x020		; initialisation pointeur
    	movwf	FSR		; pointeur d'adressage indirec
    init1
    	clrf	INDF		; effacer ram
    	incf	FSR,f		; pointer sur suivant
    	movf	FSR, w
    	sublw	0x080
    	btfss	STATUS, Z
    	goto	init1		; non, boucler
    
    
    
    
    	movlw	0x0A0		; initialisation pointeur
    	movwf	FSR		; pointeur d'adressage indirec
    init2
    	clrf	INDF		; effacer ram
    	incf	FSR,f		; pointer sur suivant
    	movf	FSR, w
    	sublw	0x0F0
    	btfss	STATUS, Z
    	goto	init2		; non, boucler
    
    
    
    
    	bsf	STATUS, IRP		; je passe en Bank 2&3 (pour accès indirecte)
    
    	movlw	0x020		; initialisation pointeur
    	movwf	FSR		; pointeur d'adressage indirec
    init3
    	clrf	INDF		; effacer ram
    	incf	FSR,f		; pointer sur suivant
    	movf	FSR, w
    	sublw	0x050
    	btfss	STATUS, Z
    	goto	init3		; non, boucler
    
    
    	bcf	STATUS, IRP		;; je revin en Bank 0&1 (pour accès indirecte)
    
    
    
    
    			; initialisations spécifiques
    			; ----------------------------
    
    
    	clrf	TRISA 			; TRISA en sortie (banque1)
    	clrf	LCD_PORT		; LCD DB en sortie (banque1)
    
    ;	bcf	LCD_DB0			; LCD_DB0 en sortie (banque1)
    ;	bcf	LCD_DB1			; LCD_DB1 en sortie (banque1)
    ;	bcf	LCD_DB2			; LCD_DB2 en sortie (banque1)
    ;	bcf	LCD_DB3			; LCD_DB3 en sortie (banque1)
    ;	bcf	LCD_DB4			; LCD_DB4 en sortie (banque1)
    ;	bcf	LCD_DB5			; LCD_DB5 en sortie (banque1)
    ;	bcf	LCD_DB6			; LCD_DB6 en sortie (banque1)
    ;	bcf	LCD_DB7			; LCD_DB7 en sortie (banque1)
    
    	bcf	STATUS,RP0			; repasser banque 0
    
    
    	MOVLW	B'00000111'	;Disable Comparator module's
    	MOVWF	CMCON
    
    
    	goto	start		; sauter au programme principal
    
    
    ;*********************************************************************
    ;                  	  		 CODE ERREUR		     	             *
    ;*********************************************************************
    
    ERR#1
    
    ERR#2
    
    ERR#3
    
    ERR#4
    
    ;*********************************************************************
    ;                  	   LES CALL IDEPENDENT     	                     *
    ;*********************************************************************
    
    
    ;************************************\
    ; TEMPO 500 µS
    ;************************************/
    START_TEMPO	movwf	NB_TEMPO	; Temporisation : dure 500µs x "la valeur contenue dans W"
    boucle		movlw	.123
    			movwf	BUSY_1
    boucle1		NOP
    			decfsz	BUSY_1,1
    			goto	boucle1
    			decfsz	NB_TEMPO,1
    			goto	boucle	
    			return
    
    
    ;************************************\
    ; LED_LCD_STATUS ON/OFF
    ;************************************/
    led@ON		bsf		LED_LCD_STATUS
    			return
    
    led@OFF	 	bcf		LED_LCD_STATUS
    			return
    
    
    ;*********************************************************************
    ;                  	   SOUS PROGRAMMES      	                     *
    ;*********************************************************************
    
    
    
    
    ;*********************************************************************
    ;                      PROGRAMME PRINCIPAL                           *
    ;*********************************************************************
    
    
    start
    
    	movlw	.200		;// 200x 500µS
    	call	START_TEMPO	;// TEMPO 100 ms
    
    
    	bsf		CS1B		;// LCD sélectioner
    	bcf		RST			;// RST 0
    
    	movlw	.20			;// 20x 500µS
    	call	START_TEMPO	;// TEMPO 10 ms
    
    	bsf		RST			;// RST 1
    
    	movlw	.2			;// 2x 500µS
    	call	START_TEMPO	;// TEMPO 1 ms
    
    	BCF		RS			;// RS 0
    	BCF		RW			;// RW 0
    
    
    
    	movlw	0xe2		;// reset
    	movwf	LCD_PORT	;// Envoyer commande
    	movlw	.30			;// 30 x 500µS
    	call	START_TEMPO	;// TEMPO 15 ms
    
    
    	movlw	0xa0		;// ADC select: normal
    	movwf	LCD_PORT	;// Envoyer commande
    	movlw	.30			;// 30 x 500µS
    	call	START_TEMPO ;// TEMPO 15 ms
    
    
    	movlw	0xc0		;// SHL select:
    	movwf	LCD_PORT	;// Envoyer commande
    	movlw	.30			;// 30 x 500µS
    	call	START_TEMPO ;// TEMPO 15 ms
    
    
    	movlw	0xb2		;// LCD bias select
    	movwf	LCD_PORT	;// Envoyer commande
    	movlw	.30			;// 30 x 500µS
    	call	START_TEMPO ;// TEMPO 15 ms
    
    
    	movlw	0x2c		;// Voltage converter ON
    	movwf	LCD_PORT	;// Envoyer commande
    	movlw	.30			;// 30 x 500µS
    	call	START_TEMPO ;// TEMPO 15 ms
    
    
    	movlw	0x2e		;// Voltage regulator ON
    	movwf	LCD_PORT	;// Envoyer commande
    	movlw	.30			;// 30 x 500µS
    	call	START_TEMPO ;// TEMPO 15 ms
    
    
    	movlw	0x2f		;// Voltage follower ON
    	movwf	LCD_PORT	;// Envoyer commande
    	movlw	.30			;// 30 x 500µS
    	call	START_TEMPO ;// TEMPO 15 ms
    
    
    	movlw	0x25		;// Regulator resistor select 0x20..0x27
    	movwf	LCD_PORT	;// Envoyer commande
    	movlw	.30			;// 30 x 500µS
    	call	START_TEMPO ;// TEMPO 15 ms
    
    
    	movlw	0x81		;// Reference voltage register set
    	movwf	LCD_PORT	;// Envoyer commande
    	movlw	.30			;// 30 x 500µS
    	call	START_TEMPO ;// TEMPO 15 ms
    
    
    	movlw	0x18		;// Reference voltage 0..63
    	movwf	LCD_PORT	;// Envoyer commande
    	movlw	.30			;// 30 x 500µS
    	call	START_TEMPO ;// TEMPO 15 ms
    
    
    	movlw	0x40		;// initial display line 0x40..0x7f
    	movwf	LCD_PORT	;// Envoyer commande
    	movlw	.30			;// 30 x 500µS
    	call	START_TEMPO ;// TEMPO 15 ms
    
    
    	movlw	0xa7		;// Reverse display ON
    	movwf	LCD_PORT	;// Envoyer commande
    	movlw	.30			;// 30 x 500µS
    	call	START_TEMPO ;// TEMPO 15 ms
    
    
    	movlw	0xaf		;// display ON
    	movwf	LCD_PORT	;// Envoyer commande
    	movlw	.30			;// 30 x 500µS
    	call	START_TEMPO ;// TEMPO 15 ms
    
    
    
    ;-----------FIN DE L'INITIALISATION DU LCD-----------
    
    
    
    
    	bsf		STATUS,RP0	;// repasser banque 1
    	movlw	0xFF		;// B'11111111'
    	movwf	LCD_PORT	;// LCD_PORT en entrer (banque1)
    	bcf		STATUS,RP0	;// repasser banque 0
    
    	bsf	RW				;// RW 1				
    
    
    
    
    TEST_LCD_ON
    	btfss	DB5			;// Tester so DB5 = 1
    	call 	led@ON		;// NON, LED_LCD_STATUS = ON
    	call 	led@OFF		;// OUI, LED_LCD_STATUS = OFF
    
    	goto	TEST_LCD_ON	;// Boucler
    
    
    	END 				;// directive FIN de programme
    
    
    ;-----------!!!!!!!!!!!!!!!!!! END !!!!!!!!!!!!!!!!!!--------------
    source du code : http://users.skynet.be/fb138099/627_04_LCD.asm


    Alors j’ai déjà quelques questions …
    Première question est que normalement je devrai avoir ma LED « LED_LCD_STATUS » allumé. Car je lie le registre DB5 du LCD, et vu que normalement après l’initialisation, le LCD devrai être sur ON.
    Je pense donc qu’il doit y avoir un problème.

    Read Status : http://users.skynet.be/fb138099/READ_S.JPG

    2em question, j’ai configuré mon LCD pour fonctionner en mode « Reverse display ON » ce qui voudrais dire (si je ne me trompe pas) que mon LCD devrai être avec les PIXEL noir, même si je n’ai encore envoyé de données à l’afficher LCD, une fois l’initialisation terminer.
    Alors que ici rien !

    3em question, ce qui me parais bizarre dans mon code, c’est que contrairement à la version C++ du code programmer pour le PIC18F452 sur le quelle je me suis quand même baser avec l’aide du datasheet pour créé mon code ASM, c’est que je n’ai pas de clock.
    Étant donnée que je travaille en mode 8 bit et non en série comme le code C++ sur le quelle je me suis basé, j’errais donc voulu savoir si j’ai mal comprit le datasheet et si il me faut aussi gérer un clock, et dans le cas ou je dois le gérer si vous pourriez m’en dire quelques mots.


    Voila je remercie d’avance déjà tout ceux qui ont lu mon post et m’aiderons a la réalisation de se programme.
    Je joins si dessous les datasheet que j’ai trouvés sur le contrôleur KS0713.

    Datasheet :
    http://docs-europe.electrocomponents...6b806dda2d.pdf

    http://www.ortodoxism.ro/datasheets/...c/mXyzvqzy.pdf

    -----

  2. #2
    dreamstyle

    Re : Lcd Ks0713

    Personne pour me donner un petit coup de main SVP ?

Discussions similaires

  1. [LCD] info sur LCD graphique LM6300 ?
    Par invite565767eb dans le forum Électronique
    Réponses: 2
    Dernier message: 02/12/2010, 22h01
  2. [Brun] Lcd Benq Alimentation d'un ecran LCD!!! [résolu]
    Par invitec87978c8 dans le forum Dépannage
    Réponses: 19
    Dernier message: 17/06/2008, 14h25
  3. Tv LCD versus Moniteur LCD avec tunner tv
    Par invite12faae6c dans le forum Électronique
    Réponses: 1
    Dernier message: 10/03/2007, 16h39
  4. Lcd
    Par invitea55bf3fa dans le forum Matériel - Hardware
    Réponses: 0
    Dernier message: 15/08/2006, 13h24
  5. lcd
    Par jj dans le forum Électronique
    Réponses: 2
    Dernier message: 07/11/2003, 10h07
Découvrez nos comparatifs produits sur l'informatique et les technologies.