Ziemlich schwierig: LCD Display 4x16 KS0066
Dienstag, 22. Mai 2012
 
 

PIC Mikrocontroller Forum  |  PIC Mikrocontroller  |  CCS Compiler  |  LCD (CCS)  |  Ziemlich schwierig: LCD Display 4x16 KS0066 « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Ziemlich schwierig: LCD Display 4x16 KS0066  (Gelesen 6758 mal)
 
Schnofe
Newbie
*
Offline Offline

Beiträge: 3


Profil anzeigen
« am: Februar 09, 2007, 19:43:14 »

Hey ihr,

bitte unbedingt um Hilfe bei folgendem Problem: Wie kann ich ein Display mit 4x16 Zeichen, bei welchem der KS0066 als Controller verwendet wird ansprechen? Zudem finde ich auch kein Datenblatt, wo das beschrieben wird. Man findet lediglich ein Datenblatt zum KS0066u, der aber anscheinend nur 2 Zeilen kann.
Mit dem lcd.c vom CCS compiler fuktioniert nix.

Danke im voraus. Stefan

P.S.: Nur so nebenbei: Kennt ihr eine gute Seite, wo USB mit PIC GUT beschrieben ist
Gespeichert
Bernd
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 3815



Profil anzeigen
« Antworten #1 am: Februar 09, 2007, 20:13:26 »

Hast Du ein Datenblatt des Displays?


Viele Grüße

Bernd
Gespeichert

Stampede
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 969



Profil anzeigen WWW
« Antworten #2 am: Februar 09, 2007, 20:58:33 »

Hallo,

Zitat
P.S.: Nur so nebenbei: Kennt ihr eine gute Seite, wo USB mit PIC GUT beschrieben ist
http://sprut.de/electronic/interfaces/usb/usb.htm
bus allgemein:
http://www.mqp.com/ums_1.htm und www.usb.org

Gruß, Stefan
Gespeichert

mogli
Hero Member
*****
Offline Offline

Beiträge: 580



Profil anzeigen
« Antworten #3 am: Februar 10, 2007, 00:56:06 »

hallo

fürs Display kann ich dir auch sprut.de empf.
hat die beste beschreibung auf deutsch im netz

wenns die C comp. nicht fertig haben machs gleich in asm ist wirklich leicht diese zeilendisplays zum ansteuern

Code:
; LCD suproutine
; Variablen = Access
; 8bit modus,
#define RSTRIS  TRISB,4
#define ETRIS  TRISB,6
#define RWTRIS  TRISB,5
#define RS  LATB,4
#define E  LATB,6
#define RW  LATB,5
#define BUSY  PORTD,7
#define DATAOUT  LATD
#define DATAIN  PORTD
#define DATAKONTROL  TRISD
; LCDinit Anfang
lcd_Busy
       
       SETF DATAKONTROL      ; TRISD Data Direction Register INPUT
       BCF RS                ;     RS:off
       BSF RW               ;     R/W:on
   
       BSF E               ; Displayinterface on
       NOP
       NOP
B2     BTFSC BUSY         ; LOOK BUSY
       BRA  B2
       BCF E               ; Displayinterface off
       
       CLRF DATAKONTROL      ; TRISD Data Direction Register OUTPUT
       BCF RW               ;     R/W:OFF
       return     
   
lcdinit

       
       CLRF DATAKONTROL      ; TRISD Data Direction Register OUTPUT
       BCF RSTRIS
       BCF ETRIS
       BCF RWTRIS
       
;15ms wait
   MOVLW   B'01110110'     ; delay with 118 load
   MOVWF   DELAYCLOCK0         ;
wait15ms 
   TSTFSZ DELAYCLOCK0
   BRA wait15ms
   
   BCF RS             ;  RS:off
   BCF RW             ;  R/W:off   
           
   MOVLW   B'00110000'   ; Function Set1
   MOVWF   DATAOUT      ;
   BSF E           ; Displayinterface on
   NOP
   NOP
   NOP

   BCF E           ; Displayinterface off
   
   
;4,1ms wait
   MOVLW   B'00100001'     ; delay with 33 load
   MOVWF   DELAYCLOCK0         ;
wait41ms
   TSTFSZ DELAYCLOCK0
   BRA wait41ms

   MOVLW   B'00110000'     ; Function Set2
   MOVWF   DATAOUT         ;
   BSF E             ; Displayinterface on
   NOP
   NOP

   BCF E             ; Displayinterface off
   
   
;100us wait
   MOVLW   B'00000001'     ; delay with 1 load
   MOVWF   DELAYCLOCK0         ;
wait100us
   TSTFSZ DELAYCLOCK0
   BRA wait100us

   MOVLW   B'00110000'     ; Function Set3
   MOVWF   DATAOUT         ;
   BSF E             ; Displayinterface on
   NOP
   NOP

   BCF E             ; Displayinterface off
   
   Call  lcd_Busy

   MOVLW   B'00111000'     ; Function Set4
   MOVWF   DATAOUT         ;
   BSF E             ; Displayinterface on
   NOP
   NOP

   BCF E             ; Displayinterface off
   
   Call  lcd_Busy

   MOVLW   B'00001100'     ; Display ON/OFF
   MOVWF   DATAOUT         ;
   BSF E             ; Displayinterface on
   NOP
   NOP

   BCF E             ; Displayinterface off
   
   Call  lcd_Busy

   MOVLW   B'00000001'     ; Clear Display
   MOVWF   DATAOUT         ;
   BSF E             ; Displayinterface on
   NOP
   NOP

   BCF E             ; Displayinterface off
   
   Call  lcd_Busy

   MOVLW   B'00000110'     ; Entry Mode Set
   MOVWF   DATAOUT         ;
   BSF E             ; Displayinterface on
   NOP
   NOP

   BCF E             ; Displayinterface off
   
   MOVLW   B'00001100'     ; delay with 33 load
   MOVWF   DELAYCLOCK0         ;
wait412ms
   TSTFSZ DELAYCLOCK0
   BRA wait412ms


   RETURN       
 

; Display init ende
 


  ; zeichen holen und ausgeben auf LCD
lcd_ausgaberoad
   Call  lcd_Busy
   BSF RS               ;    RS:on
   BCF RW               ;    R/W:off
   MOVFF LCD_Ausgabe_temp, DATAOUT    ;  DATAword schreiben
   BSF E                ; Displayinterface on
   NOP
   BCF E                ; Displayinterface off
   CLRF DATAOUT
   
   Return


  ; zeichen holen und ausgeben auf LCD
lcd_ausgaberoadzeile1
;Adresse setzen DDRAM 00-0F
   BCF RS             ;    RS:off
   BCF RW             ;    R/W:off   
           
   MOVLW   B'10000000'   ; load 0x00
   MOVWF   DATAOUT       ;
   BSF E                 ; Displayinterface on
   NOP
   NOP
   BCF E                 ; Displayinterface off

   ; zeile1 LCD_Schreiben_StartenZ1   
   LFSR  FSR0, 100h       ; FSR0 zeigt auf RAM-Adresse 0x100
   MOVLW   B'00010000'   ; load 0F
   MOVWF   zeilenwiederholung       ;

zeile1wiederholung
   MOVF  POSTINC0,0,0
   MOVWF LCD_Ausgabe_temp
   CALL lcd_ausgaberoad
   DECFSZ zeilenwiederholung
   BRA zeile1wiederholung

   Return

  ; zeichen holen und ausgeben auf LCD
lcd_ausgaberoadzeile2
;Adresse setzen DDRAM 40-4F
   Call  lcd_Busy
   BCF RS             ;   RS:off
   BCF RW             ;   R/W:off   
           
   MOVLW   B'11000000'   ; load 0x40
   MOVWF   DATAOUT       ;
   BSF E                 ; Displayinterface on
   NOP
   NOP
   BCF E                 ; Displayinterface off

   ; zeile1 LCD_Schreiben_StartenZ1   
   LFSR  FSR0, 0x11B        ; FSR0 zeigt auf RAM-Adresse 0x11B
   MOVLW   B'00010000'   ; load 0F
   MOVWF   zeilenwiederholung       ;

zeile2wiederholung
   MOVF  POSTINC0, 0
   MOVWF LCD_Ausgabe_temp
   CALL lcd_ausgaberoad
   DECFSZ zeilenwiederholung
   BRA zeile2wiederholung

   Return
Gespeichert
Schnofe
Newbie
*
Offline Offline

Beiträge: 3


Profil anzeigen
« Antworten #4 am: Februar 16, 2007, 01:13:27 »

Danke für das Assemblerfile, aber ich habe den 4-Bit Modus!
Ich bin jetzt nach sagenhafte 10 Stunden so weit, dass ich Buchstaben ausgeben kann. Wenn man sich reinkniet geht es ja!

Jetzt habe ich eine andere Frage: Ich habe den PIC18F4550. Kann es sein, dass bei dem nur auf PIN C6/C7 RS232 geht, weil ich hab es auf C4/C5 (weil ich es dann ganz einfach mit einem Schalter zwischen USB und RS232 schalten kann) aber das geht nicht. Da kommen einfach keine Signale vom PIN raus. Wenn ich das selbe bei PIN C6 mache, kann ich die Signal messen. Sowas seltsames hatte ich auch schon lange nicht mehr!

Und 2. Frage:
Ich wollte mittels CDC auf den PIC mittels USB zugreifen.
Aber leider reicht das im PIC nicht:
Code:
#define __USB_PIC_PERIF__ 1
#include <18F4550.h>
 #fuses HS,NOWDT,NOPROTECT
 #use delay(clock=4000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

#include <usb_cdc.h>
void main(){
  printf("UND ES GEHT SCHON!");
}

Das sollte aber schon gehen (habe das Example usb_serial.c etwas abgespeckt). Kann mir jemand weiterhelfen? Kann man das mit einem Quarz Oszillator von 4 MHz überhaupt-geht usb mit allen Taktfrequenzen? Außerdem ist auch komisch, dass ich da nicht mal init oder soetwas machen muss!!!


Danke für die Antworten.
Schnofe

Edit: Bitte Code-Tags verwenden.
Bernd
« Letzte Änderung: Februar 16, 2007, 21:10:20 von Bernd » Gespeichert
Schnofe
Newbie
*
Offline Offline

Beiträge: 3


Profil anzeigen
« Antworten #5 am: März 02, 2007, 22:45:27 »

Kennst sich denn echt keiner bei USB aus?

Kann mir bitte jemand Helfen, wie ich ganz einfach CDC bei einem USB PIC verwenden kann?Huch?
Schnofe
Gespeichert
Stampede
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 969



Profil anzeigen WWW
« Antworten #6 am: März 02, 2007, 23:22:29 »

naja, USB ist ja son Thema für sich. Wenn mal im Forum von Microchip schauen. Es gibts auch noch eine RS232-to-USB-Migration als pdf.
Sonst ist das Buch "USB 2.0 Complete" von Jan Axelson empfehlen, ISBN 3-8266-1511-5 .

Eine Init vom USB ist unbedingt notwendig, schließlich muss ja festgelegt werden, ob ein Low- oder Fullspeed oder angemeldet werden soll. Abhängig davon ist auch, welcher Quarz verwendet werden soll, ob die interne oder externe  Peripherie benutzt wird etc. Mit 4MHz ist bei entsprechend eingestelltem PLL und Vorteiler beide Modi, also Low- und Fullspeed möglich.

Zitat
Jetzt habe ich eine andere Frage: Ich habe den PIC18F4550. Kann es sein, dass bei dem nur auf PIN C6/C7 RS232 geht, weil ich hab es auf C4/C5 (weil ich es dann ganz einfach mit einem Schalter zwischen USB und RS232 schalten kann) aber das geht nicht. Da kommen einfach keine Signale vom PIN raus. Wenn ich das selbe bei PIN C6 mache, kann ich die Signal messen. Sowas seltsames hatte ich auch schon lange nicht mehr!

PIN C4/C5 können, wenn sie nicht als USB-Pins genutzt werden, NUR als Inputs verwendet werden. Das bedeutet, dass diese für RS232 definitiv nicht tauglich sind. Die  PINs C6/7 sind mit dem USART-Modul verbunden, dh nur diese können die Funktionen aus der rs232.h (oder wie sie heißt) nutzen. Falls andere Pins benutzt werden sollen, muss RS232 in Software implementiert werden. Dazu sind aber C4/C5 nicht in der Lage.

Gruß Stefan

Edit: Der Thread ist für USB nicht unbedingt der geeigneste.
Gespeichert

Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  

Powered by MySQL Powered by PHP Made for Mozilla (Firefox) Made for Internet Explorer
Seite erstellt in 0.114 Sekunden mit 20 Zugriffen.
 
Top! Top!