DTMF-Touch Tone dekoder med hjälp av Microchip PIC mikroprocessor (6 / 9 steg)
Steg 6: Serial Output Mode
Som ett stöd för felsökning, jag har lagt till en seriell utdataläge som innehåller användbar information för försöksledaren.Det fanns inga extra stift tillgängliga att använda som en dedikerad seriell utgång, så det har att dela en pin med LED-indikator. I seriell läge fungerar LED inte längre som en indikator på en giltig DTMF-ton. LED kommer att visas upplyst hela tiden, med märkbara flimmer när seriella data överförs. Lysdioden fortfarande anger villkor som framgångsrikt driver upp (2 eller 3slow blinkar, beroende på läget), succesfullprogramming (2 snabbt blinkar, upprepade på obestämd tid), och inget giltigt program (4 snabbt blinkar, upprepade på obestämd tid)
För att åberopa den seriella produktion läget, kommer att du behöva korta A/D ingångsstift mikroprocessorns används för ljudingång (stift 7 av U1 i schematiskt) till marken. Sedan, cykel makt till kretsen. När mikroprocessorn återställs, det kontrollera tillståndet i audio inmatningsraden och se att det sitter nära 0 volt, medan den ska sitta nära 2,5 volt normalt. Naturligtvis måste du ta bort kort till marken på audio-ingången, annars någon audio input kommer att vara kortsluten till jord. Det är endast nödvändigt att ljudingången vara kortsluten till jord under mikroprocessor Återställ. Den kan tas bort omedelbart efter LED blinkar två gånger efter makt upp.
Du vet att den seriella produktionen är aktiv om du ser LED flimmer och du kan läsa den seriella strömmen på din dator.
För att övervaka den seriella produktionen med en dator, måste du konvertera 5 volt utdata av mikroprocessorn till RS-232 nivåer som kan läsas av datorer seriell. En krets som använder MAX232 kretsen kan användas för detta ändamål.
En rad av produktionen överförs varje gång frekvenserna är sopat. Fälten för information är avgränsade med kommatecken. Denna utgång kan enkelt inspelad av ett terminalprogram som Hyperterminal och sedan importeras till Microsoft Excel för vidare bearbetning om så önskas.
När du konfigurerar en terminal för att visa utdata, är inställningarna att använda 9600 baud, 8N1, ingen paritet, ingen flödesreglering.
Debug utdata innehåller följande information, från vänster till höger:
* Produktionsvärde för var och en av de 8 frekvenserna, uttrycks i decimalform. Värdena är 5 siffror lång, och inkluderar alla nollor.
* Produktionen av logiken. Detta kommer antingen vara 0-9, #, *, A, B, C, D för giltig tonen par, "S" om ingen toner påvisas, eller "?" om det finns en ogiltig kombination av toner.
Ett prov av seriella produktionen ingår nedan:
03767,00041,00081,00054,03763,00054,00084,00028,1
I det här exemplet upptäcktes siffran "1". Observera att filtret utdatavärden för första rad frekvensen och den första kolumnen frekvensen är mycket större än de andra 6 frekvenserna, som kan förväntas för DTMF siffra "1".
Koden ser ut för den samma siffran och upptäcka i två på varandra följande sveper innan man överväger det tonen att upptäckas, för både programmering och avkodning. Den seriella produktionen kommer att skapa en ny rad visar endast den siffran upptäckt, så att det sticker ut för användaren, som visas i följetong exempelresultatet nedan:
03883,00032,00043,00116,03465,00033,00064,00069,1
03705,00078,00044,00084,03996,00066,00061,00050,1
1
03767,00041,00081,00054,03763,00054,00084,00028,1
Om mikroprocessorn återställs i tonen upptäcka läge medan det seriell läget aktiveras också, är det första som kommer att översändas tonsekvens att upptäcka som för närvarande är programmerad i mikroprocessorn. Detta kommer att se ut som "PROGXXX... X". Om inget giltigt program finns, skickas "Nej PROG". Om mikroprocessorn återställs i programmeringsläget med seriell läge aktiverat, skickas programmerade ordningsföljden en programmering läge stiftet kommer från hög till låg. Igen, detta kommer att se ut som "PROGXXX... X". Dessa bestämmelser är användbara för att kontrollera att den sekvens du försökte programmet till mikro programmerades korrekt.