٨۸۵۴۳۵۶۱-٠٢١

شنبه, 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 هست.
در خط بعد نیز نام خود را وارد می کنیم.
خط آخر نیز پلان اصلی را می بندد.
اگر همه چیز خوب پیش رفته باشد باید تصویری مثل تصویر زیر داشته باشید.البته بنده (برای تبلیغات!) نام سایت رو نوشتم.
 
بازدید 555942 بار