Hirdetés
- OLED TV topic
- Milyen joysticket vegyek?
- Ilyen se volt még: mégsem kell sok memória az új James Bond játékhoz
- 3D nyomtatás
- Projektor topic
- Nem elég a RAM-ok, NAND-ok és VGA-k áremelkedése
- Az idei év nagy kérdése: bele lehet férni 8 GB VRAM-ba?
- HiFi műszaki szemmel - sztereó hangrendszerek
- Milyen billentyűzetet vegyek?
- RAM topik
Új hozzászólás Aktív témák
-
don_peter
senior tag
Hölgyek, Urak segítséget szeretnék kérni alfanumerikus 4x4-es keypad programjának megírásához.
Angol ABC és 0-9-ig számok lennének kb. mint a telefonnál vagy hasonlóan gondoltam kivitelezni.
Tudtok segíteni elméletben vagy akár gyakorlatban?
Hogyan lehet ezt legegyszerűbben megírni?
P18F4550-es mikrokontroller fogja feldolgozni az adatokat.
Ilyen lenne a keypad:A sima 16 gomb kezelésére írtam már programot, talán ebből ki lehetne indulni csak nem tudom, hogy miként vagy milyen irányban haladjak tovább..
A megírt kódom most így néz ki:#include <delays.h>
#define SOROK LATD //Sorok
#define oszlop1 PORT_B4 //Oszlopok bemenet
#define oszlop2 PORT_B5
#define oszlop3 PORT_B6
#define oszlop4 PORT_B7
#define MAGAS 1
#define ALACSONY 0
/*----- Prototípus --------*/
unsigned char get_key();
unsigned int bill_ertek; //Globális változó
void main(void){
unsigned int i,k=0;
ADCON1 = 7; //Analóg portok digitálisra állítva
TRISB = 0xf0; //B port felső 4 bit (nagyobb helyi értéken 7:4) bemenet
//alsó 4 bit (kisebb helyi értéken 3:0) kimenet
//0b11110000
while(1){
bill_ertek = get_key();
Delay10TCYx(10);
}//while()
}//main()
//Függvények
unsigned char get_key(){
unsigned int i, k=0;
for(i=0; i<4; i++){
SOROK = (0x08>>i); //Léptetjük a sorok szintjét
k++;
if(oszlop1 == MAGAS){
while(oszlop1==MAGAS); //Várakozunk a gomb felengedéséig
return k;
}
k++;
if(oszlop2 == MAGAS){
while(oszlop2==MAGAS); //Várakozunk a gomb felengedéséig
return k;
}
k++;
if(oszlop3 == MAGAS){
while(oszlop3==MAGAS); //Várakozunk a gomb felengedéséig
return k;
}
k++;
if(oszlop4 == MAGAS){
while(oszlop4==MAGAS); //Várakozunk a gomb felengedéséig
return k;
}
if(i>0){ //Ha a második lefutásnál sincs találat
k=(i+1)*4;
}else if(i==3){ //Ha az utolsó is lepörgött nulláztuk k-t
k=0;
}else{ //Első lefutás után a k értéke 4 lesz
k=4;
}
}
return ALACSONY;
}Minden ötletet szívesen fogadok.
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- OLED TV topic
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Milyen autót vegyek?
- Milyen joysticket vegyek?
- Ilyen se volt még: mégsem kell sok memória az új James Bond játékhoz
- 3D nyomtatás
- Autós topik
- Projektor topic
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- Okos Otthon / Smart Home
- További aktív témák...
- Thinkpad L13 Yoga Gen4 13.3" FHD+ IPS érintő Ryzen 5 PRO 7530U 16GB 256GB ujjlolv aktív toll gar
- Bomba ár! Lenovo ThinkPad L13 G4 - i5-1335U I 16GB I 256SSD I 13,3" FHD Touch I NBD Gari!
- Bomba Ár! Lenovo ThinkPad E14 G4i - i5-1235U I 16GB I 256SSD I 14" FHD I HDMI I W11 I Gari
- iPhone 15 PRO 128GB gyönyörű blue titanium KÁRTYAFÜGGETLEN! 2026. november 3-ig Apple garancia
- Cooler Master 600 Wattos 80 Plusz Fix Kábelezésű Tápegység
- ÁRGARANCIA!Épített KomPhone i7 14700KF 32/64GB RAM RTX 5070 Ti 16GB GAMER PC termékbeszámítással
- SK Hynix vagy Samsung 32GB DDR4 2666MHz PC4-21300 laptop RAM
- Apple iPhone 15 Pro 128GB, Kártyafüggetlen, 1 Év Garanciával
- Új Steelseries Arctis Nova pro vezetékes gamer fejhallgató
- LG 34GS95UE - 34" Ívelt OLED / QHD 2K / 240Hz & 0.03ms / 1300 Nits / NVIDIA G-Sync / AMD FreeSync
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest


