راه اندازی LCDگرافیکیNokia5110(نمایش متن فارسی)

در اين بخش مي‌توانيد آموزش و مثال‌های مرتبط با میکروکنترلرهای AVR را مشاهده بفرمایید

مدیران انجمن: SAMAN, sinaset, شوراي نظارت

ارسال پست

آموزش ها چطور بودند؟!

خوب و مفید و کاربردی.
2
100%
خوب بود.
0
بدون راي
جایی کار بیشتر میداشت.
0
بدون راي
 
مجموع رای گیری: 2

Colonel II
Colonel II
نمایه کاربر
پست: 7008
تاریخ عضویت: سه شنبه 26 آذر 1387, 4:20 pm
سپاس‌های ارسالی: 9184 بار
سپاس‌های دریافتی: 21045 بار
تماس:

راه اندازی LCDگرافیکیNokia5110(نمایش متن فارسی)

پست توسط sinaset » شنبه 29 خرداد 1395, 10:27 am

بنام خداوند بخشنده و مهربان
باسلام
در این تاپیک می خواهیم راه اندزای LCD گرافیکی Nokia5110 را اموزش دهیم .(*لازم به ذکر است LCD nokia 3310 نیز به مانند 5110 از ایسی  استفاده می کند،پس آموزش شامل ان مدل هم   ) 
 
  ابتدا کمی آشنایی  این مانیتور در واقع ،متعلق به تلفن همراه قدیمی نوکیا 5110 می باشد.. که امروزه ما از ان برای کارهای الکترونیک استفاده می کنیم. 
تصویر
  در LCD کاراکتری (lcd 16*2) به دلیل محدودیت جا و مکان امکان فارسی نویسی نبود اما در این LCD این امکان نسبتا خوب محیا شده است .  مشخصات :   پیکسل به صورت عرضی و 48 پیکسل به صورت ارتفاعی ( که جمع 4032 پیکسل را تشکیل میدهند)   قابل کار کردن 3 تا 5 ولت (که از این بابت خوب می باشد و می توان در برنامه ها کم مصرف نیز از ان استفاده کرد)   ارتباط با میکروکنترولر به صورت SPI می باشد .(که از این بابت پایه کمتری را اشغال می کند)   بک لایت (یا همون LED پس زمینه )  ... 
پایه ها LCD
تصویر
  این LCD نسبت به قیمتش انعطاف خوبی دارد،و در یک ویدئو،دیده ام که فایل ویدئوی نیز با ان پخش کرده اند!  
تصویر با LCD
تصویر
نمودار با LCD
تصویر
بازی ماری معروف،با LCD
تصویر
  در پست های بعدی نحویه راه اندازی و فارسی نویسی و مثال و برنامه ها دیگر معرفی خواهد شد..  فهرست عنوان تاپیک:  صفحه اول:  پایه ها در مانیتور و نحویه اتصال انها  کتابخانه در پرتئوس  آموزش نمایش فونت فارسی با LCD NOKIA 5510/3310  معرفی چند فونت فارسی،انگلیسی (بزودی..)  کشیدن اشکال هندسی(بزودی..)  نمایش تصویر! (بزودی..)  . 
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.

Colonel II
Colonel II
نمایه کاربر
پست: 7008
تاریخ عضویت: سه شنبه 26 آذر 1387, 4:20 pm
سپاس‌های ارسالی: 9184 بار
سپاس‌های دریافتی: 21045 بار
تماس:

Re: راه اندازی LCDگرافیکیNokia5110(فونت فارسی)

پست توسط sinaset » جمعه 25 تیر 1395, 6:19 pm

بنام خدا
باسلام

بازهم پیشنهاد می کنم،در صورتی که نیاز به یک مانیتور ارزان قیمت دارید،و نیاز به این دارید که کارهای بهتر و پیشرفته تری انجام دهید،به هیچ وج این مانیتور را از دست ندهید.! این مانیتور کوچک، بدلیل داشتن پیکسل هایی زیاد ،قابلیت هایی زیادی دارد !


پایه ها در مانیتور و نحویه اتصال انها:

تصویر
تصویر
تصویر
  که می ببیند این مانیتور 8 پایه دارد،که ...  GND: پایه زمین ، مانیتور (که باید به منفی وصل شود)  BL:مربوط به LED مانیتور می باشد.که باید به کمک یک مقاومت 100 اهمی به مثبت مدارد متصل شود(اگر این پایه وصل نشود،LED های مانیتور روشن نمی شود)  VCC: تغذیه مثبت،که باید به 3.3 ولت وصل شود (*البته با 5 ولت هم راه اندازی میشود،اما بهتراست با همان 3.3 ولت راه اندازی شود)  CLK:مربوط به کلاک،می باشد.  SDIN: مربوط به ارتباط   DC:پایه مربوط به دیتا و   RES:پایه ریست مانیتور(با تک ولتاژ مثبت،ریست میشود،)  SCE:پایه مربوط به فعال سازی مانیتور(ولتاژ منفی،ایسی را فعال نگه میدارد) 
نحویه اتصال پایه ها:
تصویر
 *لازم،به ذکراست،به غیر از پایه GND و VCC و BL ، همه پایه ها به پین های مربوط میکروکنترولر وصل میشوند (و این کار با اسانی به کمک کتابخانه کدویژن انجام میشود)     ادامه دارد..  . 
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.

Colonel II
Colonel II
نمایه کاربر
پست: 7008
تاریخ عضویت: سه شنبه 26 آذر 1387, 4:20 pm
سپاس‌های ارسالی: 9184 بار
سپاس‌های دریافتی: 21045 بار
تماس:

Re: راه اندازی LCDگرافیکیNokia5110(فونت فارسی)

پست توسط sinaset » یک شنبه 27 تیر 1395, 12:05 pm

بنام خدا
باسلام


کتابخانه در پرتئوس
تصویر

کتابخانه این السیدی را می تونید از اینجادانلود کنید.(نحویه نصب کتابخانه نیز در همان تاپیک قید شده است)

کتابخانه بسیار خوبی می باشد و مشکل بخصوصی ندارد (* فقط متن ها در خود LCD بهتر نمایش داده میشود،)

اما کتابخانه ها و برنامه نویسی LCD nokia 5110/3310

خود کدویژن این LCD را پشتیبانی می کند،که می توانید در ادرس زیر ان را پیدا و به برنامه خود اضافه کنید...

تصویر
اما کتابخانه ها این LCD در خود کدویژن:

کد: انتخاب همه

#include <mega8.h>
#include <glcd.h> //کتابخانه کاربردي ال سيدي گرافيکي ها
#include <delay.h>
#include <font5x7.h> //معرفي فونت کوچک 5 در 7

همانجور که می ببینید،کدویژن یک کتابخانه فونت و یک کتابخانه کاربردی برای کار با این LCD گرافیکی ساخته است.

کتابخانه فونت،که با ان کاری ندارم،اما باید باشد! به کمک این کتابخانه( که در سایز 5 در 7 می باشد)،شکل فونت و سایز فونت مشخص میشود،و به کمک این کتابخانه می توان شکل و اندازه فونت را معرفی کرد ..

اما کتابخانه glcd

ما به کمک این کتابخانه،خیلی کارها می توانیم انجام دهیم! از قبیل نمایش عکس،نمایش متن دلخواه و کارهای دیگری از قبیل کشیدن دایره،کشیدن خط،کشیدن مثلث،کشیدن یک طرح خاص، نمایش و کارهای دیگر می توان انجام داد ..

اما ما برای شروع کار،ابتدا می خواهیم یک متن را نوشته و سپس بر روی LCD نمایش دهیم

نحویه نوشتن متن:

تابع نوشتن متن در این LCD به کمک glcd_outtextxy می باشد . که باید اینطور ان را مقدار دهیم کنیم ..

;("متن السیدی یا رشته برای نمایش",ردیف السیدی,ستون السیدی)glcd_outtextxy

برای درک بهتر تعداد سطر و ستون در السیدی بهتراست اول این تصویر را ببینید..
تصویر
  وقتی به عنوان مثال گفته شود ستون 10 و ردیف 5 . باید از سمت چپ (دو فلش قرمز رنگ در بالا) 10 ستون به سمت (فلش آبی ) شمارش کرد و برای ردیف نیز (از سمت فلش قرمز رنگ) به سمت پایین (فلش زرد رنگ) 5 شمارش انجام داد،تا به نقطه مد نظر رسید (یا متن را در ان قطعه شروع کرد)  اما مثال : 

کد: انتخاب همه

glcd_outtextxy(24,0,"Wellcom"); //ابتدا شماره ستون،سپس رديف،سپس متن مورد نظر
glcd_outtextxy(12,10,"Nokia 5110");
glcd_outtextxy(12,20,"Test ok!");

delay_ms(5000);

همانجور که می ببینید، سه متن معرفی شده است . که ابتدا موقعیت ستون معرفی شده است،سپس ردیف متن معرفی شده است و در انتها نیز متن مابین "" تعریف شده است .

* ردیف هایی هر متن به اندازه 10 پیکسل باهم دیگر فاصله دارند،بخاطر داشته باشید،نباید متن ها نزدیک هم باشند،چون ممکن است، متن ها برروی هم دیگر قرار بگیرند! برای همین باید مقداری به انها فاصله دارد !

می توان بجایی نوشتن متن،یک رشته از قبل تعریف کرد،سپس در متن نیز آن را نمایش داد.
به عنوان مثال:

کد: انتخاب همه

unsigned char text="between the characters with the background color.Added the GLCD_CLEARBLOCK and ";

کد: انتخاب همه

glcd_outtextxy(0,0,text); //ابتدا شماره ستون،سپس رديف،سپس آريه متني ما
delay_ms(5000);

نمایش متن مثال اول:
تصویر
نمایش متن مثال دوم:
تصویر
 [لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید]مثال (شبیه ساز و سورس)  . 
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.

Colonel II
Colonel II
نمایه کاربر
پست: 7008
تاریخ عضویت: سه شنبه 26 آذر 1387, 4:20 pm
سپاس‌های ارسالی: 9184 بار
سپاس‌های دریافتی: 21045 بار
تماس:

Re: راه اندازی LCDگرافیکیNokia5110(فونت فارسی)

پست توسط sinaset » دو شنبه 11 اردیبهشت 1396, 12:58 pm

بنام خدا
باسلام


آموزش نمایش فونت فارسی با LCD NOKIA 5510/3310
تصویر
تصویری از برنامه دماسنج با فونت فارسی و ال سیدی نوکیا
(برنامه در اینجا)
توابع فونت فارسی قبلا توسط شخصی خیر برای LCD ها نوشته شده که اینجانب نیز برای این LCD کمی ان را بروز رسانی کردم،تا متن نمایش داده شود.

لازم به ذکر است این کتابخانه و فونت ها ساخته شده،با راه اندازهای این LCD که توسط کدویژن ساخته شده و در پست قبلی معرفی شده راه اندازی میشود . !
یعنی، ابتدا به مانند پست قبلی LCD به کدویژن معرفی میشود ،سپس برای راه اندازی سه کتابخانه که امروز معرفی میشود به برنامه الحاق میشود.

کتابخانه Graphic

مربوط به گرافیک ها و همچنین کشیدن اشکال هندسی در ال سیدی و .. استفاده میشود .(که در پست ها بعدی اموزش کشیدن اشکال هندسی داده میشود)
که باید کتابخانه Graphic.c ان از طریق پنجره project/configuration/add به برنامه اضافه شود.

کتابخانه Font

به کمک این کتابخانه و بسته ها الحاقی ان،قابلیت نمایش فارسی راه اندازی میشود ..
که باید کتابخانه font.c ان از طریق پنجره project/configuration/add به برنامه اضافه شود.
و همچنین باید در برنامه ادرس ان مشخص شود. مثل "include "FONT\Font.h#

کتابخانه فونت!

فعلا یک فونت فارسی برای انجام دادن کارها معرفی میشود و انشالله در پست های بعدی چند فونت دیگر معرفی میشود.
نحویه معرفی ان در برنامه "include "FONT\font\AF9x10.h#

اما مابعد از معرفی کتابخانه و پایه و راه اندازی ها لازم،باید نوع فونت،رنگ فونت،رنگ پس زمینه،فاصله بین کاراکترها،وضعیت فارسی انگلیسی برای نمایش متن مشخص کنیم

بدین منظور در تابع اصلی،ابتدا فونت را به کمک تابع "(نوع فونت)LcdFont" مشخص میکنیم . چون ما از فونت AF9x10 استفاده میکنیم پس فونت را چنین مشخص می کنیم.

کد: انتخاب همه

LcdFont(AF9x10);

برای تایین رنگ پس زمینه و رنگ فونت نیز از دو تابع زیر استفاده می کنیم.

کد: انتخاب همه

SetBkColor(BLACK); //تايين رنگ متن
SetFgColor(WHITE); //تايين رنگ پس زمينه
برای تایین فاصله بین کاراکترها نیز از تابع زیر استفاده می کنیم(که ما ان را بر روی 1 قرار داده ایم)

کد: انتخاب همه

LcdFontSpace(1); //فاصله بين کارکترها

اما برای اینکه بتوانیم فونت فارسی را بدرستی نمایش بدهیم باید به کمک تابع "()SetLetter" نوع فارسی نویسی یا انگلیسی نویسی را مشخص کنیم

بدنی منظور اگر بخواهیم متن فارسی نمایش بدهیم،باید قبل از ان از تابع "()SetLetter" به صورت زیر استفاده کنیم

کد: انتخاب همه

SetLetter(P_LETTER); //وضعيت را براي نمايش فارسي تنظيم کن
اگر بخواهیم به انگلیسی مطلبی را نمایش بدیم باید قبل از ان از تابع "()SetLetter" به صورت زیر استفاده کنیم

کد: انتخاب همه

SetLetter(E_LETTER);

اکنون همه چیز اماده می باشد، ومی توان متن فارسی را تایپ کرد! برای تایپ متن ما از تابع() DrawStringAt استفاده می کنیم. این تابع بدین شکل می باشد.

کد: انتخاب همه

DrawStringAt (رنگ پس زمينه،رنگ متن،متن،ستون،سطرمتن);

به عنوان مثال:

کد: انتخاب همه

DrawStringAt(0, 2, "بنام خدا", BLACK, WHITE); //سطرح اول

*رنگ ها یا BLACK می باشد یا WHITE .. (که وقتی به انگلیسی تایپ شود،خود نرم افزار متوجه ان میشود)

مثال های نسبتا خوبی در یک برنامه همراه با شبیه ساز و همراه با توضیحات لازمه، اماده شده که می توانید از [لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید]دانلود کنید.

کل کدهای مثال ها:

کد: انتخاب همه

/*******************************************************
Project : راه اندازي ال سي دي با فونت فارسي
Version : 1.0
Date : 1396.2.11
Author : sinaset
Chip type : ATmega8A
AVR Core Clock frequency: 8.000000 MHz
*******************************************************/
#include <mega8.h>
#include <delay.h>
#include <stdio.h>
#include <glcd.h> //کتابخانه هاي کدويژن مربوط به ال سي دي
#include <font5x7.h> //کتابخانه هاي کدويژن مربوط به ال سي دي

//سه کتابخانه ساخته شده براي ال سي دي هاي گرافيکي

#include "FONT\Font.h" //فونت مورد نياز
#include "FONT\font\AF9x10.h" //فونت فارسي با سايز نسبتا کوچک


void main(void)
{

GLCDINIT_t glcd_init_data; ///مجموعه دستورات راه اندازي ال سي دي مربوط به کدويژن
delay_ms(200);
DDRD =0xff;
PORTD=0x00;
glcd_init_data.font=font5x7;
glcd_init_data.readxmem=NULL;
glcd_init_data.writexmem=NULL;
glcd_init_data.temp_coef=PCD8544_DEFAULT_TEMP_COEF;
glcd_init_data.bias=PCD8544_DEFAULT_BIAS;
glcd_init_data.vlcd=PCD8544_DEFAULT_VLCD;
glcd_init(&glcd_init_data); //پايان مجموعه دستورات
glcd_clear(); //دستور پاک سازي

delay_ms(500); //تاخير

//مي باشد،در فونت هاي ديگر فاصله سطر و ستون متفاوت تر مي باشدAF9x10 فونت انتخاب شده
glcd_clear(); //دستور پاک سازي ال سي دي
LcdFont(AF9x10); //مشخص کردن نوع فونت
SetBkColor(BLACK); //تايين رنگ متن
SetFgColor(WHITE); //تايين رنگ پس زمينه
LcdFontSpace(1); //فاصله بين کارکترها
SetLetter(P_LETTER); //وضعيت را براي نمايش فارسي تنظيم کن

/*براي نمايش متن از تابع
DrawStringAt
استفاده ميشود، در اين تابع ابتدا سطر متن مشخص ميشود،سپس ستون متن،سپس متن براي نمايش،سپس رنگ متن،سپس رنگ پس زمينه
DrawStringAt (رنگ پس زمينه،رنگ متن،متن،ستون،سطرمتن);
*/

DrawStringAt(0, 2, "بنام خدا", BLACK, WHITE); //سطرح اول
DrawStringAt(1, 0, "نمايش متن", BLACK, WHITE); //سطر دوم
DrawStringAt(2, 0, "با فونت فارسي", BLACK, WHITE); //سطر سوم
delay_ms(2500); // تاخير
glcd_clear(); // اطلاعات را پاک کن

//در اين مثال مي توانيد فاصله بين سطر ها را ببينيد
DrawStringAt(0, 0, "سطر اول", BLACK, WHITE);
DrawStringAt(1, 0, "سطر دوم", BLACK, WHITE);
DrawStringAt(2, 0, "سطر سوم", BLACK, WHITE);
DrawStringAt(3, 0, "سطر چهارم", BLACK, WHITE);

delay_ms(2500); // تاخير
glcd_clear();

//در مثال زير مي توانيد فاصل بين ستون ها را ببينيد
DrawStringAt(0, 0, "1", BLACK, WHITE); //ستون اول
DrawStringAt(0, 1, "2", BLACK, WHITE); //ستون دوم
DrawStringAt(0, 2, "3", BLACK, WHITE); //ستون سوم
DrawStringAt(0, 3, "4", BLACK, WHITE); //ستون چهارم
DrawStringAt(0, 4, "5", BLACK, WHITE); //ستون پنجم
DrawStringAt(0, 5, "6", BLACK, WHITE); //ستون ششم
DrawStringAt(0, 6, "7", BLACK, WHITE); //ستون هفتم
DrawStringAt(0, 7, "8", BLACK, WHITE); //ستون هفتم

delay_ms(2500); // تاخير
glcd_clear();

//نمايش متن به صورت يک پارچه بدون تعويض سطر و ستون
DrawStringAt(0, 0, "بنام خداوند بخشنده و مهربان،آموزش نحويه نمايش فونت فارسي بر روي ال سيدي", BLACK, WHITE);

/*حال اگر بخواهيم مطلبي به زبان انگليسي تايپک کنيم بايد از تابع
SetLetter
استفاده کرده و وضعيت را به زبان انگليسي قرار دهيم
*E_LETTER //زبان انگليسي
*P_LETTER //زبان فارسي
*/
SetLetter(P_LETTER);
SetLetter(E_LETTER); //وضعيت را براي نمايش متن انگليسي اماده کن
DrawStringAt(0, 0, "NAME OF GOD", BLACK, WHITE);
DrawStringAt(1, 0, "PROJECT LCD", BLACK, WHITE);
delay_ms(1500); // تاخير
glcd_clear(); // اطلاعات را پاک کن
/**** دقت کنيد،اگ بخواهيد اکنون فارسي تايپ کنيد،متن بهم ريخته خواهد بود ****/
/**** تغير وضعيت بدهد SetLetter(P_LETTER); به SetLetter(); بايد تابع ****/


while (1)
{
}
}
تصویر

کد: انتخاب همه

/*براي نمايش متن از تابع
DrawStringAt
استفاده ميشود، در اين تابع ابتدا سطر متن مشخص ميشود،سپس ستون متن،سپس متن براي نمايش،سپس رنگ متن،سپس رنگ پس زمينه
DrawStringAt (رنگ پس زمينه،رنگ متن،متن،ستون،سطرمتن);
*/

DrawStringAt(0, 2, "بنام خدا", BLACK, WHITE); //سطرح اول
DrawStringAt(1, 0, "نمايش متن", BLACK, WHITE); //سطر دوم
DrawStringAt(2, 0, "با فونت فارسي", BLACK, WHITE); //سطر سوم
delay_ms(2500); // تاخير
glcd_clear(); // اطلاعات را پاک کن
تصویر

کد: انتخاب همه

//در اين مثال مي توانيد فاصله بين سطر ها را ببينيد
DrawStringAt(0, 0, "سطر اول", BLACK, WHITE);
DrawStringAt(1, 0, "سطر دوم", BLACK, WHITE);
DrawStringAt(2, 0, "سطر سوم", BLACK, WHITE);
DrawStringAt(3, 0, "سطر چهارم", BLACK, WHITE);
تصویر

کد: انتخاب همه

//در مثال زير مي توانيد فاصل بين ستون ها را ببينيد
DrawStringAt(0, 0, "1", BLACK, WHITE); //ستون اول
DrawStringAt(0, 1, "2", BLACK, WHITE); //ستون دوم
DrawStringAt(0, 2, "3", BLACK, WHITE); //ستون سوم
DrawStringAt(0, 3, "4", BLACK, WHITE); //ستون چهارم
DrawStringAt(0, 4, "5", BLACK, WHITE); //ستون پنجم
DrawStringAt(0, 5, "6", BLACK, WHITE); //ستون ششم
DrawStringAt(0, 6, "7", BLACK, WHITE); //ستون هفتم
DrawStringAt(0, 7, "8", BLACK, WHITE); //ستون هفتم

تصویر

کد: انتخاب همه

//نمايش متن به صورت يک پارچه بدون تعويض سطر و ستون
DrawStringAt(0, 0, "بنام خداوند بخشنده و مهربان،آموزش نحويه نمايش فونت فارسي بر روي ال سيدي", BLACK, WHITE);
تصویر

کد: انتخاب همه

/*حال اگر بخواهيم مطلبي به زبان انگليسي تايپک کنيم بايد از تابع
SetLetter
استفاده کرده و وضعيت را به زبان انگليسي قرار دهيم
*E_LETTER //زبان انگليسي
*P_LETTER //زبان فارسي
*/
SetLetter(P_LETTER);
SetLetter(E_LETTER); //وضعيت را براي نمايش متن انگليسي اماده کن
DrawStringAt(0, 0, "NAME OF GOD", BLACK, WHITE);
DrawStringAt(1, 0, "PROJECT LCD", BLACK, WHITE);
/**** دقت کنيد،اگ بخواهيد اکنون فارسي تايپ کنيد،متن بهم ريخته خواهد بود ****/
/**** تغير وضعيت بدهد SetLetter(P_LETTER); به SetLetter(); بايد تابع ****/



باتشکر.
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.

New Member
پست: 1
تاریخ عضویت: یک شنبه 29 اسفند 1395, 3:07 am
سپاس‌های ارسالی: 1 بار

Re: راه اندازی LCDگرافیکیNokia5110(نمایش متن فارسی)

پست توسط 1hoshmand » چهار شنبه 20 اردیبهشت 1396, 11:26 pm

سلام دوست عزیز و تشکر از لطف تون، لطف کنید اگه میشه کتابخونه مربوط به متن فارسی را هم بگذارید

Colonel II
Colonel II
نمایه کاربر
پست: 7008
تاریخ عضویت: سه شنبه 26 آذر 1387, 4:20 pm
سپاس‌های ارسالی: 9184 بار
سپاس‌های دریافتی: 21045 بار
تماس:

Re: راه اندازی LCDگرافیکیNokia5110(نمایش متن فارسی)

پست توسط sinaset » پنج شنبه 21 اردیبهشت 1396, 7:33 am

سلام بر شما
خواهش میکنم. کتابخانه متن فارسی،همراه همان مثال ذکر شده می باشد.
باتشکر.
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.

ارسال پست

بازگشت به “آموزش و مثال‌ها AVR”