Stap 3: Software
Hieronder vindt u de link van de software. Terwijl het wordt gericht voor de 12F683, is het eenvoudig geport naar grotere versies van de PIC. Meestal vereist het te wijzigen in namen, zoals TRISIO TRISA, en GPIO naar PORTA. U zult ook moeten veranderen de regel waarmee de PIC-versie (lijst =) en het INCLUDE-bestand, maar die zijn intuïtieve veranderingen. De __CONFIG lijn wellicht ook tweaken alleen maar omdat een of twee van de gebruikte etiketten zijn anders gespeld in sommige van de INCLUDE-bestanden. Zoals we hebben gezien voordat, de 16F688 (14-pins PIC) kan worden gebruikt met de dezelfde fysieke pin-verbindingen als de 12F683 als u meer I/O pinnen wilt.
De software wordt gestart met de I2C-code geschreven voor de LCD-interface in aflevering 22. In dit voorbeeld was allen wij bezorgd over te schrijven naar de seriële I2C-bus. Met de toevoeging van de RTC en EEPROM hebben we nu te nemen van de mogelijkheden voor het lezen van de seriële I2C-bus. Een I2C lezen operatie begint met het schrijven van de I2C apparaatadres (we hebben nu drie apparaten op de bus). Die wordt gevolgd door het schrijven van het geheugen of locatie voor de RTC of de EEPROM te registreren. Op dat moment de PIC schakelt de SDA-lijn om een input en gebruikt de SCL-regel klok databits uit het RTC of EEPROM. Aan het einde van elke byte ontvangen, stuurt de PIC een acknowledge naar de slave-apparaat.
Naast de nieuwe I2C routines lezen, zijn er een heleboel routines voor aansluiting op de RTC en de EEPROM. RTC mogelijkheden omvatten schrijven voor initialisatie data, lezing van de registers van de tijd, en het lezen van de registers van de temperatuur. De temperatuur lijkt een bonus-vermogen, maar het mist in nauwkeurigheid in vergelijking met speciale temperatuursensoren. Ook al we toegang tot zowel de integer en fractionele gedeelten van de temperatuur hebben krijgen we nog steeds alleen nauwkeurigheid tot +/-3 graden. Bovendien, is de temperatuur niet van de omringende lucht. Het is de interne temperatuur van de chip die wordt gebruikt voor het compenseren van de klok-oscillator. De RTC omvat een paar registers dan de tijd en datum informatie hier gebruikt. Zij omvatten een paar alarm en ook een register te controleren van de frequentie van de blokgolf-uitgang (SQW) van de module. Er is ook een register van de controle die u toelaat om het wijzigen van 24-uurs tijdweergave in 12-uurs.
De routines voor de EEPROM in principe enkel controle Lees- en schrijfbewerkingen. Grootte van het geheugen is 32 k bytes en wordt georganiseerd als 128 pagina's, met elke pagina met 256 bytes. Dat betekent dat het adres verzonden naar de EEPROM is twee bytes, met de eerste byte wordt van de pagina en de tweede byte wordt de locatie in de pagina. In de voorbeeldcode wordt de geheelwaarde van de temperatuur eenmaal een minuut naar de EEPROM geschreven. De temperatuur omvat een teken-bit dus elke opslag maakt gebruik van twee geheugenlocaties omdat op dat moment, de temperatuur en de teken zijn omgezet in ASCII-tekens. Dat maakt voor een maximum van 16384 gegevenspunten, maar omwille van de eenvoud, dat nummer is beperkt tot 9999. De manier waarop die de software is momenteel het schrijven adres geschreven wordt opnieuw ingesteld op elke power on van de PIC. Die kunnen worden gewijzigd zodat het laatste bekende schrijven-adres wordt ook in de EEPROM opgeslagen en lees vervolgens terug op power on.
Zoals vermeld in de sectie hardware, heeft elk van de twee schakelaars dubbele plicht. Als schakelaar 1 is ingedrukt wordt de software initialisatie tijdweergave. Eenmaal in de initialisatie modus schakelen 2 stappen door de waarden voor elk gedeelte van de tijd en datum. Bijvoorbeeld, kunt u schakelen door middel van 0-23 voor de uren. Nadat de gewenste waarde voor een optie is ingesteld, zullen te drukken van schakelaar 1 doorgaan naar de volgende tijd/datum optie. Wanneer is voldaan aan alle opties (dag van de week is de laatste optie) een andere druk van schakelaar 1 zorgt ervoor dat een afrit van de initialisatie-modus.
Tijdens normale tijd/datum weer te geven, een druk van switch 2 zorgt ervoor dat de software in te voeren van de EEPROM lezen modus. Het display verschijnt een teller op lijn 1, waarin wordt aangegeven welke vermelding (1-9999) gelezen wordt en hoeveel totale vermeldingen zijn opgeslagen sinds inschakelen. Lijn 2 van het scherm zal de temperatuur waarde voor die opslaglocatie tonen. Elke druk op de schakelaar 1 zullen doorgaan naar de volgende waarde opgeslagen in de EEPROM. Als alle opgeslagen waarden hebben gelezen, vervolgens verschijnt het LCD-scherm "DONE". Een druk op de schakelaar 2 zal leiden tot een uitgang uit de EEPROM modus op elk gewenst moment tijdens het lezen.
Nou, dat is het voor aflevering 23 van "Fun met PIC vergadering". Stay tuned voor meer afleveringen.