طراحی کنترلر، مدارت دلخواه، پروژه ها و تمرینات درس میکروکنترلرها
در صورتی که برق شهر از حداقل تعریف شده کمتر، یا از حداکثر بیشتر شود رله خروجی قطع خواهد شد و از طریق بازر بوق هشدار پخش می شود. ولتاژ فعلی، زمان باقیمانده تا اتصال رله و پیغام ها روی نمایشگر نشان داده می شود.ورودی این فرکانس متر قادر است با ولتاژهای 12 تا 500 ولت AC کار کند. ماکزیمم فرکانس اندازه گیری 20KHz می باشد. همچنین با تعیین نرخ نمونه برداری می توانید فرکانس را تا دو رقم اعشار اندازه گیری نمائید.این پروژه در اصل یک قفل امنیتی است که می توان جلوی درب اصلی منزل (در کنار آیفون) آن را نصب کرد. از امکانات آن می توان به موارد زیر اشاره نمود: نمایش دما از 125 تا 55- درجه سانتیگراد، نمایش ساعت دقیق، نمایش تاریخ شمسی همراه با روز هفته به صورت فارسی، نمایش تعداد فرصت های باقیمانده برای وارد کردن رمز صحیح، و قفل شدن سیستم به مدت 15 دقیقه در صورتی که 4 بار رمز اشتباه وارد شود. امکان تغییر رمز و تنظیم کردن ساعت و تاریج و ...با استفاده از میکروکنترلر Atmega8‌، سنسور دیجیتال دما DS18B20 و LCD‌ متنی شما به راحتی می توانید کولر خانه تان را توسط کنترل تلویزیون و کلید های تعبیه شده، در مد های مختلفی برنامه ریزی کنید، از ویژگی آن می توان به کاهش مصرف انرژی در کولرها آبی اشاره نمود.این مدار یک کنترلر زمانی و دمایی می باشد، که بر اساس برنامه ریزی دلخواه توسط کاربر یک رله خروجی را کنترل می نمایید. با اتصال لامپ فلورسنت مرغوب به رله دستگاه می توانید لامپ را تحت کنترل داشته باشید.
پروژه محافظ لوازم برقی با avr و نمایشگر LCD

MCP-23

پروژه محافظ لوازم برقی با avr و نمایشگر LCD
پروژه فرکانس متر صنعتی 500 ولت 20KHz با avr

MCP-1

پروژه فرکانس متر صنعتی 500 ولت 20KHz با avr
پروژه دربازکن الکترونیکی خانه قفل رمز با avr

MCP-5

پروژه دربازکن الکترونیکی خانه قفل رمز با avr
پروژه کنترل اتوماتیک کولرهای آبی با ریموت کنترل و avr

MCP-4

پروژه کنترل اتوماتیک کولرهای آبی با ریموت کنترل و avr
پروژه مدار دستگاه فتوتراپی (پایین آورنده زردی خون نوزادان)

MCP-24

پروژه مدار دستگاه فتوتراپی (پایین آورنده زردی خون نوزادان)

اسکن کیبورد 3×4 به زبان سی AVR و به صورت فایل کتابخانه‌ای برای کدویژن

www.picpars.com اسکن کیبورد 3×4 به زبان سی AVR و به صورت فایل کتابخانه‌ای برای کدویژن 290

این بار یک مثال آموزشی و بسیار کاربردی برای کابران PicPars آماده کرده ‌ام، امیدورام مورد رضایت شما واقع گردد. همانطور که می دانیم اتصال صفحه کلید به میکروکنترلرها در بسیاری از موارد برای ما مهم و کاربردی است، به عنوان مثال شما می خواهید یک ماشین حساب طراحی کنید یا یک قفل رمز و یا هر سیستم دیگری که نیاز است از کاربر اطلاعاتی توسط صفحه کلید دریافت شود. ما قبلا اتصال کیبورد 4*4 به میکروکنترلر AVR به زبان سی را آموزش داده ایم. که با هر بار فراخوانی تنها یک رقم را از کاربر می‌گیرد و بقیه کارها با برنامه نویس بود. به عنوان مثال شما می خواهید عدد صحیح 1390 را از کاربر دریافت کنید حال آن که کاربر این عدد را به صورت تک تک 1 3 9 0 وارد کرده و در برنامه اصلی تان آنها را در متغیرهایی جداگانه قرار می دهید، تا اینجا شما اعداد را به صورت جداگانه در اختیار دارید و نه به صورت یک عدد صحیح، و باید در برنامه اصلی تابعی برای به هم چسپاندن این ارقام بنویسید که کاری تقریبا خسته کننده است...

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

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


این فایل هدر همراه با یک مثال آموزشی، که نحوی استفاده از آن را برای شما توضیح می دهد در اینجا ضمیمه شده است و من نیز توضیحاتی در این باره خواهم داد.

در هر برنامه‌ای که خواستید از کیبورد 3×4 استفاده کنید ابتدا این فایل هدر را در پوشه ای به نام header در مسیر اصلی پروژه قرار داده و سپس به صورت زیر آن را به برنامه اصلی اضافه می کنید:

#include <header/keypad_advance.h>

حال در تابع اصلی و یا هر تابع دیگر که نیاز به دریافت اطاعات از صفحه کلید را داشتید کافی است تابع زیر را فراخوانی کنید:

key = keypad(10,6,1,5,1);

این تابع دارای 5 پارامتر ورودی به شرح زیر می‌باشد:

  • پارامتر اول: تعین مدت زمان اسکن کردن صفحه کلید می‌باشد. به این صورت که اگر 0 وارد کنیم به صورت بینهایت خواهد شد و تا زمانی که کاربر کلیدی را فشار ندهد میکرو در همان جا خواهد ماند و به اسکن کردن خود ادامه می‌دهد، اما در صورتی که عددی بزرگتر از صفر یعنی 1 تا 255 وارد کنید تابع بر حسب زمان (ثانیه)عمل خواهد کرد. که در اینجا ما عدد 10 را وارد کرده‌ایم و در نتیجه میکرو به مدت 10 ثانیه صفحه کلید را اسکن خواهد کرد و بعد از اتمام این زمان بر می‌گردد.
  • پارامتر دوم: تعیین کننده ماکزیمم تعداد ارقامی است که میکرو باید از کاربر دریافت کند. که در اینجا به عنوان مثال عدد 6 را وارد کرده‌ایم و کاربر مجاز است 6 رقم وارد کند و بعد از آن میکرو به صورت اتوماتیک ارقام دریافتی را به یکدیگر می‌چسباند و یک عدد صحیح 6 رقمی را بازگشت خواهد داد. (ماکزیمم آن 9 رقم می باشد)
  • پارامتر سوم: می تواند 0 یا 1 باشد اگر 0 باشد پارامتر چهارم و پنجم را نادیده خواهد گرفت و اگر 1 باشد براساس پارامترهای چهارم و پنجم عمل خواهد کرد. این پارامتر در اصل برای فعال و غیرفعال کردن، چاپ ارقام ورودی روی نمایشگر می باشد. در برخی موارد لازم است که کاربر در حین وارد کردن ارقام آنها را روی نمایشگر مشاهد کند (1) و در برخی موارد دیگر نیازی نیست که این ارقام وارد شده روی نمایشگر نشان داده شود (0) که همه اینها توسط پارامتر سوم تعیین خواهد شد.
  • پارامتر چهارم: مشخص کردن مختصات نویسه LCD در محور X ها. مثلا در LCD 16*2 تعیین خواهد کرد که در کدام یک از خانه های افقی 1 تا 16 اولین رقم چاپ شود. (سطری)
  • پارامتر پنجم: مشخص کردن مختصات نویسه LCD در محور X ها. مثلا در LCD 16*2 تعیین خواهد کرد که در کدام یک از خانه های عمودی 1 تا 2 اولین رقم چاپ شود. (ستونی)

به همین راحتی شما می توانید از دنیای بیرون اعداد را به صورت صحیح وارد میکرو کنید.

نکات کلیدی و مهم:

چون از متغیر float در دستور sprintf استفاده شده باید در قسمت config پروژه تون در نرم افزار کدویژن در قسمت (sprintf) از منوی کرکره‌ای گزینه float را انتخاب نمائید.

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

تابع به صورتی نوشته شده است که مثلا ماکزیمم ارقام وردی 6 انتخاب شده است حال اگر کاربر مثلا 4 رقم وارد کند و بعد کلید # را فشار دهد میکرو از 2 رقم باقی مانده را صرف نظر خواهد کرد و مبنا را بر چهار رقم خواهد گذاشت و محاسبات تبدیل آنها به عدد صحیح را انجام خواهد داد.

همچنین در صورتی که کلید * فشار داده شود تمامی اطلاعات ورودی پاک شده و کاربر مجددا می‌تواند اطاعات را وارد نماید.

نوع متغیر بازگشتی این تابع به صورت پیش فرض float می باشد اما با توجه به نیاز شما و ماکزیمم ارقام ورودی می توانید این متغیر را به نوع های long int و int و حتی char کاهش دهید که در این صورت باید در تابع keypad مقدار زیر را نیز تغییر دهید:

float keypad(
float number_out
float key
این برنامه صورت کاملا اختصاصی و متن باز در وب سایت PicPars.com ارائه شده، هر گونه کپی برداری از آن تنها با ذکر منبع مجاز می باشد!

برنامه نویسی شده توسط سید محسن قاسمیان

  منبع: www.picpars.com

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




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

فایل شماره 133 | حجم 52 کیلوبایت | دانلود 7056 بار

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

منبع www.picpars.com  دانلود درایور پیشرفته کیبورد 4×3 به زبان سی برای AVR

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

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

برچسب ها:
تاریخ ارسال سه شنبه، 15 آذر ماه، 1390    نویسندهنویسنده: مدیریت    نظرات 19 نظر    بازدید بازدید [ 44841 ]   پرینتنسخه چاپی
فایل پی دی اف فایل پی دی اف   ارسال به دوستان ارسال به دوستان