Teade

Collapse

Foorumi reeglid.

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

3310 LCD Picbasic Pro

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

    3310 LCD Picbasic Pro

    Tervist,

    Kas keegi teab mõnda lühikest, kompaktset ja lihtsat koodi kirjutatud picbasic'us, millega juhtida 3310 lcd. Ei ole vaja tähti, numbreid, pilte jne, lihtsalt koodijuppi mis suudaks ainult yhe või kaks punkti ekraanile kuvada. Võiks töötada 12f629 ja 16f628 pic'idel.
    Space is nothing without the code!

    #2
    Vs: 3310 LCD Picbasic Pro

    Ise ei viici kirjutada? Minu arust palju huvitavam, kui teiste koodi kasutada.
    Ja Basic on lihtne.
    Muidu leiad ühe koodijupi

    http://www.picbasic.co.uk/forum/showthread.php?t=8800

    Ühtteist leiab ka nii
    http://www.google.com/search?hl=en&q...=Google+Search

    Comment


      #3
      Vs: 3310 LCD Picbasic Pro

      Nii, tegin siin erinevaid katsetusi ja jõudsin järgmise lahenduseni:

      Kood:
      Device 12F629
      XTAL 4
      OSCCAL=$4C
      Config WDT_On, MCLRE_OFF, BODEN_ON, PWRTE_ON, INTRC_OSC_NOCLKOUT, CP_OFF,CPD_OFF
      
      CMCON=7
      TRISIO=%001000
      
      Symbol Lcd_DC = GPIO.0 'High(1)= Data ; Low(0) = Command
      Symbol Lcd_SDIN = GPIO.4
      Symbol Lcd_RST = GPIO.1 'Active = Low
      Symbol Lcd_CLK = GPIO.5 'Active = Low
      
      Dim LCDins As Byte
      Dim LCDdata As Byte
      
      
      LCDSetup:
      
      Low Lcd_RST
      DelayMS 80
      High Lcd_RST
      DelayMS 100
      LCDins = %00100001 'PD=0, V=0, H=1 Go to expended Instruction set
      GoSub SendInstruction
      LCDins = %10101001 'Vop is set to 4V
      GoSub SendInstruction
      LCDins = %00100000 'Return to Basic Instuction set
      GoSub SendInstruction
      LCDins = %00001100 'Display in normal mode 
      GoSub SendInstruction
      LCDdata = %00000001 'Some data....
      GoTo SendData
      
      SendInstruction:
      Low Lcd_DC
      DelayMS 100
      SHOut Lcd_SDIN, Lcd_CLK, msbfirst, [ LCDins ]
      DelayMS 200
      Return 
      
      SendData: 
      High Lcd_DC
      DelayMS 100
      SHOut Lcd_SDIN, Lcd_CLK, msbfirst, [ LCDdata ]
      DelayMS 200
      End
      Kirjutasin siis koodi kivisse, panin voolu taha ja lcd'le ilmusid suvalistesse kohtadesse punktid. Aga kas mitte ei peaks ilmuma ainult üks punkt? Või teen ma midagi valesti.

      NB! Kasutasin siin lehel toodud skeemi ühendamiseks.
      Space is nothing without the code!

      Comment


        #4
        Nii, muutsin koodist selle osa

        Kood:
        SendData: 
        High Lcd_DC
        DelayMS 100
        SHOut Lcd_SDIN, Lcd_CLK, msbfirst, [ LCDdata ]
        DelayMS 200
        End
        selliseks, kuid ei midagi. Seekord ei tulnud isegi pilti ette.

        Kood:
        SendData:
        Lcd_SDIN = LCDdata.7 
        LCDdata = LCDdata << 1
        Lcd_CLK = 1
        Lcd_CLK = 0
        End
        Katsetasin eelmist koodi veel 16f627 peal aga jätkuvalt edutult (midagi ekraanile ei ilmu). Ahjaa, kummaline on veel see, et peale kolmandat kirjutamis korda ei suuda mu progpic2 enam leida/progeda pic12f629't.

        Äkki on kellegil mingeid ideid või oskab mind õigele teele juhatada?
        Space is nothing without the code&#33;

        Comment


          #5
          Proovisin ka sellist lahendust nagu kaasas olevas failis, kuid jätkuvalt mitte mingit edu.
          Lisatud failid
          Space is nothing without the code&#33;

          Comment


            #6
            Vs: 3310 LCD Picbasic Pro

            Proovi jätkata algse koodiga, kus ekraanile täpid ilmusid. Tegelikult peaks tekkima 1 täpp kuid kuna sa pole teinud ekraani puhastamist, kuvatakse sinu 1 täpp pluss kõik juhuslik daata, mis displei mällu pingestamisel tekib.
            Ma ei tunne eriti seda progemise keelt aga kui soovid, võin saata oma asmis kirjutatud algoritmid. Sealt saab ka suhtlemise välja lugeda. Esimese hooga sinu koodis vastuolusid ei märganud v.a. a viimase koodi lõik:
            Lcd_SDIN = LCDdata.7 Saadad vaid ühe biti!?
            ClrScr käsk on igal juhul vajalik.
            - 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


              #7
              Jaa nii oligi. Lihtsalt oligi vaja puhastada displei mälu . 12f629 peal töötab nyyd ilusti aga 16f627'l ei toimu veel midagi. Aga asmi algo võid saata küll, äkki saab midagi kasulikku, et lcd hakkaks tööle ka 16f627'me taga.

              Aga jh, see oli näpukas: Lcd_SDIN = LCDdata.7. On hoopis Lcd_SDIN = LCDdata . Igatahes jätkan katsetustega.
              Space is nothing without the code&#33;

              Comment


                #8
                12F629 peal sain kaasas (vaata faili proov.zip) oleva koodi lõpuks ilusti tööle. Proovisin sama koodi, mis väikse pic'i peal töötas, 16F628'l ja 16F627'l tööle saada aga tulutult. Aru ma ei saa miks see lcd suurte pic'ide taga töötada ei taha.
                Lisatud failid
                Space is nothing without the code&#33;

                Comment


                  #9
                  Vs: 3310 LCD Picbasic Pro

                  Kas asi on pidevas tsüklis? Kaasa arvatud init ja clear käsud? Siis sa ei jõua midagi märgata ja paistab et asi ei tööta. Teine võimalus on viga portide otste ühendamises LCDga. Ja mis taktiga prose käib, sisemise või välise kvartsiga? Äkki on liiga kiire ..
                  - 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


                    #10
                    Prosse töötab 4mhz välise kristalliga. Pidevat tsükklit ei ole ja paistab, et pordid on kah õieti ühendatud. Müstika! 12f629'l töötab aga 16f628 mitte.
                    Space is nothing without the code&#33;

                    Comment


                      #11
                      Vs: 3310 LCD Picbasic Pro

                      4 millihertsi ???
                      Kui sama kood töötab ühe prosega ja teisega mitte, saab viga olla ikkagi prose include failis. TEgid ise või oli olemas? Prosede registritel on veidi erinevad nimed ja mõned muud erinevused on ka.
                      Ossiga vaatasid, kas siinil üldse liigub miski? Ehk on reseti ots aktiivne ja prose resetis pidevalt?

                      PS. otste liigutamise vahele võib toppida viiteid.
                      PS1. http://parsek.yf.ttu.ee/~felc/lcd_funk.asm
                      viimati muutis kasutaja felch; 05 June 2008, 20:45.
                      - 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


                        #12
                        4mgeahertsi! Kõik failid tegin ise. Ei ole korralikku ossi millega vaadata (ainult mingi räbal vellemani digitaalne). Siis proovisin veel selle kõige esimese koodiga. 12f629'l töötas jätkuvalt aga 16f628'l mitte. Suurel picil proovisin panna kinni a/d muundureid, muuta kõik a ja b pordid väljunditeks jne. Ühendasin veel igat moodi ja erinevatesse portidesse lcd otsasid, kuid ikka tühjus ekraanil.

                        Esimene kood veelkord siin:
                        Kood:
                        Device 16F627  'pici tyyp
                        XTAL 4  'taki väärtus, 4mhz
                        
                        ALL_DIGITAL = TRUE  'kõik pordid digitaalsed, a/d muundurid kinni
                        PortA=0
                        TrisA=0
                        CMCON=7
                        
                        'katsetasin näiteks a pordiga
                        Symbol Lcd_RST = PortA.0  'ekraani reset port
                        Symbol Lcd_DC = PortA.1  'daata biti staatus
                        Symbol Lcd_SDIN = PortA.2  'daata port
                        Symbol Lcd_CLK = PortA.3  'taki port
                        
                        Dim LCDins As Byte  'defineeri muutujad
                        Dim LCDdata As Byte
                        
                        
                        Low Lcd_RST  'reseti port madalaks
                        DelayMS 80  'oota veits
                        High Lcd_RST  'reseti port kõrgeks tagasi
                        DelayMS 100  'oota veel
                        
                        LCDins = %00100001 'PD=0, V=0, H=1 Go to expended Instruction set
                        GoSub SendInstruction
                        LCDins = %11001000  'kontrast
                        GoSub SendInstruction
                        LCDins = %00100000 'Return to Basic Instuction set
                        GoSub SendInstruction
                        
                        'siin võiks ekraani puhastada aga hetkel ei tee seda, lihtsalt testimise
                        'eesmärgil. Ekraanile peaks ilmuma suvalistes kohtades asuvad punktid.
                        
                        LCDins = %00001100  'normaalne mood
                        GoSub SendInstruction
                        
                        LCDdata = %00000001  'peaks tegema ühe punkti kuhugi ekraanile
                        GoTo SendData
                        
                        SendInstruction:
                         Low Lcd_DC  'daata bit madalaks, nüüd saab saata käske ekraanile
                         DelayMS 100  'oota veits
                         SHOut Lcd_SDIN, Lcd_CLK, msbfirst, [ LCDins ]  'saada info ekraanile
                         'shiftout Lcd_Sdin, Lcd_Clk, msbfirst, [lcdins]  'võimalus kaks info saatmiseks
                         DelayMS 200  'oota
                        Return 
                        
                        SendData: 
                         High Lcd_DC  'daata bit kõrgeks, valmis saatma infot punkti kohta
                         DelayMS 100  'oota hetk
                         SHOut Lcd_SDIN, Lcd_CLK, msbfirst, [ LCDdata ]  'saada info ekraanile
                         'shiftout Lcd_Sdin, Lcd_Clk, msbfirst, [lcddata]  'ka nii saab infot saata
                         DelayMS 200  'oota natuke
                        End
                        Space is nothing without the code&#33;

                        Comment


                          #13
                          Vs: 3310 LCD Picbasic Pro

                          Tugipinge allika lülitasid välja? Siis proovi LCDd PORTB küljes.
                          - 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


                            #14
                            Noo nii,

                            leidsin lõpuks vea üles, mega kaua läks aega, kuigi ometi oli suht väike viga.

                            Viga oli pici seadistamis käsus. Nimelt ei olnud seal kõiki põhi seaded sättitud ning pic ei töötanud selle tagajärjel lihtsalt korralikult.

                            Õige on nii (asukoht failis 16f628, esimene rida):
                            Kood:
                            CONFIG BODEN_ON, CP_OFF, PWRTE_ON, WDT_ON, LVP_OFF, MCLRE_OFF, INTRC_OSC_NOCLKOUT
                            Nüüd töötab kood korralikult ka suurematel picidel (nii A kui B portidel).
                            Space is nothing without the code&#33;

                            Comment


                              #15
                              Vs: 3310 LCD Picbasic Pro

                              Õige ta on, et kõik konfibitid tuleb ise paika sättida....
                              - 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