۰۲۱-۷۷۶۰۵۵۳۸

شنبه, 10 آبان 1393 ساعت 03:05

LCD چیست؟

نوشته شده توسط 
این مورد را ارزیابی کنید
(0 رای‌ها)
آشنایی با LCD:

 

 همونطور که میدونید ال سی دی ها به دونوع اساسی الفبایی  که فقط میتوانند حروف الفبای انگلیسی به اضافه ی کارکترها معمول را نمایش دهد(مثلا * و / و | و ...). ودیگری قادر به نمایش تصاویر و تمامی کارکترها است. البته بسته به نوع ال سی دی این نمایش نیز می تواند متفاوت باشد.

 
ال سی دی که ما میخواهیم با آن کار کنیم ال سی دی رایج 2*16 هست که دارای 16 ستون ودو سطرهست که میتوان با آن کارمترهای مختلف رو نوشت. هرکدام از این سطر و ستونها نیز دارای شماره ای هستند که از صفر شروع میشوند :
 
ال سی دی های دیگه نیز در سایز هایی مثل 1*8 ، 1*16 ، 2*20 ، 4*20 و غیره هستند.
در شکل زیر نحوه اتصال پایه های میکرو به ال سی دی رو مشاهده می کنید:
 
 
همانطور که در تصویر مشاهده می کنید ال سی دی دارای 16 پایه است که البته پایه های 15 و 16 را در برنامه پرتئوس مشاهده نمیکنید و آن دو پایه آند و کاتد هستند که برای روشن کردن نور پس زمینه کاربرد دارند.
پایه 1 » این پایه را معمولا به زمین وصل میکنند و بعنوان زمین حساب میشود.
پایه 2 » این پایه پایه تغذیه حساب میشود و +5 ولت را به آن وصل می کنند.
پایه 3 » این پایه برای تنظیم کنتراست ال سی دی است.
پایه 4 » انتخاب رجیستر دستورالعمل اگر این پایه صفر شد بعنوان دستورالعمل و اگر یک شد بعنوان داده عمل میکند.
پایه 5 » برای خواندن و نوشتن حافظه داخلی ال سی دی کاربرد دارد.
پایه 6 » بعنوان فعال ساز ال سی دی حساب میشود.
پایه 7 تا 14 » این پایه ها بعنوان باس داده حساب میشوندکه البته پایه های 11 تا 14 را استفاده کرده و بقیه بدون استفاده باقی می مانند.
پایه 15 و 16 » این دوپایه همانطور که اشاره شد برای روشن کردن نور پس زمینه به کار می روند.
برای کار ردن با ال سی دی باید کتابخانه مربوط به آن را صدا بزنیم که همانند صدا زدن کتابخانه های مگا و تاخیر هستند.
<include<lcd.h#
اما قبل از شروع نوشتن برنامه باید با چند تابع آشنا شویم :
 
;()lcd_init
این تابع برای معرفی کردن تعداد ستون های ال سی دی به کار میرود که باید قبل از دستورات دیگر بکار برود.
مثلا برای ال سی دی ما که 16 ستون دارد باید به ان صورت بنویسیم.
;(16)lcd_init
 
;()lcd_ready
این دستور برای دریافت اطلاعات ال سی دی را آماده می کند. در داخل () لزومی به درج کلمه یا عدد نیست.
 
;()lcd_write_data
این تابع در رجیستر دستورالعمل ال سی دی اطلاعاتی (یا دستوراتی) را می نویسد.البته قبل از فراخوانی این دستور باید دستور قبل را فراخوانی کنیم. مثلا :
;()lcd_ready
;(lcd_write_data(0x07
در این مثال ابتدا ال سی دی را آماده دریافت اطلاعات کرده و در خط بعد فرمان 07 یعنی کل صفحه را به سمت چپ شیفت می دهد. این دستورات ثابت هستند. مثلا 00 کل صفحه را پاک میکند.
 
;()lcd_write_byte
به کمک این تابع میتوان در رَم ال سی دی یا رجیستر داده ی واقع در ال سی دی اطلاعات را نوشت.مثلا :
;(lcd_wirte_byte(address,data
درمثال بالا ما در داخل () ابتدا آدرس مورد نظر و سپس اطلاعات خود را در آن آدرس قرار می دهیم.
 
lcd_read_byte
این تابع به منظور خواندن داده ی موجود در رَم نمایشگر مورد استفاده قرار میگیرد.مثلا :
;(lcd_read_byte(address
برای این مثال نیز آدرس مورد نظر را از حافظه برای ما میخواند.
 
;(lcd_putchar(char
این نوع دستور نیز یک داده از نوع کارکتر را بروی مکان نمای ال سی دی نمایش می دهد.مثلا:
;("lcd_putchar("Hi
در این مثال نیز با توجه به کلمه ما که از نوع کارکتر است را بروی ال سی دی نمایش میدهد.
 
;()lcd_putsf
این تابع برای نمایش یک رشته از حافظه فلش بروی ال سی دی استفاده می شود.مثلا :
;("lcd_putsf("Salam
این تابع نیز همانند تابع کارکتری است با این تفاوت که به دلیل استفاده از حافظه فلش مقدار آن خیلی بیشتر از حالت قبل است.
 
;()lcd_gotoxy
این نوع دستور برای مشخص کردن محل مکان نمای ال سی دی کاربرد دارد.مثلا:
;(lcd_gotoxy(5,0 
در این دستور مکان نما به ستون ششم از سطر اول می رود.گزینه اول مربوط به انتخاب ستون و دومین گزینه برای انتخاب سطر استفاده میشود.
 
برای اتصال ال سی دی به میکرو باید از دستورات اسمبل زیر استفاده شود.
 
asm 
#
;equ __lcd_port = portaddress.
 
endasm 
#
 
 
در دستور بالا به جای پورت آدرس باید از معادل هگز مخصوص به آن ها استفاده کرد.
0x12 ======== PORTD                     0x18 ======= PORTB
0x15 ======== PORTC                     0x1B ======= PORTA
 
خوب اینم از این.
 
حالا برای شروع یک برنامه کار می کنیم تا بهتر جا بیافته:
 
- تمرین : برنامه ای بنویسید که با ال سی دی نام خودتان را (لاتین) در ستون اول و سطر دوم نمایش دهد؟
 
خوب برای این کار ابتدا کد ویژن را باز کرده و یک پروژه جدید را انتخاب می کنیم.
چون پورت را در صورت مسئله مشخص نکرده است پس با هر چورت دلخواه میتوان این کار را انجام داد.
پس از تعیین نوع آی سی و کلاک آن روی دکمه ذخیره کلیک کنید.پروژه را با نام دلخواه ذخیره کنید.
حالا تمامی دستورات موجود را به جز نوع آی سی پاک کنید.
حالا دستورات زیر را می نویسیم:
<include <mega16.h#
<include <lcd.h#
(void main(void
}
DDRA = 0xFF; //PORT A = out put
asm#
 equ __lcd_port = 0x1B; //PORT A.
endasm#
lcd_init(16);  // For 16 cell
lcd_clear(); // Clear LCD
(lcd_gotoxy(0,1);  // Go to (0,1
lcd_putsf("My Name"); // Write Your Nam
End void//{
همانطور که مشاهده میشود در خط اول نوع آی سی و در خط بعد کتابخانه ال سی دی را معرفی می کنیم.
     را به عنوان خروجی قرار دادیم. A در خط بعد که پلان اصلی برنامه را معرفی میکنیم. خط بعدی نیز پورت  
خط بعدی مربوط به کدهای اسمبلی تنظیم پورت هست.
خط بعدی تعداد ستون های ال سی دی مورد نظر رو تعیین می کنیم.
در خط بعد ابتدا ال سی دی را پاک میکنیم . در خط بعد به مکان مورد نظر میرویم. چون از صفر شمارش میکنیم  پس مکان اول همان 0 هست.
در خط بعد نیز نام خود را وارد می کنیم.
خط آخر نیز پلان اصلی را می بندد.
اگر همه چیز خوب پیش رفته باشد باید تصویری مثل تصویر زیر داشته باشید.البته بنده (برای تبلیغات!) نام سایت رو نوشتم.
 
بازدید 387014 بار

68377 نظرها

  • پیوند نظر Lien جمعه, 31 فروردين 1397 ساعت 12:06 ارسال شده توسط Lien

    What's Taking place i am new to this, I stumbled upon this I have found It positively
    useful and it has aided me out loads. I'm hoping to contribute & aid
    different users like its helped me. Good job.

  • پیوند نظر Lawanna جمعه, 31 فروردين 1397 ساعت 12:01 ارسال شده توسط Lawanna

    I'm truly enjoying the design and layout of your website.
    It's a very easy on the eyes which makes it much more enjoyable for me
    to come here and visit more often. Did you hire out a designer to create your theme?
    Outstanding work!

  • پیوند نظر Bernard جمعه, 31 فروردين 1397 ساعت 11:57 ارسال شده توسط Bernard

    Greate article. Keep writing such kind of information on your page.
    Im really impressed by it.
    Hello there, You've done a fantastic job. I will certainly
    digg it and in my opinion recommend to my friends.
    I am sure they'll be benefited from this web site.

  • پیوند نظر Attaks جمعه, 31 فروردين 1397 ساعت 11:55 ارسال شده توسط Attaks

    order cialis usa
    cheap generic cialis
    purchase cheap cialis soft tabs
    cheap cialis online

  • پیوند نظر car insurance quotes Hialeah FL جمعه, 31 فروردين 1397 ساعت 11:42 ارسال شده توسط car insurance quotes Hialeah FL

    Sometimes younger people think we should just disappear when we age. They don't believe anyone wants/needs to look at "old", "overweight", or "whatever doesn't fit their definition of beauty", anyway. But what we gain with age is the ability to shrug off the expectations others hold of us and be ourselves. I'm not quite as "advanced" as most of your lovely ladies, but they are my heroines and role models. I want to be like them when I "grow up"... or perhaps never grow up at all. :)

  • پیوند نظر Micheline جمعه, 31 فروردين 1397 ساعت 11:39 ارسال شده توسط Micheline

    Its such as you learn my thoughts! You appear to grasp a lot approximately this,
    like you wrote the e book in it or something. I believe that you just could do with a few percent to force the message home a little bit, but instead of that,
    that is magnificent blog. A great read. I'll certainly be back.

  • پیوند نظر Gabriele جمعه, 31 فروردين 1397 ساعت 11:37 ارسال شده توسط Gabriele

    Why users still make use of to read news papers when in this technological world the whole
    thing is existing on web?

  • پیوند نظر Harrison جمعه, 31 فروردين 1397 ساعت 11:21 ارسال شده توسط Harrison

    I like the helpful information you provide in your articles.
    I'll bookmark your weblog and check again here regularly.
    I'm quite sure I will learn lots of new
    stuff right here! Good luck for the next!

  • پیوند نظر Les جمعه, 31 فروردين 1397 ساعت 10:58 ارسال شده توسط Les

    Casa en venta en Madrid, bajo en impuestos y comunidad, con alarma y
    domotica

  • پیوند نظر Robbin جمعه, 31 فروردين 1397 ساعت 10:48 ارسال شده توسط Robbin

    I just like the valuable info you provide to your articles.

    I will bookmark your blog and take a look at once more right here frequently.
    I'm reasonably certain I will learn many new stuff right right here!
    Good luck for the following!

نظر دادن

از پر شدن تمامی موارد الزامی ستاره‌دار (*) اطمینان حاصل کنید. کد HTML مجاز نیست.

+