امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
تشخیص اتصال دو پایه میکرو به هم
نویسنده پیام
فروم باز آفلاین
در حال پیشرفت
***

ارسال‌ها: 480
موضوع‌ها: 122
تاریخ عضویت: دى ۱۳۸۷

تشکرها : 321
( 107 تشکر در 72 ارسال )
ارسال: #12
RE: تشخیص اتصال دو پایه میکرو به هم
میشه یه نمونه کد برام بزاری؟

با تشکر.
۰۷-دى-۱۳۸۷, ۲۱:۲۳:۴۰
ارسال‌ها
پاسخ
t3r!p3000 آفلاین
         
*****

ارسال‌ها: 5,050
موضوع‌ها: 83
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 34447
( 17423 تشکر در 5116 ارسال )
ارسال: #13
RE: تشخیص اتصال دو پایه میکرو به هم
اينم از كتاب اقاي يك نفر


'گاهی نیاز از که چندین کلید را به میکرو متصل کنیم ، برای این کار دو راه وجود دارد که روش اول اتصال هر کلید به یک پایه وروش دوم استفاده از صفحه کلید ماتریسی است .

روش اول، چون تعداد زیادی از پایه های میکرو اشغال میشود،کمتر مورد استفاده قرار میگیرد .دستور بسکام برای استفاده از صفحه کلید ماتریسی که از این به بعد به ان kbd میگوییم به شرح زیر است :

کد:
CONFIG KBD = PORTx , DEBOUNCE = value

که portx ، پورتی است که kbd به ان متصل میشود وDEBOUNCE تاخیر کلید است که بین20 تا 255 میلی ثانیه است (هنگامی که کلید فشرده میشود ،براثر لرزش دست چندین با دو کنتاکت ان به هم برخورد میکنند و در نهایت ثابت میشوند اگر از دستور DEBOUNCE استفاده نشوند لرزش به منزله فشردن کلید است )
بعد از تعریف kbd در برنامه نوبت به استفاده از ان است برای این کار از دستور زیر استفاده می شود

کد:
A = Getkbd()

که a یک متغییر از جنس بایت است که عدد گرفته شده از kbd در ان گذاشته میشود و در صورتی که کلیدی فشرده نشود عدد 16 در داخل ان گذاشته می شود ، برای حذف عدد 16 می توان از دستور شرطی if استفاده کرد. مانند:

کد:
"regfile = "m16def.dat$
crystal = 12000000$
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.4 , Rs = Portd.5
Config Kbd = Portb,DEBOUNCE = 50
Dim A As Byte
Q:
A = Getkbd()
If A > 15 Then
Goto Q
End If
Locate 1 , 1
Lcd A
Goto Q
End

تحلیل برنامه :

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

در خط سوم و چهارم و پنجم lcd راه اندازی شده است ( که در اینجا از lcd 16*2 استفاده شده وlcd به پورتd متصل است) .

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

در خط هفتم یک متغییر از جنس بایت معرفی گردیده .

در خط هشتم یک برجسب به نام q قرار داده شده است .

در خط نهم عدد گرفته شده از kbd در متغییر a قرار میگیرد (در صورتی که هیچ کلیدی فشرده نشود مقدار 16 (a=16) در a ریخته میشود ) .

در خط ده ویازده و دوازده یک دستور شرطی قرار گرفته که این دستور شرطی میگوید :اگر a بزرگتر از 15 شد به برچسب q برش کن(در صورتی که شرط درست باشد دستورات بین if و endif اجرا میشود و اگر شرط درست نباشد برنامه از خط بعد از endif ادامه مییابد ).

در خط سیزده و چهارده مقدار a در سطر اول و ستون اول lcd نمایش داده میشود .

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

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





در این مثال به ازای هر کلید در lcd یک نام نوشته میشود :

کد php:
"regfile = "m16def.dat
crystal 12000000
Config Lcd 16 
Config Lcdpin 
Pin Db4 Portd.0 Db5 Portd.1 Db6 Portd.2 Db7 Portd.3 Portd.4 Rs Portd.5
Config Kbd 
Portb Debounce 20
Dim A 
As Byte
Q
:
Getkbd()
If 
15 Then : Goto End If
If 
0 Then Locate 1 Lcd "qwer" End If
If 
1 Then Locate 1 Lcd "asdf" End If
If 
3 Then Locate 1 Lcd "FDFD" End If
If 
4 Then Locate 1 Lcd "aFDf" End If
If 
5 Then Locate 1 Lcd "SAKr" End If
If 
6 Then Locate 1 Lcd "1234" End If
If 
7 Then Locate 1 Lcd "5687" End If
If 
8 Then Locate 1 Lcd "7541" End If
If 
9 Then Locate 1 Lcd "IO12" End If
If 
10 Then Locate 1 Lcd "wqsf" End If
If 
11 Then Locate 1 Lcd "1l2k" End If
If 
12 Then Locate 1 Lcd "3,m5" End If
If 
13 Then Locate 1 Lcd ")(*(" End If
If 
14 Then Locate 1 Lcd "****" End If
If 
15 Then Locate 1 Lcd "++++" End If
Locate 2 Lcd A : Goto Q
End 

در برنامه بالا برای اینکه حجم کمتری اشغال شود دستورات به صورت سطری نوشته شدهاند ، شما میتوانید با قرار دادن علامت دونقطهShy ) در بین دو دستور انها را در یک خط بنویسید ، هعمچنین با قرار دادن علامت ویرگولWink) چندین علامت را روی lcd در یک خط نمایش دهید ، همچنین با دستور کما (,) چندین متغییر را در یک خط معرفی کنید
برنامه بالا را با استفاده از جدول lookupstr مینویسیم:

کد:
"regfile = "m16def.dat$
crystal = 12000000$
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.4 , Rs = Portd.5
Config Kbd = Portb , Debounce = 20
Dim A As Byte
Dim B As String * 5
Q:
A = Getkbd()
If A > 15 Then
Goto Q
End If
B = Lookupstr(a , W)
Locate 1 , 1: Lcd B  
Locate 2 , 1: Lcd A
Goto Q
End
W:
Data "qwer" , "asdf" , "gdfh" , "jlhl" , "hkn," , "yryh" , "bmn4" , "2452" , "jkym" , "jytj" , "njhf" , "uyjn" , "dyr4" , "e5yh" , "9768" , "hnbh”

جدول lookupstr نیز مانند جدول lookup است اما جدول lookup برای باز گردانی اعداد و جدول lookupstr برای بازگردانی حروف به کار میرود .

شما جای پایه های kbd که به پایه میکرو متصل است را تغییر دهید ونتیجه راببینید.همیشه نیاز نیست که ورودی یک کلید باشد بعضی وقت ها می توان صفر یا یک شدن یک پین را هم چک کرد.

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

نقل قول: Config Kbd = Portx , Debounce = Value , Rows = 6 , Row5 = Pina.b, Row6 = Pina.b

X نام پورتی است که کیپد به ان متصل شده است ( 4سطر و4ستون اصلی).
Value مقدار تاخیر در فشردن کلید برای گرفتن لرزش است.
a.b نام پورت و پینی است که دوسطر دیگر به ان متصل شده اند.

کد php:
$regfile "m16def.dat"
$crystal 12000000
Config Lcd 
16 2
Config Lcdpin 
Pin Db4 Portd.0 Db5 Portd.1 Db6 Portd.2 Db7 Portd.3 Portd.4 Rs Portd.5
Config Kbd 
Portb Debounce 20 Rows Row5 Pina.0 Row6 Pina.1
Dim A 
As Byte
Q
:
Getkbd()
If 
16 Then : Goto End If
Locate 1 Lcd A : Goto Q
End 
۰۸-دى-۱۳۸۷, ۰۳:۳۴:۴۲
ارسال‌ها
پاسخ
تشکر شده توسط : 1nafar
فروم باز آفلاین
در حال پیشرفت
***

ارسال‌ها: 480
موضوع‌ها: 122
تاریخ عضویت: دى ۱۳۸۷

تشکرها : 321
( 107 تشکر در 72 ارسال )
ارسال: #14
RE: تشخیص اتصال دو پایه میکرو به هم
با تشکر فراوان از شما واقعا مثالها و توضیحاتتون کامل بود.
۰۸-دى-۱۳۸۷, ۱۷:۲۷:۳۰
ارسال‌ها
پاسخ
تشکر شده توسط : t3r!p3000
فروم باز آفلاین
در حال پیشرفت
***

ارسال‌ها: 480
موضوع‌ها: 122
تاریخ عضویت: دى ۱۳۸۷

تشکرها : 321
( 107 تشکر در 72 ارسال )
ارسال: #15
خروجی گرفتن از Avr
سلام میخوام بدونم که چه جوری میشه وقتی که یه شرطی برقرار شد ولتاژ یکی از پایه های میکرو +5v یا gnd بشه.

با تشکر.
۱۵-دى-۱۳۸۷, ۰۹:۰۳:۲۳
ارسال‌ها
پاسخ
تشکر شده توسط : CRazYFULL
t3r!p3000 آفلاین
         
*****

ارسال‌ها: 5,050
موضوع‌ها: 83
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 34447
( 17423 تشکر در 5116 ارسال )
ارسال: #16
RE: تشخیص اتصال دو پایه میکرو به هم
کد php:
Reset PortX.Y
Set PortX
.
کد php:
PortX.Y=1
PortX
.Y=
۱۵-دى-۱۳۸۷, ۱۶:۳۰:۵۳
ارسال‌ها
پاسخ
amiraliforoozandeh آفلاین
كاربر دو ستاره
**

ارسال‌ها: 96
موضوع‌ها: 28
تاریخ عضویت: دى ۱۳۸۷

تشکرها : 101
( 46 تشکر در 29 ارسال )
ارسال: #17
RE: تشخیص اتصال دو پایه میکرو به هم
سلام
این که کاری نداره
اینم برنامش برای بسکام
کد:
'regfile = "m32def.dat"
$crystal = 1000000
Config Pina.0 = Output
Config Pina.1 = Input
Config Pina.2 = Output
Ddra.1 = 0 : Porta.1 = 1
Reset Porta.0
Do
If Pina.1 = 0 Then Toggle Pina.2
Waitms 50
loop
به همین راحتی
اگه پورت a.0به پورتa.1بخره پورتa.2روشن میشه و اگه دوباره بخوره خاموش میشه



تشکر یادت نره
(آخرین ویرایش در این ارسال: ۱۷-دى-۱۳۸۷, ۱۲:۵۳:۵۸، توسط 1nafar.)
۱۵-دى-۱۳۸۷, ۱۷:۵۴:۰۷
ارسال‌ها
پاسخ
تشکر شده توسط : t3r!p3000, 1nafar
فروم باز آفلاین
در حال پیشرفت
***

ارسال‌ها: 480
موضوع‌ها: 122
تاریخ عضویت: دى ۱۳۸۷

تشکرها : 321
( 107 تشکر در 72 ارسال )
ارسال: #18
RE: تشخیص اتصال دو پایه میکرو به هم
ممنونم از این که جواب دادید. یه شوال دیگه هم هست:

با این کد میشه پورت های که توی این کد نوشته شده رو GND و VCC کرد؟

Sub Cout(row As Integer , Index As Integer , Model As Byte)
Portb.0 = Lookup(row , Dta1)
Portb.1 = Lookup(row , Dta2)
Portb.2 = Lookup(row , Dta3)
Portb.3 = Lookup(row , Dta4)
End Sub

Dta1:
Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1
Dta2:
Data 0 , 0 , 0 , 0 , 1 , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 1
Dta3:
Data 0 , 0 , 1 , 1 , 0 , 0 , 1 , 1 , 0 , 0 , 1 , 1 , 0 , 0 , 1 , 1
Dta4:
Data 0 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 0 , 1

این برنامه با توجه به ورودی row خروجی رو انتخاب میکنه و در port های مشخص شده قرار میده.

اگه این برنامه غلطه درستش چیه؟

با تشکر.
(آخرین ویرایش در این ارسال: ۱۲-بهمن-۱۳۸۷, ۲۰:۵۶:۰۹، توسط فروم باز.)
۱۲-بهمن-۱۳۸۷, ۲۰:۱۱:۵۶
ارسال‌ها
پاسخ
تشکر شده توسط : t3r!p3000
t3r!p3000 آفلاین
         
*****

ارسال‌ها: 5,050
موضوع‌ها: 83
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 34447
( 17423 تشکر در 5116 ارسال )
ارسال: #19
RE: تشخیص اتصال دو پایه میکرو به هم
چرا متغير هات از نوع Integer هستند .
bit و byte هم جواب مي ده !
الكي حافظه ميكرو رو پر نكنيم .
۱۲-بهمن-۱۳۸۷, ۲۰:۵۲:۳۳
ارسال‌ها
پاسخ
تشکر شده توسط : فروم باز
فروم باز آفلاین
در حال پیشرفت
***

ارسال‌ها: 480
موضوع‌ها: 122
تاریخ عضویت: دى ۱۳۸۷

تشکرها : 321
( 107 تشکر در 72 ارسال )
ارسال: #20
RE: تشخیص اتصال دو پایه میکرو به هم
با عرض پوزش متغیر ها که ربطی به سوال من ندارن میشه به من بگید کد من درسته یا نه؟

اگه غلطه درستش چیه؟
سلام شرمنده میشه به این لینک یه نگاهی بندازید؟ من یه سوال اونجا کردم . اون رو اگه جواب بدید ممنون میشم

http://circuit.ir/1387/09/05/%d8%b3%d8%a...comment-42

با تشکر.
(آخرین ویرایش در این ارسال: ۱۲-بهمن-۱۳۸۷, ۲۱:۵۹:۳۷، توسط فروم باز.)
۱۲-بهمن-۱۳۸۷, ۲۱:۲۰:۳۹
ارسال‌ها
پاسخ
mehrdadgh آفلاین
کاربر با تجربه
****

ارسال‌ها: 830
موضوع‌ها: 58
تاریخ عضویت: مرداد ۱۳۸۷

تشکرها : 654
( 1904 تشکر در 596 ارسال )
ارسال: #21
RE: خروجی arv
(۰۳-دى-۱۳۸۷, ۲۱:۵۵:۲۸)terip2008 نوشته است: واسه خودم هم سواله كه چجوري مي شه .

با ولتاژ كه نمي شه . دليلشو مي دونيد .

بگيم يه كد بفرستيم و ببينيم اگه همون اومد يعني وصله .
مشكله اينجاست هم زمان نمي تونيم بفرستيم و بگيريم .

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

وبلاگ من : Azarrobot.blogfa.com

ISAplast.ir
۱۴-بهمن-۱۳۸۷, ۱۴:۵۹:۳۶
ارسال‌ها
پاسخ
t3r!p3000 آفلاین
         
*****

ارسال‌ها: 5,050
موضوع‌ها: 83
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 34447
( 17423 تشکر در 5116 ارسال )
ارسال: #22
RE: تشخیص اتصال دو پایه میکرو به هم
اون برنامه که به نظر درسته .!


نقل قول: مهندس تریپ
!!!!
از خنده مردم ..


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

با یه میکرو و بافر سریال هم می شه .
۱۴-بهمن-۱۳۸۷, ۲۲:۴۷:۱۱
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  صفر شدن پایه میکرو در صورت قطع برق mega16 4 696 ۲۳-اردیبهشت-۱۴۰۰, ۱۸:۴۸:۲۴
آخرین ارسال: mega16
  معرفی یک سنسور جریان برای اتصال به میکرو ؟ mega16 6 1,738 ۲۷-اردیبهشت-۱۳۹۹, ۱۷:۳۸:۳۲
آخرین ارسال: Ambassador
  اتصال سنسور lm35 در فاصله 12 متری به میکرو ؟ mega16 3 1,643 ۲۷-بهمن-۱۳۹۸, ۱۸:۴۳:۲۸
آخرین ارسال: aKaReZa75
Question اتصال کامپیوتر به میکرو با بلوتوث surena3 0 2,563 ۱۷-فروردین-۱۳۹۶, ۱۲:۲۶:۲۶
آخرین ارسال: surena3
Question [فوری] اتصال lcd گرافیکی به پایه های دلخواه میکرو در بسکام behzadsen 4 4,337 ۰۵-دى-۱۳۹۵, ۱۵:۲۵:۳۰
آخرین ارسال: behzadsen
Exclamation اتصال به روتر enc28j60 HamidSay 11 7,714 ۲۹-آذر-۱۳۹۵, ۲۲:۲۳:۵۵
آخرین ارسال: HamidSay
  [مقاله] در رابطه با تشخیص کد ریموتها parviz2012 1 3,678 ۲۷-آذر-۱۳۹۵, ۱۴:۰۵:۰۵
آخرین ارسال: safeland
  سوال در مورد اتصال حافظه eeprom جانبی به میکرو SBRE77 9 10,467 ۰۷-مهر-۱۳۹۵, ۲۳:۳۱:۲۹
آخرین ارسال: omidrn
  تست میکرو saber.k 10 14,048 ۰۹-شهریور-۱۳۹۵, ۰۲:۰۹:۲۷
آخرین ارسال: yadulla fazel
  [سوال] ریست شدن پایه میکرو هنگام سرریز watchdog alirezajf68 2 3,224 ۰۵-مرداد-۱۳۹۵, ۱۸:۰۷:۳۹
آخرین ارسال: a.mehran

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS