راه اندازی LCD کارکتری

هدف پروژه

هدف از انجام این پروژه راه اندازی ال سی دی کارکتری در میکروکنترلر ARM میباشد.ال سی دی کارکتری جهت نمایش حروف  و اعداد لاتین به عنوان یک وسیله جانبی قابل اتصال به میکرو کنترلر در بسیاری از پروژه ها مورد استفاده قرار میگیرد.

سخت افزار مورد استفاده

در این پروژه از پین هدری که بر روی برد آموزشی وجود دارد برای اتصال ال سی دی به میکروکنترلر استفاده میکنیم.ال سی دی کارکتری دارای شانزده پین میباشد که پنج پین آن مربوط به تغذیه،هشت پین آن مربوط به ارسال داده و 3 پین آن مربوط کنترل ال سی دی میباشد.در برد آموزشی  هشت پین مربوط به ارسال داده ال سی دی به شیفت رجیستر متصل شده وشیفت رجیستر هم به صورت سریال داده ها را از میکروکنترلر دریافت میکند و بر روی پین های داده ال سی دی قرار میدهد.سه پین مربوط به کنترل ال سی دی نیز به صورت مستقیم به پین های میکرو متصل شده اند.

نحوه ارسال داده ها به ال سی دی بدین گونه است که ابتدا اطلاعات به صورت سریال با استفاده از واحد SSC میکروکنترلر به شیفت رجیستر ارسال شده وسپس شیفت رجیستر این داده ها را از سریال به صورت پارالل بر روی پین های ال سی دی قرار میدهد استفاده از شیفت رجیستر برای ارسال اطلاعات به ال سی دی سبب شده است که تعداد پین های کمتری از میکروکنترلر برای راه اندازی ال سی دی مورد استفاده قرار گیرند.

کتابخانه های استفاده شده

  • کتابخانه PIO برای کنترل پورت های میکرو (برای یاد گیری درباره این کتابخانه اینجا کلیک کنید)
  • کتابخانه PMC به منظور فعال کردن کلاک پورت های میکرو (برای یاد گیری درباره این کتابخانه اینجا کلیک کنید)
  • کتابخانه SSC برای ارسال اطلاعات سریال به شیفت رجیستر
  • کتابخانه LCD4BIT برای راه اندازی ال سی دی کارکتری

تشریح کد برنامه

در ابتدا برنامه کتابخانه های مورد ایستفاده را include میکنیم که شامل کتابخانه های زیر میباشد.

#include <board.h>
#include <pio/pio.h>
#include <pmc/pmc.h>
#include <ssc/ssc.h>
#include <utility/lcd4bit.h>

در کتابخانه board.h همانطور که در فیلم های آموزشی زیر گفته شده تمامی پورت های میکرو برای اتصال به بخشهای جانبی تعریف شده اند در اینجا پین هایی مربوط به وhحد SSC و ال سی دی کارکتری نشان داده شده است.

//SSC
#define PIN_SSC_TF {1 << 21, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}
#define PIN_SSC_TK {1 << 22, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}
#define PIN_SSC_TD {1 << 23, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}
#define PIN_SSC_RD {1 << 24, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}
#define PIN_SSC_RK {1 << 25, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}
#define PIN_SSC_RF {1 << 26, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}
 
///-----------------------------------------------------------------------------
//Lcd Port
///-----------------------------------------------------------------------------
#define PIN_RS    {1 << 2, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_OUTPUT_1, PIO_DEFAULT}
#define PIN_EN    {1 << 5, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_OUTPUT_1, PIO_DEFAULT}

حال به بررسی تابع main برنامه میپردازیم

در ابتدا میبایست ال سی دی پیکربندی شود برای این منظور از دستور lcd_init استفاده میکنیم وسپس برای پاک کردن صفحه نمایش از دستور lcd_clearاستفاده میکنیم سپس با دستور (1,1)lcd_gotoxy به سطر و ستون اول ال سی دی میرویم و در آخر برای نمایش متن مورد نظر از دستور  و lcd_putsf و برای نمایش مقدار یک متغیر از دستور lcd_putsاستفاده میکنیم.

void main()
{
 
 int x=10;
      
lcd_init();
lcd_clear();
lcd_gotoxy(1,1);
lcd_putsf("WWW.NAMINIC.COM");
lcd_gotoxy(2,1);
lcd_puts(x);
 
while(1);
 
}

پس از نصب ال سی دی کارکتری بر روی برد آموزشی و کامپایل و پروگرام کردن برنامه مشاهده خواهید کرد در سطر عمل WWW.NAMINIC.COM نوشته شده و در سطر دوم مقدار متغیر x  یعنی عدد ده نمایش داده میشود.

دانلود سورس کد

سورس کد کامل را از اینجا دانلود کنید.

مشاهده نتیجه

با کلیک بر روی عکس زیر فیلم راه اندازی این پروژه را مشاهده کیند.

فیلم راه اندازی ال سی دی بر روی ARM

Tags: , , , , , , ,