سلام دوست عزیز باید تویه 8 تا بایت خالی که برای کاراکتر داخواه داده تعریفش کنی من توی ساپورت السیدی کاراکتریبا 4 بیت این کارو کردم ولی حروف فارسی اصلا زیبا در نمیاد چون کاراکتر کاراکتره وبین این کاراکتر ها تویه السیدی فاصله هست حروفی که به هم چسبیدن اصلا خوب در نمیاد
فهبنی صبرت علی عذابک فکیف اصبرعلی فراقک
گیرم که برعذاب توصبر کنم ،چگونه بر جدایی ات شکیبایی ورزم
برای فارسی نویسی در LCD بهتر ه از نوع گرافیکی اونها استفاده کنیم اون وقت با امکان نوشتن نقطه به نقطه ( point to point) میتونید یکی از فونتهای فارسی استلندارد رو توی اون پیاده ساری کنید look up table یه نرم افزاری هم هست بنام Fast LCD که کد هگز براتون میسازه برای پر کردن جدولتون . در نهایت هم باید ادیتور براش بنویسید . کار خوبی از کار در میاد من برای بزرگتر نوشتن روی LCD مجبور شدم که جدول و ادیتور بسازم البته برای حروف EN این کارو کردم . موفق باشی .
اینم برنامه و شماتیک پروژه ایجاد کاراکتر دلخواه بر روی LCD
مثال) اسم "حمید بادامی" را در داخل حافظهCGRAM ایجاد کرده و سپس آنرا بر روی LCDنمایش دهید.
در این مثال برای ایجاد هر یک از کاراکترها ، باید ابتدا برای هر کاراکتر یک ماتریس5*8 ترسیم نموده و کدهای آن را بدست آوریم. کدهای هر کاراکتر را به ترتیب در داخل رشته های DATA0 تا DATA7 می نویسیم . شما می توانید کدهای کاراکترهای دلخواه خود را پس از ایجاد ، به ترتیب در داخل این رشته ها قرار دهید .
ابتدای برنامه 8 رشته به نامهای DATA0 تاDATA7 وجود دارد که کدهای هر کاراکتر در داخل خانه های این رشته ها قرار دارد. تابع WRITE_CGRAMدیتا را در داخل حافظه CGRAM قرار می دهد. این تابع در آرگومان خود دو مقدار می گیرد که مقدار اول آدرس خانه ای از RAM که کدهای ایجاد شده در آن قرار دارد و مقدار دوم آدرس خانه ای از
CGRAM است که باید کدهای ایجاد شده در داخل آن نوشته شود.
WRITE_CGRAM(DATA0,0);
در این تابع ، DATA0 نام رشته ای است که کدهای ایجاد شده یک کاراکتر در داخل آن قرار دارند. دومین آرگومان این تابع آدرس خانه ای از CGRAM است که باید کدهای هر کاراکتر در آن نوشته شود. با استفاده از دستور CGRAM=(CG_code*8)+0x40 ما آدرس خانه ای که باید کدها در آن نوشته شود را بدست می آوریم.
تابع
lcd_write_byte ( )
جزء توابع کتابخانهlcd.h می باشد که دارای الگویی به شکل زیر است:
void lcd_write_byte(unsigned char addr,unsigned char data );
این تابع در داخل آرگومان دو عدد می گیرد که متغییر addr آدرس حافظه CGRAMو متغییر دوم دیتای کاراکترهای ایجاد شده می باشد .
با استفاده از توابع
WRITE_CGRAM(DATAX,X)
ما کاراکترها را در داخل حافظه CGRAM ایجاد می کنیم و با استفاده از تابع l
دیدگاه