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.