شماره گیری تن با آی سی MT8888C و میکروکنترلر AVR

شماره گیری تن

در این بخش دانلود پروژه شماره گیری تن با آی سی MT8888C و میکروکنترلر AVR, توسط تیم الکترونیک و برنامه نویسی الکترونیک ۹۸ برای شما علاقه مندان به پروژه های میکروکنترلر AVR آماده شده است. در مقایسه با روش پالس, تولید سیگنال های تن DTMF برای عمل شماره گیری تن, فرآیندی نسبتا پیچیده است. تولید کنندگان قطعات, غالبا تراشه هایی را عرضه می کنند که مخصوص این کار طراحی شده اند. این تراشه ها را DTMF Generator یا شماره گیر (Dialer) می نامند. آی سی های شماره گیر Dialer ها تراشه هایی هستند که صرفا جهت شماره گیری به بازار معرفی می شوند. برخی از این آی سی ها به هر دو روش تن و پالس و برخی تنها به یک روش, شماره گیری را انجام می دهند.

دانلود پروژه شماره گیری تن با آی سی MT8888C و میکروکنترلر AVR

آی سی فرستنده – گیرنده MT8888C

امروزه, شرکت های بزرگی از جمله هولتک (Holtek), مایتل (Mitel) و Zarlink به عرضه تراشه های شماره گیر می پردازند. به علاوه, شرکت مایتل گروهی از تراشه ها را با عنوان DTMF Transcivers به بازار معرفی کرده است که هم تولید کننده و هم دریافت کننده سیگنال های DTMF می باشند. در این پروژه, به معرفی کامل تراشه MT8888C, که یک فرستنده – گیرنده DTMF شناخته شده است, می پردازیم.

ویژگی برجسته این گروه از فرستنده – گیرنده سگنال های DTMF عبارتند از:

:: ارتباط با سرعت بالا با میکروکنترلرهای اینتل (Intel)

:: آشکار سازی تن های وضعیت خط تا دامنه 30dBm

:: شماره گیری خودکار به روش Burst Mode

:: تولید کننده و دریافت کنده سیگنال های DTMF

:: مصرف توان کم

این تراشه فرستنده گیرنده DTMF, امکان آشکار سازی تن های وضعیت خط (Call Progress) را نیز دارد. بخش گیرنده این قطعه مبتنی بر استاندارد صنعتی MT8870D است. بخش فرستنده نیز یک سیگنال DTMF را با کیفیت بالا تولید می کند. شمارنده داخلی نیز حالتی به نام Burst Mode را به وجود می آورند که در نتیجه آن تن های تولید شده می توانند با زمان بندی بسیار دقیق ارسال گردند. یک فیلتر Call Progress نیز اجازه می دهد تا میکروکنترلر به تحلیل تن های وضعیت خط بپردازد. این تراشه در سیستم کارت های اعتباری, سیستم های پی جویی (Paging), سیستم های تکرار کننده, شماره گیرهای داخلی و … کاربرد دارد.

نقشه شماتیک پروژه شماره گیری تن با آی سی MT8888C

نقشه شماتیک پروژه شماره گیری تن با آی سی MT8888C و میکروکنترلر AVR

برای ساخت یک مدار شماره گیر با استفاده از MT8888C, به یک صفحه کلید نیاز داریم. برای این منظور بهتر است از صفحه کلیدهای 3*4 تلفنی استفاده کنیم. این صفحه کلیدها, درست مانند گوشی های تلفن, 12 کلید دارند که شامل 10 عدد و دو کلید * و # هستند که در واقع کلید * عدد 11 و کلید # عدد 12 را برمی گرداند. غالبا این صفحه کلیدها مانند صفحه کلیدهای ماتریسی 4*4, دارای 8 پایه می باشند, اما چون 4 سطر و 3 ستون دارند, به بیش از 7 پایه نیاز ندارد و در عمل هم یک پایه شان NC است. برای پیکربندی صفحه کلید های 3*4, می توانیم از همان دستورهای مربوط به صفحه کلیدهای ماتریسی 4*4 عادی استفاده کنیم, با این تفاوت که باید اعداد برگردانده شده به برنامه را به مقادیر واقعی, تصحیح کنیم. برای این هدف از جدول لوکاپ (Lookup Table) استفاده کنیم.

تکرار شماره گیری (Redialing)

اگر پس از اولین تلاش برای شماره گیری, به علت اشغال بودن خط یا به هر دلیل دیگری, برقراری ارتباط ممکن نگردد, باید عمل شماره گیری تکرار شود. در این حالت, اگر شماره گرفته شده در رشته ای ذخیره شده باشد, می توانیم به صورت خودکار عمل شماره گیری مجدد را با فشار دادن یک کلید (Readial) انجام دهیم. این امر باعث می شود تا برقراری ارتباط با سهولت و سرعت بیشتری انجام پذیرد.

برای تکرار عمل شماره گیری, باید خط یک بار قطع و وصل شود. برای این منظور به محض فشار دادن کلید B1, خط به مدت 1.5 ثانیه در وضعیت On Hook قرار می گیرد و سپس به حالت Off Hook در می آید تا بوق آزاد بر روی خط قرار گیرد. اگر عمل ارسال اعداد درست بعد از اشغال شدن خط انجام گیرد, ممکن است شماره گیری با اشکال روبه رو شود, پس لازم است تا اولین عدد پس از حداقل 200ms تاخیر شماره گیری گردد.

برنامه میکروکنترلر در محیط نرم افزار Bascom AVR

شرح برنامه میکروکنترلر به زبان بیسیک

در این برنامه از دستور Configkbd که مخصوص اسکن صفحه کلیدهای ماتریسی 4*4 است، استفاده کرده ایم. در حلقه Main برنامه منتظر می ماند تا عددی فشرده شود. به محض رخ دادن این امر، مقدار صحیح عدد از جدول لوکاپ برگردانده می شود. اولین عدد در اولین مکان LCD کاراکتری و در سطر اول آن نمایش داده می شود. پس از 16 کاراکتر، عدد بعدی به سطر دوم و ستون اول می رود و اگر سطر دوم هم پر شود، ال سی دی کاراکتری پاک می شود و عدد بعدی در اولین خانه به نمایش در می آید.

شرح قسمت تکرار شماره گیری در برنامه

عمل شماره گیری در زیر برنامه Transmit صورت می پذیرد. همانطور که مشخص است، برای ارسال اعداد، از حالت Burst Mode تراشه MT8888C استفاده شده است. عمل تکرار نیز در برنامه Redial انجام می شود. در این زیر برنامه، ابتدا خط به مدت 1500 میلی ثانیه به حالت آزاد در می آید و سپس برای شماره گیری مجدد اشغال می شود. اعدادی که در مرتبه نخست شماره گیری شده اند و به ترتیب در آرایه Ar() قرار گرفته اند، مجددا در یک حلقه For ارسال خواهند شد. توجه داشته باشید که اندیس آرایه از عدد یک آغاز می شود، بنابراین حلقه For نیز باید از مقدار اولیه یک شروع شود.

نحوه تعریف کلید تکرار شماره گیری در برنامه

همانطور که در نقشه شماتیک مدار مشاهده می کنید، از یک دکمه فشاری (Push Button) که به پایه Int1 میکروکنترلر ATmega16 متصل است، برای عمل شماره گیری مجدد استفاده شده است، اما هر کلیدی دارای بانس (Bounce) است و بسته به کیفیت کلید، بانس آن ممکن است تا 15 میلی ثانیه به طول بینجامد.

اگر وقفه خارجی به صورت حساس به لبه تعریف شده باشد و در حال اجرای زیر روال یک وقفه (Interrupt Subroutine-ISr) وقفه دیگری رخ دهد، پس از خروج از ISr وقفه جاری، به آن وقفه پاسخ داده خواهد شد. این بدان معناست که یک بار دیگر زیر روال وقفه اجرا خواهد شد. در جایی که یک کلید وظیفه ایجاد وقفه را به عهده داشته باشد، بانس آن می تواند باعث تکرار ناخواسته ISr شود، بنابراین لازم است به صورت سخت افزاری یا نرم افزاری بانس کلید را از بین ببریم.

در این برنامه دی بانس (Debounce) دکمه Redial را با کمک تایمر به صورت نرم افزاری انجام داده ایم. در زیر روال وقفه Int1 تایمر با مقدار 40000 بارگذاری (Load) می شود. اگر تایمر سرریز کند، برنامه به زیر روال سرریز تایمر یک می رود و تکرار شماره گیری انجام می شود. اگر در خلال شمارش تایمر، وقفه دیگری رخ دهد، تایمر از ابتدا بارگذاری می شود و سرریز آن به تعویق می افتد، به این ترتیب اثر بانس کلید تا 25 میلی ثانیه از بین می رود.

 اطلاعات پروژه

 رمز فایل : www.electronics98.com

 حجم فایل : 228 کیلوبایت

 محیط برنامه نویسی : BASCOM-AVR

 برنامه نویسی شده به زبان : BASIC

 نویسنده : فرهاد اکبری

 تاریخ انتشار : 12 آگوست 2014

4 دیدگاه

  1. سلام بعد از اینکه تماس گرفتیم چطوری متوجه میشیم طرف مقابل گوشی رو برداشته یا نه؟
    من میخوام اگر جواب داد یک صدا روی خط پخش کنم.

  2. فرهاد اکبری

    سلام دوست عزیز
    تراشه MT8888C این قابلیت را ندارد و شما باید با استفاده از یک مدار اندازه گیری تغییرات ولتاژ خط تلفن به این موضوع پی ببرید.

  3. سلام
    ایا امکان ساخت پروژه سفارشی وجود داره از روی همین پروژه
    بصورتی که به محض وصل شده به خط تلفن بصورت اتماتیک شماره 2000 را شماره گیری کرده و بعد از جواب دادن توسط سیستم گویا به وسیله فشردن یک شستی توسط کاربر شماره ی1 شماره گیری شود البته یک بلندگو نیز داشته باشد و درمقابل ولتاژ بالی 70 ولت مقاوم باشد

  4. با سلام و احترام
    با عرض پوزش فراوان، در حال حاضر امکان شخصی سازی و توسعه پروژه ها را نداریم.

 شرایط و قوانین ثبت دیدگاه

 فارسی بنویسید و از کیبورد فارسی استفاده کنید.

 لطفاً بیش‌از‌حدِ معمول، شکلک یا ایموجی استفاده نکنید و از کشیدن حروف یا کلمات با صفحه‌کلید بپرهیزید.

 به کاربران و سایر اشخاص احترام بگذارید. پیام‌هایی که شامل محتوای توهین‌آمیز و کلمات نامناسب باشند، حذف می‌شوند.

 از ارسال لینک‌های سایت‌های دیگر و ارایه‌ی اطلاعات شخصی خودتان مثل شماره تماس، ایمیل و آی‌دی شبکه‌های اجتماعی پرهیز کنید.