ايران ويج

نسخه‌ی کامل: پیکربندی LCD و استفاده از دستور initlcd
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2 3
با سلام خدمت همه ی اساتید
چند وقته پیش یه مدار ساخته بودم که میخواستم باهاش یه رله بزرک و فن را خاموشو روشن کنم که متاسفانه بشدت روی ال سی دی نویز می افتاد
ال سی دی 2*16

سطر اولش پررنگ میشد و سطر دوم پاک می شد
گاهی هم چیزای بی معنی روی نمایشگر می نوشت

خواستم برنامه نویسی زبان سی رو امتحان کنم که متوجه شدم توی سی برخلاف بیسکام پایه RW هم استفاده میشه


یکی بهم گفتش که توی بیسکام از دستور initlcd استفاده کنم ولی دوتا مشکل هستش
اول از همه اینکه اونم پایه RW باید به میکرو وصل باشه و دوم اینکه اصلا نمیدونم چطور باید ازش استفاده کرد

یسری تکنیک برای کاهش نویز پیدا کردم ولی الان بیشتر میخوام ببینم که توی بیسکام چطور باید از این دستورو پایه Rw استفاده کنم و در صورت امکا یه نمونه برنامه ازش برام بزارین تا متوجه بشم

با تشکر از همه
سلام دوسته من.
این نویز ها و مطالب و کارکتر های نا مربوط که روی LCD نمایش داده میشه علتش اینه که میکرو نویز میگره.
میکرو کنترل های AVR همشون در مقابل نویز خیلی ضریف و حساس هستن.
شما اگه از PIC استفاده کنی ، نویز خیلی کم روش تاثیر میزاه و خیلی وقتها هم اصلا روش تاثیر نمیزاه.
و این مشکل رو نداری.
اگه بخوای از AVR استفاده کنی ، باید با تکنیک هایی که هست نویز رو از میکرو دور کنی.
سلام
منظور دقیق شما رو متوجه نشدم!
مشکل شما با پایه rw چیه؟
rw برای خوندن و نوشتن دیتا رو lcd کاربرد داره

چرا میخواهید از زبان سی استفاده کنید؟
نویزگیری مدارتون باید به صورت سخت افزاری انجام بگیره و فرقی نمیکنه برنامه به زبان بیسیک باشه یا سی
سلام

من قصد ندارم از زبان سی استفاده کنم
و در این مورد که نویز گیری مربوط به سخت افزار هستش هم موافقم ولی توی هلپ بیسکام دستور initlcd بودش که وقتی گشتم متوجه شدم که ازش میشه برای از بین بردن نویز در ال سی دی استفاده کرد ولی باید پایه RW هم به میکرو وصل باشه ولی هیچ نمونه برنامه ای ازش پیدا نکردم که بدونم چطور میشه ازش استفاده کرد .
نه خیر باعث نویز گیری نمی شه ولی در کل مهم نیست یه پایه بی مصرف میکرو رو به عنوان RW معرفی کنید چون از LCD هیچگاه خونده نمیشه مشکلی هم ایجاد نمیشه
توی پیکربندی ال سی ذی جاییبرای تعریفش وجود نداره
از طرفی
اگه ممکنه یه مثال کاربردی ازش بزار برام که متوجه بشم
آخه من یکم دیر میگیرم
(۳۰-اردیبهشت-۱۳۹۲, ۱۶:۰۷:۵۵)MicrowaveCO نوشته است: [ -> ]توی پیکربندی ال سی ذی جاییبرای تعریفش وجود نداره
از طرفی
اگه ممکنه یه مثال کاربردی ازش بزار برام که متوجه بشم
آخه من یکم دیر میگیرم
بفرماییدBiggrin
سلام

ممنون از توجهت ولی من که بازم متوجه نشدم اگه کسی میتونه یجوری منو روشن کنه که آخرش کاره این دستور initlcd چیه و چطور پایه RW باید به میکرو معرفی بشه درحالیکه توی دستور پیکربندی نمایشگر همچین چیزی نداریم !
یه توضیحم بدم که منظور از initlcd همون دستوره بیسکامش هستش ( نه دستورش توی زبان سی )
(۳۱-اردیبهشت-۱۳۹۲, ۰۹:۱۳:۵۹)MicrowaveCO نوشته است: [ -> ]سلام

ممنون از توجهت ولی من که بازم متوجه نشدم اگه کسی میتونه یجوری منو روشن کنه که آخرش کاره این دستور initlcd چیه و چطور پایه RW باید به میکرو معرفی بشه درحالیکه توی دستور پیکربندی نمایشگر همچین چیزی نداریم !
یه توضیحم بدم که منظور از initlcd همون دستوره بیسکامش هستش ( نه دستورش توی زبان سی )
بیسیک کی تاحالا این دستور رو پیدا کرده؟Exclamation
یه 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
صفحه‌ها: 1 2 3