خدمات وبسایت آی‌سی‌تی نیـــک

طراحی و ساخت انواع پروژه‌های الکترونیکی با: میکروکنترلرavr - میکروکنترلرarm - میکروکنترلرpic و آردوینو

مقالات و آموزش‌های رایگان در سطوح پایه و حرفه‌ای برای الکترونیک و آی سی تی - ICT

اتصال lcd گرافیکی به میکروکنترلر pic

منتشر شده در میکروکنترلرpic

ستاره غیر فعالستاره غیر فعالستاره غیر فعالستاره غیر فعالستاره غیر فعال
 

ال سی دی های گرافیکی یا همان GLCD ها ال سی دی هایی هستند که به دلیل داشتن تعداد پیکسل بالاتر نسبت به ال سی دی های کاراکتری قابلیت نمایش عکس های دلخواه رو دارند. این ال سی دی ها در انواع و سایز های مختلفی در بازار موجودند از lcd های رنگی مثل lcd n96 گرفته تا lcd گوشی های nokia1100 همگی در مجموعه graphic lcd ها هستند. اما معروف ترین و موجود ترین آنها در بازار GLCD های 128x64 یا 128x240 هستند و شرکت های مختلفی اونو تولید می کنند مثل WINSTAR یا AMPIRE که مورد بحث ماست.آی سی کنترلر این GLCD ها معمولا KS0108 هست که برنامه کتابخونه ای که ما برای شما قرار دادیم اونو کاملا پشتیبانی میکند.

GLCDS

 Graphical LCD pin diagram

 

تعداد پایه های glcd بیست عدده که 6تای آن تغذیه و تنظیم نوره و بقیش از پایه DB0 تا DB7 پایه های دیتا و R/S , R/W , E وظیفه ای همانند پایه های مشابه در LCD کاراکتری رو دارند. پایه های CS0 وCS1 پایه های انتخاب چیپست هستند. این ال سی دی ها به دوقسمت 64X64 تقسیم شدند که یک قسمت توسط CS0 وقسمت دیگه توسط CS1 کنترل می شوند بنابراین برای اینکه مشخص کنیم تو کدوم قسمت میخوایم برنامه بنویسیم باید چیپست اون قسمتو توسط این دو پایه روشن کنیم.

Graphical LCD 0

در پایان این مطلب، برنامه این نوع GLCD و فایل شبیه سازی اون با PIC18 آورده شده و می تونید دانلود کنید.

حالا ببینیم چطوری باید از این کتابخونه استفاده کنیم.

#include <p18f8720.h>
#include "MSDelay.h"
#define CS1 PORTEbits.RE0
#define CS2 PORTEbits.RE1
#define RS PORTEbits.RE2
#define RW PORTEbits.RE3
#define RST PORTEbits.RE4
#define EN PORTEbits.RE7
#define Data PORTD
#define GLCD_Dir TRISD
#define GLCDREG_Dir TRISE
void Enable_Pulse()
{
EN = 1; //EN high

EN = 0; //EN low
MSDelay(1);

}

void GLCD_ON()
{
//Activate both chips
GLCDREG_Dir=0X00;
CS1 = 0;
CS2 = 0;
RS = 0; //RS low --> command
RW = 0; //RW low --> write
Data = 0x3F; //ON command
Enable_Pulse();
}
void Set_Start_Line(unsigned short line)
{
GLCDREG_Dir=0X00;
RS = 0; //RS low --> command
RW = 0; //RW low --> write
//Activate both chips
CS1 = 0;
CS2 = 0;
Data = 0xC0 | line; //Set Start Line command
Enable_Pulse();
}

void GOTO_COL(unsigned int x)
{
unsigned short Col_Data;
GLCDREG_Dir=0X00;
RS = 0; //RS low --> command
RW = 0; //RW low --> write
if(x<64) //left section
{
CS1 = 0; //select chip 1
CS2 = 1; //deselect chip 2
Col_Data = x; //put column address on data port
}
else //right section
{

CS2 = 0;
CS1 = 1;
Col_Data = x-64; //put column address on data port
}
Col_Data = (Col_Data | 0x40 ) & 0x7F; //Command format
Data = Col_Data;
Enable_Pulse();
}

void GOTO_ROW(unsigned int y)
{
unsigned short Col_Data;
GLCDREG_Dir=0X00;
RS = 0; //RS low --> command
RW = 0; //RW low --> write
Col_Data = (y | 0xB8 ) & 0xBF; //put row address on data port set command
Data = Col_Data;
Enable_Pulse();
}

void GOTO_XY(unsigned int x,unsigned int y)
{
GOTO_COL(x);
GOTO_ROW(y);
}

void GLCD_Write(unsigned short b)
{
GLCDREG_Dir=0X00;
RS = 1; //RS high --> data
RW = 0; //RW low --> write
Data = b; //put data on data port
Enable_Pulse();
}

/*unsigned short GLCD_Read(unsigned short column)
{
unsigned short read_data = 0; //Read data here
GLCD_Dir = 0x00;
DDRB=0XFF; //PORTD as Input
RW = 1; //Read
RS = 1; //Data
CS1 = (column>63);
CS2 = !CS1; //Disable/Enable CS2
delay_us(1); //tasu
EN = 1; //Latch RAM data into ouput register
delay_us(1); //twl + tf

//Dummy read
EN = 0; //Low Enable
delay_us(5);
EN = 1; //latch data from output register to data bus
delay_us(1); //tr + td(twh)
read_data = Data; //Input data
EN = 0; //Low Enable to remove data from the bus
delay_us(1); //tdhr
GLCD_Dir = 0xFF; //Output again
return read_data;
}
*/
void GLCD_Clrln(unsigned short ln)
{
int i;
GOTO_XY(0,ln); //At start of line of left side
GOTO_XY(64,ln); //At start of line of right side (Problem)
CS1 = 0;
for(i=0;i<65;i++)
GLCD_Write(0);
}

//-------------------------

void glcd_clear()
{
unsigned short m;
for(m=0;m<8;m++){
GLCD_Clrln(m);
}
}

void glcd_init()
{
GLCD_Dir=0X00;
CS1 = 1; // De-Activate both chips
CS2 = 1;
RST = 1;
MSDelay(100);
GLCD_ON();
MSDelay(100);
glcd_clear();
MSDelay(100);
Set_Start_Line(0);
MSDelay(100);
}
void glcd_putpic(unsigned char const pic[])
{
unsigned int x1=0,y1=0,z1=0;
do{
if(x1<=127)
{
GOTO_XY(x1,y1);
MSDelay(1);
GLCD_Write(pic[z1]);
MSDelay(1);
x1++;
z1++;
}
else x1=0,y1++;
}
while(z1<=1024);
}

تابع هایی که ما به اونا احتیاج داریم به شرح زیر هستند:

glcd_init();

که اونو برای تعریف اولیه ال سی دی باید در تابع VOID MAIN قبل از حلقه WHILE 1 قرار بدین.

glcd_clear();

برای پاک کردن محتویات ال سی دی

GOTO_XY(x,y);

برای دادن آدرس موقعیت مکان 

glcd_putpic(unsigned char const pic[]);

قرار دادن عکس مورد نظر در موقعیت تعریف شده

نحوه انتقال تصویر مورد نظر روی glcd:

ابتدا تصویرمورد نظرمونو در ابعاد 128x64 توسط نرم‌افزار paint ویندوز یا هر نرم‌افزار دیگه طراحی می‌کنیم و بعد اونو به نرم افزار glcd_editor که لینک دانلودش در زیر اومده میدیمو کد های هگزشو که دریافت کردیم در برنامه قرار می دیم:

glcdcode

بعد از قرار دادن کد تصاویر مورد نبازمون در برنامه اونا رو مثل برنامه زیر تعریف می کنیم:

glcd_putpic(bank_bmp);
MSDelay(2000);
glcd_putpic(truck_bmp);
MSDelay(2000);
glcd_putpic(test_bmp);
MSDelay(2000);

برای مشاهده فایل پروتئوس از نسخه8.3 sp2 استفاده کنید.

تو برنامه ای که برا دانلود گذاشتیم از میکروکنترلر pic18f8722 استفاده کردیم که البته شما میتونید این کتابخونه رو برای همه نوع میکروکنترلری استفاده کنید فقط کافیه رجیستر های port ها رو تو اول برنامه عوض کنید و تابع MSDelay رو هم همون تابع delay ای که استفاده می کنید بزارید.

glcd00

لینک دانلود راه اندازی GLCD با میکروکنترلر PIC و فایل شبیه ساز پروتئوس

لینک دانلود برنامه glcd editor به همراه چند عکس نمونه

 

 مطالب مرتبط :

برچسب ها:

Tags: آموزش میکروکنترلر میکروکنترلر pic اتصال glcd به میکرو اتصال lcd گرافیکی به میکروکنترلر pic کتابخانه glcd برای pic کتابخانه glcd

4

پشتیبانی و مشاوره 24 ساعته

ictnic2

تماس با ما

  • تلگرام : ICTNIC2@

به ما بپیوندید

ما را در صفحات اجتماعی دنبال نمایید...

کاربران ثبت نامی

تا این لحظه تعداد

2415 نفر

در وبسایت تخصصی ictnic

ثبت نام و از خدمات ما استفاده می کنند.

ما را در آپارات دنبال کنید

aparat logo fa color black 275x100