PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : اتصال صفحه کلید به 8051



turk
18-08-2009, 15:26
با سلام
من هر کاری کردم نتونستم صفحه کلید رو به 8051 بشناسونم ، البته تو محیط بسکام .
8051 مثل avr دستور خواصی نداره واسه اینکار؟
مثل ما تو avr دستور زیر رو داریم :
Config Kbd = Portd , Debounce = 15 , Delay = 50
تو فایلی آموزشی هم که زحمتش رو کشیده بودین اشاره ای به صفحه کلید نکردین ؟
لطف می کنینکمکم کنین ...

1nafar
18-08-2009, 21:32
سلام
نحوه راه اندازیش ، یه مقدار با avr فرق داره ، نوع میکرو و کیبرد رو بگید تا من یه مثال بزارم ( شماره میکرو ، کیبرد دارای چند تا سطر و ستون هست ؟)

turk
18-08-2009, 23:03
مرسی
میکرو 80c51 و صفحه کلید هم 3*4 هستش
اگه براتون مشکلی نباشه من یه پروژه دارم با میکروی 8051 که یک عدد دورقمی رو از صفحه کلید 4*3 که سه تا ستونش به پورت صفر (یعنی P0.0 , P0.1,P0.2) و سطراش به پورت 2 میکرو وصله (یعنی P2.4 , P2.5 ,P2.6 , P2.7) دریافت کنه و اگه عدد وارد شده عدد اول باشه دیود سبز (که به پورت 3.6 وصل هستش ) و در غیر این صورت دیود قرمز (که به پورت 3.7 وصله) روشن بشه . من این پروژه رو به کمک E-BOOK آموزشی شما واسه avr نوشتین تونستم بنویسم ولی استاد گیر داده میگه باید تو 8051 باشه و البته به زیان اسمبلی :( من هیچی از اسمبلی نمی دونم . میشه کمک کنین ؟ اگه لازم باشه فایلی رو که با AVR نوشتم رو براتون می فرستم . . .

esfahan
19-08-2009, 20:29
سلام
کار خیلی ساده هست ، شما باید یک به یک سطر ها رو یک کنید و بعد همزمان ستون ها رو بخونید .
را ستی میشه برای 8051 با زبان بیسیک برنامه نوشت ؟

M3R
20-08-2009, 11:07
سلام
میشه برای 8051 با زبان بیسیک برنامه نوشت ؟
بله.کامپایلرش هم وجود داره به اسمه bascom 8051 فکر کنم تو قست کامپایلرها باشه برای دانلود.
شاد باشی:D

memeoo
22-08-2009, 19:20
سلام
برای اتصال کیپد به 8051 دستور خاصی وجود نداره و شما باید خودتون کیپد رو راه اندازی کنید ، برای اینکار روش های زیادی وجود داره ، مثلا :
The keypad was directly connected to P0.0-P0.7 of the 89s8252.

Sub Getkey
Set P0 'initialize the 3x4 matrix keypad
Dim True As Bit
True = 1
While True = 1

Reset P0.6
If P0.2 = 0 Then
Lcd "1"
Debounce P0.2 , 0 , Pr
Lcd "Back to main1"
Waitms 200
Return '
End If
If P0.1 = 0 Then
Lcd "2"
Debounce P0.1 , 0 , Pr
Lcd "Back to main2"
waitms 200
Return '
End If
If P0.0 = 0 Then
Lcd "3"
Debounce P0.0 , 0 , Pr
Lcd "Back to main3"
waitms 200
Return '
End If
Set P0.6

Reset P0.5
If P0.2 = 0 Then
Lcd "4" '
Debounce P0.2 , 0 , Pr
Lcd "Back to main4"
waitms 200
Return
End If
If P0.1 = 0 Then
Lcd "5" '
Debounce P0.1 , 0 , Pr
Lcd "Back to main5"
waitms 200
Return
End If
If P0.0 = 0 Then
Lcd "6" '
Debounce P0.0 , 0 , Pr
Lcd "Back to main6"
waitms 200
Return
End If
Set P0.5
.
.
.
Wend
End Sub

Pr:
Cls
Locate 1 , 1 : Lcd "Pressing"
Locate 2 , 1
Waitms 200
Return
توی برنامه بالا یک کیپد 4.3 به پایه های P0.0-P0.7 میکرو متصل شده ،
نمیدونم چه جوری توضیح بدم ، ما در واقع ، یکی یکی پایه ها رو یک میکنیم و در همون حال اونا رو چک میکنیم ، برنامه رو مطالعه کنید اگه مشکلی بود بگید من توضیح بدم
برنامه دی اسمبلر در نت فراونه ( اگه پیدا نکردید بگید من بزارم ) شما میتونید به سادگی کد هگز رو به اسمبلی تبدیل کنید

turk
25-08-2009, 00:46
اگه براتون مشکلی نباشه من یه پروژه دارم با میکروی 8051 که یک عدد دورقمی رو از صفحه کلید 4*3 که سه تا ستونش به پورت صفر (یعنی P0.0 , P0.1,P0.2) و سطراش به پورت 2 میکرو وصله (یعنی P2.4 , P2.5 ,P2.6 , P2.7) دریافت کنه و اگه عدد وارد شده عدد اول باشه دیود سبز (که به پورت 3.6 وصل هستش ) و در غیر این صورت دیود قرمز (که به پورت 3.7 وصله) روشن بشه . من این پروژه رو به کمک E-BOOK آموزشی آقای یک نفر واسه avr نوشتن تونستم بنویسم ولی استاد گیر داده میگه باید تو 8051 باشه و البته به زیان اسمبلی من هیچی از اسمبلی نمی دونم . میشه کمک کنین ؟ اگه لازم باشه فایلی رو که با AVR نوشتم رو براتون می فرستم . . .

esfahan
18-11-2009, 17:51
سلام
بسکام خیلی جالب هست و تقریبا همه دستوراتش مثل avr هست .
نمسدونم کارتون انجام شد یا نه ، اما شما باید مثل زیر عمل کنید :


kbd:
set p0.0
Reset P0.1
Reset P0.2
Reset P0.3
If P0.4 = 0 Then
a=0
End If
If P0.5 = 0 Then
a=4
End If
If P0.6 = 0 Then
a=2
End If
If P0.7 = 0 Then
a=3
End If

Reset p0.0
set P0.1
Reset P0.2
Reset P0.3
If P0.4 = 0 Then
a=4
End If
If P0.5 = 0 Then
a=5
End If
If P0.6 = 0 Then
a=6
End If
If P0.7 = 0 Then
a=7
End If

reset p0.0
Reset P0.1
set P0.2
Reset P0.3
If P0.4 = 0 Then
a=8
End If
If P0.5 = 0 Then
a=9
End If
If P0.6 = 0 Then
a=10
End If
If P0.7 = 0 Then
a=11
End If

reset p0.0
Reset P0.1
Reset P0.2
set P0.3
If P0.4 = 0 Then
a=12
End If
If P0.5 = 0 Then
a=13
End If
If P0.6 = 0 Then
a=14
End If
If P0.7 = 0 Then
a=15
End If
goto kbd

برنامه واضح هست و در قبال فشرده شدن هر کلید مقدارش توی a میریزه