نوشتن متن فارسی در LCD های کاراکتری : تو این پروژه avr با LCD کاراکتری (البته بعدا انشاالله میریم سراغ اون گرافیکی هاش) میشه ۸ تا کاراکتر تعریف کرد.
(مثلا تو این پروژه ما ۴ تا کاراکتر فارسی و یه کاراکتر که به شکل قلب o_O هستش رو ایجاد کردیم)
به نام خدا
اگه در مورد LCD و این که این اتصالات داستانش چیه و هر کدوم از پایه ها کارشون چیه و… چیزی نمیدونید میتونید مطلب زیر رو بخونید :
آموزش ساخت شمارنده عدد در LCD
کد های این پروژه + توضیحات
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
#include <mega16.h> #include <lcd.h> /////////////////////////////////////////////////////////////////////////////// #asm //شروع کد نویسی به زیون اسمبلی .equ __lcd_port=0x15; //تعیین پورت سی به عنوان پورتی که ال سی دی باید بهش وصل بشه #endasm // پایان کد نویسی به زبون اسمبلی /////////////////////////////////////////////////////////////////////////////// //تعریف دوکلمه علی و شنبه //توجه مهم // این کلمه فلش که اول ۵ خط زیر میبینید یعنی این که این آرایه ها تو حافظه فلش ذخیره بشوند // حافظه فلش حافظه ای است که کد های برنامه یا همون فایل هگز رو در خود ذخیره میکند flash unsigned char char0[] = {8,8,11,10,15,8,15,0}; // کلمه علی flash unsigned char char1[] = {4,10,0,21,31,0,0,0}; // حرف ش flash unsigned char char2[] = {0,2,0,5,31,0,8,0}; // دو حرف نب flash unsigned char char3[] = {0,1,3,3,1,0,0,0}; //حرف حه تک چشم!!! flash unsigned char char4[] = {0,10,21,17,10,4,0,0},; // قلب--البته به صورت شکل !!! ///////////////////////////////////////////////////////////////////////////// // اینم یه تابع هستش که آرایه هایی که در بالا نوشتیم رو به کاراکتر تبدیل میکنه // مثلا تو ته همین برنامه یه ۵ باری فرا خوانی میکنیم این تابع ر و // مثلا میگیم که اگه ما عدد یک رو وارد کردیم تو تابع نمایش کاراکتر تو ال سی دی // اونوقت تو کلمه ش رو نمایش بده»»» افتاد؟؟ void define_char(unsigned char flash *my_kalame ,unsigned char kaleme_to_karakter) { unsigned char i,a; a=(kaleme_to_karakter<<3)|0x40; // محل شروع ذخیره اطلاعات در حافظه CGRAM for(i=0;i<=7;i++) // نوشتن در حافظه CGRAM lcd_write_byte(a++ , *my_kalame++); //این تابع برای نوشتن یک بایت کاراکتر دلخواه در حافظه داخلی میکرو استفاده میشه // به نکته هم توجه کنید که هر حرفی که ما آرایه اش رو تو بالا نوشتیم دارای ۸ بایت هستش //لذا اون حلقه فور رو نوشتیم برا این که هر ۸ بایت ذخیره بشه } /////////////////////////////////////////////////////////////////////////////// void main(void) { int i; // با این متغییر ما میخوایم کاراکتری که به شکل قلب ساختیم رو چندین بار نمایش بدیم lcd_init(16); //عدد داخل پرانتز تعداد ستون های ال سی دی هست //تعریف کاراکتر های ایجاد شده //مثلا اگه بگیم به ال سی دی عدد یک رو به عنوان کاراکتر //چاپ کن میاد و اون کاراکتری که ما ساختیم رو نمایش میده // که در این جا کاراکتری که صفر براش تعیین شده "علی "هستش define_char(char0,0); define_char(char1,1); define_char(char2,2); define_char(char3,3); define_char(char4,4); lcd_gotoxy(0,0); // رفتن به مختصات سطر اول و ستون اول ام ال سی دی lcd_putchar(0); lcd_gotoxy(6,0); // رفتن به مختصات سطر اول و ستون ۷ ام ال سی دی for(i=0;i<=5;i++) lcd_putchar(4); // نمایش شکل قلب--با توجه به حلقه این قلبه ۶ بار نمایش داده میشود lcd_gotoxy(0,1); // رفتن به مختصات سطر دوم و ستون اول ال سی دی lcd_putchar(3); //نمایش حرف ه lcd_putchar(2); //نمایش حرف نب lcd_putchar(1); //نمایش حرف ش while (1){ }; } |
تو خود پروژه یه سری توضیحات دادم و باز نیاز به توضیح هستش 
1) ما چطور این کاراکتر ها رو ایجاد میکنیم(مثلا همین حرف » ش «)
1 2 3 4 5 |
flash unsigned char char0[] = {8,8,11,10,15,8,15,0}; // کلمه علی flash unsigned char char1[] = {4,10,0,21,31,0,0,0}; // حرف ش flash unsigned char char2[] = {0,2,0,5,31,0,8,0}; // دو حرف نب flash unsigned char char3[] = {0,1,3,3,1,0,0,0}; //حرف حه تک چشم!!! flash unsigned char char4[] = {0,10,21,17,10,4,0,0},; // قلب--البته به صورت شکل !!! |
کد هایی که در بالا میبینید ؛ به وسیله یه نرم افزار ایجاد میشن که ما تو اون نرم افزاره شکل کاراکترمون رو میکشیم و بعد اون نرم افزاره کد های این شکل ما رو بهمون میده
(البته این کد ها رو به سه زبون پاسکا-بیسیک و سی میده که ما چون با کدویژن و سی کار میکنیم »»»» کد های قسمت سی رو کپی میکنیم.)
مثلا تو عکس زیر من کلمه ___ش___ رو کشیدم. @_@
این نرم افزار در آخر همین مطلب برا دانلود شا دوستان گزاشته شده است. ^_^
2) این کاراکتر های ما کجا ذخیره میشن :
تو LCD های کاراکتری حافظه ای به نام CGRAM وجود داره که میتونی توش ۸ و فقط ۸ تا کاراکتر ذخیره کنیم.
(میدونم .زیاد ناراحت نشو!»» فعلا با همین ۸ تا کاراکتر سرگم بشید تا بعد)
توجه مهم : هر خانه این LCD ها در واقع از ماتریسهای ۷×۵ یا ۱۰×۵ ساخته شده.(البته برا ما ۷×۵ هستش.)
3) انواع حافظه میکرو : راسش رو بخواید الان حس توضیح دادنش رو ندارم!!! کسی اگه خواست بگه براش توضیح بدم.
عملی بستن این پروژه : اینم فیلمی از همین پروژه ساده که به صورت عملی بستمش، فقط این که lcd رو به portc وصل نکنید و به پورت دیگه ای وصل کنید و در کد های پروژه هم در قسمت
1 2 3 |
#asm .equ __lcd_port=0x15; #endasm |
کد پورتی که lcd بهش وصل هستش رو قرار بدید.
نام پورت | آدرس پورت |
PORTA | ox1b |
PORTB | ox18 |
PORTC | ox15 |
PORTD | ox12 |
مهمان
مهمان
اجنگ ما فتح قدس را به همراه خواهد داشت. [ امام خمینی (ره) ]
انشالا داداش زود
مهمان
سلام
مرسی بابتت پروژه عالیتون
چطور میتونم اینو تو پروتئوس پیاده سازی کنم؟
یعنی مدار پروتئوسش رو چطور باید رسم کنم؟
ممنون میشم جواب بدید
مهمان
سلام من نمیخوام با استفاده از کتابخانه های حروف و کاراکتر ها رو چاپ کنم بلکه خودم می خوام به صورت مستقیم به پیکسل ها دسترسی داشته باشم و هر کدوم رو که خواستم روشن یا خاموش کنم. راهنمایی بفرمایید
مهمان
سلام خیلی ممنون از مطالب مفید سایتتون
میخواستم بگم من دقیقا کد هایی که گفتیم رو زدم و طبق گفته شما عمل کردم ولی تو پروتئوس که شبیه سازی میکنم ال سی دی چیزی رو نمایش نمیده.اگه میشه بگین مشکل چیه
مهمان
سلام چیکار کنیم که حروف به همدیگه بچسبن؟
مهمان
سلام
نظر بی ربطی به این موضوعش هستش، فقط خواستم بگم که از طریق آموزش زیر باگ افزونه Wp-jalali رو برطرف کنید تا تاریخ وردپرستون رو شمسی بشه:
https://wptutorial.ir/resolve-wp-jalali-date-problem/
نویسنده این مطلب
سلام / از افزونه فوق استفاده نمیکنم ( قبلا استفاده میکردم ) / ممنون از لطف شما.
مهمان
سلام خسته نباشید
طبق این نرم افزار من یه کاراکتر حرف فارسی ساختم و در اخر فایل خروجی از این نرم افزار با فرمت .lcd ذخیره شد میخوام بدونم چجوری باید از این فایل استفاده کنم
مهمان
سلام وقتتون بخیر
من یه پروژه ای دارم که باید یه کلمه فارسی رو روی lcdنمایش بدم وقتی برای این برنامه کد مینویسم اون قسمت void define charr رو باید تغیر بدم؟ مثلا اگه خواسته باشم اسم مژده رو نمایش بدم
مهمان
سلام
استادمون یه پروژه داده تحت عنوان نمایش حروف فارسی روی lcd بدون استفاده از توابع
کسی میتونه راهنمایی کنه؟؟
مهمان
سلام
میشه بیشتر در مورد خط زیر توضیح بدید چرا 3 شیفت به چپ انجام شده؟
a=(kaleme_to_karakter<<3)|0x40
نویسنده این مطلب
سلام – احتمالا باید مربوط به بحث آدرس دهی باشه – به دیتاشیت lcd فوق مراجعه کنید ( عبارت CGRAM Address رو جستجو کنید )
مهمان
کجا سیو کنیم
نویسنده این مطلب
چیو کجا save کنی؟!
مهمان
void define_char(unsigned char flash *my_kalame ,unsigned char kaleme_to_karakter)

{
unsigned char i,a;
a=(kaleme_to_karakter<<3)|0x40;
for(i=0;i<=7;i++)
lcd_write_byte(a++ , *my_kalame++);
اگه میشه در مورداین بخش یکم بیشتر توضیح بدید من نتونستم این بخش رو بفهمم و صرفا حفظ کردم.کلا دلیل این حلقه FOR و عبارت بالاش پیه که می نویسیم؟!
مهمان
سلام،خسته نباشید؛ببخشید من کد نوشتم که جمله سال نو مبارک رو به صورت روان روی ال سی دی نمایش میدهد فقط مشکلی که دارم اینه که وقتی حرف ک به انتهای ال سی دی میرسه(سطر اول ستون اول) این حرف روی سطر دوم نماش داده میشه تا وقتی جمله به پایان برسه.ممنون میشم راهنمایی کنین،خیلی واجبه
نویسنده این مطلب
سلام
سال نو مبارک = س ا ل ن و م ب ر ک = 9 تا کاراکتر
دیتاشیت نمایشگر رو بخون ببین حداکثر تعداد کاراکتری که میتونی تعریف کنی چندتاس
شما یه تابع بنویس.که یه for داشته باشه و از 0 تا 16 بشموره.برا بحث جابجا شدن بین ستون ها.اطلاعات رو از ستون 0ام نمایش بده ( مثلا داده ما 5 کاراکتر هستش ) بعد 100ms بیا ستون 0 تا 4 رو پاک کن ( از lcd_clear استفاده نکن ) بعد بیا اون 5 تا کاراکترتو یه ستون جابجا کن یعنی ستون 1 تا 5 و…
وقتی مثلا رسیدی به ستون 11 ( نمایشگر 16 تا ستون داره و چون شمارش ستون ها رو از 0 شروع کردیم فلذا ستون اخر میشه 15 ) حالا میخوای 5 تا کاراکترتو نشون بدی.به کاراکتر اخر که رسیدی میبینی که رسیدی به ستون اخر فلذا کاراکتر اخر رو نشون نمیدی یا تو ستون اول نشون میدی….که شما یه متغیر اگه تعریف کرده باشی و در هر بار جابجا کردن داده ات یه واحد متغیر فوق رو زیاد کنی متوجه میشی که چقدر جابجا شدی و بعد با یه if ساده میتونی بررسی کنی که جا برا نمایش داده هات هستش یا نه
مهمان
سلام آقا خسته نباشی. دمت گرم به خاطر مطالب خوبتون. من یه پروژه بستم که توش یه شکل که متشکل از سه نقطه است، به صورت رندم روی صفحه ظاهر می شه و تا پایین صفحه میاد، از اون طرف یه شکل دیگه پایین صفحه است که با کلید و وقفه خارجی جابه جا می شه، حالا اگه اون شکله که به صورت رندم ظاهر می شه و پایین میاد به شکل پایین صفحه بخوره، game over می شیم! یه چیزی تو مایه بازی آتاری ! من تو پروتیوس برنامه رواجرا کردم، حدود بیست ثانیه درست اجرا می شه و بعد کلا شکل پایین صفحه می پره، به نظرت مشکلش کجاست؟
اگه کمکم کنی خیلی لطف کردی.
نویسنده این مطلب
سلام
با پروتئوس کلا کار نکن – در عمل تست کن پروژه رو – دوباره همون مشکل رخ داد – تو کدت دنبال مشکل بگرد ( من باشم اینکارو میکنم ) – حل نشد – فیلم بگیر ( از مدار در عمل بسته شده ) تو سروش به آیدی dmf313 بفرست.
مهمان
سلام ممنونم بابت مطالب مفیدتان خیلی استفاده کردم موفق باشید.
مهمان
سلام
می خوام این فایل رو به فارسی ترجمه کنم چطوری این کار رو انجام بدم؟؟؟؟؟
لینک فایل
https://drive.google.com/open?id=1jNeuTaJznSTHwiOsGE_T2pIBkyEsJOoc
نویسنده این مطلب
سلام-متوجه نشدم
یعنی چی که به فارسی ترجمه کنم- کد نویسی اسمبلی هستش که خب تو سی هم این جور کدا زیاد استفاده میشه.
مهمان
خوب من این رو بدون این که کد نویسی کنم (زیاد از کد نویسی سرم نمیشه )
قسمت های که داخل پرانتز هستش رو به فارسی ترجمه کردم ولی بعد اپلود فایل فارسی رو نمی شناسه کارکتر های نامفهم میاره.
مهمان
مهمان
سلام
با تشکر از شما
سوال:
اگر بخوایم مقدار یه متغیر رو نمایش بدیم واون متغیر رو هم فارسی بنویسیم چیکار باید کرد
مثل:
(sprintf(W,”Value :%u”,W
مهمان
سلام فایلی که دانلود میشه proteus نداره
میشه یه عکس کامل از بستن مدار بذارین مرسی
نویسنده این مطلب
سلام
عکس اول مطلب شماتیک پروژه اس دیگه.
مهمان
استاد ممنون بابت دیدن سوالم . میشه یه لطفی کنید تو سه خط پایین راجع به 3>> و عدد 7 در حلقه for و خط سوم توضیح بدید
void define_char(unsigned char flash *my_kalame ,unsigned char kaleme_to_karakter)
{
unsigned char i,a;
a=(kaleme_to_karakter<<3)|0x40; // محل شروع ذخیره اطلاعات در حافظه CGRAM
for(i=0;i<=7;i++) // نوشتن در حافظه CGRAM
lcd_write_byte(a++ , *my_kalame++);
نویسنده این مطلب
شرمنده-
>> که برا شیقت دادنه آموزشش هم تو نت هستش
ولی این که چرا 3 واحد شیف دادم رو خاطرم نی – خیلی وقت پیش متاسفانه این مطلبو نوشتم و الان خاطرم نی علتشو
مهمان
سلام خدمت استاد عزیز ! چرا سوال من که تو قسمت ارسال نظر نوشته بودم پاک شده است ؟ ممنون
نویسنده این مطلب
پاک نشده – اون موقع چون هنوز جواب نداده بودم – اینطور میشه –
مهمان
با سلام خدمت استاد عزیز ، امکانش هست راجع به این خط های پروژه بالا مفصل تر توضیح بدین ؟ ممنون
void define_char(unsigned char flash *my_kalame ,unsigned char kaleme_to_karakter)
{
unsigned char i,a;
a=(kaleme_to_karakter<<3)|0x40; // محل شروع ذخیره اطلاعات در حافظه CGRAM
for(i=0;i<=7;i++) // نوشتن در حافظه CGRAM
lcd_write_byte(a++ , *my_kalame++); //این تابع برای نوشتن یک بایت کاراکتر دلخواه در حافظه داخلی میکرو استفاده میشه
// به نکته هم توجه کنید که هر حرفی که ما آرایه اش رو تو بالا نوشتیم دارای ۸ بایت هستش
//لذا اون حلقه فور رو نوشتیم برا این که هر ۸ بایت ذخیره بشه
}
///////////////////////////////////////////////////////////////////////////////
void main(void)
{
int i; // با این متغییر ما میخوایم کاراکتری که به شکل قلب ساختیم رو چندین بار نمایش بدیم
lcd_init(16); //عدد داخل پرانتز تعداد ستون های ال سی دی هست
//تعریف کاراکتر های ایجاد شده
//مثلا اگه بگیم به ال سی دی عدد یک رو به عنوان کاراکتر
//چاپ کن میاد و اون کاراکتری که ما ساختیم رو نمایش میده
// که در این جا کاراکتری که صفر براش تعیین شده "علی "هستش
define_char(char0,0);
define_char(char1,1);
define_char(char2,2);
define_char(char3,3);
define_char(char4,4);
lcd_gotoxy(0,0); // رفتن به مختصات سطر اول و ستون اول ام ال سی دی
lcd_putchar(0);
lcd_gotoxy(6,0); // رفتن به مختصات سطر اول و ستون ۷ ام ال سی دی
for(i=0;i<=5;i++)
lcd_putchar(4); // نمایش شکل قلب–با توجه به حلقه این قلبه ۶ بار نمایش داده میشود
نویسنده این مطلب
توضیح چی بدم؟ حسش نی جان داش
– توضیح دادم دیگه
بگو کجاشو مشکل داری تا دقیق توضیح بدم
مهمان
سلام من میخوام یه متن بنویسم ولی این که فاصله میوفته بین حروف خیلی زشتش میکنه برنامه نیس که بیش تر از ۵ مربع رو بشه ساخت ؟
دوم اینکه من روی این برنامه ۳ تا خط داخل فلش اضافه کردم که جمله کامل بشه ولی char 5 و 6و 7 رو اصلا نشون نمیده چرا ؟
نویسنده این مطلب
سلام
از lcd گرافیکی استفاده کن اگه میخوای فاصله نیوفته.
تو تعریف کاراکتر فارسی محدودیت وجود داره حدود 7-8 تا
مهمان
خیلی خوب بود ممنون فقط طرز کار ال سی دی گرافیکی با کاراکتری فرقی میکنه یا نه یا اگر فرق میکنه طرز کارشو توی سایتتون قرار بدید ممنون از سایت خوبتون
مهمان
سلام من الان بخوام اسم خودم ر بنویسیم باید توی cod vision چجور طراحیش کنم
مهمان
سلام سایت قشنگ تون ونیت خالصانه شماقابل ستایش هست.
سربازان امام زمان بخاطر مال دنیا نمی جنگند.خیلی از کسانی که از امتیازات مادی حکومتی برخوردارند.ادعای بسط و توسعه جامعه اسلامی و مدنی دارند.که همه می دانیم ادعای بیش نیست.و خطر ناک تر از دشمن هستن.
ولی ای کاش می فهمیدیم با فحش دادن فرهنگ خودرا برهنه می کنیم.همیشه دست ما بخاطر یک چیپ 2هزارتومنی به سمت تمام کشورهایی که بهشون فحش میدیم دراز میشه.و هنوز هم که هنوزه به برندهای usaرا بهترین می دانیم.و برای مسافرت به این سرزمین هامیلیاردها پول میدیم.و صد البته 90 درصد کسانی که صندلی در بهارستان دارندواولاد و نوادگان رده های بالا حکومتی در خارج کشورو این سرزمینهای هدف فحش مان زندگی می کنند.
اونوقت یک مهندس مابه فکر شیعه کردن یک سنی هست.
مهمان
سلام …
من تون تابعی رو که نوشتین متوجه نمی شم .. یشه ساده تر توضیح بدین
مهمان
سلام!!
نمیشه حافضش رو برد بالا؟؟؟؟×!!!
مثلا با ماژول اسمشو یادم نیست
ازاینایی که رم میزاری میخونه…..
میشه حافظش رو برد بالا؟؟؟؟
نویسنده این مطلب
سلام.نه
مهمان
با تشکر از مطلب مفیدتون و مخصوصا اون نرم افزار که کارو خیلی سریع کرد
مهمان
سلام، مشکل تکرارشو حل کردم ولی همجنان به هم ریخته نشون میده
http://uupload.ir/files/4iar_0000.png
نویسنده این مطلب
سلام
یه سوال – چقدر احتمال میدید که مشکل از پروتئوس نباشه؟! تو عمل هم یه تستی بکنید.
مهمان
فک کنم مشکلو پیدا کردم
اومدم یه کلمه و چنتا عدد دیگه نوشتم که از ۸ بیت(کارکتر؟ نمیدونم) کمتر بود مثلا آب و عدد هم ۲۲۸۴ بعد بدون مشکل نشون میداد، مثلا همون آب رو ۶ بار رو صفحه بهم نشون داد مشکل از تعداد define ها هست فک کنم، ولی خب نمیدونم چیکار کنم بیشتر از ۸ تا بشه هم بتونم نشون بدم بهم نریزه 
مهمان
سلام من برنامه ای که فرستادم جواب ندادین بهم
اگر لازمه فایل پروتئوس و هگزو جایی اپلود کنم لینک بدم نمیدونم
نویسنده این مطلب
سلام
کدوم برنامه؟ چیزی میخوای بفرستی – خب آپلود سنتر ها زیپ بهشون بدی قبول میکنن – مشکل چیه حالا؟
مهمان
همین نظر قبلی که گذاشتم سوال داشتم رو میگم….. اینم لینک :

http://uupload.ir/view/lolu_azmayeshe8.zip
اولش که ال سی دی روشن میشه اسمم به هم ریخته هست یکم ،کاری با اون ندارم بعد درست میکنم مشکلم اینه که بعدش که باید شماره دانشجویی بیاد عددا کلا به هم ریخته رفته تو دو ردیف به ترتیبم نیست اصلا و یه مشکل دیگه هم اینکه من میخام بعد که شماره رو نشون داد باز بره اسم رو نشون بده (چرخه باشه هی اسم بیاد بعدش ش.د تا بینهایت) ولی رو شماره ثابت میمونه!!! نمیدونم چیکارش کنم
نویسنده این مطلب
پروژه رو تیکه تیکه کنید و ببینید مشکل از کجاس
مهمان
سلام ممنون بابت سایت خوبتون که تو تمرینای آز-میکرو به من کمک کرد، یه سوالی دارم، من میخوام اول روی lcd اسم و فامیلم رو بزنه بعدش شماره دانشجویی و این روند تا اخر تکرار بشه، ولی این برنامه ای که نوشتم اول اینکه شماره رو کلا به هم میریزه و بعدشم دیگه اسم رو تکرار نمیکنه رو شماره ثابت میمونه،میشه بگید اشکالش چیه؟ ممنون
#include
#asm
.equ __lcd_port=0x18; //PORTB
#endasm
#include
#include
typedef unsigned char byte;
flash byte char0[8]={0,2,0,2,4,8,16,0};
flash byte char1[8]={0,0,31,21,31,0,0,0};
flash byte char2[8]={0,0,0,3,4,8,16,0};
flash byte char3[8]={0,4,4,4,4,4,0,0};
flash byte char4[8]={0,2,5,9,30,0,0,0};
flash byte char5[8]={0,8,5,3,4,8,0,0};
flash byte char6[8]={0,4,4,4,4,4,0,0};
flash byte char7[8]={6,0,15,9,15,1,31,0};
flash byte char8[8]={0,12,0,17,17,31,0,0};
flash byte char9[8]={30,18,30,2,2,2,2,2};
flash byte char10[8]={9,9,15,8,8,8,8,8};
flash byte char11[8]={15,8,15,8,8,8,8,8};
flash byte char12[8]={0,0,12,18,18,18,12,0};
flash byte char13[8]={0,4,10,17,17,17,21,27};
flash byte char14[8]={15,8,15,8,8,8,8,8};
flash byte char15[8]={21,21,31,16,16,16,16,16};
flash byte char16[8]={0,4,10,17,17,17,21,27};
flash byte char17[8]={4,10,17,17,17,17,17,17};
void define_char(byte flash *pc,byte char_code){
byte i,a;
a=(char_code<<۳)|۰x40;
for(i=0; i<۸; i++) lcd_write_byte(a++,*pc++);
}
void main(){
lcd_init(16);
define_char(char0,0);
define_char(char1,1);
define_char(char2,2);
define_char(char3,3);
define_char(char4,4);
define_char(char5,5);
define_char(char6,6);
define_char(char7,7);
define_char(char8,8);
lcd_gotoxy(0,0);
lcd_putchar(8);
lcd_putchar(7);
lcd_putchar(6);
lcd_putchar(5);
lcd_putchar(4);
lcd_putchar(3);
lcd_putchar(2);
lcd_putchar(1);
lcd_putchar(0);
delay_ms(1000);
lcd_clear();
define_char(char9,9);
define_char(char10,10);
define_char(char11,11);
define_char(char12,12);
define_char(char13,13);
define_char(char14,14);
define_char(char15,15);
define_char(char16,16);
define_char(char17,17);
lcd_gotoxy(0,0);
lcd_putchar(9);
lcd_putchar(10);
lcd_putchar(11);
lcd_putchar(12);
lcd_putchar(13);
lcd_putchar(14);
lcd_putchar(15);
lcd_putchar(16);
lcd_putchar(17);
delay_ms(1000);
while(1){
};
}
مهمان
مشکلم حل شد…ممنون
فقط یه سوال داشتم….تو جوابی که دادی گفتی توی بسکام نمیشه بیشتر از هفت تا کاراکتر درج کرد…خودمم هم به ای مطلب برخورده بودم تو نت…
اگه اشتباه نکنم ما دو نوع lcd داریم….۱- کاراکتری ۲- دیجتیال
میشه بگی فرقشون چیه….با lcd میشه چه کارهایی کرد و چه کاربرد های داره
و lcd دیجیتال چه مزیت هایی نسبت به lcd کرارکتری داره؟
ممنون
نویسنده این مطلب
بحث ۷ تا کاراکتر ربطی به بسکام و کدویژن و … نداره – مربوطه به خود نمایشگر
بسته به پروژه شما نمایشگرتون رو باید انتخاب کنید.
نمایشگر گرافیکی مدلش تو سایت هستش – یه چند تا پروژه و آموزش.
مهمان
بازم ممنون بابت پاسخگویی….
سایتی …منبعی جای خاصی رو میشناسید که اموزش بیسکام باشه و من بتونم ازش استفاده کنم؟؟؟؟؟؟؟
با تشکر
نویسنده این مطلب
نه متاسفانه.
مهمان
سلام…
من میخام با استفاده از یک atmega16 و یک lcd 16*2 ( lm016l ) برنامه ی درست کنم که رو lcd یه کلمه فارسی نوشته بشه..یه کلمه یا یه جمله فرقی نمیکنه… من با برنامه بیسکام کار میکنم نه کد ویژن تو نت هر چی گشتم همش کد ویژن بود…خواهش میکنم اگه ممکنه راهنمایی کنید توی بیسکام چطور میشه برنامه ای نوشت که روی lcd متن فارسی نشون داده بشه؟
با تشکر
نویسنده این مطلب
سلام
بسکام کار نمیکنم – در ضمن فقط ۷ کاراکتر میشه تعریف کرد و نه بیشتر!
مهمان
سایتی رو سراغ نداری بتونه کمکم کنه؟
مهمان
سلام خسته نباشید.
اگه با کد ویزارد وارد بشی پورت lcd رو تعیین کنی, نیازه پین هاشو ورودی خروجی تنظیم کنی ؟
نویسنده این مطلب
سلام-نه.
مهمان
سلام.
چرا سوال من را پاک کردین?
نویسنده این مطلب
سلام-کدوم؟
مهمان
ببخشید .
حواسم نبود نوشتم
مهمان
سلام.


من این پروزه رو بستم در عمل.
فرکانس ۸مگ داخلی
پورت B
ولی تا میکرو فرمان رو می فرسته ال سی دی خاموش میشه
چندین بار کدها و پورت ها را تعویض کردم.اما نشد
عید شما مبارک
نویسنده این مطلب
سلام
عید شما هم مبارک
یعنی چی که خاموش میشه؟
اطلاعات نمایشگر پاک میشه یا …؟
چون اگه نور پسزمینه خاموش میشه اون مشکل از تغذیه و اتصالی و … هستش.
مهمان
سلام.
هم اعطلاعات و هم نور زمینه خاموش می شود
مهمان
سلام.
.راستی پروزه را دانلود کردم. فایل پروتئوس هم ارور می دهد. پروتئوس۸ هم دارم 
من این مدار را در جایی پر از سیم بستم و پروگرام کردم با برنامه ی AVRstdio4پروگرام کردم. پروگرامرم هم نواوان الکترونیک است.تعغییری هم در مدار ندادم و هم چنین کدها. پیشاپیش ممنون از کمکتون
نویسنده این مطلب
سلام
پروتئوس چه اروری میده؟ عکس بده.
مهمان
چه طوری عکس بزارم
نویسنده این مطلب
دکنه PRT SCR SYS RQ روی کیبورد رو بزن – عکس رو تو PAINT ذخیره کن – تو یه آپلود سنتر آپلود کن – اینجا لینک بده.
مهمان
سلام.

هزینه
یاتعداد پورت ها

میکرو مگا۱۶هست یامگا۳۲
اگر مگا۳۲هست می توان توی مگا۱۶ نوشت
ایا تفاوت قدرت دارند
نویسنده این مطلب
سلام
اول کد پروژه نوشته شده.
به شرط تغییر نام کتابخونه.
دیتاشیت رو مقایسه کن. – مگا ۳۲ یکم گرون تره
مهمان
پروزه ی خوب و کاملی بود
مهمان
سلام.
دست شما درد نکند
ممنون . گرفتم
مهمان
سلام.


بعد از نوشتن کراکترچه کار کنیم.
خواهشن سریع سریع سریع سریع پاسخ بدهید
سایت بسیار بسیار خوبی دارید
لطفا نخندید
نویسنده این مطلب
سلام-یعنی چی که بعد نوشتن کاراکتر چی کار کنیم – متوجه نشدم منظورتو.
مهمان
منظورم بود بعد از گرفتن کد باید چیزی به کد اضافه کنیم مثل اگر فقط بخواهیم حرف های ر ی ح ا ن ه بدون رفت وبرگشت نشان دهیم بعد رو میکرو پروگرام کنیم
نویسنده این مطلب
شرفتا مطلب رو خوندی؟ پروژه رو دیدی؟ فیلم پروژه رو دیدی؟ خب تو مطلب نوشتن متن فارسی رو گفتم دیگه – مثل اون عمل کن – الان کجاشو مشکل داری آخه
مهمان
سلام.
و بعد پایه هاروخروجی کنم .ها
مطلب رو۲۰بار خوندم.پروزه را دیدم.فیلم راندیدم.یعنی همین جوری که کدا رو گرفتم از بر نامه کپی کنم تو کدویزن
راستی می توان همه ی پرتهای c را خروجی کرد
نویسنده این مطلب
سلام
کدها رو کپی نکن
پروژه ته مطلب رو دانلود کن و اونو تغییر بده و استفاده کن.
راستی جیتگ رو غیر فعال کن از طریق فیوز بیت ها تا پروژه کار کنه در عمل برات!
مهمان
سلام.

اقا اچب برنا مه ای بود///////////////////////*******************
مهمان
سلام، من این برنامه رو نوشتم ولی کدویژن define_char رو نمیشناسه، این ارور رو میده
storage modifier not allowed in this context
نویسنده این مطلب
سلام – اگه از eeprom استفاده کردی – این کارو نکن –
تو سایت زیر بزار کد رو و لینکش رو بده.
http://paste.debian.net/
مهمان
سلام دوست عزیز ، بابت آموزش خوب شما که غنیمت است تشکر می کنم ، یک اشتباه تایپی که در نگارش این آموزش صورت گرفته این است که کدهای ایجاد شده توسط تابع Define_char() در حافظه ی CGRAM که روی LCD Char قرار دارد ذخیره می شوند .
با تشکر
نویسنده این مطلب
سلام – خب منم تو مطلب همینو گفتم که!!!
مهمان
سلام داداش. دمت گرم. حالا چطوری میشه بیشتر از 8 کاراکتر فارسی رو نشون داد؟! فرض کن تو سطر اول ال سی دی بخواییم مثلا ناممون با حرف فارسی از چپ وارد بشه و تو سطر دوم شماره دانشجوییمون با حرف فارسی از راست به چپ وارد بشه. تعداد حروفمون هم بیشتر از 8 کاراکتر میشه. راه حلش چیه؟ اصلا امکانش وجود داره که کاراکترمون رو چاپ نکنیم و بریزیش تو تابع sprintf و ازونجا چاپش کنیم؟
نویسنده این مطلب
سلام
نمیشه.
مگه این که بخوای کلک رشتی بزنی که اونم نمیشه
مهمان
سلام من یه برنامه نوشتم که اون چیزی که میخووامو نشون نمیده دلیلشم نمیدونم میشه بهم ایمیل بدین و کمکم کنید؟تا فردا بیشتر واسه ی ارائش مهلت ندارم
مهمان
با سلام
یه سوال از شما داشتم اگر لطف کنید و من رو راهنمایی کنید:
اگر قصد داشته باشیم در بسکام (AVR) ولتاژهایی رو با ولتاژ مشخصی بررسی کنیم( در ورودی ADC ) ، نحوه برنامه نویسی آن به چه صورت می شود؟
نویسنده این مطلب
سلام
بسکام کار نکردم
مهمان
باز هم ممنون از شما
مهمان
ببخشید حالا جدا از زبان بسکام میشه راهنماییم کنید؟
نویسنده این مطلب
خب مطلب آموزش ADC در سایت هستش – شما کدش رو مینویسی میگی اگه مقدار ولتاژ خونده شده از مقدار مد نظررت بیشتر یا کمتر شد فلان کارو بکن.
مهمان
ببخشید اگر چند تا ولتاژ شاخص داشته باشیم باید از look up table استفاده کنم؟
نویسنده این مطلب
جدول لوکاپ نمیدونم چیه – اسمش آشناس ولی چیزی خاطر ندارم.
مهمان
سلام ممنون از اموزش ها و سایت خوبتون یه سؤال داشتم… میشه با اردوینو هم روی ال سی دی فارسی نوشت؟
نویسنده این مطلب
سلام
مطلبش در سایت هستش.
مهمان
آقا دمت گرم. آموزشت خیلی خوب بود. سالاری به مولا. ایشالا همیشه موفق باشی
مهمان
سلام مهندس ,خسته نباشی
مهندس واسه ال سی دی ۲۰×۴ همین کتابخانه که داخل کدویژن هست کار میکنه دیگه!؟
نویسنده این مطلب
سلام
باس کار کنه
مهمان
خیییییییییییییییییییییییییییییییییییییلی عااااااااااااااااااااااااااااالی بود . من خیلی دنبال متن فارسی روی ال سی دی گشتم ولی هیچ جا مثل شما کامل توضیح نداده بود .من تونستم اسمم رو روی ال سی دی بنویسم .هووووووووووووووووووووووووووووووووووووووراااااااااااااااااااااااا
مهمان
سلام. مطالبتون فوق العاده عالیه. تبریک می گم به شما که اینقدر فعال و باهوش هستین.
در رابطه با برنامه بالا یک سوال داشتم/ اگه لطف کنین این خط از برنامه رو توضیح بدین من درس متوجه نشدم این خط دقیقا چکار میکنه با تشکر فراوان.
a=(kaleme_to_karakter<<3)|0x40;
هم چنین علامت << و | به چه معناست؟
نویسنده این مطلب
سلام
والا تابع define_char رو قبلا یکی از دوستان پرسد گفتم اطلاع ندارم و باید دیتاشیت LCD کاراکتری رو نگاه کنید
ولی علامت < < و >> برا شیفت دادن اعداد هستش و | و & هم برا اور و اند بیتی متغییر ها هستن که میتونید از آموزش های توی نت استفاده کنید و دربارشون مطالعه کنید.
مهمان
a=(kaleme_to_karakter<<3)|0x40;
سلام بیزحمت لطفا این کادر رو توضیح بدین
متشکرم ,سایت خیلی عالی دارین
نویسنده این مطلب
سلام
خاطرم نیست متاسفانه
دیتاشیت lcd کاراکتری رو مطالعه کنید.
مهمان
من برنامه ای که شما تو فایل قرار دادیدو وقتی میخوام تو کدویژن کامپایل کنم با این که تغییری تو برنامه ندادم ارور میده:
‘undefined symbol ‘lcd_write_byte
function argument #1 of type ‘flash byte [8]’ is incompatible with required parameter of type ‘unsigned char*’
نویسنده این مطلب
سلام
1-اگه همین پروژه رو دانلود میکنی و کامپایلش میکنی و این ارور رو میده : کدویژنت باید مشکل داشته باشه—ببین کرکش سالمه – من همین الان تست کردم مشکلی نبود
2-اگه کدهای پروژه رو کپی میکنی و در یه پروژه جدید قرار میدی و کامپایل میکنی این ارور رو میده >>> بازم ببین کجا سوتی دادی و یا تغییرات دادی چون به این طریق هم الان تست کردم و ارور نداد
3-اگه میخوای بیا تا از طریق TeamViewer مشکلت رو حل کنم(نرم افزارش تو نت هستش)
مهمان
ممنون بابت توضیحاتتون
مهمان
ممنون
مهمان
سلام، ممنون از پروژه کاملتون. میشه همینو با ربان اسمبلی هم بذارید؟ ینی برنامه اسمبلیشو میخوام با ال سی دی و کی پد
نویسنده این مطلب
سلام
اسمبلی بلد نیستم
مهمان
سلام، ممنون از پروژه خوب و کامل تون. یه سوال داشتم: اگه بخوایم به اسمبلی بنویسیم. بعد از این که حافظه CGRAM رو مشخص و پر کردیم برای نمایش محتویات CGRAM چجوری باید دستور بدیم…. پیشاپیش از راهنمایی تون ممنون!
نویسنده این مطلب
سلام
والا دقیقا متوجه نشدم ولی ما با define_char کاراکترمون رو تو حافظه مربوطه ذخیره میکنیم و بعد با lcd_putchar نمایشش میدیم…..اگه بخوای اینو به اسمبلی بنویسی من بلد نیستم
مهمان
سلام ممنون از سایت خوبتون. چرا فایل پرتئوس باز نمیشه؟
نویسنده این مطلب
سلام
ورژن پروتئوس شما؟
برا من ۷٫۷
مهمان
سلام دوست عزیز . من پروژه رو دانلودکردم ولی میخوام متنی که نمایش میده چیز دیگه باشه . تغییرش میدم ولی تو پروتئوس تغییری ایجاد نمیشه . دلیشو به من میگی مرسی
نویسنده این مطلب
سلام
والا چی بگم….کد و شماتیک تغییر داده شده رو بفرست تا ببینم
مهمان
سلام
خ ممنون سرچ کردم, اما برنامه نمایش یه کاراکتر به خصوص رو پیدا نکردم, من فقط میخوام یه کلمه رو نشون بده نه هر چی رو که تایپ میکنم.
نویسنده این مطلب
سلام
led یا lcd???
برا lcd که آموزشش تو همین مطلب هست
برا led هم که گفتم….برنامه دات ماتریس تو نت زیاده….یکیش رو دانلود کن…مثلا یه متن ثابت نشون بده…بعد متن خودت رو جایگزینش کن
مهمان
اگه بخوام این کاراکتر ها رو روی led نمایش بدم جی؟
باید چیکار کنم؟میشه کمکم کنید؟
نویسنده این مطلب
هیچی میای و چند تا led رو میزاری کنار هم که میشه مثل دات ماتریس…..لذا به جای این که چند تا led رو کنار هم بزاریم میایم و از دات ماتریس استفاه میکنیم….
که پروژه هاش تو اینترنت هستش….اگه سرچ کنی “پروژه نمایش متن در دات ماتریس” یه چیزایی گیرت میاد…..فک کنم تو سایت گزاشته باشم یه چیزایی….البته مطمئن نیستم
مهمان
سلام … خسته نباشید
من یک LCD 16 *2 با Atmega 16 دارم
می خوام حروف رو نمایش بده
همین برنامه شما رو پروگرم کردم
ولی LCD هیجی نشون نمیده
چندتا دیگه هم عوض کردم ولی LCD هیچی نشون نمیده
میشه راهنمایی کنید من رو
مرسی ؟
نویسنده این مطلب
سلام
۱) Lcd ایت سوخته…(LCD رو عوض کن ببین درست میشه….)
۳) میکروت سوخته(اگه میکرو پروگرام بشه یعنی سالمه)
۴) اتصالات اشتباه هستش.(به احتمال زیاد مشکل همینه)
۵) تو اتصالات قطعی وجود داره
۶) ولتاژ مدار ۵ ولت نیست(ولتاژ مدار و LCD باید ۵ ولت باشه)
مهمان
هم تو و هم اون بابا دستتون مریزاد
مهمان
اموزش خوبی بود ممنون . ولی من یه مشکل داشتم نمیدونم چطوری بایدحلش کرد . من میخواستم از کاراکتر های بیشتری استفاده کنم ولی از این روش که گفتین فقط میشه 8 تا حرف نوشت . اگه بگید چطوری میشه حروف بیشتری نوشت ممنون میشم باتشکر
نویسنده این مطلب
کاری نمیشه کرد…میتونید از LCD گرافیکی استفاده کنید
مهمان
میشه بگی چجوری فاصله بین حرفا رو ازبین ببریم!! ننویسه
ش ن ب ه
نویسنده این مطلب
این دیگه مشکل از lcd کاراکتری هستش…..چون اگه lcd رو از نزدیک نگاه کنی بین این کلماتی که گفتی …. چیزی برا روشن شدن وجود نداره تا بتونیم این کلمات فارسی رو به صورت پیوسته و به هم چسبیده نشون بدیم……(امید وارد فهمیده باشی منظورم رو)
—————–
در عوض میتونی از lcd گرافیکی استفاده کنی…..که مطالبش رو تو سایت گزاشتم.
مهمان
برنامه تعریف ی کارکتر رو نوشتم ولی پروتوس اجراش نمیکنه رو lcd چیزی نمایش نمیده!!! :؟ نمیدونم دیگه باید چیکار کنم!!
برنامه هم خطایی نداره
نویسنده این مطلب
پروژش رو که تو سایت پیوست کردم….
من خودم این پروژه رو هم تو عمل و هم تو پروتئوس تست کردم و جواب داده
مهمان
سلام
خیلی ممنون پروژه هاتون کمک خیلی خوبیه.
ولی لینک دانلود این یکی مشکل داره.
مهمان
سلام
خیلی ممنون پروژه هاتون خیلی کمک خوبیه.
ولی لینک دانلود این یکی مشکل داره.
نویسنده این مطلب
سلام
لینک تصحیح شد
مهمان
خیلی ممنونم ! آموزش ها واقعا عالین ! امیدوارم در تمام مراحل زندگی پیشرفت و تعالی داشته باشین !
نویسنده این مطلب
خواهش