ممنون از جوابتون
خب ... تا اینجا مشخص شد این دستور وجود داره و اینکه از این دستور میشهزمانیکه روی السیدی چیزای نامفهوم مینویسه استفاده کرد
توی مثال بالا هنوز یچیز نامشخصه اونم اینکه کجای برنامه ما اومدیم بگیم که پایه ي RW به کدوم پایه میکرو وصل شده ؟
از طرفی : امکانش هست که بجای استفاده از اسمبلی از همون دستور بییسکش استفاده کرد ؟
شاید من دارم اشتباه میکنم ولی انگار هنوز بکاربردن این دستور یکم گنگ هستش ( البته اینو از دید خودم میگم و نمیدونم بقیه دوستان چه نظری دارن ) هرچند ممکنه بخاطر تسلط کم من به برنامه نویسی باشه ولی خب :
اگه جسارت نشه پیشنهاد میکنم که از یه برنامه کوتاه تر و ساده تر استفاده بشه که بشه روش بیشتر مانور داد
باز هم بابت توجهی که به این موضوع نشون دادین از همه ممنونم
(۳۱-اردیبهشت-۱۳۹۲, ۱۲:۳۹:۴۰)MicrowaveCO نوشته است: [ -> ]توی مثال بالا هنوز یچیز نامشخصه اونم اینکه کجای برنامه ما اومدیم بگیم که پایه ي RW به کدوم پایه میکرو وصل شده ؟
با اجازه اینو سه بار گفته شده
![Biggrin Biggrin](https://www.iranled.com/forum/images/smilies2/biggrin.gif)
توی تنظیم پایه ها RW رو اضافه کنید!!
کد:
Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0 , Wr = Portd.5
این WR همون RW هست دیگه
(۳۱-اردیبهشت-۱۳۹۲, ۱۲:۲۶:۴۴)r0b0 نوشته است: [ -> ]سلام
تو هلپ بسکام سرچ زدم
این برنامه رو ببینید
کد:
$regfile = "m8515.dat" ' specify the used micro
$crystal = 4000000 ' used crystal frequency
$baud = 19200 ' use baud rate
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 10 ' default use 10 for the SW stack
$framesize = 40 ' default use 40 for the frame space
$sim
Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Portc.7 , Rs = Portc.6
Dim A As Byte
Config Lcd = 16x2 'configure lcd screen
Cls 'clear the LCD display
Lcd "Hello world." 'display this at the top line
Wait 1
Lowerline 'select the lower line
Wait 1
Lcd "Shift this." 'display this at the lower line
Wait 1
For A = 1 To 10
Shiftlcd Right 'shift the text to the right
Wait 1 'wait a moment
Next
For A = 1 To 10
Shiftlcd Left 'shift the text to the left
Wait 1 'wait a moment
Next
Locate 2 , 1 'set cursor position
Lcd "*" 'display this
Wait 1 'wait a moment
Shiftcursor Right 'shift the cursor
Lcd "@" 'display this
Wait 1 'wait a moment
Home Upper 'select line 1 and return home
Lcd "Replaced." 'replace the text
Wait 1 'wait a moment
Cursor Off Noblink 'hide cursor
Wait 1 'wait a moment
Cursor On Blink 'show cursor
Wait 1 'wait a moment
Display Off 'turn display off
Wait 1 'wait a moment
Display On 'turn display on
Thirdline
Lcd "Line 3"
Fourthline
Lcd "Line 4"
Home Third 'goto home on line three
Home Fourth
Home F 'first letteer also works
Locate 4 , 1 : Lcd "Line 4"
Wait 1
Deflcdchar 1 , 225 , 227 , 226 , 226 , 226 , 242 , 234 , 228 ' replace ? with number (0-7)
Deflcdchar 0 , 240 , 224 , 224 , 255 , 254 , 252 , 248 , 240 ' replace ? with number (0-7)
Cls 'select data RAM
Lcd Chr(0) ; Chr(1) 'print the special character
_temp1 = 1 'value into ACC
!rCall _write_lcd 'put it on LCD
End
در آخر برنامه
کد:
_temp1 = 1 'value into ACC
!rCall _write_lcd
احتمالا این دستور واسه فراخوانی همون پایه rw
درواقع این کد مربوط به زبان asm که به این طریق پیکربندی میشه؛
کد:
$ASM
Ldi _temp1, 5 'load register R24 with value
Rcall _Lcd_control 'it is a control value to control the display
Ldi _temp1,65 'load register with new value (letter A)
Rcall _Write_lcd 'write it to the LCD-display
$END ASM
دست شما درد نکنه ولی این مثال INITLCD نیست همین جوری که دیدید Write LCD هست
![Biggrin Biggrin](https://www.iranled.com/forum/images/smilies2/biggrin.gif)
ولی خوب بود یه قابلیت جدید یاد گرفتیم
(۳۱-اردیبهشت-۱۳۹۲, ۱۲:۳۹:۴۰)MicrowaveCO نوشته است: [ -> ]خب ... تا اینجا مشخص شد این دستور وجود داره و اینکه از این دستور میشهزمانیکه روی السیدی چیزای نامفهوم مینویسه استفاده کرد
علتش رو گفته 1- پس از تنظیم LCD پاک میشه 2- قبلش میتونید LCD رو در حالت نوشتن وارد نکنید
(۳۱-اردیبهشت-۱۳۹۲, ۱۲:۳۹:۴۰)MicrowaveCO نوشته است: [ -> ]از طرفی : امکانش هست که بجای استفاده از اسمبلی از همون دستور بییسکش استفاده کرد ؟
بله دیگه Initlcd دستور خودش هست توی اسمبلی Rcall _Init_LCD
کلا همین جوری که میدونید یا نمی دونید
![Biggrin Biggrin](https://www.iranled.com/forum/images/smilies2/biggrin.gif)
وقتی شما LCD رو تنظیم می کنید برنامه همون اول کار تابع INITLCD رو به طور خود کار اجرا می کنه (اول راه اندازی) حالا اگه شما این رو استفاده کنی دیگه به طور خود کار انجام نمیشه و منتظر می مونه که شما این کار رو انجام بدی
اینم برای اینکه قهر نکنی
![Biggrin Biggrin](https://www.iranled.com/forum/images/smilies2/biggrin.gif)
اون بهزاد اول نوشته نمی شه چون LCD فعال نیست (ارور پروتئوس رو نگاه کن)
سلام
آقا کارت درسته ... من تسلیمم
جوابمو گرفتم وووو حالا یچیز دیگه :
امتحان کردم دیدم که اگه پایه های D0 تا D3 رو به زمین وصل کنم و یه خازن 100 نانوفاراد درست سر تغذیه ال سی دی بزارم نتیجه بهتر میشه
خواستم نظرتونو بدین که ببینم یوقت کارم اشکالی نداشته باشه مدیون ال سی دی بشمو خونش بمونه گردنم :-)
با تشکر بسیار از همه اساتید
(۰۱-خرداد-۱۳۹۲, ۱۷:۰۹:۱۱)MicrowaveCO نوشته است: [ -> ]سلام
آقا کارت درسته ... من تسلیمم
جوابمو گرفتم وووو حالا یچیز دیگه :
امتحان کردم دیدم که اگه پایه های D0 تا D3 رو به زمین وصل کنم و یه خازن 100 نانوفاراد درست سر تغذیه ال سی دی بزارم نتیجه بهتر میشه
خواستم نظرتونو بدین که ببینم یوقت کارم اشکالی نداشته باشه مدیون ال سی دی بشمو خونش بمونه گردنم :-)
با تشکر بسیار از همه اساتید
اون پایه هارو که باید به زمین وصل کنید
![Biggrin Biggrin](https://www.iranled.com/forum/images/smilies2/biggrin.gif)
خازن هم که ...
![Biggrin Biggrin](https://www.iranled.com/forum/images/smilies2/biggrin.gif)
خوبه دیگه
![Biggrin Biggrin](https://www.iranled.com/forum/images/smilies2/biggrin.gif)
سلامی دوباره
من برگشتم با چنت سوال جدید
میخوام یه اگوی خوب برای یک منوی خوب در بیارم
من چندباری نشستمو برای پروژم منو طراحی کردم البته زیاد چنگی به دل نمیزد
یعنی نکه قشنگ نباشه ها
بـــــــــــــــــــــــــــــــــود
ولی مدام از این زیر بنامه به اون زیر برنامه باید پرش میکرد بعلاوه اینکه یکسری قابلیت میخواستم اضافه کنم بهش ولی نتونستم تکنیک خوبی پیدا کنم برای پیاده سازیش
چنتا نمونه کار هم دیدم که برام خیلی جالب بود ولی سورسش در دسترس نبودش
حالا گفتم اینجا مطرحش کنم تا اساتید بیان و نظرشونو بگن و کمک کنن
سوال : بهترین دستور برای پیکر بندی شستی های منو چیه ؟
( مثلا با زدن شستی تنظم - در هر لحظه به منوی تنظیمات بشه دسترسی داشت و با فشردن و نگه داشتن شستی های زیاد و کم هم بشه اعداد رو تغییر داد جوری که اگه شستی فشارداده نگه داشته شه بود اعداد همه پی در پی زیاد یا کم بشن )
ابته میدونم برای این مورد دوم نمیشه از دستور دیبانس اسفاده کرد و معمولا از دستورات شرطی استفاده میشه ولی خب یه مشکلی که من با دستور شرط برای این کار دارم اینه که یوقتایی بی دلیل اعداد تغییر میکنن !!!
میخوام ببینم شما معمولا از چه تکنیکی برای نوشتن منو استفاده می کنین و اگه ممکنه یه مثال کوتاه هم بزارین
با تشکر
سلام گلم.
ولله اگه از lcd گرافیکی استفاده میکنی ، میتونی با PS چندتا عکس بسازی و اونارو رو ال سی دی نشون بدی.
این از همین خوشگل تر در میاد.
واسه حل مشکل دستور IF یک راه حل هست و اونم اینه که بعد از نوشتن دستور IF ، باید یه دستور BitWait بنویسی تا اون اتفاق نیوفته.
ولله مثال الآن نمیتونم بنویسم ....
سلام
ممنون از جوابت
الان میرم ببینم دستور Bitwait دقیقا چیکار میکنه
یه مشکل دیگه
الان داشتم برنامه مینوشتم دیدم که بیسکام به دستور پیکربندی تمایشگر که دوستان گفته بودن Wr = Portd.5 اضافه کنم خطا گرفته و نمیشه پایه RW رو اینطوری پیکربندی کردش
کسی از این دستور جواب گرفته ؟
Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0 , Wr = Portd.5
RW اصلاً نیازی به پیکر بندی نداره ، شما اگه خیلی اصرار داری که از RW استفاده کنی ،
RW رو به یکی از پایه های I/O میکرو بده ، هر موقع خواستی چیزی نمایش بدی اونو 0 کن و بده اینکه اونو نمایش دادی اونو 1 کن.
مثلا:اگر RW به پایه ی b.1 داده شده باشه ، طبق گفته ی بالا داریم:
کد:
Portb.1=Reset
Lcd"h.unique"
Portb.1=Set
من این روش رو امتحان نکردم ، ولی حدس میزنم که درس عمل کنه .
شما لطف کن این روش رو امتحان کن و خبرشو بده.
(۰۵-خرداد-۱۳۹۲, ۱۰:۰۷:۳۰)MicrowaveCO نوشته است: [ -> ]یه مشکل دیگه
الان داشتم برنامه مینوشتم دیدم که بیسکام به دستور پیکربندی تمایشگر که دوستان گفته بودن Wr = Portd.5 اضافه کنم خطا گرفته و نمیشه پایه RW رو اینطوری پیکربندی کردش
کسی از این دستور جواب گرفته ؟
Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0 , Wr = Portd.5
یه جا سوتی دادی من دقیقا بالایی رو کامپایل کردم
![Biggrin Biggrin](https://www.iranled.com/forum/images/smilies2/biggrin.gif)
تازه مثال هم که برات گذاشتم
![Biggrin Biggrin](https://www.iranled.com/forum/images/smilies2/biggrin.gif)
برنامه کاملت رو بزار
سلام آقای بهزادی
والا سوتی که ندادم ... یعنی چیز خاصی نیستش که سوتی پیش بیاد
فقط میکرو معرفی کردم
کریستال معرفی کردم
ال سی دی پیکربندی کردم ولی توی متن خطا مینویسه که مقدار داده شده و یا پارامتر غیر صحیح برای RW وجود داره
البته شاید از نگارش بیسکام باشه
میشه شما بگین از چه نسخه ای استفاده میکنی تا منم همونو دانلود کنم ؟ ( برای من 1.11.9.0 )
2.0.7.5
-
فکر نکنم مشکل ورژن باشه چون اون برنامه ای که تو پرتال گذاشتم رو با همین ورژن شما نوشتم