راه اندازی پورت سریال UART در زبان بیسیک BASIC

راه اندازی پورت سریال UART

ارتباطی سریال و قابل برنامه ریزی که در دو حالت نرم افزاری و سخت افزاری قابل تغییر است. این ارتباط بیشتر برای ارتباط با کامپیوتر طراحی شده اما منطق کار این ارتباط TTL است.

نکته : سطح ولتاژ در منطق TTL بین 0 تا 5 ولت بوده و در پروتکل RS-232 بین منفی 15 تا مثبت 15 ولت می باشد.

نکته : پایه های مورد استفاده در این ارتباط در میکروکنترلر AVR به نام TXD و RXD می باشد. در صورت استفاده از UART نرم افزاری, این پایه ها را می توان تغییر داد.

راه اندازی پورت سریال UART در زبان بیسیک BASIC

ارتباط بین میکرو کنترلر و استاندارد RS232

در صورت استفاده از ارتباط سریال uart بین میکرو کنترلر و استانداد RS232 باید از تراشه های تبدیل سطح ولتاژ استفاده کرد.

تراشه MAX232 و MAX233 : این تراشه ها برای انتقال اطلاعات بین استاندارد RS232 (کامپیوتر) و میکرو کنترلر AVR به کار می رود. لازم به ذکر است تنها تفاوت بین این دو نوع تراشه در این می باشد که برای راه اندازی تراشه MAX232 شما احتیاج به استفاده از چندین خازن دارید, اما در تراشه MAX233 احتیاج به استفاده از هیچ خازنی ندارید.

تراشه MAX235 : این تراشه برای میکروکنترلرهایی قابل استفاده هستند که دارای دو UART بوده با اینکه هم از UART سخت افزاری و هم نرم افزاری استفاده شده است.

نحوه اتصال کامپیوتر از طریق پورت سریال توسط آی سی MAX232 به میکروکنترلر AVR

نحوه اتصال کامپیوتر از طریق پورت سریال توسط آی سی MAX232 به میکروکنترلر AVR

نحوه اتصال کامپیوتر از طریق پورت سریال توسط آی سی MAX233 به میکروکنترلر AVR

نحوه اتصال کامپیوتر از طریق پورت سریال توسط آی سی MAX233 به میکروکنترلر AVR

نحوه اتصال کامپیوتر از طریق پورت سریال توسط آی سی MAX235 به میکروکنترلر AVR

نحوه اتصال کامپیوتر از طریق پورت سریال توسط آی سی MAX235 به میکروکنترلر AVR

UART سخت افزاری

در این حالت از پایه هایی استفاده می شود که در کاتالوگ میکروکنترلرها با نام RXD و TXD است. قبل از پیکر بندی و معرفی این ارتباط سریال باید سرعت و نرخ ارسال دیتا بین میکروکنترلر و هر سیستم دیگری برابر باشد تا دیتاهای صحیح بین آنها تبادل شود. به این نرخ باود (Baud) گفته می شود که تعیین کننده سرعت بین دو سیستم است. نرخ باود همیشه تقسیمی از فرکانس میکرو تنظیم شود چون باعث کاهش خطای میکرو می شود.

تعیین نرخ باود به زبان بیسیک BASIC

در اول برنامه باید این نرخ تعیین شود.

X : مقادیر استاندارد مانند :1200-2400-4800-9600-19200-28800-38400-57600-115200

تعیین نرخ باود دوم در زبان بیسیک BASIC

در میکروهایی که دارای دو ارتباط سریال Uart هستند برای تعیین نرخ باود دوم استفاده می شود.

تغییر نرخ باود در برنامه به زبان بیسیک BASIC

در صورتی که بخواهید با یک Uart میکرو با سیستم های مختلف ارتباط برقرار کنید و هر سیستم سرعت خاص خود را داشته باشد این دستورات کاربرد دارند. این دستورات برای دو Uart در هر جای برنامه سرعت نرخ را تغییر دهید.

نکته : سرعت Baud سیستم دریافت کننده و ارسال کننده باید برابر باشد.

پیکر بندی بافر Uart سخت افزاری برای ارسال دیتا

این دستور در حقیقت یک فضا به میزان x بایت در حافظه Sram اشغال می کند تا داده های ارسالی از طریق این بافر به خروجی ارسال شود.

نکته : در صورت استفاده از Terminal Emulator می توان داده های ارسالی از میکرو را مشاهده کنید.

دستور ارسال دیتا به پورت سریال در زبان بیسیک BASIC

با این دستور شما می توانید به پورت سریال داده رشته یا عددی و یا هر دو را انتقال دهید.

دستور ارسال دیتا به پورت سریال به صورت باینری

این دستور متغیر var را به صورت باینری به پورت سریال ارسال می کند.

پیکر بندی بافر Uart سخت افزاری برای دریافت دیتا

این دستور در حقیقت یک فضا به میزان x بایت در حافظه Sram اشغال می کند تا داده های دریافتی از طریق این بافر به میکرو وارد می شود.

دستور دریافت دیتا از پورت سریال

در هنگام برنامه نویسی با این دستور شما می توانید از پورت سریال داده رشته یا عددی دریافت کنید و در متغیر var قرار می دهد. اما این دستور تا کارکتری را دریافت نکند برنامه را متوقف می کند.

دریافت داده از پورت سریال

این دستور برنامه را متوقف نمی کند و اولین کارکتر دریافت شده از پورت سریال را به کد اسکی تبدیل کرده و در متغیر var می ریزد. در صورتی که داده ای برای دریافت وجود نداشته باشد عدد صفر را در var قرار می دهد.

نکته : متغیر var نمی تواند Bit و یا String باشد.

دریافت داده از terminal emulator

با این دستور می توان از طریق کیبرد متصل به کامپیوتر و وارد کردن داده در نرم افزار Bascom و در صفحه Terminal Emulator مقادیر داده را دریافت و در متغیر var قرار داد.

Noecho : در صورت وجود این گزینه با تایپ کردن در محیط Terminal Emulator مقادیر نمایش داده نخواهد شد.

Data : متنی که می توانید قبل از دریافت داده در محیط Terminal Emulator نمایش دهید.

دریافت داده باینری از Terminal Emulator

با این دستور می توان از طریق کیبرد متصل به کامپیوتر و وارد کردن داده در نرم افزار Bascom و در صفحه Terminal Emulator مقادیر داده را دریافت و در متغیر var قرار داد.

Noecho : در صورت وجود این گزینه با تایپ کردن در محیط Terminal Emulator مقادیر نمایش داده نخواهد شد.

Data : متنی که می توانید قبل از دریافت داده در محیط Terminal Emulator نمایش دهید.

دریافت داده هگزاد سیمال از Terminal Emulator

با این دستور می توان از طریق کیبرد متصل به کامپیوتر و وارد کردن داده در نرم افزار Bascom و در صفحه Terminal Emulator مقادیر داده را دریافت و در متغیر var قرار داد.

Noecho : در صورت وجود این گزینه با تایپ کردن در محیط Terminal Emulator مقادیر نمایش داده نخواهد شد.

Data : متنی که می توانید قبل از دریافت داده در محیط Terminal Emulator نمایش دهید.

نکته : هر بایت مشخص کننده یک کارکتر است. پس زمانی که شما یک متغیر از نوع Byte را می خواهید ارسال یا دریافت کنید سیستم به تعداد کارکترها منتظر می ماند. برای مثال اگر از دستور input استفاده کرده اید و متغیر شما از نوع Integer می باشد در محیط Terminal Emulator تا دو کارکتر را تایپ نکنید داده ها ارسال و در میکرو دریافت نمی شوند.

UART نرم افزاری

در این حالت از پایه هایی استفاده می شود که شما به میکرو معرفی خواهید کرد. برای Uart نرم افزاری باید تمامی اطلاعات پایه های ارتباطی را شرح داد. از قابلیت های این ارتباط, استفاده از چندین کانال برای ارتباط سریال با سیستم های مختلف می باشد.

پیکر بندی Uart نرم افزاری در زبان بیسیک BASIC

Pin : نام پایه پورت.

Speed : سرعت نرخ ارسال دیتا.

Data : مشخص کننده تعداد بیت ارسال یا دریافتی با این پایه (7 یا 8 بیتی).

Parity : مشخص کننده خصوصیت دیتای ارسال یا دریافتی با این پایه (0 برای فرد – e برای زوج – n برای هر دو).

Stopbits : مشخصه ای که میزان فاصله بین دو داده ارسالی یا دریافتی را مشخص میکند (1 یا 2 بیت).

Inverted : این گزینه منطق ولتاژ ارتباط RS232 را معکوس می کند (در صورتی که در خروجی از بافر Not استفاده شده باشد کاربرد دارد).

Mode : ورودی یا خروجی بودن پایه را تعیین می کند. Input برای ورودی (RXD) و گزینه Output برای خرجی (Txd).

Channel : مشخص کننده عدد کانال.

تعیین نرخ باود در Uart نرم افزاری

در اول برنامه این نرخ تعیین می شود.

X : مقادیر استاندارد مانند: 1200-2400-4800-9600-19200-28800-38400-57600-115200

تعیین نرخ باود دوم در Uart نرم افزاری

در میکروهایی که دارای دو ارتباط سریال Uart هستند برای تعیین نرخ باود دوم استفاده می شود.

تغییر نرخ باود در برنامه برای Uart نرم افزاری

در صورتی که بخواهید با یک Uart میکرو با سیستم های مختلف ارتباط برقرار کنید و هر سیستم سرعت خاص خود را داشته باشد این دستورات کاربرد دارند. این دستورات برای دو UART , در هر جای برنامه سرعت نرخ را تغییر دهید.

نکته : سرعت BAUD سیستم دریافت کننده و ارسال کننده باید برابر باشد.

خروج از کانال UART نرم افزاری

دستورات ارسال دیتا به پورت سریال نرم افزاری

با این دستور شما می توانید به پورت سریال داده شده رشته یا عددی و یا هر دو را انتقال دهید.

دستور ارسال دیتا به پورت سریال نرم افزاری به صورت باینری

این دستور متغیر var را به صورت باینری به پورت سریال ارسال می کند.

دستور دریافت دیتا از پورت سریال نرم افزاری

با این دستور شما می توانید از پورت سریال داده رشته یا عددی دریافت کنید و در متغیر var قرار می دهد. اما این دستور تا کارکتری را دریافت نکند, برنامه را متوقف می کند.

دریافت داده از پورت سریال نرم افزاری

این دستور برنامه را متوقف نمی کند و اولین کارکتر دریافت شده از پورت سریال را به کد اسکی تبدیل کرده و در متغیر var می ریزد. در صورتی که داده ای برای دریافت وجود نداشته باشد عدد صفر را در war قرار می دهد.

نکته : متغیر var نمی تواند Bit و یا String باشد.

دریافت داده از Terminal Emulator

با این دستور می توان از طریق کیبرد متصل به کامپیوتر و وارد کردن داده در نرم افزار Bascom و در صفحه Terminal Emulator مقادیر داده را دریافت و در متغیر var قرار داد.

Noecho : در صورت وجود این گزینه , با تایپ کردن در محیط Terminal Emulator مقادیر نمایش داده نخواهد شد.

Data : متنی که می توانید قبل از دریافت داده در محیط Terminal Emulator نمایش دهید.

دریافت داده باینری از Terminal Emulator

با این دستور می توان از طریق کیبرد متصل به کامپیوتر و وارد کردن داده در نرم افزار Bascom و در صفحه Terminal Emulator , مقادیر داده را دریافت و در متغیر var قرار داد.

Noecho : در صورت وجود این گزینه, با تایپ کردن در محیط Terminal Emulator مقادیر نمایش داده نخواهد شد.

Data : متنی که می توانید قبل از دریافت داده در محیط Terminal Emulator نمایش دهید.

دریافت داده هگزاد سیمال از Terminal Emulator

با این دستور می توان از طریق کیبرد متصل به کامپیوتر و وارد کردن داده در نرم افزار Bascom و در صفحه Terminal Emulator مقادیر داده را دریافت و در متغیر var قرار داد.

Noecho : در صورت وجود این گزینه با تایپ کردن در محیط Terminal Emulator مقادیر نمایش داده نخواهد شد.

Data : متنی که می توانید قبل از دریافت داده در محیط Rerminal Emulator نمایش دهید.

نکته : هر بایت مشخص کننده یک کارکتر است پس زمانی که شما یک متغیر از نوع Byte را می خواهید ارسال یا دریافت کنید سیستم به تعداد کارکترها منظر می ماند. برای مثال اگر از دستور Input استفاده کرده اید و متغیر شما از نوع Integer می باشد در محیط Terminal Emulator تا دو کارکتر را تایپ نکنید داده ها ارسال و در میکرو یافت نمی شوند.

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

 رمز فایل : www.electronics98.com (این مطلب فاقد فایل جهت دانلود است)

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

 تاریخ انتشار : 11 اکتبر 2014

3 دیدگاه

  1. مطالب شما کاربردی قابل فهم و به انسان جرات فراگیری رو میده ممنون زحمت کشیدید

  2. مطالب مهم و ارزشمندی رو به سادگی بیان کردین متشکرم

  3. سلام . ببخشید اگر توی برنامه بیسیک بخواهیم کتترل سرعت یک موتور دی سی را با ads و با مقاومت متغیر راه اندازی کنیم چگونه باید اطلاعات رو ارسال گرد هر کار کردم نمیشه

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

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

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

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

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