تولید تن های DTMF با میکرو و تایمر

  • نویسنده موضوع Alma
  • تاریخ شروع

Alma

مدیر
پرسنل مدیریت
این کد برای تولید تنهای DTMF با یک میکروی MEGA8 نوشته شده که هیچ نیازی هم به ایسی 8870 نداره
پین OCR1A خروجی تن هست و شما میتونید با استفاده از تابع Send_DTMF و رشته ای که بهش میدید تن های DTMF رو تولید کنید
برنامه خیلی ساده نوشته شده و نیازی به توضیح بیشتری نداره
در ضمن حتما قبل از استفاده از تابع Send_DTMF با استفاده از تابع dtmf_init تایمر 1 میکرو رو اینیشیال کنید.

این برنامرو خود شرکت اتمل با عنوان دایکیومنت AVR314: DTMF Generator پیشنهاد داره و بنده فقط اونو توی کامپایلر کدویژن پیاده کردم
کلاک میکرو 8 مگ هست



اما توضیحات بیشتر در خصوص تن های DTMF
در هر تن DTMF دو تا فرکانس مختلف سینوسی داریم که با هم ترکیب شدن اینجا یه توضیحات مختصری میدم
این DTMF مخفف جمله Dual Tone Multi Frequency هست یعنی دوتا تن با فرکانس مختلف مثل این



که در کل چون صفحه کلید ما 4X4 هست میشه 8 تا فرکانس مختلف به این صورت



حالا ما برای اینکه این تن ها رو تولید کنیم باید بتونیم 8 تا فرکانس مختلف رو با میکرو تولید و با هم ترکیب کنیم
اینجا برای این کار از PWM تایمر 1 استفاده شده و با مقادیری که در جدول های auc_frequencyH و auc_frequencyL قرارداده شده میشه با قراردادن توی فرمول و پیدا کردن مقدار سینوس متناظر اون از جدول auc_SinParam که یک سیکل کامل سینوسی هست و برابر قرار دادن این عدد OCR1A که رجیستر PWM تابمر یک هست اون فرکانس رو در خروجی داشته باشیم
حالا برای ترکیب این دو فرکانس میایم فرکانس بالا رو با 3/4 فرکانس پایین جمع میکنیم و در OCR1A میریزیم تا در خروجی ترکیب دو فرکانس رو داشته باشیم

این هم شکل موج هر 12 تا کلید که روی همه تلفن ها هست

 

پیوست‌ها

  • doc1982.pdf
    111.1 کیلوبایت · بازدیدها: 99
  • DTMF Generator.rar
    97.9 کیلوبایت · بازدیدها: 119
آخرین ویرایش:
  • Like
واکنش‌ها[ی پسندها]: Saeid
بالا پایین