طراحی کنترلر، مدارت دلخواه، پروژه ها و تمرینات درس میکروکنترلرها
یک سیستم امنیتی که دارای یک کاربر اصلی می باشد و توسط این کاربر می توان کاربرهای متعددی با پسورد های مجزا تعریف نمود. می توان تا 100 کاربر و 100 پسورد مختلف را تعریف، و در قسمت ورود هر یک از اعضاء که نام کاربری و رمز عبور خود را بدرستی وارد کند یک رله به همراه LED روشن خواهد شد.این پروژه یک ماشین حساب ساده با چهار عمل اصلی بروی نمایشگر گرافیگی می باشد.این پروژه بدون نیاز به دریافت نور می تواند بر اساس تاریخ، ساعت، عرض جغرافیایی و طول جغرافیایی هر استان زمان طول و غروب خورشید را محاسبه کرده و به طور دقیق در این بازه زمانی لامپ های روشنایی را فعال کند. همچنین دارای یک تایمر داخلی می باشد که قابلیت فعال و غیر فعال کردن آن وجود دارد. دستگاه کلا با 3 کلید قابل تنظیم و برنامه ریزی می باشد.با استفاده از میکروکنترلر ATMEGA8 و کیبورد 3×4 می توان حروف و اعداد را تایپ کرد و درون یک متغییر ذخیره نمود و محتوای این متغییر بر روی نمایشگر LCD نمایش داده می شود. در صورتی که فضای LCD پر شود کاراکترها به سمت چپ شیفت داده می شوند. تمامی حروف و اعداد کوچک و بزرگ انگلیسی قابل تایپ می باشند.این پروژه یک دماسنج ساده می باشد که توانایی اندازه گیری دما از منفی 40 تا مثبت 120 درجه سانتی گراد با دقت دو رقم اعشار را دارد.
پروژه سیستم امنیتی با قابلیت تعریف کاربر و رمز عبور با avr

MCP-12

پروژه سیستم امنیتی با قابلیت تعریف کاربر و رمز عبور با avr
پروژه ماشین حساب ساده با السیدی گرافیکی و avr

MCP-34

پروژه ماشین حساب ساده با السیدی گرافیکی و avr
پروژه تایمر-ساعت نجومی (فتوسل بدون نور)

MCP-26

پروژه تایمر-ساعت نجومی (فتوسل بدون نور)
پروژه تایپ حروف و اعداد با کیبورد 3.4 به زبان سی با avr

MCP-3

پروژه تایپ حروف و اعداد با کیبورد 3.4 به زبان سی با avr
پروژه دماسنج ساده با avr

MCP-29

پروژه دماسنج ساده با avr

آموزش ميكرو كنترلر AVR به زبان بيسيك (قسمت چهارم)

در اين قسمت آموزشي به نحوي پيكره بندي امكانات AVR مي پردازيم. از جمله پيكره بندي LCD  و كيبورد
اتصال LCD به AVR و نحوي پيكره بندي آن در بيسكام :
Config   Lcdpin = Pin   Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , _
Db7 = Porta.7 , E = Porta.2 , Rs = Porta.3
Config Lcd = 16 * 2
به كمك دستور بالا ما قادر خواهيم بود كه LCD را به هر پورتي كه مي خواهيم وصل كنيم. در خط اول برنامه ما تك تك پايه هاي LCD را معرفي كرديم و گفتيم DB4 ال سي دي را مي خواهيم به porta.4 وصل كنيم و همين طور تا آخر. و پايه هاي E و RS رو هم تعريف مي كنيم البته پايه RW رو هم زمين مي كنم چون ما اغلب در LCD مي نويسيم و كم پيش مياد كه بخواهيم ازش بخونيم. در خط بعدي هم تعداد سطر و ستون هاي LCD را براي ميكرو تعريف كرديم.
نكته: چون در خط اول بايد دستورات پشت سر هم باشد مي مي توانيم به كمك يه آندرلاين " _" ادامه دستورات را در خط بعدي بنويسيم. اين كار صرفا براي اين كه طول برنامه زياد نشه و يا در موقع چاپ به هم نريزه .
دستورات LCD :

از بخش سفارش طراحی هم اکنون درخواست خود را ثبت کنید
حل و تشریح کلیه تمرینات درس میکروکنترلر AVR
طراحی و ساخت مدارات دلخواه شما با میکروکنترلر AVR


 
از دستور LCD مي توانيم محتواي يك متغيير يا تعداي كاراكتر (به تعداد ستون هاي LCD) را نمايش دهيم. به عنوان مثال ما مي خواهيم عبارت MC8051.blogfa.com را روي LCD 16*2 نمايش دهيم.
LCD " MC8051.blogfa.com "
عبارت را بايد بين اين دو " " علامت بنويسيم. اكنون اين عبارت روي LCD نمايش داده مي شود.
دستور CLS:
از اين دستور هم براي پاك كردن كل LCD استفاده مي نماييم. يعني هر جا ما نوشتيم CLS  كل LCD پاك خواهد شد.
دستور Display :
به كمك اين دستور شما مي تواند صفحه نمايش LCD را روشن يا خاموش كنيد.
براي خاموش كردن: Display off
و براي روشن كردن: Display on
دستور Cursor :
به كمك اين دستور شما مي توانيد مكان نماي LCD را در چهار وضعيت تنظيم كنيد.
1)      Cursor no يعني مكان نما روشن باشد
2)      Cursor off يعني مكان نما خاموش باشد
3)      Cursor blink يعني مكان نما به صورت چشمك زن باشد
4)      Cursor noblink يعني مكان نما به صورت چشمك زن نباشد
دستور Locate :
قالب اين دستور به اين شكل مي باشد:
Locare x , y
كه X مشخص كننده سطر مي باشد و مي تواند از 1 تا 4 باشد. (با توجه به نوع LCD)
و Y هم مشخص كننده ستوان مي باشد و مي توانيد از 1 تا 64 باشد. (با توجه به نوع LCD)
به عنوان مثال شما مي خواهيد در وسط يه LCD 16*2 عبارت MC8051 را بنويسيد كه به صورت زير عمل مي كنيم:
Cls
Locate 1,6
Lcd "MC8051"
در خط اول ما LCD رو پاك كرديم و در خط دوم مكان نما را به سطر اول و ستون 6 برديم و در اين مكان از LCD يعني در خانه ششم LCD عبارت را نوشتيم كه M در خانه 6 و  Cدر خانه 7 و ... نوشته مي شود.
دستور Shiftlcd :
به كمك اين دستور مي توانيد كل صفحه نمايش رو به چپ يا راست انتقال دهيد. يعني به كمك اين دستور شما مي توانيد متن خود را روي LCD به حركت در آورديد مانند تابلو هاي روان.
 
$regfile = "m32def.dat"
$crystal = 12000000
Config Lcdpin = Pin Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , _
Db7 = Porta.7 , E = Porta.2 , Rs = Porta.3
Config Lcd = 20 * 2
Dim A As Byte
Do
Locate 1 , 15
Lcd "MC8051"
Waitms 500
For A = 1 To 20
Shiftlcd Right
Waitms 100
Next
Cls
Loop
End
در اين مثال ما عبارت MC8051 را در انتهاي يك LCD 20*2 نوشتيم و 500 ميلي ثانيه هم تاخير گذاشتيم و به كمك يك حلقه for دستور Shiftlcd Right را حدود 20 بار تكرار كرديم البته بايد يه تاخير هم قرار دهيم تا حركت متن را بتوانيم مشاهده كنيم.
براي حركت به چپ هم از دستور Shiftlcd left استفاده مي كنيم.
دستور Deflcdchar :
به كمك اين دستور شما مي توانيد به جاي يك كاراكتر انگليسي خودتان يك كاراكتر فارسي بسازيد و يا اشكالي را ايجاد كنيد كه نحوي استفاد از آن را در زير توضيخ مي دهيم:
براي اين كار ابتدا در يك خط از برنامه كليك كنيد (يا اول برنامه و يا در ميان خطوط برنامه جايي كه هيچ دستوري در آن خط نباشد.) بعد به منوي Tools برنامه بيسكام برويد و روي LCD Designer  كليك كنيد در اينجا شما يك ماتريس 5 در 8 مي بينيد در واقع هون پيكسل هاي يك ستون LCD‌مي باشد. شكل يا هر چيز ديگر خود را در اينجا طراحي كنيد و بعد OK را بزنيد اكنون كدي به شكل زير براي شما درج مي شود:
به عنوان مثال من كل پيكسل ها را سياه كردم و يك مثلث سفيد كوچك ميان اون درست كردم كه بعد بيسكام اين كد ها را به من داد:
Deflcdchar ?,31,19,21,22,22,21,19,31                " replace ? with number (0-7)
در اينجا علامت ? به رنگ قرمز مي باشد و شما بايد از بين اعداد 0 تا 7 يكي را جايگزين اين علامت كنيد مثلا من عدد 5 را دادم.
Deflcdchar 5,31,19,21,22,22,21,19,31                " replace ? with number (0-7)
حال براي نمايش اين شكل روي LCD از دستور CHR (?) استفاده مي كنيم:
Cls
Locate 1, 15
Lcd chr(5)
حال اين مثلث در خانه 15 LCD نمايش داده مي شود.
نحوي اتصال كيبور 3*4 يا 4*4 به AVR :
براي پيكره بندي كيبورد در بيسكام شما بايد يك پورت كامل 8 بيتي را به كيبورد اختصاص دهيد و بعد از وصل كردن پايه هاي كيبورد به هاي AVR كه در زير نوشته ام شما به كمك دستور Getkbd()‌ مي توانيد كليد فشرده شده را بخوانيد و در يك متغيير بريزيد. و بعد هم به روش هاي مختلفي عدد واقعي كليد را پيدا كنيد.
براي پيكره بندي آن به اين صورت مي نويسيم: Config Kbd = Portc كه در اينجا پورت C براي اتصال كيبورد انتخاب شده.
در اينجا من از يك روش خاص كه خودم استفاده مي كنم ارزش واقعي كليد فشرده شده را به دست مي آورم. البته روش هاي ديگر هم وجود دارد ولي من اين روش خاص خودم رو دوست دارم.
قضيه پيدا كردن ارزش واقعي كليد فشرده شده اين كه وقتي شما مثلا عدد كليد شماره 2 را فشار مي دهيد هيچ گاه ميكرو عدد 2 را به شما نمي دهيد. يعني بستيگ به شما دارد كه سطر ها را به كدام يك از پين هاي AVR وصل كرده ايد و ...
من در اينجا يه اتصال راحت به همراه برنامه خواندن و پيدا كردن ارزش واقعي كليد و نمايش آن عدد روي LCD رو براي شما مي نويسيم و كه خودتان مي توانيد بعدا بسته به نوع كارتون برنامه رو تغيير بدهيد.
اتصال يك كيبورد 3*4 به پورت C ميكروي AVR و برنامه آن:
 
3ستون
2ستون
1ستون
 
Portc.0
3
2
1
 Aسطر 1
Portc.1
6
5
4
  Bسطر 2
Portc.2
9
8
7
 Cسطر 3
Portc.3
#
0
*
  Dسطر 4
 
Portc.6
Portc.5
Portc.4
 
 

"micro: atmega
"driver keyborad 4*3
"port=C
"A,B,C,D=C0,C1,C2,C3****1,2,3=C4,C5,C6"
"PROGRAMER: MOHSEN GHASEMIAN

$regfile = "m16def.dat"
$crystal = 12000000
Config Lcdpin = Pin Db4 = Pina.4 , Db5 = Pina.5 , Db6 = Pina.6 , _
Db7 = Pina.7 , E = Pina.2 , Rs = Pina.3
Config Lcd = 20 * 2
Config Kbd = Portc
Dim Key As Byte
Main:
Do
Key = Getkbd()
If Key = 7 Then Goto Character_0
If Key = 0 Then Goto Character_1
If Key = 4 Then Goto Character_2
If Key = 8 Then Goto Character_3
If Key = 1 Then Goto Character_4
If Key = 5 Then Goto Character_5
If Key = 9 Then Goto Character_6
If Key = 2 Then Goto Character_7
If Key = 6 Then Goto Character_8
If Key = 10 Then Goto Character_9
If Key = 11 Then Goto Character_pond
If Key = 3 Then Goto Character_star
Loop
End
Character_0:
Cls
Lcd "0"
Do
Key = Getkbd()
Loop Until Key = 16
Goto Main
Character_1:
Cls
Lcd "1"
Do
Key = Getkbd()
Loop Until Key = 16
Goto Main
Character_2:
Cls
Lcd "2"
Do
Key = Getkbd()
Loop Until Key = 16
Goto Main
Character_3:
Cls
Lcd "3"
Do
Key = Getkbd()
Loop Until Key = 16
Goto Main
Character_4:
Cls
Lcd "4"
Do
Key = Getkbd()
Loop Until Key = 16
Goto Main
Character_5:
Cls
Lcd "5"
Do
Key = Getkbd()
Loop Until Key = 16
Goto Main
Character_6:
Cls
Lcd "6"
Do
Key = Getkbd()
Loop Until Key = 16
Goto Main
Character_7:
Cls
Lcd "7"
Do
Key = Getkbd()
Loop Until Key = 16
Goto Main
Character_8:
Cls
Lcd "8"
Do
Key = Getkbd()
Loop Until Key = 16
Goto Main
Character_9:
Cls
Lcd "9"
Do
Key = Getkbd()
Loop Until Key = 16
Goto Main
Character_pond:
Cls
Lcd "#"
Do
Key = Getkbd()
Loop Until Key = 16
Goto Main
Character_star:
Cls
Lcd "*"
Do
Key = Getkbd()
Loop Until Key = 16
Goto Main

 

 

  منبع: www.picpars.com

  لطفا مقالات، آموزش‌ها و پروژه های خود را به آدرس ایمیل ارتباطی ایمیل نمائید تا آن را با نام خودتان در سایت منتشر کنیم.

فایل های ضمیمه ( ورود - عضويت )

فایل شماره 137 | حجم 67 کیلوبایت | دانلود 1120 بار

منبع www.picpars.com  نویسنده: سید محسن قاسمیان

منبع www.picpars.com  دانلود برنامه اتصال کیبورد به avr با زبان بیسیک

منبع www.picpars.com  پسورد: www.picpars.com

به این مطلب امتیاز دهید

برچسب ها:
تاریخ ارسال چهارشنبه، 21 بهمن ماه، 1388    نویسندهنویسنده: مدیریت    نظرات 1 نظر    بازدید بازدید [ 17772 ]   پرینتنسخه چاپی
فایل پی دی اف فایل پی دی اف   ارسال به دوستان ارسال به دوستان