ايران ويج

نسخه‌ی کامل: کمک برای ساخت پروژه
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2
با سلام و خسته نباشید . دوستان عزیز من دانشجوی رشته نرم افزار هستم و برای این ترم یک پروژه باید تحویل بدم که هم نرم افزاری هستش و هم سخت افزاری !
اگه به من کمک کنید ممنون میشم .

پروژه من اینه : (بخش سخت افزاری) باید 4 تا 7segment رو روی یک برد نصب کنم و سپس اون برد رو از طریق USB به کامپیوتر وصل کنم .
(بخش نرم افزاری ) باید برنامه ای به زبان ماشین بنویسم که وقتی که اون برد رو وصل کردم به کامپیوتر و برنامه رو اجرا کردم ساعت یا تاریخ کامپیوتر رو نشون بده !

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

نمیدونم درایور USB , 7segmet لازم داره یا نه ؟! و اینکه طریقه وصل کردن این قطعات چگونه هستش !

بدجوری گیر کردم . اگه کمکم کنید خیلی ممنونتون میشم .

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

یه FT232 می ذاشتم واسه تبدیل USB به سریال !
میکرو دیتا رو سریال دریافت میکرد و اون رو نمایش می داد !

واسه اسکن چهار تا سون سگمنت هم از روش مولتی پلس استفاده می کردم ! ( در هر زمان یکی روشن باشه )
کل برنامه با یه ATmega8 میشه انجامش داد !!

تغذیه مدار هم خود USB !

واسه قسمت کامپیوتر نمی تونم کمکی کنم و تو الکترونیک مشکلتون کجاست ؟؟؟
برای اینکه سون سگمنت شماره نشان دهد ابتدا باید به آن یک BCD یعنی آی سی که کد دهدهی را به کد سون سگمنت تبدیل می کند بگذارید مثل آی سی های TTL / 7447 ویا نوع CMOS مثل 4511 .

[تصویر:  IC-7447.JPG]

[تصویر:  4511.gif]

[تصویر:  7447A.gif]

[تصویر:  300px-7_segment_display_labeled.GIF]

[تصویر:  7eobjqtl30vqxeuanyjh.jpg]

[تصویر:  auyeeag5kc5jdwggyjzn.jpg]

[تصویر:  zstds91l9mj2e8gyo4.jpg]

برای هرتعداد سگمنت باید یکی از این آی سی ها رابگذاری وبه ورودی A/B/C/D آنها هم از طریق میکرو ویا به گفته خودتان USB از کامپیوتر برنامه مورد نظر را وصل کنی.
اگر بدون برنامه می خواستی میتونستی از 7493 برای ورودی A/B/C/D استفاده نمایی.
واما درمورد بقیه مباحثی که من نگفتم مثل برنامه نرم افزاریش باید دوستان برنامه نویسمان کمکتان کنندWink
موفق وسربلند باشید Clap
منظورت از برنامه به زبان ماشین چیه؟؟! اسمبلی؟ یا نه یه برنامه کامپیوتری؟
بابت اینکه خیلی سریع و کامل جواب دادید ممنونم .

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

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

بله زبان ماشین همون زبان اسمبلی ! فقط بگم چجوری میتونید بنویسید ؛ شاید به کار کسی بیاد !

خیلی راحت میتونید توی قسمت Debug کامپیوتر کد بنویسید و اجرا کنید !

به این آدرس برید : Star / Run / debug و بعدش بنوسید a ؛ حالا به شما فضا رو میده و میتونید کد بنویسید !

و بعد از نوشتن کد اینتر رو بزنید و حرف g رو بنویسید و اینتر بعدی برنامه رو اجرا میکنه !

حالا من نمیدونم باید برنامه به قطعه بدم یا نه ؟ چجوری اینکار رو بکنم ؟

فردا میخوام برم پاساژ امجد و چیزائی که لازم داره رو بخرم !

میشه بفرمائید دقیقا چی بخرم ؟

شرمنده که من چیزی نمیدونم !

ممنونم .
حب بجای اینکار برنامه اسمبلی رو کامل بنویسی با masm اسمبل کنی و فایل exe بگیری بهتر نیست؟؟!
دستورات ارتباط با پورت usb رو تو اسمبلی بلدی؟؟ می خوام یاد بگیرم...
این روش رسول یکم قطعه الکی زیاد میبره !

روش خوبیه ولی من پیشنهاد نمی کنم !

مولتی پلس مثل این مدار : http://iranled.com/forum/showthread.php?...#pid111795

شما برو یه ATmega8 بخر و یه FT232 ( و قطعات وابسته اون ) چهار تا ترانزیستور منفی (bc547) و سون سگمنت چهارتایی کاتد مشترک ... و دیگه هیچی !

اگه سون سگمنت اند پیدا کردی اون موقع باید چهار تا ترانزیستور مثبت بگیری ! (bc557)

واسه FT232 این تایپیک رو ببین : http://iranled.com/forum/showthread.php?...ight=FT232

واسه ارتباط سریال هم تایپیک زیاده !
یه سرچ کنی مطلب زیاده !


اینم توضیحات از کتاب آقای یه نفر ( سعید جون ) :


ارتباط سریال rs232 :


در این ارتباط از دوسیم به نام های rxd و txd استفاده میشود که خط txd وسیله اول دیتا را از ان به بیرون منتقل میکندو خط خروجی دیتا است و به ورودی دیتا دستگاه دوم ( txd ) متصل میشود و خط rxd ورودی دیتا است که به خروجی دیتای دستگاه دیگر (rxd ) متصل میشود.


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

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

دستورات این پروتکل در بسکام به شرح زیر است:

تعیین نرخ انتقال دیتا:
کد php:
$BAUD=VAR 
این دستور میزان انتقال دیتا در ثانیه را مشخص میکند وباید در هر دو وسیله ای که به هم متصل میشوند یکی باشد (در غیر این صورت ارتباط کار نمیکند) بهتر است نرخ انتقال دیتا در مناطق دارای نویز کمتر انتخاب شود.

دستور PRINT :
کد php:
PRINT  VAR 
توسط این دستور میتوان داده یا متغیری را به پورت سریال ارسال کرد. VAR یم متغیر از جنس متغیرهای گفته شده میباشد.

دستور PRINTBIN :
کد php:
PRINTBIN VAR 
توسط این دستور متغیر VAR به باینر تبدیل شده سپس به پورت سریال ارسال میشود.

دستور WAITKEY :
کد php:
VAR=WAITKEY() 
این دستور تا زمانی که متغییر توسط دستگاه دیگر به پورت سریال ارسال شود منتظر میماند و پس از دریافت متغیر برنامه از خط بعد ادامه می یابد.

دستور INKEY :
کد php:
VAR=INKEY() 
این دستور مقدار اسکی کاراکتر دریافت شده از پورت سریال را برمیگرداند.

دستور INPUTBIN :
کد php:
INPUTBIN  VAR 
این دستور داده باینری را از پورت سریال میگیرد و در متغیر VAR قرار میدهد.

دستور INPUTHEX :
کد php:
INPUTHEX  VAR 
این دستور داده هگز رااز پورت سریال دریافت میکند و در متغیر VAR قرارمیدهد. مانند:

در مثال زیر با استفاده از ارتباط سریال ، یک ارتباط دوطرفه بین دو میکرو برقرار کرده ایم ،

کد php:
$regfile "m32def.dat" $crystal 1000000
$baud 
9600
Config Portb 
Input Config Porta Output
Dim A 
As Byte As Byte
W
:
Pinb Printbin Q
Inkey() : Porta A
Goto W
End
میکرو 2
:
$regfile "m32def.dat" $crystal 1000000
$baud 
9600
Config Portb 
Input Config Porta Output
Dim A 
As Byte Dim Q As Byte
W
:
Pinb Printbin Q
Inkey() : Porta A
Goto W
End 

از انجا که ارتباط دو طرفه میباشد ( هر دو میکرو دقیقا مانند هم هستند ) برنامه دو میکرو مشابه است ،

درخط اول میکرو و کریستال معرفی شده است که میکرو مگا 32 و کریستال مورد استفاده 10 مگا هرتز میباشد .

در خط دوم نرخ انتقال دیتا مشخص گردیده است ، مقدار ان 9600 است . نرخ انتقال دیتا باید در هر دو میکرو یکسان باشد .

در خط سوم پورت b به عنوان ورودی ( برای اتصال کلید ) و پورت a به عنوان خروجی (برای اتصال led) معرفی شده اند .

در خط چهارم دو متغیر از جنس بایت برای ذخیره مقادیر معرفی شده است .

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

در خط ششم مقدار موجود بر روی پورت b در متغیر q ریخته میشود و سپس با دستور Printbin Q به پورت سریال فرستاده میشود.

در خط هفتم مقدار گرفته شده از پروت سریال در متغیر a ریخته میشود و بعد متغیر a بر روی پورت a ریخته میشود.

خط هفتم پایان حلقه میباشد ، هنگامی که cpu میکرو به این خط رسید به برچسب w پرش میکند.

خط هشتم پایان برنامه است.


در حالتی که هیچ یک از کلید ها یک نشده اند ، مقدار q صفر دسیمال و &b00000000 باینری است ، حال اگر هر یک از کلید ها فشرده شود مقدار q تغیر میکند.

دو پایه txd و rxd میکرو نقش دریافت و ارسال داده را در حالت پیشفرض برعهده دارند ، با دستور زیر شما میتوانید این دو پایه را به پایه های دلخواه تغییر دهید:

کد php:
Open "comx.y:$baud,8,n,1" For Output/input As #q 

comx.y : نام پورت و پایه ای است که باید به عنوان txd یا rxd جدید عمل کند.

:$baud نرخ داده عبوری از پایه را نشان میدهد ، این مقدار باید با نرخ انتقال دیتا ی اصلی برابر باشد.

Output/input : پایه میتواند وردی داده( rxd) یا خروجی داده( txd ) باشد.

Q : شماره کانال را مشخص میکند.
مانند:

کد php:
Open "comd.1:19200,8,n,1" For Output As #1
Open "comd.0:19200,8,n,1" For Input As #2 

در مورد بالا portd.1 به عنوان txd و portd.0 به عنوان rxd در نظر گرفته شده است ، همچنین نرخ انتقال داده برابر با 19200 است.

يه مثال :

کد php:
$regfile "m48def.dat"                                  
$crystal 10000000                                         
$baud 
19200                                               
$hwstack 
32                                               
$swstack 
10                                              
$framesize 
40                                             
Dim B 
As Byte
Waitms 100

Open 
"comd.1:19200,8,n,1" For Output As #1
Print #1 , "serial output"

Open "comd.0:19200,8,n,1" For Input As #2
Print #1 , "Number"
Input #2 , B
Print #1 , B

Do
   
Inkey(#2)
   
If 0 Then
      
Print #1 , Chr(b)                                     
   
End If
Loop Until B 27

Close 
#2
Close #1

End 
واقعا ازتون ممنونم .

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

از الان شرمندگیم رو اعلام میکنم .

بازم ممنونم .
سلام . بابت کد ها که زحمت کشیدید ممنونم ولی قبلش مشکل من سر همین سر هم کردن قطعات هستش !

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

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

10 تا مقاومت ؛ 10 تا خازن ؛ 4 تا 7447 ؛ FT232 BM ؛ AT Mega 32 ؛ 4 تا هم 7segment

حالا اینارو چیکار کنم ؟ چجوری میتونم نقشش رو بدست بیارم ؟ شنیدم اگه نقشش باشه میشه یکاریش بکنم

واقعا شرمندتونم . همه اینا از بی سوادی من توی سخت افزار هستش !
با قطعات کمتر و ارزون تر هم میشد !

دیتاشیت 7447 رو ببینی می فهمی چجوری باید اتصال بدیش !
ورودیشو وصل کن به میکرو !!

اگه وقت داری یکم باهاش ور برو !
هم واست مفیده و هم برات خوبه !

اگه وقت نداری که برنامه و نقشه بدم !!
ممنونم . اتفاقا خودم که دوست دارم باهاش ور برم و یه چیزائی یاد بگیرم ولی ؛ اگه برنامه و نقشه را داشته باشم

بهتر میتونم کار کنم (حداقل خیالم راحت هستش) ! آخه من تا حالا اینجوری مدار رو تحلیل نکردم ؛ برای همین فکر نکنم که بتونم از دیتا شیت

همه چیز رو متوجه بشم . ممنون دوست عزیز .
صفحه‌ها: 1 2