Segédletek.hu
Segédletek weblap szerkesztéshez!
Fórum:
Postaláda:
Szavazás:
Hány éves vagy?
Segédletek:
Linkek:
14 szegmenses kijelző:
Sorozat - Kijelzők:
Akik érdeklődve olvasták a 7 szegmenses kijelzőt, azoknak egy kis továbbképzés.
A 14 szegmens már kibővíti a lehetőségeinket. Az angol ABC összes betűjét, pár írásjelet össze lehet hozni vele.
Nos, követve az előző tematikát, nézzük, hogy néz ki a kijelző egy darabja:

Ez már csúnyább, mi? :) Aki jól figyel, az láthatja, hogy úgy néz ki, mintha csak 6 vonallal lenne több. Ennek oka, hogy a 7. (az alap heten felül) a 7-es szegmens kettévágva, ami elengedhetetlen a B és a G (meg csinosításként az F) karakterek kirajzolásához.
Nézzük, mit tudunk ebből kihozni:



Hát nem egy Times New Roman. De mivel a valóságban nem fedhetik egymást a világító szegmensek, ezért muszáj volt az átlókat így rajzoltatni. Az N, a V és a Z sínyli meg a dolgot, de annyira nem vészes.
Mivel ennek elmélete ugyanaz, mint a 7 szegmensesé, így csak az újítást mutatom be. Akkor lássuk a kódot...
Látható, hogy kicsit átalakult a DrawDigit függvény. Ennek oka, hogy a sok szegmensrajzolást egyenként hajtanánk végre, eléggé hosszú kódot kapnánk. A betűk után az első rész a sötét szegmensek, a máodik a világító szegmensek kirajzolását készíti elő. Itt csak a számok és az angol ABC betűi szerepelnek, de pár karaktert bele lehetne még rakni. (- , / ' * stb...)
A szegmensek előkészítése is megváltozott.
Itt látható, hogy a régi 7-es szegmens immár 7-es és 8-as szegmensként élik tovább életüket. Követtem a 72 fokos pálinka... akarom mondani dőlésszög elméletét, így rajzoltam be a vonalakat. A DrawDigit tömörítése miatt szükség van a függvény elején található for ciklusra, hogy a beállított rajzolási adatokat szét tudjuk választani.
Ez egy ilyen kis rövid cikkre sikeredett, de, hátha valakinek ötletet tudtam adni a folytatáshoz... mert még mindig nincs vége :)

Ez már csúnyább, mi? :) Aki jól figyel, az láthatja, hogy úgy néz ki, mintha csak 6 vonallal lenne több. Ennek oka, hogy a 7. (az alap heten felül) a 7-es szegmens kettévágva, ami elengedhetetlen a B és a G (meg csinosításként az F) karakterek kirajzolásához.
Nézzük, mit tudunk ebből kihozni:



Hát nem egy Times New Roman. De mivel a valóságban nem fedhetik egymást a világító szegmensek, ezért muszáj volt az átlókat így rajzoltatni. Az N, a V és a Z sínyli meg a dolgot, de annyira nem vészes.
Mivel ennek elmélete ugyanaz, mint a 7 szegmensesé, így csak az újítást mutatom be. Akkor lássuk a kódot...
function DrawDigit($digit,$pos) {
$i=$pos*40+5;
switch ($digit) {
case '0': D('789ABCDE',$i,1); D('123456',$i,0); break;
case '1': D('1456789ABCDE',$i,1); D('23',$i,0); break;
case '2': D('369ABCDE',$i,1); D('124578',$i,0); break;
case '3': D('569ABCDE',$i,1); D('123478',$i,0); break;
case '4': D('1459ABCDE',$i,1); D('23678',$i,0); break;
case '5': D('259ABCDE',$i,1); D('134678',$i,0); break;
case '6': D('29ABCDE',$i,1); D('1345678',$i,0); break;
case '7': D('456789ABCDE',$i,1); D('123',$i,0); break;
case '8': D('9ABCDE',$i,1); D('12345678',$i,0); break;
case '9': D('59ABCDE',$i,1); D('1234678',$i,0); break;
case 'A': D('49ABCDE',$i,1); D('1235678',$i,0); break;
case 'B': D('5679ABC',$i,1); D('12348DE',$i,0); break;
case 'C': D('23789ABCDE',$i,1); D('1456',$i,0); break;
case 'D': D('56789ABC',$i,1); D('1234DE',$i,0); break;
case 'E': D('239ABCDE',$i,1); D('145678',$i,0); break;
case 'F': D('23489ABCDE',$i,1); D('1567',$i,0); break;
case 'G': D('279ABCDE',$i,1); D('134568',$i,0); break;
case 'H': D('149ABCDE',$i,1); D('235678',$i,0); break;
case 'I': D('123456789ABC',$i,1); D('DE',$i,0); break;
case 'J': D('16789ABCDE',$i,1); D('2345',$i,0); break;
case 'K': D('123489BDE',$i,1); D('567AC',$i,0); break;
case 'L': D('123789ABCDE',$i,1); D('456',$i,0); break;
case 'M': D('1478BCDE',$i,1); D('23569A',$i,0); break;
case 'N': D('1478ABDE',$i,1); D('23569C',$i,0); break;
case 'O': D('789ABCDE',$i,1); D('123456',$i,0); break;
case 'P': D('349ABCDE',$i,1); D('125678',$i,0); break;
case 'Q': D('789ABDE',$i,1); D('123456C',$i,0); break;
case 'R': D('349ABDE',$i,1); D('125678C',$i,0); break;
case 'S': D('259ABCDE',$i,1); D('134678',$i,0); break;
case 'T': D('23456789ABC',$i,1); D('1DE',$i,0); break;
case 'U': D('1789ABCDE',$i,1); D('23456',$i,0); break;
case 'V': D('1234789CDE',$i,1); D('56AB',$i,0); break;
case 'W': D('14789ADE',$i,1); D('2356BC',$i,0); break;
case 'X': D('12345678DE',$i,1); D('9ABC',$i,0); break;
case 'Y': D('12345678BCD',$i,1); D('9AE',$i,0); break;
case 'Z': D('2356789CDE',$i,1); D('14AB',$i,0); break;
case ' ': D('123456789ABCDE',$i,1); D('',$i,0); break;
default : D('1234569ABCDE',$i,1); D('78',$i,0); break;
}
}
A szegmensek előkészítése is megváltozott.
function D($lines,$left, $t) {
for ($i=0;$i<strlen($lines);$i++) {
switch ($lines[$i]) {
case '1': DrL($left+15,10,$left+40,10,$t); break;
case '2': DrL($left+43,12,$left+38,37,$t); break;
case '3': DrL($left+37,42,$left+32,67,$t); break;
case '4': DrL($left+04,70,$left+29,70,$t); break;
case '5': DrL($left+06,42,$left+01,67,$t); break;
case '6': DrL($left+12,12,$left+07,37,$t); break;
case '7': DrL($left+10,40,$left+23,40,$t); break;
case '8': DrL($left+23,40,$left+35,40,$t); break;
case '9': DrL($left+18,12,$left+17,37,$t); break;
case 'A': DrL($left+37,12,$left+29,37,$t); break;
case 'B': DrL($left+16,42,$left+07,67,$t); break;
case 'C': DrL($left+28,42,$left+26,67,$t); break;
case 'D': DrL($left+28,13,$left+23,37,$t); break;
case 'E': DrL($left+22,42,$left+16,67,$t); break;
}
}
}
Ez egy ilyen kis rövid cikkre sikeredett, de, hátha valakinek ötletet tudtam adni a folytatáshoz... mert még mindig nincs vége :)
Írta: Needback - 2007-12-08 16:31:59
* Nem vagy bejelentkezve!* Nem töltheted le a segédlet forrását egyben!
* Nem szavazhatsz a segédletre!
* Nem írhatsz a segédlethez tartozó fórum témába!

