mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik lcd ansteuerung mit pic16f877


Autor: adrianb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,
also ich kriege das lcd nicht initialisiert... es handelt sich um den 
hd44780a00 chip... die timings etc habe ich alle sogar etwas länger 
gemacht jedoch funzt das immer noch nicht... weiss nicht mehr weiter! 
kann mir evtl jemand weiter helfen??
das lcd ist "4 zeilig" mit je 20 zeichen und zeile eins und drei sind 
dunkle balken (kontrast hab ich eingestellt)... ist das ein 2*40 zeilen 
display in dem fall?

Autor: adrianb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
;**********************************************************************************
;*
;* Title:       E+H Bypass Befüllungsanlage
;* Version:      Beta 0.1
;* Date:      20.08.2007
;* Build Date:
;* Author:      Adrian Bühlmann im Auftrag der
;*          Heinrich Kübler AG
;*          Ruessenstrasse 4
;*          CH-6340 Baar
;
;*
;* Description:    Mit dieser Steuerung können die E+H Bypässe
;*          mit Hilfe eines Bedienpanels befüllt bzw.
;*          entleert werden.
;*          Es werden Magnetventile sowie die Wasser-
;*          pumpe gesteuert. Dabei gelten folgende
;*          Definitionen:
;*
;*  Inputs:      Tast_Dauer_Be  --<  PortD,0
;*          Tast_Dauer_Ent  --< PortD,1
;*          Tast_Trig_Be  --< PortD,2
;*          Tast_Trig_Ent  --< PortD,3
;*          Tast_Vent1    --< PortD,4
;*          Tast_Vent2    --< PortD,5
;*          Tast_Pumpe    --< PortD,6
;*
;*  Outputs:    Vent1       -->  PortA,0
;*          Vent2       -->  PortA,1
;*          Pumpe       -->  PortA,2
;*
;*          LCD_RS      --> PortC,0
;*          LCD_RW      --> PortC,1
;*          LCD_E      --> PortC,2
;*          LCD_D1      --> PortC,3
;*          LCD_D2      --> PortC,4
;*          LCD_D3      --> PortC,5
;*          LCD_D4      --> PortC,6
;*
;*
;**********************************************************************************


;*** Definitions ***

; Processor
  list  p=16f877            ; Prozessordefinition

; Includefile
  #include "p16f877.inc"          ; Include Prozessorfile
  errorlevel  -302            ; error302 ausblenden

; Configurationbit
  __CONFIG b'11011100111010'        ; Prozessorkonfigurationen

; Variablen

loops    EQU  0x24
loops2    EQU  0x25

; Ports
#define Tast_Dauer_Be    PORTD,0      ;\
#define Tast_Dauer_Ent    PORTD,1      ;|
#define Tast_Trig_Be    PORTD,2      ;|
#define Tast_Trig_Ent    PORTD,3      ; > Tasterdefinitionen
#define Tast_Vent1      PORTD,4      ;|
#define Tast_Vent2      PORTD,5      ;|
#define Tast_Pumpe      PORTD,6      ;/

#define  LCD_E        PORTC,0      ;\
#define LCD_RS        PORTC,1      ;|
#define LCD_RW        PORTC,3      ;|
#define LCD_DB4        PORTC,4      ; > LCD Daten- und Steuerleitungen
#define LCD_DB5        PORTC,5      ;|
#define LCD_DB6        PORTC,6      ;|
#define LCD_DB7        PORTC,7      ;/

#define Vent1        PORTA,0      ;\
#define Vent2        PORTA,2      ; > Peripherie
#define Pumpe        PORTA,4      ;/
#define LEDstat        PORTA,3

;*** Program Start ***

      ORG    00h
      nop
      goto  INIT

;*** Initialisierung ***

      ORG  10h
INIT    bcf    STATUS, RP0
         bcf    STATUS, RP1
      clrf  PORTA
      clrf  PORTB
      clrf  PORTC
      clrf  PORTD
      clrf  PORTE
      clrf  PCLATH
      movlw  b'00000000'    ;20 Interrupt
      movwf  INTCON
      movlw  b'00000000'    ;51 Timer1 
      movwf  T1CON
      movlw  b'00000000'    ;55 Timer2
      movwf  T2CON
      movlw  b'00000000'    ;58 Capture, Compare, PWM
      movwf  CCP1CON
      movlw  b'00000000'    ;65 Serial Port
      movwf  SSPCON
      movlw  b'00000000'    ;96 USART
      movwf  RCSTA
      movlw  b'00000000'    ;111 AD Wandler
      movwf  ADCON0



      bsf    STATUS, RP0
      movlw  b'11111111'    ;19 Timer, WDT, Pullup, Interrupt
      movwf  OPTION_REG
      movlw  b'00000000'    ;30 Data Direction Port A
      movwf  TRISA
      movlw  b'00000000'    ;32 Data Direction Port B 
      movwf  TRISB
      movlw  b'00000000'    ;34 Data Direction Port C
      movwf  TRISC
      movlw  b'01111111'    ;35 Data Direction Port D
      movwf  TRISD
      movlw  b'00000000'    ;36 Data Direction Port E
      movwf  TRISE
      movlw  b'00000000'    ;66 Serial Port
      movwf  SSPCON2
      movlw  b'00000010'    ;95 USART
      movwf  TXSTA
      movlw  b'00000000'    ;97 BRG
      movwf  SPBRG
      movlw  b'00000110'    ;112 AD Wandler
      movwf  ADCON1
      bcf    STATUS, RP0


INITRAM    movlw  20h        ; Ram von 20 - 7f Hex nullen (Bank0)
      movwf  FSR
loop1    clrf  INDF
      incf  FSR,f
      movf  FSR,w
      sublw  80h
      bnz    loop1
      movlw  0a0h      ; Ram von a0 - ef Hex nullen (Bank1)
      movwf  FSR
loop2    clrf  INDF
      incf  FSR,f
      movf  FSR,w
      sublw  0f0h
      bnz    loop2

      goto  Start  
  
;** Subroutinen *********************************************************************************

WAIT
top        movlw   .110          
           movwf   loops2
top2      nop                   
           nop
           nop
           nop
           nop
           nop
           decfsz  loops2, F    
           goto    top2          
           decfsz  loops, F      
           goto    top           
           retlw  0            

InitLCD    movlw  d'45'
      movwf  loops
      call  WAIT
      bcf    LCD_RS
      bcf    LCD_RW
      bcf    LCD_DB7
      bcf    LCD_DB6
      bsf    LCD_DB5
      bsf    LCD_DB4
      call  Flanke  
      movlw  d'5'
      movwf  loops
      call  WAIT

      bcf    LCD_DB7
      bcf    LCD_DB6
      bsf    LCD_DB5
      bsf    LCD_DB4
      call  Flanke
      movlw  d'1'
      movwf  loops
      call  WAIT

      bcf    LCD_DB7
      bcf    LCD_DB6
      bsf    LCD_DB5
      bsf    LCD_DB4
      call  Flanke
      movlw  d'5'
      movwf  loops
      call  WAIT

      bcf    LCD_DB7      ;Fnction set
      bcf    LCD_DB6
      bsf    LCD_DB5
      bcf    LCD_DB4
      call  Flanke      

      bcf    LCD_DB7      ;2zeilen
      bcf    LCD_DB6
      bsf    LCD_DB5
      bcf    LCD_DB4
      call  Flanke

      bsf    LCD_DB7      ;function set 1
      bcf    LCD_DB6
      bsf    LCD_DB5
      bcf    LCD_DB4
      call  Flanke
      movlw  d'15'
      movwf  loops
      call  WAIT

      bcf    LCD_DB7      ;display an 1
      bcf    LCD_DB6
      bcf    LCD_DB5
      bcf    LCD_DB4
      call  Flanke

      bsf    LCD_DB7      ;display an 2
      bsf    LCD_DB6
      bcf    LCD_DB5
      bcf    LCD_DB4
      call  Flanke
      movlw  d'15'
      movwf  loops
      call  WAIT

      bcf    LCD_DB7      ;display löschen1
      bcf    LCD_DB6
      bcf    LCD_DB5
      bcf    LCD_DB4
      call  Flanke

      bcf    LCD_DB7      ;display löschen2
      bcf    LCD_DB6
      bcf    LCD_DB5
      bsf    LCD_DB4
      call  Flanke
      movlw  d'15'
      movwf  loops
      call  WAIT

      bcf    LCD_DB7      ;entry mode set1
      bcf    LCD_DB6
      bcf    LCD_DB5
      bcf    LCD_DB4
      call  Flanke

      bcf    LCD_DB7
      bsf    LCD_DB6
      bsf    LCD_DB5
      bcf    LCD_DB4
      call  Flanke
      movlw  d'15'
      movwf  loops
      call  WAIT
      return


Flanke    bsf    LCD_E
      nop
      movlw  d'15'
      movwf  loops
      call  WAIT
      bcf    LCD_E
      return






;** Main ****************************************************************************************

Start    bsf    LEDstat
      call  InitLCD  
      bcf    LEDstat

    END  

;************************************************************************************************

Autor: Nix Bascom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kenne mich in PIC ASM nicht aus, aber schau mal bei dem Link vorbei.
Sehr gute Seite.
In C ginge es besser

http://www.sprut.de/index.htm

Gruß

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.