ohjelmia 16f84:jään

 

Täältä löytyy minun tekemiäni ohjelmia Microchipin mikrokontrolleri 16f84:jään .Ja koekytkentäalustan. Jossa voit kokeilla ohjelmieni toimivuutta käytännössä.

Linkkejä muiden tekemille sivuille joista saa tietoa kyseisestä piceistä löytyy täältä. Yritän myös parhaani mukaan kasvattaa tätä ohjelma "kirjastoa". Mutta se on paljolti ajan, säätilan ja muun sellaisen varassa.

Ohjelmista vielä sen verran että kun poltat ne 16f84:jään jollain poltto-ohjelmalla. Niin oskillaattori on XT eli kide. Ja Watchdog ,Power-up timeri ja Code protect pitää olla laitettuna pois päältä.

Ohjelmat saa toimiin 16f628:ssa todennäköisesti. Muuttamalla asembly koodissa kohdat include p16f84.inc ja LIST P=16f84 . include p16f628.inc ja LIST P=16f628 :si. Ja kääntämällä asemblykoodit uudestaan hex-koodiksi kääntäjällä. Tätä en ole vielä kokeillut jotenka en ole aivan varma asian toimivuudesta.

HUOM. Jokainen ottaa sitten itse vastuun tämän sivun avulla rakentamistaan laitteista eli sanoudun irti kaikesta vastuusta jos onnistutte saamaan mitä tahansa tuhoa/vahinkoa tai muuta sellaista näillä laitteilla kautta ohjelmilla.

HUOM!!! Jos aijot käyttää tältä sivulta löytyviä ohjelmia kaupallisiin tarkoituksiin. Ota sivun tekijään yhteyttä kiitos.

Copyright © .

OHJELMAT


·  Noppa koodi arpoo luvun kun nappia painetaan. Luvun osoitus 6 ledillä.


Tämä koodi arpoo silmäluvun kun 16F84:sen pinniin 18 vastuksen kautta tuleva nolla potentiaali kytketään +5V suoraan esim. Napilla. Ja tuo arvotun silmäluvun näyttöön kun samaan nastaan tulee takaisin nolla potentiaali eli otetaan sormi pois napilta. Nappi jolla saadaan tämä aikaiseksi on jo valmiina koekytkentäalustassa .Eli se yksittäinen nappi 16f84:jän vieressä. Ei siis nuo alhaalla rivissä kuvassa olevat 9 painonappia.
Kyseisessä koekytkentäalustan kytkennässä olevassa napissa on kyllä ledi. Mutta tuo kytkentä toimisi ilman tuota lediäkin. Jos et jaksa tehdä kyseistä alustaa vaan haluat päästä mahdollisimman helpolla. Toivottavasti sait äskeisestä selostuksesta jotain tolkkua :o)
Kokeillaksesi koodia tuossa koekytkentäalustassa. Sinun tarvitsee laittaa hyppylangat vain ledien ja 16f84 pinnien 6,7,8,9,10 ja 11 välille. HUOM! Tätä ohjelmaa voi tietenkin myös "viilata" antamaan useammin jotain tiettyä lukua.

Noppa.asm lähdekoodi pic:iin

Noppa.hex käännetty koodi pic:iin


·  16F84:sen TLC549 a/d muuntimen lukukoodi.


Tämä koodi lukee TLC549 a/d muuntimen muunnoksen sen 7,8 ja 9 pinneistä. Jonka TLC549:än on saanut TR potentiometriltä pinneistä 1,2 ja 4 .Katso koekytkentä alusta. Niin asia selviää varmastikin paremmin.

TLC549.asm lähdekoodi pic:iin

TLC549.hex käännetty koodi pic:iin


·  RC-auton servon ohjauskoodi.

Tämä koodi on kehitetty ylempänä olevasta 16F84:sen TLC549 a/d muuntimen lukukoodista. Tämä koodi ohjaa Futaba 148 servoa. Katso tarkempia tietoja Servo.asm lähdekoodi linkkiä klikkaamalla.

Servo.asm lähdekoodi pic:iin

Servo.hex käännetty koodi pic:iin


·  Pulssin lukukoodi 16F84:seen.Käyttää hyväksi 16f84:jän laskuri sisääntuloa.


Koodi laskee pulsseja A portin RA4/T0CKI pinnistä. Katso koekytkentäalustan kuva. Ohjelma lukee muutaman sekunnin (10-15 sek) pulsseja tuolta nastalta ja siirtää sen sitten 16f84:sen B portin kautta luettavaksi esimerkiksi ledeillä. Tätä ohjelmaa voisi käyttää vaikka kierroslukumittarin ohjelman runkona.

Pulssi.asm lähdekoodi pic:iin

Pulssi.hex käännetty koodi pic:iin


·  Numerolukko koodi 16F84:seen.


Tuo koekytkentäalustan kuva on tehty alunperin tätä koodia varten. Siinä on nyt siis ohjelmassa tarvittavat napit. Eli valintanappi on 16f84:sen pinnissä numero 18 ja rele pinnissä numero 1 jo valmiiksi kytkettynä. Kytkeä pitää ainoastaan hyppylangat napeille 1-9 ja ledille, joka ilmoittaa missä mennään tunnusluvun syötössä.
Eli 16f84:jän pinnit 6,7,8,9,10,11,12,13 ja 17 napeille 1-9. Ja ledin ohjaus pinni 2 täytyy kytkeä johdoilla piikkirimoihin. Ohjelman toiminnasta löytyy kuvaus Lukko.asm lähdekoodi linkin takaa.

Lukko.asm lähdekoodi pic:iin

Lukko.hex käännetty koodi pic:iin

·  Paranneltu versio numerolukko koodista 16F84:seen.

Sisältää muutaman uudistuksen kuten, EEPROM muistiin kirjoituksen/lukemisen. Tästä on kiittäminen Pekka Ritamäkeä Probytestä. Joka antoi ystävällisesti tuohon EEPROM:iin kirjoittamiseen ja lukemiseen tarvittavan koodin. Joka löytyy tämmöiseltä PIC CD-levyltä. Itse kun en saanut tuota EEPROM kirjoitus/lukukoodia toimimaan millään aikani testailtuani. Mutta nyt tämä kirjoituskoodi löytyy tästä numerolukon parannetusta versiosta. Kuten myös pari muuta ominaisuutta. Niistä voit lukea lisää tuon lukko.asm lähdekoodi linkin takaa.

Uusin versio lukko.asm lähdekoodista pic:iin. Lisätty 19.5.2002 .

Uusin versio lukko.hex koodista pic:iin. Lisätty 19.5.2002 .


·  Infrapunalinkki 8 bittinen.

Nämä koodit mahdollistaa tiedon siirtämisen infrapuna teitse. Eli tämä systeemi tarvitsee erillisen infrapunalähetin osan. Tämän voi kyllä integroida koekytkentäalustaankin. Eli sisään rakentaa jos haluaa. Vastaanotin taas tarvitsee infrapunamoduulin (SFH 506 itse käytän tätä)havaitsemaan infrapunavalo ja tekemään se 16f84:lle luettavaan muotoon. SFH 506 löysin kautta tilasin Probyten sivulta. Josta löytyi myös kytkentäohje.

Eli yhteen vetona tarvitset kaksi koekytkentäalustaa, mutta ne voi olla kyllä riisuttuja malleja. Eli lähettimessä ei ole kuin infrapunalähetin ja 16f84 + napit lähetettävän tiedon syöttämiseksi ja muu tarpeellinen.

Ja vastaanottimessa tietenkin vastaanotinmoduuli vaikka tuo SFH 506(muukin käy) ja myös 16f84 + ja ledit 8kpl 16f84:jän B portille ulostulo tiedon lukemiseksi ja muu tarpeellinen. Lisää tietoa saat kun luet lähdekoodien kommentteja.

Näitä ohjelmia voi käyttää myös niin että bitit kulkee johtoa pitkin tai radioteitse, mutta ohjelmia pitää hiukan muuttaa. Itse olen kehittänyt tämän infrapunalinkin pohjalta. Tuon numerolukon toimimaan infrapuna teitse. Ja myös tuon TLC549 a/d muuntimen datan olen onnistunut saamaan siirtymään infrapuna teitse. Tästä taasen voisi kehitellä esim. Vaikka kassakaappi(pyörivä numerolevy) periaatteella toimivan numerolukon. Pyörivä numerolevy laitetaan sitten taskuun kun kassakaappi on avattu tai lukittu.
Tai voisi laittaa lähetinosan lähettämään tietoa RC-auton tai lentokoneen akkujen tiloista vastaanottimelle, josta ne voisi siirtää vaikka tietokoneelle käyrien piirtelyä varten. Toisin sanoen vain mielikuvitus on rajana.

Lahetin.asm lähdekoodi pic:iin

Lahetin.hex käännetty koodi pic:iin

Vastaanotin.asm lähdekoodi pic:iin

Vastaanotin.hex käännetty koodi pic:iin


·  Yksinkertainen ledin vilkutus ohjelma. Saa ledin vilkkuun 16f84:jän 17 pinnissä.

Ledi.asm lähdekoodi pic:iin

Ledi.hex käännetty koodi pic:iin


·  Auton keskuslukon ohjaus

Ohjaus tapahtuu 4*8 bittisellä koodilla. Eli jos pikaisesti oikein laskin mahdollisia koodeja on yli 4 miljardia kpl. Korjatkaa jos olen väärässä. Tämä auton keskuslukon ohjausjärjestelmän tekeminen infrapunalla sai alkunsa erään henkilön pyynnöstä sähköpostitse joskus kevät talvella 2001.

Kyseinen henkilö teki minulle piirilevyt ja piirsi puhtaaksi sähkökuvat, että piirilevykuvat. Jotenka ajattelin julkaista myös tämän projektin tällä sivulla. Tosin pienin varauksin. En anna lähdekoodeja. Ne saa ehkä mailitse hyvää syytä vasten. Miksen anna sitten suoraan lähdekoodeja. On se että ne on "parsittu" kasaan tältä sivuilta jo löytyvistä lähdekoodeista. Jotenka joku varmaan saattaa onnistua itsekin väsäämään kyseiset koodit tämän sivun avulla ehkä paremmatkin tai sitten ei :o)

Tälle sovellutukselle keksii myös muita käyttö tarkoituksia. Yksi voisi olla pienoisrautatien ohjausjärjestelmä. Jota voisi ohjata vaikka tietokoneella haluttaessa. Tai sitten jokin isompi systeemi. Kuten esim. Valaistus/kodinkoneohjaus äänikomennoilla tietokoneen avulla. Myöskään internetin kautta tapahtuva ohjaus ei varmastikaan olisi kovin vaikea toteuttaa. Jos omistaa oman palvelimen, jolla sijaitsisi Php-kielellä tehdyt sivut. Joiden kautta ohjaus sitten tapahtuisi.

Valmiiksi kasatusta systeemistä löytyy myös digitaalikameralla otettu kuva (n.200kt).

Muutama sana kuinka käytät systeemiä. Polta lähettimeen jokin avainkoodeista. Ja vastaanottimeen tuo Vastaanotin hex koodi. Kun olet tämän tehnyt. Tässä systeemin käyttöohjeet .

Vastaanottimen opetus:

1)Kytke jännite vastaanottimeen. Nyt pitäisi vastaanottimen liedin vilkahtaa.

2)Ota nyt lähetin ja vastaanotin niin että ne varmasti saa toisiinsa yhteyden. Mutta älä vielä kytke lähettimeen jännitettä.

3)Paina nyt vastaanottimen nappia. Niin että se on koko ajan pohjassa.

4)Nyt kun pidät vastaanottimen nappia pohjassa kytke lähettimeen jännite.

5)Nyt pitäisi lähettimen lähettää avain vastaanottimeen. Jos tämä meni oikein vastaanottimen rele vetää ja Ledi syttyy.

6)Nyt katkaise lähettimeltä jännite. Ja päästä vastaanottimessa oleva nappi pohjasta.

7)Jos kaikki meni nyt oikein vastaanottimessa on nyt valitsemasi avainkoodi.

Vastaanottimen toimivuuden kokeilu opettamisen jälkeen:

1)Aseta vastaanotin ja lähetin jälleen niin että ne saa varmasti yhteyden toisiinsa.

2)Nyt vain kytket lähettimeen jännitteen. Ja katsot päästääkö rele ja jää siihen tilaan ja syttyykö ledi vastaanottimessa ja sammuu pienen hetken kuluttua kun olet katkaissut lähettimestä jännitteen. Huom. Rele voi myös vetää jos se ei jäänyt vetämään kun opetit avaimen vastaanottimelle. Koska olet opetus vaiheessa opettanut avaimen kaksi kertaa. Mutta tämä ei haittaa mitään. Koska opettaminen ja keskuslukon käyttö on käytännössä sama asia. Mutta kun painat vastaanottimen napin pohjaan niin se opettelee avaimen uudestaan.

Tässä koko asia on kaikessa yksinkertaisuudessaan. HUOM opetettu koodi katoaa välittömästi vastaanottimesta. Kun katkaiset siltä jännitteen. Jonka jälkeen vastaanottimelle pitää uudestaan opettaa avain. Ja jos käy niin että avaimen opetus ei onnistunutkaan. Niin käy uudestaan opetusohjeet läpi.

Tähänkin avaimen hukkumiseen jännite katkoksen aikana on ratkaisu. Sillä tältä sivulta löytyy nyt EEPROM:iin kirjoitus/luku koodi kohdasta: Paranneltu versio numerolukko koodiin 16F84:seen.Jonka avulla olen itse saanut opetetun avaimen pysymään muistissa jännitekatkoksen aikanakin. Että ei muuta kuin kokeilemaan saatteko saman aikaiseksi. Laitan tästäkin varmaan tulevaisuudessa ainakin tuon vastaanottimen käännetyn hex koodin. Jolla sitten voitte kokeilla toimiiko tuo avaimen muistissa pysyminen jännite katkoksen aikana. Avain hex koodejahan ei tämän muutoksen takia ole tarvinnut muuttaa.

Muita ominaisuuksista vielä. Vastaanottimen koodiin on sisään rakennettu suojaus. Joka estää tausta infrapunasäteilyn(auringo,tv-kaukosäätimet ja muut infrapunalähteet) vaikutuksen lukkoon. Tämän takia jos yrität esimerkiksi liian nopeasti lähettää koodia pitämättä riittävää taukoa. Ei lukko välttämättä toimi kunnolla. Tämän vältät laskemalla hitaasti vaikka viiteen. Suojauksen huomaa toimivan kun vastaanoton merkkiledi vastaanottimessa palaa koko ajan mutta mitään ei tapahdu. Sen pitää antaa sammua hetkeksi aikaa. Eli suojaus aktivoituu myös kun pidät infrapuna lähetintä koko ajan päällä. Tämä ominaisuus saattaa ensi alkuun sotkea lukon käyttöä. Mutta toimii myös tehokkaana suojana. Jos joku yrittää saada lukkoa auki kokeilemalla koko ajan jollain toisella infrapunalähteellä sen aukaisua.

Tässä muutama avain hex koodina:

Avain 1 hex koodi pic:iin

Avain 2 hex koodi pic:iin

Avain 3 hex koodi pic:iin

Ja tässä hex koodi vastaanottimeen:

Vastaanotin hex koodi pic:iin




Otan myös postia vastaan. Olisi myös mukava tietää, jos sinulle on ollut hyötyä/iloa tms. tästä sivusta. Ja pyrin vastaamaankin aina jos mikään ei sitä estä.
Tältä sivulta löytyy varmasti myös kaiken näköisiä kirutus virheitä. Mutta pyydän ymmärrystä niitä kohtaan. Niitä innostun karsiin kun kerkeän sillä nämä sivut on vain harrastus. Kuin myös mahdollisiin asia virheisiin kuten vaikka esim. Auton akussa on 12A jännite ja 60ah virta. Noita virheitä on syntynyt kun olen väsännyt sivuja liian nopeasti/vieläkin nopeammin. Kun olen onnistunut saamaan jotain aikaiseksi ja se on pitänyt saada nettiin. Mutta korjailen virheitä aina sitä mukaa kun ehdin. Sillä tämä sivu/sivustot on minulle tosiaan vain harrastus.
Ja tästä mennään takasi sinne mistä tulitkin tänne jos mennään...

 


Copyright © 1999 Jyrki

Sivua päivitetty 23.7.2002