# برنامه نویسی میکروکنترلر (MicroController) ها و MicroProcessor ها > برنامه نویسی سیستم های Embeded >  درخواست کمک (ساخت کیبورد)

## navidwhacker

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

----------


## farzadsw

یکم بیشتر توضیح بدید . میخواید کیبورد بسازید که به کامپیوتر وصل بشه ؟ همیشه کارکنه(مثل کیبرد عادی) یا اینکه با یه برنامه خاصی قراره کار کنه ؟
فقط کد اینتر رو بفرسته ؟

میکروش فرقی نداره چی باشه ، ولی avr تو بازار بیشتره . مدل mega8 یا mega16 یا mega32 یا هرکدوم دیگه رو میتونید استفاده کنید.

----------


## navidwhacker

قرار به کامپیوتر متصل بشه.
تحت نرم افزار کار میکنه ولی باسه من مهم اینه که بتونم مثلا کد اسکی اینتر رو باهاش به یکی از پورت های کامپیوتر بفرستم باقی راه رو بلدم.با زبان اسمبلی راحت کار میکنم.
ولی متاسفانه تا به حال با میکرو ها کار نکردم.اصلا نمیدونم چیکار باید بکنم.چجوری روی میکرو برنامه نویسی کنم.چه کدی باید برای میکرو بنویسم.
ضمنا فقط اینتر نیست 9 یا 10 دکمه میخوام ولی اگه یدونش و بهم یاد بدید از پسش بر میام.
فقط میخوام یکی رام بندازه.
تو نت جستو جو زیاد کردم.ولی خیلی سر در نیاوردم.
بازم ممنونم

----------


## farzadsw

اگه میکروتون ازطریق پورت سریال به کامپیوتر وصل بشه (این تاپیک )  میتونید هر کاراکتری رو به کامپیوتر بفرستید ( کد اسکی معادل هر کاراکتری رو میتونید بفرستید) .

برای برنامه نویسی میکرو :
1. باید کامپایلر مخصوص اون میکرو رو بگیرید. برای avr سه تا کامپایلر بیشتر استفاده میشه :
 bascom : که زبان برنامه نویسیش بیسیک هست ، برای هر کاری تابع آماده داره و کار باهاش خیلی خیلی سادس . اگه میخواید کارتون سریع *راه بیفته* ، از بقیه مناسب تره .
codevision : زبان c هست و یه ابزار داره که با ویزارد یه سری کد و تابعی که لازم دارید رو براتون تولید میکنه و برنامه اصلی رو خودتون مینویسید.
winavr gcc : این یکی برخلاف دوتای بالایی اپن سورس هست و بیشترین مصرف کننده رو داره (غیر از ایران!) . زبانش هم c هست و مثال و پروژه تو سایت های خارجی براش زیاده . کار کردن باهاش *نسبت* به دوتای بالایی یکم سختره چون مثلا ویزارد codevison رو نداره ، البته براش ویزارد نوشتن ولی به طور دیفالت نداره.
البته میتونید به جای کامپایلر  از اسمبلر رایگان خوداتمل استفاده کنید. ولی خوب مسلما زبان سطح بالا راحت ترهست.

2.بعد از کامپایل (یا اسمبل ) کردن برنامتون ، یه فایل hex ایجاد میشه . این فایل رو باید بریزید تو میکروکنترلرتون . برای این کار از پروگرمر استفاده میکنن . پروگرمر یه سخت افزاره که از یه طرف به میکروتون وصل میشه و از طرف دیگه به کامپیوتر و فایل هگز رو میگیره و روی میکروکنترلر پروگرم میکنه. پروگرمر رو میتونیدآماده بخرید یا بسازید. انواع مختلفی داره ، میتونه با پورت پارالل به کامپیوتر وصل بشه یا با usb . هر کدومشون هم چند نوع دارن .

الان کاری که باید بکنید اینه که میکرو ، پروگرمر ، bread board ، وسایل لازم برای ارتباط سریال (max232,..) و یه kepad 4x4  (+ رگلاتور 5ولت lm7805 و مقاومت ) بخرید . مدارتون رو ببندید ، برنامتون رو بنویسید و امتحان کنید. البته میتونید به جای خریدن و بستن مدار ، از شبیه ساز proteus استفاده کنید و برنامتون رو تست کنید.

برنامتون هم به این شکله که کیپد 4 در 4 رو اسکن میکنه تا ببینه کدوم دکمه فشار داده شده . بعد میاد طبق اون ، یه بایت کدی (میتونه کد اسکی باشه) رو برای کامپیوتر میفرسته.

----------


## navidwhacker

ممکنه لینک دانلود winavr-gcc و proteus برای من بزارید؟ممنونم

----------


## farzadsw

http://sourceforge.net/projects/winavr/files/

http://www.iranmicro.ir/forum/showthread.php?t=2645

----------


## navidwhacker

بازم سلام.از کمکتون خیلی ممنونم خیلی بهم کمک کرد.چند روز دیگه کد همین برنامرو میزارم همینجا تا بقیه هم استفاده کنن.
راستی یه سوال کتابخونه باسه میکرو های AVR نیست؟من atmeg8 رو توی پروتئوس ساختم ولی اگه کتابخونه کاملش رو میشناسید میشه لینکش رو بزارید؟
بارم ممنون.

----------


## farzadsw

خود پروتئوس همه میکرو های avr رو داره . هم سری 90 هم tiny هم mega . من از پروتئوس 7.5 sp3 استفاده میکنم . ورژنهای جدیدترش هم باید یه چیزایی اضافه داشته باشن.
عکس کتابخونه پروتئوس خودمرو هم ضمیمه کردم (80 تا از میکرو های avr رو داره )

----------


## navidwhacker

سلام من یه سوال جدید برام پیش اومده.
اگه بخوام یه کیبورد بسازم که مثل کیبورد کامپیوتر باشه باید چیکار کنم؟منظورم اینه که باید به کجا متصل بشم و کد های کیبورد رو به چه قسمتی از کامپیوتر ارسال کنم.(برنامه نویسیش چطوری میشه باید به cpu ارسال بشه؟چطوری؟)

----------


## farzadsw

اگه سریال باشه باید به پورت مخصوص keybord پشت کیس وصل کنید (ps2 ) 
اگه usb باشه که فرقی نداره کجا ول بشه .

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

برای حالت usb ، یه پروفایل Human Interface Device تعریف شده (HID ) و باید از اون استفاده کنید ،یعنی برنامه نویسی شما در طرف میکرو هست  . 
اگه از میکروکنترلر هایی که قابلیت usb device رو دارن استفاده میکنید (همه میکرو کنترلر های arm ، سری usb میکرو های avr و بعضی از میکرو های pic) ، برنامه نویسی شما خیلی ساده خواهد شد چون اکثر کار های به صورت سخت افزاری انجام میشه .

 اما اگه میکرو کنترلر usb device نداره (مثل atmega avr) ، باز هم میشه این کار رو کرد ، ولی همه کار ها باید به صورت برنامه نوسی انجام بشه . البته 1-2 پروژه اپن سورس در مورد hid و میکروکنترلر های avr تو وب هست که میتونید از اونها هم استفاده کنید.

----------


## courosh

می خوام تویه کیبورد یه led بزارم که وقتی فارسی نویس باشه روشن بشه و وقتی en خاموش بشه

----------

