آموزش PICتازه هامیکروکنترلر

آموزش PIC : راه اندازی LCD با میکروکنترلر PIC در MPLAB XC8

در این قسمت از آموزش PIC در الکترولب به نحوه راه اندازی ماژول LCD کاراکتری ۲*۱۶ با میکروکنترلر PIC 16F877A با استفاده از محیط MPLAB X و کامپایلر سی MPLAB X8 را بررسی می کنیم.

LCD کاراکتری یکی از ارزان ترین و ساده تریم ماژول های LCD است که در محصولات و پروژه های زیاد استفاده می شود. 2*16 یعنی LCD دارای ۲ سطر که هرکدام توانایی نشان دادن ۱۶ کاراکتر را دارند.LCD هایی با تعداد سطر و ستون مختلفی در بازار یافت می شود.مثل: 1*16 یا 4*16 در این LCD هر کاراکتر با دات ماتریس 8*5 یا 10*5 نمایش داده می شود.

برای راه اندازی LCD با میکروکنترلر PIC در MPLAB XC8 نیاز داریم تا در مورد سخت افزار این LCD اطلاعاتی داشته باشیم. این LCD ها عموما از IC کنترلر HD44780 استفاده میکنند. پس باید برای اطلاع از چگونگی عملکرد این IC به دیتاشیت این IC مراجعه کرد. ولی ما در این آموزش نیاز به این کار نداریم و از کدهای آماده استفاده خواهیم کرد و شما برای استفاده از LCD کاراکتری کافی است به نحوه کارکرد این کدها آشنایی داشته باشید. این کتابخانه که در اختیار شما قرار می دهیم شامل عملکرد هایی رایجی است که برای استفاده از LCD مورد نیاز می باشد.

راه اندازی LCD با میکروکنترلر PIC
راه اندازی LCD با میکروکنترلر PIC

 

نکاتی برای راه اندازی LCD با میکروکنترلر PIC

– دو پین اول GND و VCC (یا همان VSS و VDD) برای تغذیه ی LCD به کار میروند.

– پین سوم VEE برای کنترل کنتراست LCD استفاده می شود. برای تنظیم کنتراست باید از یک پتانسیومتر 10k اهم که یک پایه ی آن به VCC و پایه دیگر آن به GND وصل است استفاده کرد پین متغییر پتانسیومتر را به پین VEE وصل می کنیم.

– میکروکنترلر یا میکروپروسور باید دو نوع داده برای کنترل LCD ارسال کند اطلاعات دیتا و اطلاعات Command اطلاعات دیتا شامل کد اسکی کاراکترهایی است که باید بر روی LCD نمایش داده شوند. و اطلاعات کامند اطلاعاتی است که برای سایر عملیات در LCD مثل تعیین جهت LCD یا پاک کردن LCD به کار می رود. اطلاعات دیتا و کامند از یک مسیر دیتا به LCD ارسال می شوند پین های (DB0 تا DB7) که به وسیله ی پین RS مولتیپلکس می شود. به این صورت که وقتی این پین High می شود اطلاعات دیتا بر روی LCD نمایش داده می شود. و وقتی در وضعیت LOW قرار می گیرد دستورات کنترلی را اجرا می کند.

– ولتاژ High بر روی پایه E بهLCD می گوید که پین های (DB0 تا DB7) شامل اطلاعات درست برای دریافت اطلاعات است.

– پین R/W برای کنترل انتخاب نوشتن یا خواندن بر روی LCD است ما به طور معمول نیاز داریم تا اطلاعاتی را روی LCD بنویسیم بنابر این ما معمولا این پین را به زمین وصل می کنیم.

– پایه های +led و -led برای روشن کردن بک لایت LCD کاربرد دارد که بهتر است با یک مقاومت ۳۳۰ اهم سری شود.

می توانیم LCD را به دو صورت ۸ یا ۴ بیتی به میکروکنترلر وصل کنیم در اتصال ۸ بیتی باید دیتا از طریق پایه های DB0-DB7 ارسال شود و فرمت ارسالی دیتا و کامندها به صورت ۸ بیتی باشد. در اتصال ۴ بیتی از پین های DB4-DB7 استفاده می کنیم و باید فرمت دیتای ارسالی به صورت ۴ بیت باشد. در صورت استفاده از حالت ۴ بیتی در پین های میکروکنترلر صرفه جویی می شود. شاید به نظر برسد که سرعت حالت ۴ بیتی کمتر است بله در حقیقت سرعت در حالت ۴ بیتی کمتر است ولی اهمیتی برای ما ندارد زیرا LCD برای نمایش اطلاعت به سرعت بالا نیاز ندارد چون اطلاعات باید توسط چشم خوانده شود و چشم قابلیت تشخیص سرعت بالا را ندارد.

شماتیک برای راه اندازی LCD با میکروکنترلر PIC:

LCD interfscingکتابخانه ی LCD کاراکتری برای میکروکنترلر PIC:

تابع Lcd_Init:

این تابع ماژول LCD را با پین هایی که به صورت زیر تعریف کردید راه اندازی می کند:

#define RS RD2
#define EN RD3
#define D4 RD4
#define D5 RD5
#define D6 RD6
#define D7 RD7

این پین ها باید در اول برنامه تعریف شوند تا  LCD کار کند.

تابع Lcd_Clear: این تابع صفحه LCD را پاک می کند.

تابع Lcd_Set_Cursor:

Lcd_Set_Cursor(int row, int column)

این تابع محل مکان نما را تغییر می دهد همچنین می توان به وسیله ی این تابع محل نمایش متن در LCD را تغییر داد.

تابع Lcd_Write_Char:

Lcd_Write_Char(char)

برای نمایش یک کاراکتر در LCD نمایش داده می شود.

تابع Lcd_Write_String:

Lcd_Write_String(char *string)

برای نوشتن یک رشته ی متنی در LCD به کار می رود.

تابع Lcd_Shift_Right:

برای شیفت دادن اطلاعات نمایش داده شده در LCD به سمت راست به کار می رود.

تابع Lcd_Shift_Left:

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

نمونه برنامه برای راه اندازی LCD با میکروکنترلر PIC در MPLAB XC8

#define _XTAL_FREQ 8000000

#define RS RD2
#define EN RD3
#define D4 RD4
#define D5 RD5
#define D6 RD6
#define D7 RD7

#include <xc.h>
#include "lcd.h";

// BEGIN CONFIG
#pragma config FOSC = HS // Oscillator Selection bits (HS oscillator)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT enabled)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOREN = ON // Brown-out Reset Enable bit (BOR enabled)
#pragma config LVP = OFF // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)
#pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)
#pragma config WRT = OFF // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)
#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)
//END CONFIG

int main()
{
    unsigned int a;
    TRISD = 0x00;
    Lcd_Init();
    while(1)
    {
        Lcd_Clear();
        Lcd_Set_Cursor(1,1);
        Lcd_Write_String("LCD Library for");
        Lcd_Set_Cursor(2,1);
        Lcd_Write_String("MPLAB XC8");
        __delay_ms(2000);
        Lcd_Clear();
        Lcd_Set_Cursor(1,1);
        Lcd_Write_String("Developed By");
        Lcd_Set_Cursor(2,1);
        Lcd_Write_String("electrolab");
        __delay_ms(2000);
        Lcd_Clear();
        Lcd_Set_Cursor(1,1);
        Lcd_Write_String("www.electrolab.ir");

        for(a=0;a<15;a++)
        {
            __delay_ms(300);
            Lcd_Shift_Left();
        }

        for(a=0;a<15;a++)
        {
            __delay_ms(300);
            Lcd_Shift_Right();
        }

        Lcd_Clear();
        Lcd_Set_Cursor(2,1);
        Lcd_Write_Char('e');
        Lcd_Write_Char('S');
        __delay_ms(2000);
    }
    return 0;
}

دانلود شبیه ساز راه اندازی LCD با میکروکنترلر PIC در MPLAB XC8

اگر سوال یا مشکلی برای راه اندازی و استفاده از میکروکنترلر های PIC  دارید می توانید سوال خود را در انجمن الکترولب مطرح کنید.

منبع: electrosome.com

علی عزتی

علی عزتی هستم. رشته ی مهندسی برق الکترونیک رو خوندم. علاقه ی من به یادگیری و به اشتراک گذاشتن چیز هایی که یاد گرفتم. باعث شد تا الکترولب ایجاد بشه. علاقه ی زیادی به الکترونیک دارم. و دوست دارم چیزهای جدید یادبگیرم و بسازم ... :))

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

1 دیدگاه

  1. سلام. آقا ما شما رو به رسم گذشته لینک کردیم.
    قبلا myresearches.com بود سایتم که هک شد!!!
    دوست داشتین لینک کنین. نداشتینم که هیچی 🙂

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

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

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