Teade

Collapse

Foorumi reeglid.

Foorumi reeglistik on uuendatud. Palume tutvuda ja arvesse võtta.
See more
See less

LCD programm

Collapse
X
 
  • Filter
  • Kellaaeg
  • Show
Clear All
new posts

    #16
    ei ei ikka LPT pordiga juhin seda jah... proovin seda koodi ka siis...

    kahjuks ei saa VB'd kasutada kuna kõik arvutid on XP'ga üle valatud kuid niipalju kui ma leidsin, ei olnud VB XP'st jälgegi...

    lisaks veel selle, et ma ei saa aru ka seda, kuidas ma ikkagi neid tähti sinna saadan... teen mis tahan, aga lihtsalt ei lähe...
    kas ma pean mingeid kindlaid data pine higheerima? kui jah, siis miks see ei tööta mul... skeemis on kõik ilusti (peaks vähemalt olema) 5V jookseb ilusti sisse toitekast jne ja kontrast on potekaga olemas, aga ikkagi ei tekki mu ekraanile mitte midagi :'(

    Comment


      #17
      njaa... kui muidugi viitsite, siis võite saata ka täis programmi kas basicus (*.bas) või asmis(*.asm) compileerin ära ja testin, kas mul see asi yldse töötab... siis üritan aru saada ja ise midagi teha...

      Comment


        #18
        Ei saa aru, miks sa ei saa/taha 4 juhet oma valmis asjale lisada ja 8 bit-i kasutada.
        Hea asi LCD tundma õppimiseks
        http://www.geocities.com/dinceraydin.../djlcdsim.html

        Comment


          #19
          sellepärast, et see asi ei jää arvuti kylge vaid liigub edasi 8 või 18 jalase pici kylge, kus 8 juhet on tappev juba...

          Comment


            #20
            Esiteks peab tegema LCD-le initi ja see võib sul natca teistsugune olla. Ilma initita võid displeid paluda või ähvardada, mitte midagi ei juhtu
            Teiseks - LCD on vastikult aeglane tükk, pane peale iga käsku mingi viide, kasvõi 100mS ja proovi uuesti.
            Ja lõpuks - sa ikka mäletad et käsk ja daata erinesid RS biti väärtuse poolest? Ära unusta neid otsi võngutada. Ja iga käsu "kinnistamiseks" saada En otsaga 1 pisike pulss, kindluse mõttes 10 ms, hiljem võid lühendada.
            - Vend Hieronymus tunneb Motorola toodete nimekirja kõige paremini, las tema ütleb.
            - Motorola poolt loodud kiipide hulgas ei ole teda üles tähendatud. - Tähendab: ta on Intelist!

            Comment


              #21
              ei jah nendest pausidest saan aru, aga vot just see init...
              kuidas seda teha ja mida see tähendab jne et nagu kust ma selle õige järjekorra saaksin või nagu milline see õige on...
              muust olen aru saanudma arvan...

              Comment


                #22
                proovisin sellist koodi:
                Kood:
                'start init
                out 888, 0
                call w8
                out 888, 120
                out 888, 124
                call w8
                out 888, 0
                
                call w8
                out 888, 120
                out 888, 124
                call w8
                out 888, 0
                
                'end init
                
                'main
                out 888, 1
                out 888, 41
                out 888, 45
                call w8
                out 888, 0
                end
                
                sub w8
                timer 100,[go]
                wait
                [go]
                end sub

                kuid siisgi midagi...
                milles peitub viga?

                Comment


                  #23
                  Paluks LCD ühendust (mis pinn millise pordi otsaga). Praegune kood on küll kahtlane...
                  - Vend Hieronymus tunneb Motorola toodete nimekirja kõige paremini, las tema ütleb.
                  - Motorola poolt loodud kiipide hulgas ei ole teda üles tähendatud. - Tähendab: ta on Intelist!

                  Comment


                    #24
                    db7---6
                    db6---5
                    db5---4
                    db4---3
                    E------2
                    RW---1
                    RS----0

                    (data number on see siis lpt küljes)

                    Comment


                      #25
                      Kood:
                       list p=16f84
                      ;**************************************************************
                      ;* 	Pinbelegung
                      ;*	----------------------------------	
                      ;*	PORTA: 0 - 
                      ;* 1 -
                      ;* 2 -	
                      ;* 3 -
                      ;* 4 -
                      ;*	PORTB:	0 LCD Display E
                      ;* 1 	
                      ;* 2 LCD Display RS
                      ;* 3 LCD Display R/W	
                      ;* 4-7 LCD Display D4 .. D7 
                      ;*	
                      ;**************************************************************
                      ;
                      ;sprut (zero) Bredendiek 05/2000 (mod. 15.01.2002)
                      ;
                      ; LCD-Display mit Matrixtastatur
                      ;
                      ; Taktquelle: 4 MHz
                      ;
                      ;**************************************************************
                      ; Includedatei für den 16F84 einbinden
                      
                       #include <P16f84.INC>
                      
                      ; Configuration festlegen
                      ; bis 4 MHz: Power on Timer, kein Watchdog, XT-Oscillator
                      
                       __CONFIG _PWRTE_ON & _WDT_OFF & _XT_OSC
                      
                      ;**************************************************************
                      ; Variablen festlegen
                      
                      w_copy Equ 0x20
                      s_copy Equ 0x21
                      LcdDaten Equ 0x22
                      LcdStatus Equ 0x23
                      loops EQU 0x24
                      loops2 EQU 0x25
                      
                      ; Constanten festlegen
                      
                      PORTC equ PORTB &#59; LCD-Control-Port
                      PORTD equ PORTB &#59; LCD-Daten-Port
                      LcdE equ 0 &#59; enable Lcd
                      LcdRw equ 3 &#59; read Lcd
                      LcdRs equ 2 &#59; Daten Lcd (nicht control)	
                      Ini_con Equ B'00000000'&#59; TMR0 -> Intetupt disable
                      Ini_opt Equ B'00000010'&#59; pull-up
                      
                      ;********************************************************
                      ; Das Programm beginnt mit der Initialisierung
                      
                      Init bsf   STATUS, RP0&#59; Bank 1
                       movlw  Ini_opt   &#59; pull-up on
                       movwf  OPTION_REG 
                       movlw B'11111000'&#59; RA0 .. RA2 outputs, RA3, RA4 input 
                       movwf TRISA &#59; 
                       movlw B'00000000'&#59; PortB alle outputs 
                       movwf TRISB
                       bcf   STATUS, RP0&#59; Bank 0
                       clrf PORTA 
                       clrf PORTB 
                        
                       movlw  Ini_con   &#59; Interupt disable
                       movwf  INTCON  
                      
                       call InitLCD &#59; Display initialisieren
                      
                      ; am LCD "Hallo" ausgeben
                       
                       movlw 'H'
                       movwf LcdDaten
                       call OutLcdDaten
                       movlw 'a'
                       movwf LcdDaten
                       call OutLcdDaten
                       movlw 'l'
                       movwf LcdDaten
                       call OutLcdDaten
                       movlw 'l'
                       movwf LcdDaten
                       call OutLcdDaten
                       movlw 'o'
                       movwf LcdDaten
                       call OutLcdDaten
                      
                       sleep
                      Main  
                       Goto Main 
                      
                      ;*****************************************************************	
                      ;Zeitverzögerung um loops * 1 ms
                      ; 4MHz externer Takt bedeutet 1MHz interner Takt
                      ; also dauert 1 ms genau 1000 Befehle
                      ; 110 Schleifen a 9 Befehle sind 990 Befehle = 0.99 ms
                      ; die restlichen 10 Befehle für Einsprung und Rücksprung
                      
                      WAIT
                      top   movlw  .110     &#59; timing adjustment variable (1ms)
                           movwf  loops2
                      top2   nop          &#59; sit and wait
                           nop
                           nop
                           nop
                           nop
                           nop
                           decfsz loops2, F   &#59; inner loops complete?
                           Goto  top2     &#59; no, go again
                                      &#59;
                           decfsz loops, F   &#59; outer loops complete?
                           Goto  top      &#59; no, go again
                           retlw  0       &#59; yes, return from subWAIT
                      
                      ;**********************************************************	
                      ; Initialisierung des LCD-Displays
                      
                      InitLCD
                       movlw D'255' &#59; 250 ms Pause nach dem Einschalten
                       movwf loops 
                       call WAIT 
                      
                       movlw B'00110000'&#59; 1
                       movwf PORTB
                       bsf PORTB, LcdE
                       nop 
                       bcf PORTB, LcdE
                       
                       movlw D'50' &#59; 50 ms Pause
                       movwf loops
                       call WAIT
                       
                       movlw B'00110000'&#59; 2
                       call Control8Bit
                       movlw B'00110000'&#59; 3
                       call Control8Bit
                       movlw B'00100000'&#59; 4
                       call Control8Bit
                      
                       movlw B'00000001'&#59; löschen und cusor home
                       call OutLcdControl 
                       movlw B'00101000'&#59; 5 function set, 4-bit 2-zeilig, 5x7
                       call OutLcdControl 
                       movlw B'00001000'&#59; 6 display off
                       call OutLcdControl
                       movlw B'00000110'&#59; 7 entry mode, increment, disable display-shift
                       call OutLcdControl
                       movlw B'00000011'&#59; 8 cursor home, cursor home
                       call OutLcdControl
                       movlw B'00001111'&#59; 9 display on
                       call OutLcdControl
                       Return
                      
                      ; ein Steuerbyte 8-bittig übertragen
                      Control8Bit
                       movwf PORTB
                       bsf PORTB, LcdE
                       nop
                       bcf PORTB, LcdE
                       movlw D'10'
                       movwf loops
                       call WAIT
                       Return
                      
                      ; darauf warten, daß das Display bereit zur Datenannahme ist
                      LcdBusy
                       bsf PORTA, 1&#59; Test LED 1 on
                          bsf   STATUS, RP0&#59; make Port B4..7 input
                       movlw B'11110000'
                       iorwf  TRISB, f 
                          bcf   STATUS, RP0
                      BusyLoop 
                       bcf PORTC, LcdRs
                       bsf PORTC, LcdRw&#59; Lesen
                       bsf PORTC, LcdE
                       nop
                       movf PORTD, w
                       movwf LcdStatus
                       bcf PORTC, LcdE
                       nop
                       bsf PORTC, LcdE&#59; Enable
                       nop
                       bcf PORTC, LcdE
                       btfsc LcdStatus, 7&#59; teste bit 7
                       Goto BusyLoop
                       bcf PORTC, LcdRw
                          bsf   STATUS, RP0&#59; make Port B4..7 output
                       movlw B'00001111'
                       andwf  TRISB, f  
                          bcf   STATUS, RP0
                       bcf PORTA, 1&#59; Test LED 1 off
                       Return 
                      
                      ; ein Byte mit Steuerdaten von LcdDaten zum Display übertragen
                      OutLcdControl
                       movwf LcdDaten
                       call LcdBusy
                       movf LcdDaten, w
                       andlw H'F0'
                       movwf PORTD &#59; Hi-teil Daten schreiben
                       bsf PORTC, LcdE
                       nop
                       bcf PORTC, LcdE&#59; Disable LcdBus
                       swapf LcdDaten, w
                       andlw H'F0'
                       movwf PORTD &#59; Lo-teil Daten schreiben
                       bsf PORTC, LcdE
                       nop
                       bcf PORTC, LcdE&#59; Disable LcdBus
                       Return
                      
                      ; ein Datenbyte von LCDDaten zum Display übertragen
                      OutLcdDaten
                       bsf PORTA, 2&#59; Test LED 2 on
                       movwf LcdDaten
                       call LcdBusy
                       movf LcdDaten, w
                       andlw H'F0'
                       movwf PORTD &#59; Hi-teil Daten schreiben
                       bsf PORTC, LcdRs&#59; Daten
                       bsf PORTC, LcdE&#59; Enable LcdBus
                       nop
                       bcf PORTC, LcdE&#59; Disable LcdBus	
                       swapf LcdDaten, w
                       andlw H'F0'
                       movwf PORTD &#59; Lo-teil Daten schreiben
                       bsf PORTC, LcdRs&#59; Daten
                       bsf PORTC, LcdE
                       nop
                       bcf PORTC, LcdE&#59; Disable LcdBus	
                       bcf PORTC, LcdRs&#59;
                       bcf PORTA, 2&#59; Test LED 2 on
                       Return
                      
                       End
                      leidsin mingi asmis tehtud koodirea 4bitisele
                      kas keegi suudaks initi ja natuke HELLOst basicusse ära tõlkida (või vähemalt kergemasse keelde...)

                      Comment


                        #26
                        kas ei oska siis keegi mulle initit välja kirjutada?

                        Comment


                          #27
                          ??? Kõik on ju kirjas! Saadad nimetet numbrid lcd-le, klõpsid vahepeal En-pinni.
                          Daata saatmisel pead saadetavat baiti enne mudima et ta juhtotsadele ei mõjuks. Sul on ju sama pordi otstel ka En, R/W ja RS. Nende seis peab jääma muutumatuks. Lisaks peab baiti nihutama 1 pos võrra vasakule kuna su LCD vanim bitt on pordi D6 küljes. Kasuta loogikaoperaatoreid JA & ning VÕI.
                          Assembleri listngus on tõepoolest kogu algoritm kirjas...
                          - Vend Hieronymus tunneb Motorola toodete nimekirja kõige paremini, las tema ütleb.
                          - Motorola poolt loodud kiipide hulgas ei ole teda üles tähendatud. - Tähendab: ta on Intelist!

                          Comment


                            #28
                            Originally posted by bloody-orc@Apr 30 2005, 17:59
                            kahjuks ei saa VB'd kasutada kuna kõik arvutid on XP'ga üle valatud kuid niipalju kui ma leidsin, ei olnud VB XP'st jälgegi...
                            kui sa mingit muud qbasic'ut vms kasutada üritad nt kerneliga asjade all, siis ei tule sellest midagi välja. NT (NT4, 2k ,xp) opsüssil on hal vahel, mis blokeerib pääsu riistvarasse programmide poolt.
                            VB'ga tehes tõmba inpout32.dll ja kasuta asja läbi selle. Mõnes masinas on vaja enne seda veel vaja keerata port väljundiks (LPT control pordis on üks bitt selleks), sest winduuz keerab ta sisendiks.
                            Katsetamiseks tõmba omale prog nimega relais timer ja klõpsi sellega bitte püsti ja maha.

                            Comment


                              #29
                              ei see lpt on ammu töökorda seatud ja ka paar asja sellega valmis tehtud aga praegu üritan seda initit välja nuputada ja testida... minu jaoks pea üleloomulik kuna pole varem tegelend sellise asjaga...

                              Comment


                                #30
                                Seda linki oled näinud?
                                - Vend Hieronymus tunneb Motorola toodete nimekirja kõige paremini, las tema ütleb.
                                - Motorola poolt loodud kiipide hulgas ei ole teda üles tähendatud. - Tähendab: ta on Intelist!

                                Comment

                                Working...
                                X