ولتاژ های VSS و VDD تغذیه LCD را فراهم می کند.
ولتاژ VO ولتاژ کنتراست است که تنظیم میزان
روشنایی کاراکتر ها را روی LCD به کمک ولتاژ های VSS و VDD و یک مقاومت متغیر 10
کیلو انجام می دهد.
در داخل LCD دو ثبات وجود دارد که توسط پایه RS انتخاب می
شود.
اگر RS=0 باشد ثبات دستور IR انتخاب تا
اطلاعات ورودی به عنوان فرمان مشخص شوند. LCD این اطلاعات را دریافت می کند و فرمان
تعریف شده را اجرا می کند.لیستی از این دستورات در جدول زیر موجود است.
در صورتیکه RS=1 باشد ثبات داده DR انتخاب می
شود تا کاربر بتواند اطلاعاتی را روی LCD بنویسد یا بخواند.
اطلاعات مربوط به کاراکتر ها باید به صورت کد اسکی باشد.
جدول دستورات:
عملکرد فرمان
کد هگزادسیمال فرمان
صفحه نمایش پاک می شود
مکان نما به محل اولیه بر می گردد
مکان نما پس از نوشتن هر حرف یا عدد به چپ شیفت پیدا می کند
مکان نما پس از نوشتن هر حرف یا عدد به راست شیفت پیدا می کند
کاراکترها به راست شیفت پیدا می کنند
کاراکترها به چپ شیفت پیدا می کنند
کاراکترها و مکان نما خاموش می شوند
کاراکترها خاموش و مکان نمای زیر خط ثابت روشن می شود
کاراکترها روشن و مکان نما خاموش می شود
مکان نمای چشمک زن فعال می شود
مکان نما به چپ شیفت پیدا می کند
مکان نما به راست شیفت پیدا می کند
کل به چپ شیفت پیدا می کند
کل به راست شیفت پیدا می کند
آدرس اولین کاراکتر سطر اول
آدرس اولین کاراکتر سطر دوم
LCD به صورت دو سطری می شود
1
2
4
6
5
7
8
0A
0C
0D
10
14
18
1C
80
C0
38
پایه پنجم پایه خواندن یا نوشتن است. برای
نوشتن روی LCD ،باید R/W=0 باشد و برای خواندن اطلاعات از LCD باید R/W=1 باشد.
پایه 6 پایه فعال کردن (E) است.اگر در پایه
(E) پالسی از یک به صفر قرار داده شود،در اینصورت اطلاعاتی که در پایه های 7 تا 14
قرار دارند در ثبات های LCD ذخیره می شوند . به عبارت دیگر در لبه منفی پالس ورودی
به پایه E اطلاعات به LCD منتقل می شوند.
پایه های 7 تا 14، هشت بیت اطلاعات ارسالی به
LCD و یا دریافتی از آن می باشند. کد باینری دستورات و کد اسکی کاراکتر ها روی این
پایه ها قرار می گیرند.
پایه های 15 و 16 برای لامپ پشت LCD می باشند.
پیکره بندی LCD
اتصال پایه های LCD به میکروکنترلر
پیکره بندی زیر برای انتخاب پایه های میکرو متصل به LCD به
کار می رود.
CONFIG
LCDPIN=PIN,DB4=PN,DB5=PN,DB6=PN,DB7=PN,E=PN,RS=PN
و PN پایه ای دلخواه از میکرو است که به پایه
LCD اتصال می یابد.مثال:
_=Config Lcdpin = Pin , Db4 = Portb.0 , Db5 =
Portb.1 , Db6 = Portb.2 , Db7 Portb.3 , E = Portb.4 , Rs = Portb.5
که به طور مثال portb.0 یعنی پایه 0 از portb
.دقت کنید که به طور مثال میکرو atmega32 دارای چهار port است به نام های A,B,C,D
که هرکدام از این پورت ها دارای هشت پین یا پایه است و ترتیب شمارش این پایه ها در
BASCOM از صفر تا هفت است پس پایه صفر همان پایه یک حقیقی میکرو مورد نظر ماست.
تعیین نوع LCD
CONFIG LCD = LCD TYPE
LCD TYPE مشخص کننده تعداد ستون و سطر LCD می
باشد که می تواند یکی از موارد زیر باشد:
16x2 یا 16x1 یا 16x1a یا 16x4 یا 20x2 یا 20x4
یا 40x4 وغیره....مثال:
Config Lcd = 16 * 2"Lcd "helloEnd
دستورات مربوط به LCD
دستور LCD
این دستور یک عبارت ثابت یا متغیر را روی LCD
نمایش می دهد.
"LCD X ; LCD "STRING
در این دستور X متغیر و STRING ثابتی است که
نمایش داده می شود.همچنین همانطور که عبارت بالا مشاهده می شود برای نمایش چند
عبارت پشت سر هم بین آن ها علامت{;} استفاده می شود.
دستور CLS
این دستور باعث پاک شدن کل صفحه می شود.
"LCD"HELLO
CLS
دستور CURSOR
این دستور مکان نمای LCD را تنظیم می کند.
CURSOR ON/OFF BLINK/NOBLINK
که در این دستور ON روشن بودن مکان نما
راتنظیم می کند و در حالت روشن چشمک زدن آن را نیز توسط BLINK می توان فعال کرد و
OFF خاموش بودن مکان نما یا با حالت OFF NOBLINK خاموش بودن حالت چشمک زدن آن را
تنظیم کرد.
دستور HOME
این دستور مکان نما را به ترتیب در اولین ستون
سطر اول،سطر دوم،سطر سوم یا سطر چهارم قرار می دهد.
HOME U / L / T / F
دستور HOME به تنهایی باعث انتقال مکان نما به
سطر و ستون اول می شود.
دستور DISPLAY
این دستور صفحه نمایش LCD را خاموش (OFF) یا
روشن (ON) می کند.
DISPLAY ON / OFF
دستور SHIFT CURSOR
این دستور مکان نما LCD را یک واحد به چپ یا
راست منتقل می کند.
SHIFTCURSOR LEFT / RIGHT
دستور SHIFTLCD
این دستور کل صفحه نمایش LCD را یک واحد به چپ
یا راست منتقل می کند.
SHIFTLCD LEFT / RIGHT
دستور LOCATE
این دستور مکان نمای LCD را به مکانی به سطر(X)
و ستون (Y)منتقل می کند.
LOCATE X , Y دستور LOWERLINE
این دستور مکان نما را به خط پایین تر می برد.
دستور UPPERLINE این دستور مکان نما را به خط
بالاتر می برد.
دستور RIGHT با این دستور از سمت راست
رشته VAR1 ،به تعداد n کاراکتر جدا می شود و در متغیر VAR قرار میگیرد.
(VAR=RIGHT(var1,n
به مثال زیر توجه کنید:
Dim A As String * 10 , B As String * 10"A = "1234567(B
= Right(a , 4Lcd B
'lcd 4567End
دستور LEFT با این دستور از سمت
چپ رشته VAR1 ،به تعداد n کاراکتر جدا می شود و در متغیر VAR قرار می گیرد.
(VAR=LEFT(var1,n
به مثال زیر توجه کنید:
Dim A As String * 10 , B As String * 10"A = "ABCDEFGH(B =
Left(a , 3Lcd B
'lcd ABCEnd
دستور ROTATE
با این دستور می توان تمام بیت ها را به سمت چپ یا راست انتقال داد که LEFT/RIGHT
جهت چرخش بیت ها و گزینه اختیاری BITS تعداد چرخش بیت ها را مشخص می کند و در صورتی
که برای این گزینه مقداری تعریف نشود مقدار پیش فرض یک برای آن در نظر گرفته می
شود.
[ROTATE var ,LEFT/RIGHT [,BITS به مثال زیر دقت کنید:
Dim A As Byte
A = 128Rotate A , Right
Lcd A
'lcd 64End لازم می دونم که کمی بیشتر در مورد مثال بالا
توضیح بدم که برای این کار ابتدا باید با مبناهای ریاضی آشنا بشید.اصولاً در ریاضی
اعداد را در مبناهای مختلف از جمله BINARY (در مبنای دو)، OCTAL (در مبنای 8)،
HEXADECIMAL (در مبنای 16) و DECIMAL (در مبنای ده) به کار می برند که ما در برنامه
نویسی از سه مبنای BINARY ، HEXADECIMAL ، DECIMAL استفاده می کنیم به طوری که وقتی
عدد باینری را در متغیری قرار می دهیم آن را با نماد B& شروع می کنیم زمانی که عدد
هگزادسیمال را در متغیری قرار می دهیم آن را با نماد H& شروع می کنیم و برای قرار
دادن عدد در مبنای دسیمال از نماد خاصی استفاده نمی کنیم و آن را بدون علامت در
متغیر قرار می دهیم. اکنون به چگونگی تبدیل عدد از مبنای دسیمال به باینری می
پردازیم:
برای تبدیل عدد از مبنای دسیمال به باینری عدد مورد نظر را به طور
متوالی به عدد دو تقسیم می کنیم تا خارج قسمت از مقسوم الیه کوچکتر شود سپس از خارج
قسمت به سمت اولین باقیمانده عدد ها را می نویسیم که عدد بدست آمده معادل باینری
عدد ما خواهد بود.به مثال زیر توجه کنید:
باقیمانده
0 2/ 128 0
2/64 0
2/32 0
2/16 0 2/ 8
0 2/ 4 0
2/2
1
2(10000000)=128
همانطور که در مثال بالا دیدید معادل عدد 128
در مبنای باینری مساوی عدد (10000000) شد. که با توجه به این عدد متوجه می شویم که
تعداد این اعداد هشت تا است و ما در مثال مربوط به دستور ROTATE این مقدار را
(البته مقدار دسیمال آن را یعنی 128) در متغیر A قرار داده ایم که در واقع این هشت
عدد معادل هشت پایه پورت دلخواه ماست که در این مثال فقط پایه هشتم پورت دلخواه ما
یک است و بقیه پایه ها در وضعیت صفر(منطقی) به سر می برند که ما با دستور ROTATE
این مقدار یک را در پورت مربوطه به سمت راست می چرخانیم که کاربرد آن می تواند در
روشنایی ترتیبی LED باشد البته با هر بار استفاده از این دستور بیت مورد نظر فقط یک
بار می چرخد که ما برای استفاده از این دستور برای روشنایی ترتیبی LED باید آن را
داخل یک حلقه تکرار(در پست های آینده به طور مفصل راجع به این موضوع صحبت خواهیم
کرد) قرار دهیم.جدول LOOKUP با استفاده
از این دستور می توان مقدار دلخواهی را از جدول مربوطه خواند که LABLE نام جدول
مربوطه و VALUE شماره داده دلخواه در جدول است که شماره اولین داده جدول صفر است
یعنی شماره ها در جدول از صفر شروع می شود و داده خوانده شده از جدول در متغیر VAR
قرار می گیرد. (VAR=LOOKUP(value , lable
به مثال زیر توجه کنید:
Dim A As Byte
(A = Lookup(4 , FshLcd A
'lcd eEnd:Fsh
Data A , B , C , D , E , F , G , H , I , J , K