سلام
من ميخواستم روي ال سي دي كاراكتري 2*16 متن فارسي بنويسم (در محيط برنامه نويسي بسكام ) ولي نتونستم :?or
كسي هست كه يك راه چاره سراغ داشته باشه ؟؟؟
سلام
من ميخواستم روي ال سي دي كاراكتري 2*16 متن فارسي بنويسم (در محيط برنامه نويسي بسكام ) ولي نتونستم :?or
كسي هست كه يك راه چاره سراغ داشته باشه ؟؟؟
با سلام دوسته عزيز
مي توني با ايجاد اطلاعات كاراكتري اون ها رو تو ال سي دي نمايش بدي
اطلاعات كاراكتري مانند نقشه فرش مي مونه تو تاپيك تابلو روان توضيح دادم
و هر سگمنت ال سي دي آدرس مشخصي داره مي توني با استفاده از ديتا شيت تو اين آدرس ها متن فارسي بنويسي (يا هر متن ديگه)
ديتا شيت بخون بعد من بقيه رو مي گم
سلام
برای فارسی نوشتن در lcd کارکتری مراحل زیر رو انجام بده
1 - از منوی tools گزینه lcd disainer رو انتخاب کن
2 در پنجره باز شده کارکتر مورد نظرت رو بساز
3- روی ok کلیک کن ، پنجره بسته میشود و یک خط کد مانند زیر به برنامه ات اضافه میشود که به جای علامت سوال باید یکی از اعداد بین صفر تا7 را قرار بدهی
Deflcdchar ?,1,14,20,4,4,4,4,4' replace ? with number (0-7)
4- بعد از انجام مراحل بالا با دستور زیر میتوانی کاراکتر خود را در محل دلخواه نشان دهی
lcd chr (?)
که علامت سوال همان عددی است که در مرحله قبل به جای علامت سوال گذاشتی
این مثال رو ببین
کد:$regfile = "m8def.dat" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.4 , Rs = Portd.5 Deflcdchar 0 , 1 , 14 , 20 , 4 , 4 , 4 , 4 , 4 ' replace ? with number (0-7) Deflcdchar 1 , 32 , 32 , 32 , 32 , 32 , 17 , 31 , 4 ' replace ? with number (0-7) Deflcdchar 2 , 32 , 32 , 32 , 5 , 31 , 16 , 16 , 32 ' replace ? with number (0-7) Locate 1 , 1 Lcd Chr(0) Locate 1 , 2 Lcd Chr(1) Locate 1 , 3 Lcd Chr(2) end
يه نكته رو در نظر داشته باشيد همه حروف فارسي توي يك كاركتر جا نميشن مثله ش
اينجا يه مثال توپ گذاشته ازش ميتونيد كمك بگيريد همه كاري بكنيد
http://www.mcselec.com/index.php?opt...=231&Itemid=57
چرا همه با بیسیک یاد میدن
یکی با c کامل توضیح بده
توی کدویژن شما باید کاراکتر دلخواه رو با نرم افزار زیر بسازید و کد اون رو تو برنامه استفاده کنی.
مثلا برای حرف "ب" اینطوری هست.
flash unsigned char char1[8] = { 0x0, 0x0, 0x0, 0x11, 0x11, 0xE, 0x0,0x4 };
علامت سوال رو تبدیل به یک عدد کن.
برنامه Lcd Char
lcd_write_byte در help کدویژن سرچ کنید توضیحات لازم رو داره.
نمونه یرنامه ای رو پیوست کردم که کاراکتر دلخواه منو نشون میده به مراحل کار توجه کنید و هرجا که لازمه تغیرش بدید. سوالی هم هست درخدمتم.
ویرایش توسط shahrivar88 : 26-03-2013 در ساعت 17:27
سلام
ممنون از پاسخ شما
از برنامه شما استفاده کردم خوب بود ولی شما برای ارسال و چاپ از توابع دیگه استفاد کردین
که با من فرق داشت البته همون توابعی که من بکار بردم ارور میداد و لی خوب فرقی هم نداره میشه کد ها و توابع شما هم استفاده کرد که ارور نمیده
باز ممنون از ارسالی شما و پاسختون .تست میکنم اگه مشکلی داشتم مزاحمت میشم
من از روشی که خود کدویژن گفته استفاده کردم کاراکتر هام رو هم با نرم افزار PicPars میسازم. تا حالا هم مشکلی نداشتم.
لینک دانلود.:
برنامه نویسی میکروکنترلرها - نرم افزار PicPars tools (ساخت کاراکتر های LCD و محاسبه مقامت)
ویرایش توسط shahrivar88 : 26-03-2013 در ساعت 23:13
سلام مجدد مهندس
یه زحمتی برات دارم
این فایل را بی زحمت یه چک بکن برنامه + فایل پروتوس هست در کدویژن
که برای ال سی دی 1100 نوشته شده من کامپایلش میکنم ارور میده لطف ببین مشکلی از کجاست؟
تشکر
http://s2.picofile.com/file/77045649...nokia.rar.html
ویرایش توسط CINAPA : 27-03-2013 در ساعت 00:54
البته کامپایلش تو کدوژن مشکلی نداره فقط توی پروتیوس ران نمیشه که مشکل از موجود نبودن درایور ال سی دیه pcf8814.dll حلش کنم میذارم.
ویرایش توسط shahrivar88 : 27-03-2013 در ساعت 02:26
C:\Program Files (x86)\Labcenter Electronics\Proteus 7 Professional\MODELS
فایل پیوست را باز کرده و در مسیر بالا قرار دهید پروتیوس هم بدون مشکل اجرا خواهد شد.
اینا هم هست پوشه دمو رو نگاه کن
درایور ها هم یادت نره مسیر بالا کپی کنی!!!
مهندس . اینا را که گذاشتی که مال من نبود این با میکر pic هست در صورتی که از من با مگا 32 بود خواهشن همون جا . هم فایل پروتوش هست و هم برنامش یه نگاه بنداز و چک کن . من چک میکنم تو کدویژن ارور میده ولی مشکلی تو پروتوس باش ندارم حلش کردی فقط فایل سورس شو برام بده تا بریزم تو مگا 32 .
یه سوال دیگه داشتم بابت اون برنامه قبلیت بیزحمت برای این تابع و دستوراتش توضیح بده که برای چی هست و اگه نباشه مشکل ایجاد میکنه ؟؟؟
-----------------------------------------------------------------------------
void define_char(byte flash *pc,byte char_code)
{
byte i,a;
a=(char_code<<3) | 0x40;
for (i=0; i<8; i++) lcd_write_byte(a++,*pc++);
}
-----------------------------------------------------------------------------
شرمنده انداختمت تو زحمت
سلام خوبی مهندس
جریان این توابع و دستوراتشو خودم فهمیدم فقط لطف کن و فایل سورس برنامه که بهت دادم را که برای میکر مگا 32 هست را چک کن و برام بزارش . ممنون
typedef unsigned char byte;
این خط یعنی واژه byte مث unsigned char عمل کند یعنی هرچی با بایت تعریف یشه مث اینه که با unsigned char تعریف شده.
void define_char(byte flash *pc,byte char_code)
این تابع کاراکتر نمایشی مارو توی متغیر byte char_code قرار میده ما هم متغیر byte char_code را ارسال میکنیم سمت ال سی دی
lcd_putchar(0);
این تابع هم که کاراکتر رو جهت نمایش با ال سی دی ارسال میکنه.
دیگه دقیقا از جزیات کار السیدی خبر ندارم که علتشو بدونم
flash byte char03[8]={31,31,0,0,0,16,24,14};
define_char(char03,2);
lcd_gotoxy(8,0);
lcd_putchar(2);
char03 توی 2 قرار میگیره
lcd_gotoxy(8,0);
lcd_putchar(2); بعد 2 ارسال شد جهت نمایش در مختصات 8و0
ویرایش توسط shahrivar88 : 27-03-2013 در ساعت 20:49