String i promjrnjiva

Rasprava o PIC mikrokontrolerima, PIC projekti i drugo vezano za PIC-eve...

Moderators: pedja089, stojke369, [eDo], trax

Post Reply
febo26
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 207
Joined: 12-08-2008, 19:58

String i promjrnjiva

Post by febo26 »

Malo mi zapelo,
napravio sam kod koji cita koja je tipka pritisnuta na TOUCH tipkovnici koja je napravljena s TTP229-B chipom

i prikaze vrijednost tipke na LCDdispleju i to radi super

Chip koristi serijsku komunikaciju, a ne I2C kao su mi definirani portovi za komunikaciju.

EVO koda:

Code: Select all

 
 Include "Modedefs.Bas"
define osc 4

DEFINE	LCD_DREG PORTB
		DEFINE	LCD_DBIT 0
		DEFINE	LCD_RSREG PORTB
		DEFINE 	LCD_RSBIT 4
		DEFINE	LCD_EREG PORTB
		DEFINE	LCD_EBIT 5	
		DEFINE	LCD_BITS 4
		DEFINE	LCD_LINES 2
 
       Symbol SCL = PORTC.3 ' I2C clock pin 
       Symbol SDA = PORTC.4 ' I2C data pin 
       
       

 
 
DisplayStringLenght con 16
DisplayString var byte[DisplayStringLenght]
z var byte
Z=0





        TRISA = %0000000    'Postavi sve pinove porta A kao IZLAZ
       TRISB = %00000000  'Postavi sve pinove porta B kao IZLAZNI 
       TRISC = %00000000     'Postavi sve pinove porta C kao IZLAZ
       ADCON1= 7
     
     
       PORTA=00000000
       BROJ1 VAR BYTE
       BROJ2 VAR BYTE
       TIPKA VAR BYTE
     
	   Lcdout $fe, 2		' Pozicioniraj se na prvi red prvi karakter
       Lcdout "     PROBA     " 'Ispisi "PROBA" u prvom redu
       Lcdout $fe, $C0	    ' Podesi kursor na pocetak drugog reda
       Lcdout "     TOUCH    "  
       PAUSE 2000
       Lcdout $fe, 1
     

 
MAIN:      
       SHIFTIN SDA,SCL,2,[BROJ1,BROJ2] 'procitaj koja je tipka pritisnuta na tipkovnici
       
       
       SELECT CASE BROJ1
              CASE 128
                   TIPKA = 49 'asci vrijednost za broj 1
              CASE 64
                   TIPKA = 50 'asci vrijednost za broj 2
              CASE 32
                   TIPKA = 51  'asci vrijednost za broj 3
              CASE 16
                   TIPKA = 52  'asci vrijednost za broj 4
              CASE 8
                   TIPKA = 53 'asci vrijednost za broj 5
              CASE 4
                   TIPKA = 54 'asci vrijednost za broj 6
              CASE 2
                   TIPKA = 55 'asci vrijednost za broj 7
              CASE 1
                   TIPKA = 56  'asci vrijednost za broj 8
              
       END SELECT
       
              SELECT CASE BROJ2
              CASE 128
                   TIPKA = 57  'asci vrijednost za broj 9
              CASE 64
                   TIPKA = 48   'asci vrijednost za broj 0
         
              END SELECT
      IF TIPKA =0 THEN MAIN 
      GOSUB ISPIS 

     
     
        
GOTO MAIN
        
 
 
ISPIS:
DisplayString[z]=TIPKA   'Dodaj karakter u string 
TIPKA = 0  
Z=Z+1                  
DisplayString[z]=0        'zavrsi string sa nulom
LCDOUT $fe,1, STR DisplayString 'Ispisi string na LCD-u  ASCII vrijednosti za tipke
PAUSE 200
  
RETURN  

e sad bih ja htio da tu tipkovnicu iskoristim za direktni unos frekvencije na FM prijemniku koji je izradjen pomocu TEA5767 chipa.

Ako napisem na displeju frekvenciju 10440 i to se nalazi u Displaystring kako da to prebacim u neku drugu varijablu koju kasnije mogu koristiti za frekvenciju,posto su vrijednosti u displaystringu u ascii formatu.
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: String i promjrnjiva

Post by pedja089 »

Ovo sta je definisano kao I2C a radi kao seriski nemam pojma sta ti znaci, ali nije ni bitno...
Recimo da ti taj deo koda radi.
Vidi koju verziju kompajlera koristis i da li u toj verziji ima ARRAYREAD.
Ako ima, pogledaj manual, i videces kako se koristi.
Ako nema, najlakse ti pomnoziti svaku cifru sa odgovarajucim brojem. Prvo sa 10000, drugu sa 1000 itd...
Dalje jako je i bitan opseg frekfencija koji ces unositi, i koji se picevi koriste.
febo26
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 207
Joined: 12-08-2008, 19:58

Re: String i promjrnjiva

Post by febo26 »

-ovo sto je definirano kao I2C to sam zaboravio preimenovati --- pocetak mi je copy paste iz drugog programa zato je tako ostalo..

- ima ARRAYREAD u kompajleru pa se idem pomuciti s njime....

-unos frekvencije je jednostavan:

Code: Select all

frekvencija var word

frekvencija = 10440
gosub upisi frekvenciju
samo mi je bitno da znamenke iz Displaystring prebacim u frekvenciju i mislim da bi stvar morala funkcionirati
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: String i promjrnjiva

Post by pedja089 »

ARRAYREAD Displaystring,[dec Frekfencija]
febo26
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 207
Joined: 12-08-2008, 19:58

Re: String i promjrnjiva

Post by febo26 »

Hvala Pedja,
ovo sa arrayread radi odlicno.

Bas sam se iznenadio kako ovaj mali cip TEA5767 odlicno radi.Za 1 dolar koja mu je cijena na ebayu super lovi stanice.Kao antena mu sluzi metar zice i prijem je odlican.Jedina mana mu je sto nema RDS ali to nema veze kad ga neznam ni napraviti pa je dobro i ovako samo ispis frekvencije na LCD-u.
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: String i promjrnjiva

Post by pedja089 »

Super. Drago mi da si uspeo.
User avatar
niho
Pravi forumaš
Pravi forumaš
Posts: 1895
Joined: 24-09-2009, 17:26
Location: Brcko, Bosnia and Herzegovina

Re: String i promjrnjiva

Post by niho »

Taj čip i nema RDS, morali biste nabaviti neki od čipova koji su za tu namjenu. A signal od 57kHz možete pokupiti i sa izlaza ovog vašeg čipa, bez ikakvih problema.
Post Reply