سلام دوستان بعضی ها (مثه مبتدیا عین خودم)دوست دارن قبل از اینکه هر مداری رو ببندن اول توی نرم افزار های شبیه سازی مثه پروتئوس مدارشون رو تست کنن که هیچ مشکلی نداشته باشه.اما همانطور که میدونید وقتی با میکروکنترلر های AVR میخوایم کیپد رو شبیه سازی کنیم یه مشکلی پیش میاد و میکرو درست کار نمیکنه.من میخوام راه حل این مشکل رو بگم.این مشکل بخاطر اشتباهیه که در کتابخانه این قطعه ها است.پس برای همین باید از این فایل زیر استفاده کنید.(نگران نباشد ویروس میروس نیس حجمشم 7 کیلوبایته به اطلاعات قبلی هم صدمه ای نمیزنه)
حالا دو فایل AVR.LIB و AVR.IDX رو بریزین در محل نصب نرم افزارتون و اگه با پیام تطابق اسمی مواجه شدین(که حتما میشین) ریپلایس کنید و مطمئن باشید که مشکلی پیش نمیاد.بعد توی پروتئوس از میکرویی استفاده کنید که تازه به لیستتون افزوده شده(با اون یکی متفاوته)بعد که این کار رو کردین باید دیتا رو برای میکرو تعریف کنید که برای کیپد های مختلف متفاوته
برای کیپد 4*4 (باید بگم که من توی این دیتا استاندارد رو رعایت نکردم)
اینم برنامش
البته بگم که به ترتیب باید این پایه های میکرو رو به این پایه های کیپد وصل باشه
اینم از این برنامه
البته یادتون باشه که اینطوری باید به میکرو وصل بشه:
A0-->1
A1-->2
A2-->3
A4-->A
A5-->B
A6-->C
A7-->D
امیدوارم که مفید واقع شده باشه فایل پروژه رو هم میگذارم.
حالا دو فایل AVR.LIB و AVR.IDX رو بریزین در محل نصب نرم افزارتون و اگه با پیام تطابق اسمی مواجه شدین(که حتما میشین) ریپلایس کنید و مطمئن باشید که مشکلی پیش نمیاد.بعد توی پروتئوس از میکرویی استفاده کنید که تازه به لیستتون افزوده شده(با اون یکی متفاوته)بعد که این کار رو کردین باید دیتا رو برای میکرو تعریف کنید که برای کیپد های مختلف متفاوته
برای کیپد 4*4 (باید بگم که من توی این دیتا استاندارد رو رعایت نکردم)
$regfile "m16def.dat"
$crystal = 1000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db7 = A.5 , Db6 = A.4 , Db5 = A.3 , Db4 = A.2 , E = A.1 , Rs = A.0
Config Kbd = Portd
Dim Kbd As Byte
Dim Kbds As Byte
Cls
Cursor Off
Do
Main:
Kbd = Getkbd()
If Kbd > 15 Then Goto Main
Kbds = Lookup(kbd , Data_for_kbd)
Cls
Home
Lcd Kbds
Select Case Kbds
Case 10
Cls
Home
Lcd "/"
Case 11
Cls
Home
Lcd "*"
Case 12
Cls
Home
Lcd "-"
Case 13
Cls
Home
Lcd "+"
Case 14
Cls
Home
Lcd "ON"
Case 15
Cls
Home
Lcd "="
End Select
Goto Main
Loop
End
Data_for_kbd:
Data 7 , 8 , 9 , 10 , 4 , 5 , 6 , 11 , 1 , 2 , 3 , 12 , 14 , 0 , 15 , 13
البته بگم که به ترتیب باید این پایه های میکرو رو به این پایه های کیپد وصل باشه
A0-->1
A1-->2
A2-->3
A3-->4
A4-->A
A5-->B
A6-->C
A7-->D
و حالا کیپید 3*4:A1-->2
A2-->3
A3-->4
A4-->A
A5-->B
A6-->C
A7-->D
$regfile "m16def.dat"
$crystal = 1000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db7 = A.5 , Db6 = A.4 , Db5 = A.3 , Db4 = A.2 , E = A.1 , Rs = A.0
Config Kbd = Portd
Dim Kbd As Byte
Dim Kbds As Byte
Cls
Cursor Off
Do
Main:
Kbd = Getkbd()
If Kbd > 15 Then Goto Main
Kbds = Lookup(kbd , Data_for_kbd)
Cls
Home
Lcd Kbds
Select Case Kbds
Case 13
Cls
Home
Lcd "*"
Case 14
Cls
Home
Lcd "#"
End Select
Goto Main
Loop
End
Data_for_kbd:
Data 1 , 2 , 3 , 10 , 4 , 5 , 6 , 11 , 7 , 8 , 9 , 12 , 13 , 0 , 14 , 15
اینم از این برنامه
البته یادتون باشه که اینطوری باید به میکرو وصل بشه:
A0-->1
A1-->2
A2-->3
A4-->A
A5-->B
A6-->C
A7-->D
امیدوارم که مفید واقع شده باشه فایل پروژه رو هم میگذارم.