Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Ja megvan a megoldás:
Nem a tarolasnal kellene szerintem ezzel vacakolni, hanem a kiiro rutinban... Tehat nyugodtan taroldd el az ekezeteseket 852-es kodkeszlettel es a kiiro rutinnal alakitsd at azokat az LCD-nek megfeleloen.
Ööö. Ezt nem igazán értem. Magyarul ha ékezetest írok a kódban, akkor hozzárendelődik a CGRAM azon része? Ezt hogy lehet megvalósítani?
Nem, nem rendeloik hozza - a normal karakter sem rendelodik hozza, neked kell a kiiro rutinnal kiirni a karaktereket, nem?
Tehat a kiiro rutin kivesz egy karaktert, megvizsgalja mi az, majd ha ekezetes akkor azt megfeleloen atalakitod (hogy hogyan az rajtad ill a rutinodom mulik) - es utana irod ki...
Értem. Meg is csinálom. Köszi az ötletet!
Még annyit, hogy hogy vizsgálom meg? 16F819-en adatlapjában nem találtam okos utasítást hozzá. Kivonást és XOR-t kezdtem el próbálgatni, de ahhoz minden bitet egyenként meg kellene vizsgálni (csak a btfsc/btfss-ről tudok) és elég hosszú kód lenne az eredménye. Létezik egyszerűbb megoldás? Ha nem, akkor maradok inkább az eredeti verziómnál (sok szöveget úgyse akarok). C-ben kicsit könnyebben el tudom képzelni a megoldást.
Szia!
Van egy egyszerűsítési lehetőség: a xor művelet öndiális: x xor y xor y = x
Tablazatosan is megcsinalhatod, tehat pontosan 256 elemed van a tablaban es normalisan az ASCII erteket adja vissza, az ekezetek helyen meg a megfelelo ertekeket (0x00, 0x01 stb...).
Program memoriaban Hp41C javasolt kod rovidebb lesz, de futas idoben a tablazatos, ami raadasul kiegyensulyozott azaz mindegy melyik karakterrol van szo, ugyanannyi idot vesz igenybe. Rajtad mulik mit valasztasz, melyik megoldas a szimpatikusabb...
Segítséget kérek! Van lehetőség PWM módban a CCPR1L/H vagy CCPR2L/H regiszterek külső frekvenciával való meghajtásra?
PWM módban nem a CCPR1L/H regiszterek vannak "meghajtva", hanem TMR2. Ebből következik, hogy nem lehet külső jellel hajtani. Legfeljebb úgy, hogy az egész mikrovezérlőt hajtod külső órajellel.
CCPR1L és CCPR1H a kitöltési tényező beíró tároló regisztereiként működnek (legalábbis a felső 8 bit vonatkozásában, mert az alsó két bitet CCP1CON<5:4> bitjeiben kell megadni).
Köszönöm, ez működik!
Ezt a sort hogy kell értelmezni? Már láttam pár kódban ezt a ^ jelet.
Valami feltételes utasítás? Ha xorlx 'á' igaz, akkor 0x00-t rak W-be? trudnai én is ezt szerettem volna az elején, de nem értem, hogy lehetne kivitelezni. Így valahogy?
De még így se értem, hogy akkor hogy tudja, hogyha á következik a kódban, akkor a 0x00-t adjon vissza.
Szia!
A fordító a forrás fordítása alatt is tud műveleteket végezni - mindenütt láthatsz összeadásra, kivonásra, stb példát. A '^' jel a bitenkénti xor művelet kódja. A kifelyezést a fordító számolja ki, az eredményt teszi a lefordított állományba... Pont az van leírva, amit Idézet: -ben kérsz, csak egy lépéssel meg van toldva, a következő eset figyelésére beállítja a Z flag-et...„Valami feltételes utasítás? Ha xorlx 'á' igaz, akkor 0x00-t rak W-be?” Egy kód figyelése:
A 0x00 kódot egyszerűbben is elő lehet állítani, de a fenti kódrész működik más kimenő kóddal is... Ha két ilyen részletet egymás után írsz, akkor két xorlw sor kerül egymás után, ami egy utasítással is megoldható - ezt írtam el az előző hozzászólásban...
Helló kedves Mindenki!
Lenne egy olyan problémám, hogy egy PIC16f877a C portját kimenetre konfigoltam, és tranzisztorokat akasztottam rá, a B-t pedig bemenetre, ahogy azt a mellékelt ábra mutatja, és a B port 4es lábán lévő fesztől függően kirak egy értéket a . . . MENUTESZT4 BTFSS PORTB,4 GOTO $+5 CALL PERGMENTESIT MOVLW 0XE0 MOVWF PORTC GOTO LLL4 MOVLW 0X06 MOVWF PORTC LLL4 BTFSC PORTA,2 GOTO MENUTESZT4 CALL PERGMENTESIT GOTO MAIN Míg 0 van a porton (és a tranyó bázisán), akkor ugye az szakadásként üzemel, de ha kijön rá az ,,1" (5V) akkor át kellene mennie rövid zárba, ami nem következik meg, mert csak 2.5V jelenik meg rajta, és a PIC kimenetén is csak ekkora a fesz, viszont ha megjelenik RB4-en az 5 volt, akkor a kimenet is megemelkedik 2.5-ről 5 voltra... ilyet még nem láttam... :S Mit csináltam rosszul? Előre is köszi a segítséget, üdv: Péter
Szia!
A mostani kimenetet egy PNP tranzisztorral kellene kapcsolni. Ennek emittere a +12V-ra, a kollektora a kimenetre kapcsolódik, a básiza és a 12V közé egy ellenállás kerül. A bázisa egy másik ellenálláson keresztül egy NPN tranzisztor kollektorára, melynek az emittere a földre, a bázisa egy ellenálláson a portra menjen. A rajzodon a tranzisztor áramgenerátor, az emitter árama akkorára áll be, hogy a bázis és az emittere között 0.6V legyen....
Köszi!
holnap kipróbálom, de ez mág nem magyarázza meg h. a pic-ből miért csak 2.5V jön ki :S
Ha szépen megkérlek le tudnád rajzolni?
ha a kimeneten 5V jön ki, akk mekkorának kell lennie az ellenállásnak?
Szia!
Mekkora árammal terheled majd a kimeneteket?
Helló!
70, ill 40 mA-os keringető szivattyúkat fog hajtani, de azt gondoltam, hogy 12V-ot eresztek a kábelre (az 5-höz sajna túl hosszú) és optocsatolós, triakos leválasztással meg meghajtom a cirkót. Valahogy úgy gondoltam, ahogy a képen van, csak a rendszer nem ért még velem egyet :S, de talán jó lesz
Szia!
Ekkor egyszerűbb a helyzet: Az optotriak led anódja menjen a +12V -ra, a katódja egy ellenálláson keresztül egy NPN tranzisztor kollektorára. Az ellenállás - 40 mA LED áramhoz - (12-1.2-0.3)/0.04. A tranzisztornak 40mA kollektor áramhoz csak kb. 1-5 mA bázisáram kell, tehát az NPN tranzisztor bázisa kb. 1k ellenálláson keresztül vezérelhető a pic kimenetével. 100mA -ig használható a BC547, 1A -ig a BC639...
Idézet: „rudnai én is ezt szerettem volna az elején, de nem értem, hogy lehetne kivitelezni. Így valahogy? dt 'a',0x00,'bcde',0x01,.... De még így se értem, hogy akkor hogy tudja, hogyha á következik a kódban, akkor a 0x00-t adjon vissza.” Nem, nem a magyar ABC szerint kell felsorolni a betuket. Neked az ASCII tablat kellene leirnod, es mar nagyon-nagyon regen csinaltam ilyet bevallom, ugy emlekeztem, hogy Windows alatt a magyar ekezeteket ASCII-ban (8 bitesen) a 852-es kodlappal kodoljak, de azt hiszem ez inkabb a Windows-1250 lesz(?). ASCII karakter tablazat 852-es kodlap Windows-1250-es kodlap Tehat ha megnezed az ASCII tablat, az 'A' az a hexa 41-es szamon van, tehat a decimalis 65. A 852-es tablaban a magyar ekezeteseket talalod meg, pl hosszu nagy Ő a hexa 8A, azaz decimalisan 138-as szamhoz van hozza rendelve. Azonban Windows-1250-es kodlap mashova teszi a magyar ekezeteket, ott ugyanezt a hexa D5 azaz dec 213 helyen talalod meg. A 852-es es 1250-es kodtabla csak a felso 128 karakterben ter el az ASCII-tol, neked igazandibol csak a szamodra ertekes karakterek kellenek, a tobbi helyre tehetsz pl 255-ot is, ami jelzi, hogy a karakter nem letezik a tablaban... Sot, ha nem utik a magyar ekezetek egymast a 852-es es 1250-es tablaban, akkor mindkettot beteheted egy tablaba, azaz mindegy melyik kodolassal jon az ekezet... Tehat mikor a tablad megvan, akkor ha a W-ben dec 65 van, akkor a tablad 65. helyen is 65 van, tehat a W nem fog valtozni, tovabbra is az 'A'-t fogja tartalmazni. Ha viszont 213 van benne, akkor a tabla 213. helyen a nagy hosszu Ő-nek megfelelo kodot tarolod el, pl 0x03-at, igy a CALL utan a W-be 3 lesz, ami az LCD-n a megfelelo ekezetest fogja neked kiirni. Ez bonyolultnak tunhet elsore, de nem az, es a tablat egyszer epited fel, meg az algoritmust, es utana az osszes projectedben felhasznalhatod, tehat szerintem megeri a befektetes. De Hp41C megoldasa is kivalo, szoval ugy is jo lesz a programod.
Hali
Latom kijott a "meta" (cel) . Nincs internetem a Turbonett.gt jovoltabol kb 1 hete. majd megprobalok rajuk hatni. De latom haladtal elore a projectben. Udv Vili
Az Opto Triakot a PIC kimenete is meg tudja hajtani egy 470ohm-on keresztül akár.
Én egy harmadik hasonló lehetőséget is ajánlok. Ez az első programomban volt így megoldva, ezért gondoltam, hogy elsőre neked is jó lehet.
LCD CGRAM rekeszcímekhez hozzárendelés:
A táblázat és a kiolvasása:
Erdekes, es egyszeru!
UI: Amugy ö meg Ü mintha lenne ezekben mar eleve igy ket hely felszabadulhat es a hosszu ő meg ű is bele ferhet?
A felhasználói karakterek alakját lehet dinamikusan is módosítani, mindig a kiírni szándékozott szöveg karaktereinek megfelelően. A magyar ékezetes betük 2*9 helyet igényelnének... Az azonos LCD-k a karakterkészletben különbözhetnek. Szerencsére van olyan LCD, aminek a karakter készlete tartalmazza az 'á', 'é' karaktereket is...
Már nem emlékszem, de lehet az is, hogy abban az LCD-ben nem volt ö-sem. Többféle karaktertáblával gyártották ezeket, ha jól emlékszem az adatlapjára...
Igen, ezt használtam is, csak egyszerre 8-nál több eltérő nem lehetett és arra is figyelni kellett, hogy azt cserélhetem le, amit éppen nem jelenítettem meg, így ez sem volt teljesen egyszerű történet.
Amugy szerintem alap ekezetesekkel el lehet lenni, es ha nagyon zavaro akkor olyan LCD kell amiben a Japan irasjelek helyett benne vannak az ekezetek mar eleve. Masik megoldas a grafikus kijelzo lenne, de az mar kisse tullo a celon. Vegulis az en ekezet nelkuli irasaimat is tobbnyire megertitek
Segítségre lenne szükségem! Explorer 16 próbapanellel vezérlek egy SSD1963 grafikus procit. A megírt program PIC32MX795F512 modullal működik, míg PIC32MX460F512 és PIC32MX360F512 modulokkal nem. Hogy lehetséges ez?
|
Bejelentkezés
Hirdetés |