ولتاژ های 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