آموزش بسکامتازه ها

راه اندازی lcd کاراکتری با بسکام (سوم)

در این قسمت از آموزش نحوه راه اندازی ال سی دی دو سطری 16 حرفی رو براتون گذاشتم که به طور کامل و خلاصه به بیان نکات راه انداز ی این ال سی دی میپردازیم که به عکسی از این ال سی دی را در زیر میبینید:

lcd

در ابتدا باید گفت که این نوع ال سی دی ها بسیار رواج دارند و در انواع پروژه های ساده و پیشرفته از این نوع lcd و خانواده این ال سی دی ها استفاده میکنند.

برای شروع کار با یک مثال شروع میکنیم :

مثال : میخواهیم وقتی سیتم را روشن میکنیم کلمه hello world در lcd نمایش و بعد از یک ثانیه به صورت یک تایمر شروع به شمارش کند.

در بسکام برای استفاده از ال سی دی باید دستورات فراخوانی استفاده از ال سی دی نوشته وتنظیمات مربوط به پایه های متصل به میکروکنترلر اعمال شود:

Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , _
Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.2 , Rs = Portc.0

در سطر اول دستورات بالا نوع ال سی دی را مشخص میکنیم

در سطر دوم پایه های ال سی دی راکه به پایه های میکرو باید وصل شود را تعیین میکنیم که سطر سوم ادامه سطر اول میباشد . به طور مثال پایه Rs ال سی دی به پایه C.0 و پایه E ال سی دی به پایه C.2 میکرو وصل میشود به همین صورت باید پایه های ال سی دی به پایه های میکرو وصل میشود که نحوه اتصال بین LCD ومیکرو به صورت زیر هست (اتصالات کامل نیست پایه های تغذیه و.. وصل نشده اند):

شماتیک lcd کاراکتری

در تصویر بالا ال سی دی 14 پایه داره اما اگر به تصویر اول نگاه کنید 16 پایه دارد در ال سی دی بالا پایه های مربوط به تغذیه نور پشت زمینه وجود ندارد اما در واقعیت پایه های 15 مربوط بهVCC  وپایه 16GND  میباشد و اگر به این دو پایه ولتاژ اعمال شود نور پشت زمینه روشن میشود که به صورت اختیاری هست و میتوان از نور پشت زمینه استفاده نکرد.

پایه 1 و 5 LCD  مربوط به GND و پایه 2 مربوط به VCC یا همان 5 ولت هست GND نیز همان صفر ولت هست. پایه 3  LCD  مربوط به شدت روشنایی نوشته ها (CONTRAST) میباشد معمولا با اعمال ولتاژ VCC شدت روشنایی به صورت معمولی در بعضی ال سی دی ها تنطیم میشود اما ممکن است در ال سی دی شما تنظیم مناسبی وجود نداشته باشد  ونوشته ها به صورت زیر نمایش داده شود:

ال سی دی کاراکتری

که شدت روشنایی بالا و حالت ناخوش آیند دارد برای ینکه مدار شما برای هر نوع ال سی دی انعطاف مناسبی داشته باشد از مدار زیر برای این پایه استفاده کنید

lcd carc

در تصویر بالا تغذیه ال سی دی نیز اعمال شده هست در تصویر بالا ما برای تنظیم کنتراست یا شدت روشنایی نوشته از پتانسیومتر که المانی 3 پایه هست استفاده میکنیم

 

پتانسیومتر

که پایه متغیر به پایه 3 LCD و پایه های ثابت به مثبت و منفی یا همان VCC و GND وصل میشود تفاوتی بین دو پایه موجود در پایه های ثابت وجود ندارد و به هر کدام میخواهید GND را وصل کنید و دیگری را به VCC وصل کنید مقدار پتانسیومتر 10کیلو اهم انتخاب شود مناسب هست

اما ادامه برنامه:

با دستور زیر میتوانید بلینک(BLINK) یا چشمک زدن را اشاره گر موجود در ال سی دی را خاموش یا روشن  کنید:

cursor off

بادستور بالا اشاره گر خاموش میشود

cursor on

بادستور بالا اشاره گر روشن میشود

با دستور زیر میتوان به موقعیت سطر k ام و ستون h ام رفت وعملیات نوشتن را از موقعیت وارد شده در دستور شروع کرد:

locate k , h

توسط دستور زیر میتوان متن را در ال سی دی نمایش داد دقت کنید برای نمایش متن ، متن باید مابین دو “(کوتیشین) قرارمیگیرد ولی متغیر نیازی به کوتیشین ندارد:

lcd “hello world”

مثلا توسط دستور بالا عبارت hello world  در ال سی دی نمایش میدهد البته دقت کنید که باید ابتدا موقعیت یا محل نوشتن متن تعیین شود:

lcd A

در دستور بالا اطلاعات موجود در متغیر  a در ال سی دی نمایش داده میشود که ابتدا باید متغیر توسط دستور زیر تعریف شود:

Dim A As Byte

که متغیر a از نوع بایت بوده و مقدار0تا 255 دسیمال و 8بیت میتواند باشد

 برنامه راه اندازی lcd کاراکتری با بسکام به صورت زیر هست:

$regfile = "m32def.dat"
$crystal = 8000000

Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , _
Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.2 , Rs = Portc.0

Dim A As Byte

Cursor Off

Cls
Locate 1 , 2
Lcd "hello world"

A = 0

Do
Cls
Locate 1 , 1
waitms 1000
Lcd A
A = A + 1
Loop

End                                                         'end program

 

نوشته های مشابه

17 دیدگاه

  1. سلام اقای عباس زاده یه سوال .سرعت شمارنده چقده یعنی هر چند ثانیه یه عدد اضافه میشه.

    1. اقای حائری ییخشید کد رو اصلاح کردم یادم رفته بود تاخیر در برنامه بزارم لطفا کد رو کپی کنید و در بسکام کامپایل کنید
      طبق اصلاح هر یک ثانیه یا هر 1000 میلی ثانیه یک واحد به متغیر افزوده میشه

  2. سلام اقای عباس زاده یه کدی دارم درباره دما سنج میخوام ببینم جواب میده یا نه اگه همینو پروگرم کنم جواب رو کوتاه بدید اگه نمیشه دلیلش هم بنویسید
    $regfile = “m16def.dat”
    $crystal = 8000000
    Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = _
    Portb.7 , Rs = Portb.2 , E = Portb.3
    Config Lcd = 16 * 2
    Cls
    Cursor Off
    Locate 1 , 1
    Lcd “Dama Sanj”
    Locate 2 , 1
    Lcd “Crated By=milad haeri”
    Wait 3
    Cls
    Dim T As Byte
    Dim B As Byte
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    Start Adc
    Do
    T = Getadc(0)
    B = T / 10
    Cursor Off
    Locate 1 , 1
    Lcd “Real Adc=” ; T
    Locate 2 , 1
    Lcd “temp=” ; B “c”
    Waitms 350
    Loop
    Stop Adc
    End

    1. بله من که مشکلی ندیدم ولی بهتره این جند تا کد رو اضافه کنی
      این کد رو سطر بعد کد Cursor Off که تو حلقه هست بنویس:
      locate 1,10
      lcd” ”
      این کد رو هم قبل کد Locate 2 , 1 که تو حلقه هست بنویس:
      locate 2,6
      lcd” ”
      این کدها باعث حذف جامانده های اطلاعات قبلی از ال سی دی میشه
      در ضمن یک بار Cursor Off بنویسی در اول کافی هست
      این نکته رو هم در نظر بگیر که باید خودت قلق دما رو بدست بیاری مثلا دما 20 درجه هست ولی 22 نشون میده که بهتره دو واحد از B کم کنی

  3. ممنون
    فکر کنم که توی حلقه بعد از خاموش کردن مکان نما باید یه cls بزارم درسته؟

  4. سلام اقای عباس زاده
    یه سوال برای اینکه شرط بزارم که اگه مثلا متغیر B رسید به دمای پایین تر از 15 درجه فلان کارو بکنه چه کدی باید بنویسم

    1. اقای حائزی لطفا در انجمن سوالتون رو مطرح کنید تا بتوانیم سریعتر پاسخگو باشیم
      در صورت نبود موضوع مورد نظر ، موضوع جدیدی ایجاد نمایید
      با تشکر

  5. من هرچی این اجرا میکنم چیزی زو lcd نمیایش نمیده تو protues لطفا اگر کسی میدونه کمک کنه

  6. سلام ممنون از سایت خوبتون.
    من به ال سی دی خیلی نیاز دارم ولی نمیدونم چرا کار نمیکنه لصفا کمک کنید.
    خیلی منون میشم

  7. با سلام . ضمن تشکر از وبسایت خوبتون
    فکر کنم توی شماتیکی که قرار دادید یک ایراد وجود داره و به اشتباه پایه 3 یا vee رو به vcc متصل کردید در حالی که در توضیحات خودتون ذکر کردید که باید به پایه متغیر پتانسیومتر متصل بشه.

    1. هر دو صحیح است در این حالتی که در شماتیک موجود است بیشترین کنتراست ممکن رو lcd داره برای تنظیم کنتراست از پتانسیومتر استفاده میشه

  8. توی شماتیک e رو به c1 وصل کردید ولی توی توضیحات گفتید به c2 متصل بشه در کل مقاله اشکال دار هست

  9. سلام مهندس با چه کدلی میتونی کلمه ای رو از سمتی به سمت دیگع برد و برگشت داد یعنی تو حرکت باشه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

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