با سلام خدمت همه ی اساتید
چند وقته پیش یه مدار ساخته بودم که میخواستم باهاش یه رله بزرک و فن را خاموشو روشن کنم که متاسفانه بشدت روی ال سی دی نویز می افتاد
ال سی دی 2*16
سطر اولش پررنگ میشد و سطر دوم پاک می شد
گاهی هم چیزای بی معنی روی نمایشگر می نوشت
خواستم برنامه نویسی زبان سی رو امتحان کنم که متوجه شدم توی سی برخلاف بیسکام پایه RW هم استفاده میشه
یکی بهم گفتش که توی بیسکام از دستور initlcd استفاده کنم ولی دوتا مشکل هستش
اول از همه اینکه اونم پایه RW باید به میکرو وصل باشه و دوم اینکه اصلا نمیدونم چطور باید ازش استفاده کرد
یسری تکنیک برای کاهش نویز پیدا کردم ولی الان بیشتر میخوام ببینم که توی بیسکام چطور باید از این دستورو پایه Rw استفاده کنم و در صورت امکا یه نمونه برنامه ازش برام بزارین تا متوجه بشم
با تشکر از همه
سلام دوسته من.
این نویز ها و مطالب و کارکتر های نا مربوط که روی LCD نمایش داده میشه علتش اینه که میکرو نویز میگره.
میکرو کنترل های AVR همشون در مقابل نویز خیلی ضریف و حساس هستن.
شما اگه از PIC استفاده کنی ، نویز خیلی کم روش تاثیر میزاه و خیلی وقتها هم اصلا روش تاثیر نمیزاه.
و این مشکل رو نداری.
اگه بخوای از AVR استفاده کنی ، باید با تکنیک هایی که هست نویز رو از میکرو دور کنی.
سلام
منظور دقیق شما رو متوجه نشدم!
مشکل شما با پایه rw چیه؟
rw برای خوندن و نوشتن دیتا رو lcd کاربرد داره
چرا میخواهید از زبان سی استفاده کنید؟
نویزگیری مدارتون باید به صورت سخت افزاری انجام بگیره و فرقی نمیکنه برنامه به زبان بیسیک باشه یا سی
سلام
من قصد ندارم از زبان سی استفاده کنم
و در این مورد که نویز گیری مربوط به سخت افزار هستش هم موافقم ولی توی هلپ بیسکام دستور initlcd بودش که وقتی گشتم متوجه شدم که ازش میشه برای از بین بردن نویز در ال سی دی استفاده کرد ولی باید پایه RW هم به میکرو وصل باشه ولی هیچ نمونه برنامه ای ازش پیدا نکردم که بدونم چطور میشه ازش استفاده کرد .
نه خیر باعث نویز گیری نمی شه ولی در کل مهم نیست یه پایه بی مصرف میکرو رو به عنوان RW معرفی کنید چون از LCD هیچگاه خونده نمیشه مشکلی هم ایجاد نمیشه
توی پیکربندی ال سی ذی جاییبرای تعریفش وجود نداره
از طرفی
اگه ممکنه یه مثال کاربردی ازش بزار برام که متوجه بشم
آخه من یکم دیر میگیرم
(۳۰-اردیبهشت-۱۳۹۲, ۱۶:۰۷:۵۵)MicrowaveCO نوشته است: [ -> ]توی پیکربندی ال سی ذی جاییبرای تعریفش وجود نداره
از طرفی
اگه ممکنه یه مثال کاربردی ازش بزار برام که متوجه بشم
آخه من یکم دیر میگیرم
بفرمایید![Biggrin Biggrin](https://www.iranled.com/forum/images/smilies2/biggrin.gif)
سلام
ممنون از توجهت ولی من که بازم متوجه نشدم اگه کسی میتونه یجوری منو روشن کنه که آخرش کاره این دستور initlcd چیه و چطور پایه RW باید به میکرو معرفی بشه درحالیکه توی دستور پیکربندی نمایشگر همچین چیزی نداریم !
یه توضیحم بدم که منظور از initlcd همون دستوره بیسکامش هستش ( نه دستورش توی زبان سی )
(۳۱-اردیبهشت-۱۳۹۲, ۰۹:۱۳:۵۹)MicrowaveCO نوشته است: [ -> ]سلام
ممنون از توجهت ولی من که بازم متوجه نشدم اگه کسی میتونه یجوری منو روشن کنه که آخرش کاره این دستور initlcd چیه و چطور پایه RW باید به میکرو معرفی بشه درحالیکه توی دستور پیکربندی نمایشگر همچین چیزی نداریم !
یه توضیحم بدم که منظور از initlcd همون دستوره بیسکامش هستش ( نه دستورش توی زبان سی )
بیسیک کی تاحالا این دستور رو پیدا کرده؟
![Exclamation Exclamation](https://www.iranled.com/forum/images/smilies1/exclamation.gif)
یه config lcd فقط داره!!!
اگه منظورتون همین بود (یعنی دستور رو اشتباه نوشتید) باید بگم در ادامه ی تنظیمات می تونید پین رو تعریف کنید مثل بقیه ی پین ها ( توی هلپ بسکام نشوت داده الان بسکام ندارم)
اینو از توی پست پرتال برداشتم مال ارتباط با ال سی دی با سریال
کد:
Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0 , Wr = Portd.5
سلام
نه داره این دستورو
توی هلپش برو این دستورو بنویس میاره
Action
Initializes the LCD display.
Syntax
INITLCD
Remarks
The LCD display is initialized automatic at start up when LCD statements are used by your code.
If fore some reason you would like to initialize it again you can use the INITLCD statement.
For example in environments with static electricity, the display can give strange output.
You can initialize the display then once in a while. When the display is initialized, the display content is cleared also.
The LCD routines depend on the fact that the WR pin of the LCD is connected to ground. But when you connect it to as port pin, you can use INITLCD after you have set the WR pin to logic 0.
ASM
The generated ASM code :
Rcall _Init_LCD
See also
LCD
Example
NONE
سلام
تو هلپ بسکام سرچ زدم
این برنامه رو ببینید
کد:
$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