تارا فایل

پاورپوینت میکروکنترلر در بسکام Bascom


میکروکنترلر
BASCOM

صفحه اصلی برنامه BASCOM مانند زیر می باشد. با زدن NEWبرنامه ساده زیر را نوشته که تنها می خواهد 2 بیت اول پورت B را یک کند.( خط اول به اختصار نوع (ATMEG16)IC را تعیین می کند و بعد پورت b بعنوان خروجی تعریف می کند) آن را Save کنید.

برای استفاده از برنامه بعد از نوشتن برنامه تنها از سه آیکون یا دکمه استفاده می شود.

دکمه سیاه برای کامپایل کردن یعنی فایل BASIC نوشته شده را برای اجرا به

HEX تبدیل می کند . دکمه قرمز صفحه شبیه سازی برای تست برنامه را می

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

ساز را که بزنید صفحه زیر ظاهر شده که با ید دکمه های نشان داده شده را به ترتیب عدد گذاری 1-5 زده تا برنامه اجرا شود.

برای ریختن برنامه روی آی سی ابتدا برنامه مورد نظر را کامپایل کرده و کابل برنامه ریز را وصل کرده دکمه سبز روی محیط BASCOM را زده وارد محیط جدیدی مانند صفحه بعد شده که اگر آی سی سا لم باشد شماره آنرا نشان می دهد مثلاً M16 .کد های نشان داده شده مربوط به برنامه ای است که کامپایل شده ا ست دکمه سبز را زده و IC برنامه ریزی می شود.

مدار زیر خواندن وضعیت کلید ورودی روی پورت PAo و کنترل LED روی پورت PB0 را نشان می دهد.
یعنی می خواهیم اگر دکمه در شکل زیر پایین زده شود LED روشن و در غیر این صورت خاموش شود.
 
برنامه ای که بایستی روی حافظه میکرو ریخته شود بصورت زیر است .در این برنامه در دو سطر اول نوع میکرو و کریستال مورد استفاده برای کلاک سیستم نوشته شده است . سپس پورتها تعریف می شود و بعد حلقه شروع شده و سپس پورت ورودی را خوانده و اگرصفر باشد LED را روشن می کند.

با ید دقت نمایید که برای خواندن پورت ازدستور Pin استفاده می شود و برای خروجی دستور Port بکار می رود.
$regfile "m16def.dat"
$crystal=8000000
Config Portb = Output تعریف پورت بعنوان خروجی
Config Porta = Input
Do
If Pina.0 = 0 Then خواندن ورودی
Portb.0 = 1
Else
Portb.0 = 0
End If
Loop
End

2. نمایش پیام روی LCD
یک عدد LCD را به پورت C وصل کرده وبا اجرای برنامه زیر پیام Hello,world نمایش داده خواهد شد. نمایشگر 16 ستون دارد و 2 سطر . در برنامه سطر سوم و چهارم تعریف نمایشگر است . دستور Locate2,1 سطر دوم و ستون اول نمایشگررا معین می کند. (استثناً برای استفاده از پورت C و برنامه ریزی آن در قسمت برنامه ریز Jtag را بایستی غیر فعال نماییم این مورد در دکمه Lock and Fuse bit می باشد) در بعضی LCD ها نیازی به مقاومت 1 کیلو ندارد وآن پایه را زمین می کنیم.
چون ممکن است LCD کار نکند برای اطمینان با دستور Toggle portb.0 پایه 1 هم بصورت چشمک زن راه اندازی می شود.
تا حداقل با چک کردن این پایه بفهمیم برنامه ریزی صحیح انجام شده است.

$regfile "m16def.dat"
$crystal=8000000
Config Lcd = 16 * 2 تعریف اولیه صفحه نمایش
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 =portc.7, _
E = Portc.1 , Rs = Portc.0
cls
Do
Locate 1,1
Lcd "hello"
Waitms 100
Locate 2,1
Lcd "world"
Waitms 100
Toggle portb.0
Loop
End

3. مدار صفحه کلید و نمایش محتوای کلید روی LCD

LCD را به پورت C وصل کرده و صفحه کلید به پورت D وبا اجرای برنامه زیر محتوای کلید نمایش داده خواهد شد.در این برنامه تنها دو دستور جدید می باشد ، یکی تعریف اولیه صفحه کلید و دیگری خواندن محتوای صفحه کلید. چون بطور کامل برای همه کلید ها کارنمی نکند بنابراین بایستی یک زیر برنامه به این برنامه اضافه شود.
$regfile "m16def.dat"
$crystal=8000000
Config Lcd = 16 * 2 تعریف اولیه صفحه نمایش
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 =portc.7, _
E = Portc.1 , Rs = Portc.0
Config kbd=portd , debounce=50 تعریف اولیه صفحه کلید
Do
W=Getkbd( ) ورودی کلید را بخوان
Lcd w نمایش کلید فشار داده شده
Waitms 100
Loop

4. مدارزیر ورودی ADC (آنالوک به دیجیتال ) را از پایه PA0 خوانده و مقدار آنرا روی LCD نمایش می دهد

 LCD را به پورت C وصل کرده وبا اجرای برنامه با تغییر پتانسیومتر میزان ولتاژ ورودی رویLCD نمایش داده خواهد شد.پایه AVcc از میکرو به Vcc وصل شود علاوه بر Vcc معمولی پایه 10 میکرو . در این برنامه تنها دو دستور جدید می باشد ، یکی تعریف اولیه ADC و دیگری خواندن ورودی آنالوک از پتانسیومتر. در این مورد دیگر PA0 بصورپورت معمولی نمی باشد.
$regfile "m16def.dat"
$crystal=8000000
Dim w as byte
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 =portc.7, _
E = Portc.1 , Rs = Portc.0
Config Adc = Single , Prescaler = Auto Adc تعریف اولیه
Start Adc
Do
W=Getadc(0) ورودی آنالوک را بخوان
Lcd w نمایش ورودی
Waitms 100
Loop

5. کار با ورودی وقفه (اینتراپت)
پایه وقفه یا انتراپتINT روی IC ویژگی خاصی دارد که اگر لاجیک صفر به آن اعمال شود برنامه در حال اجرا متوقف شده و به زیر برنامه که در تعریف اولیه مشخص شده پرش می کند.

در این برنامه با فشار دکمه که به پایه انتراپت وصل شده به زیر برنامه وقفه رفته و LED را فعال می کند. ورودی وققه یا انتراپت و نوعی پورت است که برای خواندن این ورودی نیاز به خواندن ورودی پورت با دستور Pin نیست .
$regfile "m16def.dat"
$crystal = 8000000
Config Portb = Output
Enable Interrupts فعال کردن وقفه
Enable Int0 فعال کردن وقفه صفر
On int0 K1 اگر وقفه شود به زیر برنامه رو
Do
Loop
K1:
Portb.0=1
Return
End

6. کار با تایمر: با توجه به شکل بالا می خواهیم برنامه ای بنویسیم تا بعد از تاخیر دیود روشن شود و می خواهیم برای تاخیر از تایمر بجای دستور wait استفاده کنیم.
در داخل AVR دو عدد تایمر وجود دارد که ساختار هر کدام بصورت زیر است.
کلاک سیستم
Prescale
تقسیم بر 1 یا 8 یا 16 یا 64 یا 1024
شمارنده 8 یا 16 بیتی
انتراپت یا وقفه
ورودی
کانتر پایه To,T1

برای هر تایمریک شمارنده بنام Prescale که در تعریف اولیه مقدار دهی می شود (تقسیم بر 1 یا 8 یا 16 یا 64 یا 1024) تخصیص داده شده است . بلوک دوم ثابت می باشد برای تایمر 0 ، شمارنده 8 بیتی وبرای تایمر 1 ، 16 بیتی در نظر گرفته شده . برای استفاده از تایمر ابتدا در مقدمه سازی نوع تایمر را مشخص می کنیم آنگاه در Prescale یکی از اعداد تقسیمی را انتخاب می نماییم . در برنامه زیر بعد از تعریف اولیه و راه اندازی تایمر0 وارد حلقه شده و صبر می کند تا شمارش تایمر تمام شود و به زیر برنامه K1پرش نماید و پورت را روشن کند. بدین وسیله ایجاد تاخیر خواهد شد که برابر T=t×1024×256در این فرمول T زمان تاخیر و t مقدار پریود فرکانس کلاک سیستم می باشد که اگر 1 مگاهرتز باشد 1 میکرو ثانیه خواهد شد .پس کل تاخیر 262144/. ثانیه می شود.( دستور OVF0 بمعنی سرریز است که اگر شمارش تمام شود وقفه ایجاد شده و به زیر برنامه K1 می پرد)
تعاریف اولیه
Config timer0=timer , prescale=1024 تعریف اولیه تایمر
Enable timer0
Enable Interrupts
On Ovf0 K1
Start timer0
Do
Loop
K1:
Portb.0=1
Return
End

7. کار با تایمر بصورت کانتر Counter : می خواهیم برنامه ای بنویسیم تا پالس ورودی را بشمارد.
میکرو کنترلر

Portb.1/T
LED
در این برنامه بعد از تعریف اولیه و راه اندازی تایمر بصورت کانتر وارد حلقه شده و صبر می کند تا شمارش تایمر تمام
شود ( برای تایمر 0 هشت بیتی 256 می باشد) و به زیر برنامه می رود . در هر لحظه تعداد پالس ورودی برابر است با A×256 می باشد . مثلاً اگر 5 مرتبه به زیر برنامه رفته باشیم تعداد کل پالس ورودی1280 است.
تعاریف اولیه
Config timer0=counter , edge=rising تعریف اولیه تایمربصورت کانتر
Enable counter0
Enable Interrupts
On Ovf0 K1
Do
Loop
K1:
A=A+1
Return
End

8. کار با پورت سریال (RS232) ؛ در این طرح می خواهیم میکرو کنترلر 1 متغیری را ارسال نماید و میکرو کنترلر دوم آنرا دریافت نماید و روی LCD نمایش دهد. به این روش ارسال آسنکرون می گویند . پایه 15 در میکروکنترلر فرستنده Txمی باشد و 14 دریافت کننده Rx می باشد.
14
15
برنامه فرستنده و گیرنده در زیر آمده. مواظب باشید کریستال برای کلاک ها مساوی گرفته شود و زمین مشترک وصل گردد.
برنامه فرستنده از 1 تا 100 را با دستور Print از پایه 15 سریالی ارسال می کند و گیرنده با دستور input آنرا دریافت کرده و روی LCD نمایش می دهد.

9. ارسال پیام از میکرو به PC : در این طرح می خواهیم پیامی از میکرو به PC ارسال ودر textbox در Visual Basic6 نمایش دهد .
قسمت برنامه برای میکرو که در بالا نوشته شد.
برنامه برای PC در محیط Visual Basic6 به صورت زیر است:

همانطور که در بالا مشاهده می شود در سمت چپ روی FORM ساعت مخصوص تایمر و تلفن برای پورت سریال و کادر Text را آورده. ودر سمت راست برنامه را تایپ کرده و با F5 اجرا می کنیم. اعدادی 1 تا 100 هر 120 میلی ثانیه در کادر text دریافت می شود.
در منو بیسیک Project را انتخاب کرده قسمت Componet رفته و Microsoft comm. Contl 6 را کلیک کرده یک تلفن روی tools ظاهر شده و این تلفن را روی Form منتقل می نماییم.

10. ارسال پیام از PC به میکروکنترلر

11. ارسال و دریافت اطلاعات از پورت SPI
پروتوکل SPI یک ارسال سری می باشد این تکنیک ارسال در واقع نوع سنکرون می باشد چون داده ها با کلاک همراه می باشد ارسال SPI نسبت به RS232 امتیازاتی دارد از جمله اینکه بوسیله این روش می توان چندین میکرو با هم تماس بگیرند .یکی بصورت Master و تعدادی بصورت Slave.

حافظه در AVR
سه نوع حافظه در میکرو AVR موجود است :
الف) حافظه Flash از نوع EEPROM که برای ATmega16 16 کیلو بایت می باشد و برنامه های خود را با programmer بروی آن ریخته می شوند.
ب ) حافظه RAM که برای ATmega16 1 کیلو بایت می باشد وبرنامه نویس طی برنامه از آن استفاده می کند مانند وقتی در برنامه می نویسیم N=2 عدد 2 در جایی که این حافظه باشد ذخیره می شود تا بعد از آن استفاده کنیم.
ج) حافظه EEPROM که برای ATmega16 -512 بایت می باشد با قطع برق محتوای آن پاک نمی شود و ضمن اجرای برنامه می توان از آن استفاده کرد.فرق آن با فلش در این است که در اینجا حافظه خط به خط قابل برنامه ریزی است .

13. ارسال و دریافت اطلاعات بروی حافظه EEPROM

در این برنامه 5 بایت مختلف را از آدرس 1 تا 4 قرار می دهد. ( دستور Writeeeprom 2,6 عدد 2 را در خانه 6 حافظه قرار می دهد.

14. استفاده از Watch dog

واچ داگ در واقع یک شروع مجدد برنامه از اول است و این برای اطمینان از عملکرد برنامه در برابر نویزبکار می رود . بدین صورت که اگر بعللی برنامه کاربردی از حلقه اصلی برنامه خارج شود برنامه از اول شروع کند. مثلادربرنامه زیر ابتدا Watch dog که یک تایمر است را در تعریف اولیه راه اندازی می شود و سپس در حلقه معمول برنامه قرار می گیرد در هر مرتبه که به دستور Restar Watch dog می خورد نمی گذارد تایمر سرریز شود .
اگر بدلیلی نا خواسته برنامه از حلقه خارج شود تایمر سر ریز شده و برنامه از اول شروع می کند بنابراین بسرعت به حلقه دوباره بر می گردد و کارهای خواسته شده را که بصورت نقطه چین است از سر می گیرد.

15. تولید پالس PWM
برنامه زیر از دو پایه OCR1a,OCR1b (PD4,PD5) از میکروکنترلر موج مربعی با استفاده از تایمر 1 بصورت PWM تولید می کند.با توجه به برنامه زیر تایمر را در مد PWM تعریف کرده سپس در حلقه PWM1a=6 قرار داده که عرض پالس در وضعیت 1 با توجه به فرمول زیر محاسبه می کند.
$regfile = "m16def.dat"
$crystal = 8000000
Config Portd = Output
Config Timer1 = Pwm , Prescale = 8 , Compare A Pwm = Clear Down , Pwm = 8 , Compare B Pwm = Clear Down
Do
Pwm1a = 6
Pwm1b = 100
Waitms 1
Loop
End


تعداد صفحات : 28 | فرمت فایل : pptx

بلافاصله بعد از پرداخت لینک دانلود فعال می شود