Kul med PIC församling - episod 21 (4 / 5 steg)
Steg 4: programvara
Länkarna listas nedan. Medan det är måltavlan för 12F683, är det lätt portas till större versioner av bilden. Det kräver oftast ändra namn som TRISIO till TRISA och GPIO att PORTA. Du måste också ändra raden som identifierar den PIC versionen (lista =) och INCLUDE-filen men de är intuitivt förändringar. Den __CONFIG linjen kan också behöva tweaking bara för att en eller två av de etiketter som används är stavat fel i några av inkluderade filer. Se bara till att PIC du använder har en PIN-kod som gör att externa avbryta indata (vanligtvis märkt EXT). Som vi sett tidigare, 16F688 (14-polig PIC) kan användas med samma fysiska pin anslutningar som 12F683 om du vill ha mer I/O pins.
Det finns faktiskt tre versioner av programvaran som tillhandahålls. Alla tre använder samma kod i avbrottshanterare för att fånga bitström från beroende på vilken version av sensorn vi använder. Skillnaderna i huvuddelen av programvaran är i vilken bitar fångas upp och används. DHT-11 version helt enkelt fångar de första 8 bitarna och de tredje 8 bitarna och sedan tolkar dem till heltalsvärdena för fuktighets- och displayen. Tolkning görs helt enkelt genom upprepad subtraktion att bestämma de tio siffror. Resten utgör sedan enhetens siffra.
Den andra och tredje versionen är både för DHT-22/AM2302. Skillnaden ligger i hur databitarna s├Ñdana. Denna modul är lite svårare att arbeta med eftersom decimaldelen av värden kräver sensorn att mata 10 signifikanta bitarna i stället för bara de 8 bitarna används av DHT-11 för varje värde. Med tanke på att PIC instruktionerna fungerar endast för 8-bitars data, innebär det att koden komplexiteten måste öka för att kunna hantera alla 10 bitar. I "Tabell"-versionen av programvaran förenkla vi koden genom att bara fånga de 8 mest signifikanta bitarna och sedan använda det värdet med index i uppslagstabeller för display siffror. Denna metod innebär att vi förlorar två bitar av fractional data (0,3) i vår resolution. För denna typ av projekt som är en rimlig avvägning. Den andra versionen av programmet behåller full 10-bitars precision men på bekostnad av mer komplex logik för datainsamling och tolkning. Båda versionerna finns endast med som exempel på olika metoder du kan använda i dina projekt.
Om du är oroad över möjligheten till en tillfällig dålig dataöverföring, skulle då du vilja inkludera kod för att kontrollera de 8 bitarna kontrollsumma i slutet av varje bit-ström. Gör att du skulle fånga varje byte data individuellt, lägga till första fyra byte tillsammans (ignorera den bär lite), och sedan kontrollera att resultatet överensstämmer med den femte byten.
De värden som visas för fuktighet och temperatur får inte förändras så mycket medan du tittar på dem så det är trevligt att ha något som låter dig veta att mätningarna görs som planerat. För att göra att jag som en variabel som kallas "Heartbeat" som får växlas mellan ett ASCII-utrymme (tomt) och en stjärna.