LCD گرافیکی یکی از مهم ترین پارامترهای موجود در طراحی انواع مدارات الکترونیکی پیچیده و حتی ساده است ، نمایش وضعیت و یا حاصل عملیات، در مداراتی که عملکرد ساده ای دارند با چند LED یا نهایتا استفاده از 7Segment مرتفع می شود. اما فکر کنید دستگاه شما باید تعداد پارامتر های زیادی را به نمایش بگذارد؛ در چنین دستگاه هایی ، دیگر نمی شود از LED یا LCD های کاراکتری استفاده کرد و نیاز است از یک LCD گرافیکی استفاده کنید.
شاید برای شما مفید باشد: آموزش AVR از 0 تا 100 به همراه جزوه PDF و ویدئو آموزشی
وقتی که به گزینه LCD های گرافیکی میرسیم ، تعداد انتخاب ها به شدت محدود می شود ، چرا که نمایشگر های موجود در بازار به شدت محدود هستند ، البته نه بازار جهانی بلکه بازار ایران ! علاوه بر محدودیت تنوع قیمت های نجومی آنها ، خیلی از مسائل را تحت شعاع قرار می دهد! و حتی ممکن است باعث کنسل شدن پروژه شود ، اما راه حل چیست ؟ ، برای یافتن پاسخ با سیسوگ همراه شوید.
راه حل ارزان
یکی از انتخاب ها برای کاهش هزینه نمایشگر استفاده از نمایشگرهایی است که در تعداد و تیراژ بالا تولید می شوند و کاربرد عمومی دارند نه تخصصی ، قطعا چنین نمایشگرهایی علاوه بر فراوانی دارای قیمت مناسبی نیز هستند. به عنوان نمونه می توان به نمایشگرهای موبایل اشاره کرد. که به سادگی در بازار قطعات موبایل قابل تهیه است و از قیمت مناسبی نیز برخوردار است. به عنوان نمونه نمایشگرهای موبایل N95 چینی که امروزه حتی در قطعه فروش های الکترونیکی هم می توان آنها را پیدا کرد. در این مقاله قصد داریم یک مدل دیگر از این LCD ها معرفی کنیم که دارای قیمت مناسبی است و به راحتی قابل تامین از بازار قطعات موبایل است.
معرفی LCD گرافیکی
غالب LCD گرافیکی های موجود در بازار الکترونیک از نوع تک رنگ پیکسلی هستند، یعنی تنها قادرند که وضعیت صفر یا یک را برای یک پیکسل به نمایش بگذارند ؛ غالبا راه اندازی LCD گرافیکی رنگی هزینه زیادی در بر خواهد داشت چرا که علاوه بر تهیه خود LCD نیاز است که کنترلر LCD را نیز تهیه کنید! اما استفاده از LCD های موبایل کمک می کند که علاوه بر کاهش هزینه ها دیگر نیازی به آیسی درایور نباشد چرا که درایور درون خود LCD تعبیه شده است و تنها نیاز به راه انداری دارد.
در این مقاله قصد داریم که LCD موبایل Nokia 1661 را راه اندازی کنیم، این نمایشگر یک نمایشگر از نوع TFT می باشد که قادر به پشتیبانی 65 هزار رنگ است و در اندازه 1.8 اینچ در دسترس است.
1 2 3 | Type TFT, 65K colors Size 1.8 inches, 10.2 cm2 (~21.0% screen-to-body ratio) Resolution 128 x 160 pixels (~114 ppi density) |
LCD گرافیکی را از کجا تهیه کنیم
نمایشگر Nokia 1661 را به راحتی می توانید از تمام فروشگاه های قطعات موبایل تهیه کنید، حدود یک ماه پیش (قبل از نگارش این مقاله) قیمت این نمایشگر حدود 12 هزار تومان بود و هم کنون (در زمان نگارش مقاله) حدود 23 هزار تومان است. حتی به صورت آنلاین با یک سرچ ساده می توانید آن را سفارش دهید و درب منزل دریافت کنید. اگر به هر دلیلی موفق نشدید نمایشگر Nokia 1661 را تهیه کنید ، می توانید از لیست زیر نمایشگر هر کدام از موبایل های معرفی شده را تهیه کنید چرا که LCD آنها یه صورت کامل با هم همخوانی دارد.
- Nokia 1661
- Nokia 1616
- Nokia 1662
- Nokia 1800
- Nokia 5030
- Nokia 100
- Nokia 101
- Nokia 112
- Nokia 113
- Nokia C1-00
- Nokia C1-01
- Nokia C1-02
- Nokia C1-03
- Nokia C2-00
- Nokia X1-01
و به راحتی نمایشگر مورد نظر را جایگزین کرد. توجه داشته باشید که تمام مدل های بالا از یک نوع LCD استفاده می کنند که از سوکت 12 پین استفاده می کند و مدل های زیر از سوکت 22 پایه (DF23-22) استفاده می کنند ، جز تغییر چینش پایه ها تمام جزییات راه اندازی مثل هم خواهد بود.
- Nokia 5070
- Nokia 5200
- Nokia 6060
- Nokia 6061
- Nokia 6070
- Nokia 6080
- Nokia 6085
- Nokia 6086
- Nokia 6101
- Nokia 6102
- Nokia 6103
- Nokia 6125
- Nokia 6136
- Nokia 6151
- Nokia 7360
استفاده زیاد این نوع LCD گرافیکی ،یاعث ایجاد دلگرمی می شود که به راحتی قابل تامین از بازار باشد.
توضیح خوب یکی از کاربرها(سینا) در خصوص تهیه این مدل نمایشگرها در بازار ایران:
تمام مدل های زیر با نام 1661 هستن تو بازار و اگه مدل دیگهای بگید نمیشناسن و تا اونجاییکه رفتم تو بازار و دیدم مدل تقلبینداره و حدود ۱۸ تا ۲۲ تومنه که بستگی به مارک تولید کننده داره و قیافش با c1 فرق داره ولی همه مدلهای زیر شکلشون یکسانه
Nokia 1661 , Nokia 1662 , Nokia 1616 , Nokia 5030 , Nokia 1800
و اما تمام مدل های زیر هم با نام c1-01 در بازار موجود هستند و طول کاورشون کمتره و مدل اصل و تقلبیدارن مدل اصل ۱۷ تا ۱۸ تومنه و تقلبی ۱۲ تومن
Nokia C1-01, Nokia C1-00, Nokia C1-03, Nokia X1-01, Nokia 101, Nokia C2-00, Nokia C1-02, Nokia 100, Nokia 113, Nokia 112, Nokia 108 Nokia 130 Single SIM
فقط دقت کنید مدل تقلبی مارک پشتش بی کیفیته و سر قرمز لیبلش کوچک تر و باریک تره حتما از جایی تهیه کنید که طرفخودش اینکاره باشه. اما مدل ۲۲پین که اطلاعات زیادی ازشندارم و لی همه مدلهای زیر به اسم مدل 5200 معروفن و باید حدود ۷ تا ۸ تومن تقلبیش و ۱۴ تا ۱ هم اصلش باشه
LCD گرافیکی و رابط سخت افزاری
تمام مدل های ذکر شده ، از کنترلر SPFD54124B استفاده می کنند، خوشبختانه رابط مورد استفاده در این کنترلر و البته این نوع سخت افزار رابط سریال است که برای راه اندازی نیاز به تعداد پایه زیادی نخواهد داشت ، اما متاسفانه از انتقال سریال 9 بیت فقط استفاده می کنند که باعث میشود نتوانیم از سخت افزار SPI موجود در AVR استفاده کنیم البته میکروکنترلرهای ARM غالبا از ارتباط 9 بیت سریال به صورت سخت افزاری پشتیبانی میکنند.
نکته مهم دیگری که باید به آن توجه کرد ، ولتاژ تغذیه این LCD گرافیکی است که فقط از 3.3 ولت پشتیبانی میکند البته دقت داشته باشید که حتما IO های آن نیز باید با ولتاژ 3.3 تحریک شوند در غیر این صورت کنترلر LCD صدمه خواهد دید.
اگر از مدلی استفاده می کنید که 12 عدد پایه دارد ، در تصویر زیر می توانید ترتیب پایه ها را مشاهده کنید.
و چنانچه از مدلی استفاده می کنید که دارای 22 عدد پایه است ، ترتیب پایه ها را می توانید در تصویر زیر مشاهده کنید.
همانطور که در دو تصویر فوق مشخص می شود به جز پایه های تغذیه و بک لایت ، در این مدل کنترلر نیاز به 4 پایه سیگنال داریم ، که مطابق معمول یکی برای ریست کنترلر و یکی به عنوان سیگنال انتخاب کننده است (CS) و یکی هم کلاک و دیگری هم ورودی دیتاست.
نمونه ساخته شده
نمونه تهیه شده برای استفاده در این راه اندازی ، در واقع LCD موبایل Nokia 1661 است که در عکس پشت روی آن را در تصویر مشاهده میکنید:
برای دسترسی ساده تر به پایه های LCD ، یک عدد برد راه انداز توسط سیسوگ طراحی شده است که در قسمت دانلود میتواند فایل PCB آن را دانلود کنید
دانلود و راه اندازی کتابخانه lcd گرافیکی
برای دانلود کتابخانه می توانید به گیت هاب سیسوگ مراجعه کنید و ریپوزیتوری Nokia-1616-1661-TFT-Library را دانلود کنید یا بر روی لینک قرار گرفته در قسمت دانلود ها کلیک کنید ، بعد از دریافت آخرین نسخه از کتابخانه ، اولین قدم تنظیم پایه های مورد استفاده جهت راه اندازی LCD است. برای این کار ابتدا خطوط زیر در فایل nokia1661_Hw.h را ویرایش کنید و هر پایه دلخواهی را که آزاد است می توانید انتخاب کنید.
1 2 3 4 5 6 7 | #define LCD_PORT PORTB #define LCD_DDR DDRB #define LCD_RST PINB1 #define LCD_CS PINB2 #define LCD_SDA PINB3 #define LCD_CLK PINB5 |
برای تعیین نوع میکروکنترلر می توانید با ویرایش فایل nokia1661_Hw.h و تغغیر وضعیت ماکروهای LCD_AVR_HW یا LCD_STM_HW نوع میکروکنترلر مورد استفاده خودتون رو انتخاب کنید. مثلا برای انتخاب AVR وضعیت را به شکل زیر تغییر می دهیم.
1 2 | #define LCD_AVR_HW 1 //#define LCD_STM_HW 1 |
بعد از تنظیم پایه های سخت افزار و اتصال سخت افزاری ماژول LCD به میکروکنترلر تنها کافی است با صدا زدن روال nlcdInit کنترلر 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 56 57 58 59 60 61 | #include <avr/io.h> #include <util/delay.h> #include <nokia1661_lcd_driver.h> #include <lcd_font5x7.h> int main(void) { nlcdInit(); nlcdSetBackgroundColor(LCD_VGA_RED); nlcdClear(); nlcdSetBackgroundColor(LCD_VGA_BLUE); nlcdClear(); nlcdSetBackgroundColor(LCD_VGA_GREEN); nlcdClear(); nlcdSetBackgroundColor(LCD_VGA_WHITE); nlcdSetFont(font5x7latcyr); nlcdClear(); nlcdGotoCharXY(1,1); nlcdStringP(LCD_VGA_RED, PSTR("Sisoog.Com")); _delay_ms(250); nlcdSetOrientation(LCD_ORIENTATION_90); nlcdGotoCharXY(1,1); nlcdStringP(LCD_VGA_GREEN, PSTR("Sisoog.Com")); _delay_ms(250); nlcdSetOrientation(LCD_ORIENTATION_180); nlcdGotoCharXY(1,1); nlcdStringP(LCD_VGA_BLUE, PSTR("Sisoog.Com")); _delay_ms(250); nlcdSetOrientation(LCD_ORIENTATION_270); nlcdGotoCharXY(1,1); nlcdStringP(LCD_VGA_PURPLE, PSTR("Sisoog.Com")); _delay_ms(250); nlcdSetOrientation(LCD_ORIENTATION_NORMAL); for(int i=0;i<32;i++) nlcdPixel(64+i,64,LCD_VGA_RED); for(int i=0;i<32;i++) nlcdPixel(64,64+i,LCD_VGA_PURPLE); for(int i=0;i<32;i++) nlcdPixel(64+i,64+31,LCD_VGA_BLUE); for(int i=0;i<32;i++) nlcdPixel(64+31,64+i,LCD_VGA_GREEN); while(1) { } return 0; } |
خروجی برنامه فوق را در تصویر زیر می توانید مشاهده کنید.
ورژن دوم کتابخانه
در ورژن جدید این کتابخانه ؛ تابعی برای خواندن رجیسترهای کنترلر LCD به آن اضافه شده که به سادگی قادر خواهید بود ID و رجیستر وضعیت LCD را قرائت کنید.
1 | void _nlcdRead(uint8_t Reg,uint8_t *Readbuffer,uint8_t NRead); |
پارامتر اول آدرس رجیستر مورد نظر است ؛ پارامتر اشاره گر به حافظه ای است که داده ها باید درون آن ذخیره شوند و پارامتر آخر هم تعداد بایت هایی است که باید خوانده شود. برای خواندن رجیستر ID به شکل زیر از تابع استفاده خواهیم کرد.
1 2 | uint8_t ReadID[3] = {0}; _nlcdRead(0x04,ReadID,3); /* Read Display ID */ |
سلام میشه از این کتابخونه توی ال سی دی C2-03/C2-05 استفاده کرد؟
لطفا راهنمایی کنید و پیامم حذف نکنید
سلام روزتون بخیر این مطلب برای خیلی وقت پیشه
فکر کنم باید تست کنید نمیشه الان گفت کار میکنه یا نه فکر میکنم ۵۰ درصد احتمال کارکرد داشته باشه
سلام
من برای کدویژن میخوام استفاده کنم آیا کسی تا به حال تبدیل کرده یا استفاده کرده؟
سلام وقت بخیر
میشه از این کد توی ال سی دی 5800 که 3.2 اینچ استفاده کرد
اگه میشه ممنون میشم راهنمایی کنید
سلام دوست عزیز
این کد که هیچی ولی فکر نمیکنم این مدل LCD رو بشه با میکروکنترلر درایو کرد
لینک زیر رو ببینید
https://forums.raspberrypi.com/viewtopic.php?t=46413
سلام وقت بخیر میشه از این کتابخونه واسه LCD 5800 استفاده کرد؟
3.2 اینچی هستش خیلی نیاز به همچین دیس پلی دارم ممنون میشم راهنماییم کنید یا اگه کد خاصی داره یا شماتیک خاصی اون رو به ایمیلم ارسال کنید
سپاسگزارم.
سلام دوست عزیز
همونطور که توی کامنت قبلی ذکر کردم بنظر نمیاد بشه این مدل نمایشگر رو با میکرو درایو کرد ولی خیلی مدل LCD های با ابعاد مورد نظر هست که هم از طریق پروتکل SPI و هم پارالل بتونید درایو کنید البته اگر ابعاد نمایشگر مدنظر باشه
لینک زیر رو ببینید
https://isee.sisoog.com/products?filters=%7B%22search_phrase%22%3A%22TFT+%26+3.2%22%7D
سلام
وقت بخی
امکان تغییر سایز font وجود داره
اگر هست چطور میشه سایز فونت رو تغییر داد
سلام دوست عزیز
متاسفانه فونت استفاده شده و متد استفاده اون این جازه رو نمیده
باید فونت با سایز دلخواه رو خودتون بسازید
سلام.از آموزش خوبتان سپاس گذارم.فقط من هنوز موفق به راه اندازی این کتابخانه با stm32f1xxنشدم . استفاده از هدر این کتابخانه برای من خطا میدهد مثل نوشتن این خط (include “LCD/nokia1661_lcd_driver.h#”) . اگر ممکن هست راهنمایی بفرمایید؟
سلام دوست عزیز
امکانش هست خطایی که میگیرد رو به اشتراک بگذارید ؟
احتمالا مسیر فایل ها مشکل دارند
من از این مدل استفاده کردم متوجه شد مجریان مصرفی بالایی دارد برسی کردم ال سی دی با یک میکرو stm32 جریانی حدود 70ma مقاومت بکلایت رو مقدار 22 اهم قرار دادم جریان کشی رسید به مقدار 40ma و نور مناسب بود بیشتر از این مقدار خوب نبود مقدار نورش هیچ دیتاشیتی پیدا نکردم که مقدار مقاومت بک لایت چقدر باشه که اسیب نبینه و نور مناسب فعلا 22 اهم دارم استفاده میکنم
یه ایده اگه یک گوشی پیدا کنم از روی اون متوجه شم جریان بک لایت یا ولتاژش چقدره
شما میدونید مقدارش رو ؟
سلام دوست عزیز
مقدار جریان رو توی دیتاشیت باید ببینید ولی از اونجایی که دیتاشیت مناسبی من هم پیدا نکردم فکر میکنم این مقدار رو به شکل تجربی میشه در نظر گرفت
سلام با stm8 هم کارمیکنه دیگه درسته؟؟
نه ولی راحت میتونید تغییرش بدید که کار کنه
سلام
باتشکر از مطلب جامع و مفیدتون
من این ال سی دی رو میخوام راه بندازم میتونین کمکم کنین؟
nokia c6-01
سوکتش 10*2 هست از مدل ffc fpc
سلام مهندس
از زحمات جنابعالی و به اشتراک گذاری کمال تشکر را دارم
پیشنهاد می شود این پروژه را بررسی کنید که مستقیم تصاویر jpg را نمایش می دهد
و اگر وقت داشتید برای lcd 1616-c1 تنظیم کنید
موضوع دیگر:
جهت افزایش سرعت اینجا مدار و روشی ارائه شده است که می توان با اتصال S RAM خارجی ظرفیت آن را بالا برد
این مدار برای پروژه های دیگر نیز مناسب خواهد بود
https://scienceprog.com/adding-external-memory-to-atmega128
سلام و تشکر از آموزش خوبتون ، من میخواهم که فونت رو یکم تغییر بدم ، چطور باید این کار رو بکنم ، کامنت ها رو که خوندم دیدم شما با نرم افزار BFC این فونت رو ساختید ، میشه یکم در موردش توضیح بدید
سلام دوست عزیز
متاسفانه سورس ها رو ندارم چون موضوع این فونت ها برمیگرده به بیش از ۷ سال پیش
یادمه نرم افزار BFC چون نسخه پولی داشت خروجی کامل نمیداد و نرم افزاری رو خودم نوشته بودم که فایل خروجی رو به شکل کامل ایجاد میکرد
نرم افزار رو میتوانید از لینک زیر دانلود کنید
http://www.iseasoft.com/font-editor/bitfontcreator-pro.html
سلام ، کتابخانه مربوط به esp8266 را دریافت کردم
خیلی هم خوب کار کرد ولی برای esp32 جواب نمیدهد ، میشه تغییرش بدی واسه esp32
با تشکر ، حتی اگر هزینه ای هم لازمه پرداخت میکنم
سلام .. کتابخانه مرتبط با esp8266 و آردوینو رو منتشر نکردین ؟
اوپس متاسفانه فراموش کردم – اینقدر کار زیاده که نمیدونم به کدوم باید برسم
بهم ایمیل بزنید تا براتون ارسال کنم
اتفاقا نوشتم و سرعت خیلی خوبی هم ازش گرفتم چون ۹ بیت رو به شکل سخت افزاری خود esp پشتیبانی میکنه
میشه آدرس ایمیلتون رو بدین ؟
یکی از توی برنامه ها برداشتم اما گویا اون نیست چون جواب ندادین
به zeus ات sisoog.com ارسال کنید 🙂
سلام بی زحمت کتابخونه اردوینو برای esp رو به ایمیل منم ارسال کنید،
متاسفانه آپدیتش نکردم و کدش رو فکر کنم گم کردم.
سلام خدمت زئوس خیلی خیلی خیلی بزرگ ، تو را خدا کار ما رو راه بنداز
من همه مراحل رو رفتم ولی توی کتابخانه lcd font 5*7 یه ارور داره
میگه که شما 13 بار این رو دیفاین کردی ولی من دست به کد نزدم
در ضمن برای میکرو های st استفاده میشه و در محیط stm32ide دارم کار میکنم
غیر از این هیچ مشکلی نیست
و اگر امکان داره بگید که چطوری میشه که یه عکس رو روی lcd نمایش داد
با تشکر از زحمات شبانه روزی و بی وقفه شما
سلام 🙂
ببخشید دیر پاسخ میدم -خیلی این روزها دارم با کارها دست و پنجه نرم میکنم
خوب این فایل فونت کجا ها اینکلود شدن ؟ احتمالا توی چند تا فایل سی باید اینکلود یا ممکنه یه فایل h اینکلود شده باشه که این خطا رو میده
برای نمایش عکس – اول لازمه که عکس رو به فریمت رنگی قابل نمایش برای lcd در بیارید – فریمت رنگی که نمایشگر پشتیبانی میکنه سیستم رنگی rgb565 هست یعنی برای هر پیکسل نیازه که 5+6+5 بیت دیتا ارسال بشه که میشه همون 16 بیت
نرم افزارهای زیادی هستن که این کار رو انجام میدن مثل image2lcd بعد از اون شما باید دیتای هر پیکسل رو جای خودش قرار بدید تا عکس شروع کنه به نمایش در اومدن به همین سادگی
سلام بر زئوس بزرگ?
امیدوارم هرجا هستی شاد و سلامت باشی کسب و کارتم پررونق . یه سوالی داشتم . من این کتابخونه رو هم پیدا کردم مثل اینکه ادافرویت برای این مدل lcd نوکیا نوشته . ولی هرچی وررفتم باهاش راه نیوفتاد . خواستم لینکو بزارم اگه وقت کردی یه نگاه بندازی ببینی میخوره به این lcd و می ارزه وقت بزارم روش تا بتونم راش بندازم یا نه .
https://github.com/fire0shadow/Adafruit-SPFD54124B
دمت گرم ❤️❤️❤️
سلام دوست عزیز
خوب این همین کنترلری است که توی همین پست راه اندازی کردیم 😐
از همین سورسی که توی مقاله هست میتونید استفاده کنید
زئوس جان تورو خدا ناراحت نشو به یه مشکلی خوردم نشد حلش کنم و نفهمیدم مشکل چیه و از کجا میادسر همین یه سرچی کردم و دیدم این کتابخونه هم هست( هرچند نتونستم راش بندازم)
تو این کتابخونه از یه display.print() ساده استفاده شده که هرچی داخلش بزاری ارور نمیده و پرینت میکنه . ولی تو سورس شما من یه هفتس دارم زور میزنم نتونستم یه متغییر int یا float رو پرینت کنم همش ارور میده که سایز __c مشخص نیست . باز ببخشید میدونم سرت شلوغه ولی هرچی گشتم به هیچی نرسیدم☹️☹️
سلام دوست عزیز
ناراحت چرا – خوشحال میشم اگه مشکلی هست رو بتونیم حل کنیم. با توضیحاتی که دادید فکر میکنم دارید اشتباه از دستور استفاده میکنید
توی آردوینو به دلیل این که یک فانکشن میتونه چندین آور رایت داشته باشه این قابلیتی که میگید وجود داره ولی توی سی امکان پذیر نیست
حالا برای این که مشکل رو حل کنیم اول باید ببینم چطور دستور رو استفاده کردید – میشه خط کدی که برای نمایش این اطلاعات استفاده کردید رو اینجا بگذارید ؟
https://s16.picofile.com/file/8422591826/problem.rar.html
سلام مجدد زئوس جان . داخل این فایل rar هم کد هام رو بصورت txt گذاشتم هم عکس که متغییر نوع int و float رو نمیتونه چاپ کنه . رمز هم نداره و اینکه درسته فک کنم دارم اشتباه ازش استفاده میکنم ولی نمیدونم اشتباه کجاشه.بیزحمت وقت کردی یه نگاه بنداز به منم یه توضیح بده چیکارش کنم . ممنون
سلام دوست عزیز
ببینید این توابعی که من آماده کردم فقط رشته چاپ میکنند وبرای این که عدد ها رو چاپ کنید نیازه اول به رشته تبدیلش کنید
برای تبدیل رشته هم میتونید از sprintf استفاده کنید.
سلام بر زئوس بزرگ . سوالی داشتم . این فونت رو با چی نوشتی تو کتابخونه؟ با چی میشه ادیتش کرد؟ ممنون میشم اگر مشکلی نیست بگی تا بتونم یکم فونتو انگولک کنم . تشکر فراوان ♥️♥️♥️♥️
سلام و درود دوست عزیز
امم برمیگرده به خیلی وقت پیش و درست یادم نیست ولی شما با استفاده از نرم افزار BitFontCreator میتونی یه فونت رو ایمپورت کنی و تغییر بدی و خروجی مناسب برای میکروکنترلر بگیری 🙂
سلام عزیز. دستت درد نکنه خیلی عالیه. فقط یه مشکلی داشتم . من lcd nokia c1-01 رو تهیه کردم . همون اگزمپل رو که داخل کتابخونه بود روی اردوینو uno ریختم ولی مشکل اینجاست که حروف رو نمینویسه!!! مربع رو میکشه, بک گراند هم عوض میکنه ولی هیچ نوشته ای نمینویسه!! حتی خالی فقط نوشته و کد های مربوط بهش رو آپلود کردم ولی باز نوشته نشون نمیده. ممنون میشم کمک کنید چیکارش کنم .
سلام فکر میکنم یکی دیگه از دوستان همین مشکل رو داشت و حلش کرد و هم سوالش توی کامنت ها هست و هم راه حلش – اگر اشتباه نکنم.
یه تغییر کوچولو توی کتابخانه باید بدید فکر میکنم بخاطر رجیسترهای متفاوت بود یا چیز دیگه درست یادم نیست.
سلام عزیز. ممنونم ازت . اون کامنتم که گفتید پیدا کردم خوندم و انجام دادم ولی مشکل هنوز پابرجا بود !!!!.خلاصه زدم تو کار ابتکار از اول عیب یابیش کردم تا رسیدم به فونت . به دلیلی که نمیدونم فونت رو که عوض کردم با یه مدل دیگه تو همون کتابخونه درست شد و حروف رو الان نشون میده . قربون دستت با ۴۰ تومن صاحب یه lcd گرافیکی با چند هزاررنگ شدم?. نمیدونی چقد دعای خیر پشتته?♥️
موفق و سرزنده باشی
:)) خوشحالم که خودت مشکل رو با ابتکار حل کردی
و ممنونم که اطلاع دادی
+ متشکرم خوشحال میشم اگر کمکی کرده باشم ، سلامت و پیروز باشی دوست عزیز
لینک دانلود کتابخانه صحیحه ؟
بله نباید مشکلی داشته باشه
سلام بر زئوس بزرگ
من مثال آردینو رو برای برد خودم باز کردم موقع کامپایل eRROR داد
Arduino: 1.8.5 (Windows 7), Board: “Generic STM32F103C series, STM32F103C8 (20k RAM. 64k Flash), STM32duino bootloader, 72Mhz (Normal), Smallest (default)”
sketch\nokia1661_lcd_driver.c:21:24: fatal error: util/delay.h: No such file or directory
#include
^
compilation terminated.
exit status 1
Error compiling for board Generic STM32F103C series.
This report would have more information with
“Show verbose output during compilation”
option enabled in File -> Preferences.
سلام دوست عزیز
من مثال آردوینو رو برای برد های nano , uno نوشتم و احتمالا باید روی برد شما که stm است مشکل داشته باشه مگر این که توابع رو جایگزین کنید.
الان هم داره به کتابخانه util/delay.h گیر میده که مسیرش رو پیدا نمیکنه – این کتابخونه برای ایجاد تاخیر توی avr هست
سلام
بله شما درست میگید.
من اکثر مثال ها رو برای برد uno میبینم میام برد رو تغییر میدم مثلا همون مثال برای mega میگه که با برد شما سازگار نیست.
مگه کتابخانه ها برای برد های مختلف فرق میکنن؟
یعنی برای هر برد باید یک کتابخانه جدا پیدا کرد ؟
فقط کتابخانه های عمومی روی همه آردینو ها جواب میدن؟
اگه اینطوره چطور بفهمیم یک مثال یا کتابخانه برای چه بردی تهیه شده؟
ببخشید زیاد می پرسمپ. :))
سلام نه خوب یه مقدار توضیحش پیچیده است
شما از این کتابخانه میتونید برای کامپایل روی همه مدل های مبتنی بر avr استفاده کنید چون هدر ها و کتابخانه ها متفاوت هستند
البته چون من این کتابخانه رو با استفاده از کتابخانه های avr نوشتم و برای پورت کردن روی آردوینو از همونا استفاده کردم –
اگر با استفاده از کتابخانه های آردوینو نوشته بودم این مشکلات برای تغییر برد وجود نمی داشت ولی اون موقع سرعت کم می شد.
سلام و تشکر فراوان از شما دوست عزیز
میخواستم بگم که چطور میتونیم یه عکس رو روی lcdنمایش بدیم
خواهشن کمکم کن،خیلی عجله دارم واسه همچین کاری
امید دارم همیشه موفق و جیبت پر پول باشه
اوپس ببخشید ولی فکر کنم جوابتون رو دادم توی کامنت قبلی
درود
یه نکته ای در رابطه با ال سی دی هایی مثل nokia c1-00 هستش که دستور SPFD54124B_CMD_NOP رو اجرا نمیکنن و این دستور باعث میشه که دیتا روی ال سی دی بهم بریزه . البته برای ال سی دی nokia 1616 مشکلی نداره و کار میکنه اما توی ال سی دی nokia c1-00 وقتی دستور
nlcdStringP(LCD_VGA_RED, PSTR(“Sisoog.Com”));
اجرا بشه کلمه sisoog.com رو بدرستی نمایش نمیده که باید این خط _nlcdSendCmd(SPFD54124B_CMD_NOP); تو تابع nlcdclear() حذف بشه تا برنامه بدرستی کار کنه .
بعد همونطور که دوستان قبلا تو نظرات گفتن تو ال سی دی nokia c1-00 برای اینکه مربع وسط صفحه رسم بشه این تابع هم باید به این شکل باشه:
void nlcdPixel(uint8_t x, uint8_t y,rgb_color16bit color)
{
_nlcdCmd1616(SPFD54124B_CMD_CASET, x, x); // column start/end
_nlcdCmd1616(SPFD54124B_CMD_RASET, y, y); // page start/end
_nlcdSendCmd(SPFD54124B_CMD_RAMWR); // RAMWR
_nlcdSendData(color >> 8);
_nlcdSendData(color & 0xFF);
سلام دوست عزیز ممنون برای اطلاع رسانی این موضوع
درود
میخواستم بدونم تو esp8266 برای مد 9 بیتی spi برای ارسال دیتا به ال سی دی باید چه دستوری رو بکار برد؟
با کتابخونه spi.h وقتی دستور ارسال spi رو میزنم اصلا ال سی دی راه نمی افته … قبلا با spi نرم افزاری تو esp8266 تست شد ولی سرعت ارسال اطلاعات خیلی پایین هستش .
فکر نمیکنم توی آردوینو چیزی براش پیدا کنید و باید خوتون با استفاده از یوزرمنوالش بنویسید
سلام .
جناب زئوس وقت بخیر .
من روی این کتابخانه کار کردم .
فونتش و سرعتش رو تغیردادم و یک فونت فارسی براش تهیه کردم تصاویرش توی وبلاگم هست خوشحال میشم یه نگاهی بهش بندازید و نظرتون رو بگید
با سپاس فراوان بابت سایت بسیار خوبی که دارید .
اینجاست :
http://dastsazeman.blogfa.com/post/20
سلام – خوب نتایج جالب بود فونت ها رو خوب پیاده سازی کردید فارسی منظورمه – طول حروف داینامیکه یا ثابت هست ؟ البته باید اشاره کنم که این نمایشگر رو با سرعت ۶۰ فریم در ثانیه هم راه اندازی کردم(با سخت افزار esp) ولی باید فرصت بشه منتشر کنم و البته اگر هنر کنم بتونم ورژن راه اندازی با spi سخت افزاری ۸ بیتی رو هم آموزش میدم که دوستان بتونن نتایج بهتری بگیرن در مورد سخت افزار 🙂 – خوشحالم که به نتایج مطلوبتون رسیدید ولی هیجان انگیز تر میشد که اگه رایگان منتشر میکردید تا دوستان هم بتونن نهایت استفاده رو ببرند :دی (لینوس تولدورز {خالق لینوکس} یه جایی گفت اگه کرنل رو پولی میکرد احتمالا کسی امروز لینوکس رو نمیشناخت)
و چیزی که خوشم اومد استفاده تون از GCC بود برای پلتفرم های مختلف
سپاس از لطفتون .
فونتش از اون کارایی که خودم از انجامش احساس رضایت دارم. در واقع دغدغه های خودم رو روی فونت پیاده کردم .
فونت از نوع دینامیکه با طول متغیر . البته با همین ساختار میشه فونت با طول ثابت براش درست کرد .
کار شما درسته …….60 فریم خیلی خوبه !!!!!!!! من با stm32f0xx به سرعت حدود 30 فریم رسیدم .ولی با stm32f1xx به نتیجه مطلوبی نرسیدم با اینکه کلاکش 1.5 برابر m0 هست .اونم به خاطر اینکه,واحد spi stm32f1xx فقط 8و16 بیت رو ساپورت میکنه ( واقعا این قسمتش ناامید کننده ست )
ولی یک موردی در مورد سرعت رفرش هست ،اونم اینه که به نظرم رسید سرعت آپدیت تصویر روی ال سی دی از رم داخلیش کمتر از این مقدار هست .یعنی درست هست که مثلا با کلاک 20 مگاهرتز داده ها توی حافظه تصویرش نوشته میشه ولی انگار دیرتر نمایش داده میشه .!!!!….تصویر اون سرعت رو نداره .
من یک همچین حسی دارم .
در مورد رایگان بودنش : راستش شرایطم یک جوریه که یا باید اینجوری ارائه بدم یا اینکه کلا بزارمش کنار …از این هم بگذریم که استقبال نشد ازش و تا الان فقط 1 نفر کتابخانه رو تهیه کرده !!!
ولی واقعا قیمتی هم ندار ه ، تقریبا هزینه خرید 2 عدد پفکه ……
gcc واقعا چیز خوبیه …..یک مورد بود که کیل جواب نمیداد ولی gcc راحت ساپورت میکرد . با gcc توی همین سایت شما آشنا شدم و بابتش از شماتشکر ویژه دارم .
:)))
فکر میکردم توی f0 هم واحد spi فقط ۸ و ۱۶ رو داشته باشه – آیا اینطور نیست ؟!
خوب منم دقیقا همین فکر رو میکردم (این که سرعت بروز رسانی کمتر از سرعت دیتا است) ولی وقتی فیلم پخش کردم دیدم اوکیه
میدونید چیه توی فیلم پخش کردن تمام اجزاکه توی دو تا فریم عوض نمیشه تغییرات جزیی هست و برای همین به خوبی دیده میشه!!!
این که قیمتی نداره کاملا درسته و موافقم که قیمت پایینی است ولی چیزی که هست اینه که متن باز کردنش کمک میکنه بیشتر دیده بشه و استقبال بیشتری هم ازش بشه و این ممکنه برای شما بهتر باشه
اگر دوست داشتید متن باز چیزی رو منتشر کنید میتونید روی رسانه سیسوگ حساب کنید 🙂
سپاس بابت پیشنهادتون لطف دارید .
زئوس گرامی ولی اینکه سورسش بازه !!!!!! فقط رایگان نیست .
در مورد طول بیت spi :خیر …stm32 های سری cortexM0 ، طول بیت 4,5,6,7,8,9,…….16 رو برای واحد spi ساپورت میکنه ورجیسترهای gpio اون هم دقیقا شبیه stm32f4xx هست . فقط کلاکش از stm32f1xx پایینتر هست . در کل نسبت به سری f1xx میکروی هموار تری هست . به خصوص مدلهای stm32f072 که امکانات قابل توجهی داره. مثلا usb داخلی و از اون هم جالب ترHDMI CEC !!!!!
در مورد فیلم اگر آپدیت تصویر منطقه ای باشه و با یکسری ملاحظاتی مثل همون چیزی که شما فرمودید انجام بشه مشکلی نداره . ولی اگر بخواهید یک کلیپ نمایش بدید که لازم باشه کل تصویر رفرش بشه ، … فکر نکنم خوب در بیاد حتی با وجود سرعت رفرش 60 فریم در ثانیه . نظر شما چیه ؟
رفرش بشه
سلام
نه دیگه منظور از متن باز بودن یعنی یکی از مجوزهای متن باز مثل GPL یا MIT یا… رو داشته باشه – این فرق میکنه با این حالت که شما بعد از خرید سورس رو میدید نه کتابخانه رو ! در واقع منظور من از متن باز این بود.
جالبه دقت نکرده بودم – فکر کردم ساختار spi همشون ۸ بیت یا ۱۶ بیته چون تو رم افزار کیوب تنظیمی برای ۹ بیت نداشت این فکر رو کردم به دیتاشیت مراجعه نکردم.
من کلیپ نمایش دادم مشکلی نداره.
اتفاقا توی کیوب تنظیم 9 بیت برای میکروهای سری stmf0xx داره .
البته ال سی دی ها کیفیتهای متفاوت دارن ولی من با ال سی دی خودم انمیشن یک مستطیل متحرک 100*50 پیکسل درست کردم که 40 میلی ثانیه بعد از رسم ،پاکش میکردم و بلافاصله با یک مقدار جابه جای دوباره رسمش میکردم و مرتب اینکار رو تکرار کردم . با اینکه سرعت رفرش صفحه 30 فریم در ثانیه بود و این مستطیل هم خیلی کوچکتر از کل صفحه بود ولی باز یک نویز سفید وسط مستطیل ظاهر میشد.
راستی دستور خواندن رم تصویر توی این ال سی دی کار میکنه؟
یکی از ال سیدی های من به این دستور هیچ واکنشی نشون نمیده و یکی دیگه از ال سیدیهام کامل سفید میشه !!!!
شاید کیوب من قدیمی بوده !!شایدم دقت نکردم الان توی دیتاشیت رو دیدم بله حق با شماست واقعا عالیه که داره !
خوب فکر میکنم کار جابجایی رو اگر به این شکل که کل مربع رو پاک نکنید تنها قسمت های لازم رو پاک کنید و قسمت های جدید رو بکشید مشکل برطرف میشه مثل دقیقا توی فیلم !برای پخش فیلم فریم قبلی پاک نمیشه بلکه فریم جدید بهش اضافه میشه!
دستور خوندن کار میکنه من باهاش آیدی چیپ رو خوندم که توی مثال های کتابخانه هست ولی برای خوندن رم نمایشگر ازش استفاده نکردم – به نظر زیاد منطقی نیست این کار چون سرعت پایین میآد
آیدی چیپ رو بررسی کنید.
در ضمن با تغییر کلاک میکرو هیچ تغییری تو سرعت نمایش ندارم با کیل کار میکنم
چقدر فرکانس رو جابجا کردید
قطعا تاثیر داره – شاید یک جای کار رو اشتباه انجام میدید
من تو کیل فرکانسو ده مگ میدم با 72 مگ سرعت ثابته
فکر میکنم یه جای کار ملینگه
چون به هر حال فرکانس رابطه مستقیم با سرعت اجرای دستورات داره و غیر ممکنه که یه میکرو با چنین تغییر فرکانسی عملکرد یکسانی داشته باشه
سلام من راش انداختم ولی نمیتونم پیکسلارو کنترل کنم اون تابع که برای مقدارده پیکسل هاس کار نمیکنه مشکل از کجاس
منظورتون رو متوجه نشدم که گفتید نتونستید پیکسل ها رو کنترل کنید ؟
پس چطور راه اندازی کردید ؟
تابعی که باهاش پیکسلهارو بصورت تکی مقدار دعی میکنید واسه من کار نمیکنه
من مجددا کتابخانه رو چک کردم به خوبی کار میکرد و هیچ مشکلی نداشت
مشکل شما احتمالا به موضوع دیگری برمیگرده
استاد زئوس اگهامکان داره در اخر پست یکم هم در مورد راهاندازی ای که با esp8266 انجام دادید بنویسید
فکر کنم باید یه پست مجزا راجبش بنویسم – میذارم در دستور کار
ببخشید دوباره مزاحم میشم
اینم یه لایبرری برای پایتون
https://github.com/Muriukidavid/python-SPFD54124B
خواهش میکنم
ممنون برای لینک های مفیدتون :))
سلام با احترام فراوان 🙂
استاد زئوس من چند تا سوال برام پیش اومده
وقتی ال سی دیو از اردوینو جدا میکردم ال سی دی پاک میشد
سوالم اینه که ایا دیتا مرتبا ارسال میشه ؟ یا دیتای ارسال به کنترلر ال سی دی پس از دریافت لچ میشه ؟
کنترل ال سی دی چقدر از پردازشمیکرو رو درگیر میکنه؟
چون پروژه من یه سیکل بررسی شروط هم داره
و ازهمه مهم تر چطوری داخل این کتابخونه که معرفیکردم مثل کتابخونه خودتون میشه پایه هارو عوضکرد؟
و اینکه آیا کتابخونه پورت شده برای esp8266 کتابخونه اولیه یا دومیه؟
با تشکر
ببینید در واقع نمایشگر یه رم داخلی داره که تمام اطلاعات رو داخل اون نگه میداره و اصلا بعد از ارسال دیتا میکرو دیگه چیزی رو تکرار نمیکنه
این که میگید موقع جدا کردن اتصال نمایشگر پاک میشه ممکنه بخاطر نویز هایی باشه روی سیگنال های داده ایجاد میشه اگر نه فکر نمیکنم مشکلی از این بابت به وجود بیاد.
پس تنها درگیری میکروکنترلر هنگام رسم روی نمایشگره و بعد از اون دیگه میکرو ازاده
این کتابخونه رو بررسی نکردم – باید نگاه بندازم ببینم چطوره
در مورد esp من نمایشگر رو به شکل سخت افزاری راه اندازی کردم و سرعت نمایش روش خیلی بالاتره
این موردم به مدل 22 پین اضافه کنید لطفا
Nokia 2865 cdma
و البته اینو ؟
متوجه نشدم منظورتون چیه!
من لیست نمایشگر های هم خوان رو از تو یه نرم افزار برای تعمیر موبایل بود پیدا کردم میخواستم ببینم شما این مدل رو چطور پیدا کردید.
بله نرم افزاری که میفرمایید Nokia LCD Finder هست منم دارمش
من اینو از سایت پارس تل پیدا کردم
از این سایت متمئنم چون تا حالا چند ده بار ازش جنس زیاد خریدم نه خراب بود و نه اشتباه
بنده به حرفشون اطمینان دارم
آها بسیار عالی
من از پارس تل خرید کردم و راضی هم بودم 🙂
فکر میکنم دفترشون اصفهانه
لطفا به لیست 12 پین این دو موردم اضافه کنید اینا هم هست
Nokia 108
Nokia 130 Single SIM
اینا رو شما تست کردید ؟
نه بنده تست نکردم از دو تافروشگاه و یک تعمیر کارپرسیدم گفت اینا رو به جای هم استفاده میکنیم
در واقع یکسریال سی دیا برای یه مدلاست و یک سریش هم برای یه سری دیگه
مثالمیزنم
اینا مال ژوئن ۲۰۱۰ به بعده
Nokia X1-01
Nokia 101
Nokia C2-00
Nokia C1-02
Nokia 100
Nokia 113
Nokia 112
Nokia 108
Nokia 130 Single SIM
و اینا یکم قدیمی تره
Nokia 1661
Nokia 1616
Nokia 1662
Nokia 1800
Nokia 5030
از ۲۰۰۹به قبل
چیپ های کنترلر یکیه ولی سال تولید فرق داره و یکم هم تفاوت در شکل کلی ال سی دی هست
اون دوستمون هم که با ال سی دی c1 مشکل داشتن ال سی دیشون فیک بوده
چون مدل c1 فیکش ۶ تا ۸ هزارتومان ارزون تره ولی شکلش با اصلمو نمیزنه تفاوتش داخل لیبل محافظ هست که اصلش اون قسمت قرمزش بزرگ تره
چه جالب !!
نکات خوبی رو گفتید – الان کدوم مدل ها توی بازار موبایل ایران گیر میآد که به لیست اظافه شون کنیم
تمام مدل های زیر با نام 1661 هستن تو بازار و اگه مدل دیگهای بگید نمیشناسن و تا اونجاییکه رفتم تو بازار و دیدم مدل تقلبینداره و حدود ۱۸ تا ۲۲ تومنه که بستگی به مارک تولید کننده داره و قیافش با c1 فرق داره وولی همه مذلهای زیر شکلشون یکسانه
1661 Nokia
1662 Nokia
1616 Nokia
5030 Nokia
1800 Nokia
و اما تمام مدل های زیر هم با نام c1-01 در بازار موجود هستند و طول کاورشون کمتره و مدل اصل و تقلبیدارن
مدل اصل ۱۷ تا ۱۸ تومنه و تقلبی ۱۲ تومن
Nokia C1-01
Nokia C1-00
Nokia C1-03
Nokia X1-01
Nokia 101
Nokia C2-00
Nokia C1-02
Nokia 100
Nokia 113
Nokia 112
Nokia 108
Nokia 130 Single SIM
فقط دقت کنید مدل تقلبی مارک پشتش بی کیفیته و سر قرمز لیبلش کوچک تر و باریک تره
حتما از جایی تهیه کنید که طرفخودش اینکاره باشه
و اما مدل ۲۲پین که اطلاعات زیادی ازشندارم و لی همه مدلهای زیر به اسم مدل 5200 معروفن و باید حدود ۷ تا ۸ تومن تقلبیش و ۱۴ تا ۱۸ هم اصلش باشه
Nokia 5070
Nokia 5200
Nokia 6060
Nokia 6061
Nokia 6070
Nokia 6080
Nokia 6085
Nokia 6086
Nokia 6101
Nokia 6102
Nokia 6103
Nokia 6125
Nokia 6136
Nokia 6151
Nokia 7360
Nokia 2865 cdma
ممنونم برای توضیحات کاملتون
مناین توضیحات رو به پست (قسمت از کجا تهیه کنیم )اضافه کردم. برای کاربرهایی که میخوان تهیه کنن خیلی کمک کننده است.
استاد زئوس اگه امکان داره این هدربردو فایلاشو منتشر کنید بنده خیلی نیازش دارم
سلام – فایل های هدرش رو توی گیت های گذاشتم
https://github.com/Sisoog/Nokia-1616-1661-TFT-Library/tree/master/Hardware
از توجهتون تشکر میکنم 🙂
و برای تبدیل سطح منطقی هم از این دوم محصول میتونید استفاده کنید
https://shop.aftabrayaneh.com/4_BIT_Bidirectional_Voltage_Level_Txb0104_Cjmcu__AFTAB.html?search=txb
البطه این مورد برای فرکانسای خیلی بالا هست و اگر کارتون خیلی فریم داره استفاده کنید
https://shop.aftabrayaneh.com/Converters/Logic_Converter/Logic_Level_Converter_2__AFTAB.html
این یکی هم راه حل ارزان ولی اگه کارتون میخواید ارزون در بیاد همون مقاومت رو بزارید
بنده قصد تبلیغ هیچ وبسایتی رو ندارم اگه پیدا کردید از فروشگاه نزدیک به خودتون بگیرید
البطه خودم هنوز تست نکردم نتیجشو اعلام میکنم
ممنون برای پیشنهادتون – ولی مقداری گرونه
مقاومت من تست کردم به خوبی کار میکنه – البته شاید توی سرعت های بالا مشکل ساز بشه :/
دوستان توجه کنن که در کتابخانه Adafruit-SPFD54124B-master
فایل Adafruit_SPFD54124B.h رو با نت پد باز کنید و مقدار پیش فرض این دو خط رو به این مقدا تعییر بدید
#define SPFD54124B_LCDWIDTH 128
#define SPFD54124B_LCDHEIGHT 160
برنامه نویس تعدداد پیکسل رو دو سه پیکسل بیشتر کرده بود که در رسم مشکل درست میکرد
یا حق 🙂
ممنون – شما تست کردید کار میکنه ؟
بله دیشب تمام دستوراتو تست کردم به خوبی و کامل کار میکنه فقطسرعت رفرش صفحش از ۱۰ فریم بالا تر نمیره که فکر میکنم همینطور که گفتید بخاطر اینه که spi native avr هشت بیتی هست
متاسفانه دیگه نمیتونم تست کنم ال سی دی ضربه خورد و پیکسلاش ریخت
مدل تست شده مدل nokia 1661 اصل بود
چه خوب – بسیار عالی و ممنون برای وقتی که کذاشتید و اطلاعاتی که کامل کردید
ممنونم
استاد اموزش فارسی نویسی هم بدید عالی میشه
کلا منظورم هم داخل lcd است هم داخل ترمینال اردوینو
ده دوازده سال پیش یه کتابخونه برای این کار نوشته بودم
باید بگردم پیداش کنم 🙂
سلام دوستان عزیز مخصوصا استاد زئوس
استاد ایا این اطلاعات و کتابخونتون از این آدرسه؟
https://wiki.mcselec.com/bavr/Nokia_1616_display_library_-_128x160
و اینکه استاد بزرگ بنده یه کتابخونه تو گیتهاب پیدا کردم که از Adafruit GFX هم ساپورت میکنه 🙂
https://github.com/fire0shadow/Adafruit-SPFD54124B
اگه امکان داره برا ESP8266 و ESP32 پورتش کنید بنده اصلا از ساخت و پورت کردن کتابخونه سر در نمیارم
لینک اول بله درسته ولی لینک دوم رو الان میبینم
واقعا عالیه :)) ممنون برای معرفی دیگه دوستان آردوینو مشکل نخواهد داشت 🙂
برای esp8266 قبلا پورتش کردم و هنوز فرصت نشده که بذارمش توی سایت
انشالله فرصت بشه میذارم
سلام بر زئوس عزیز
من تازه از AVR به دنیای STM32 مهاجرت کردم قبلا با AVR این lcd رو راه اندازی کردم و الان میخام به STM32 هم همین کار رو انجام بدم.
کامنت ها رو خوندم دوستان درباره کتابخانه STM32 صحبت کردن میخواستم بدونم زحمت این کتابخانه هم کشیدین یا اینکه چطور کتابخانه فعلی رو برای STM32 تبدیل کنم.
تشکر از وقتی که می گدارید.
من با keil کار میکنم.
سلام دوست عزیز
بله این کتابخانه رو هم برای stm32 پورت کردیم ولی هنوز فرصت انتشار پیش نیامده
برای پورت تنها لازمه اون توابعی که خروجی ها رو صفر و یک یک میکنه رو بازنویسی کنید به همین سادگی
سلام مجدد
شما استاد ما هستید.
با کد هایی که فرمودید کار کردیم و نتیجه نگرفتیم.(کلی error دریافت کردیم ) ):
همچنان منتظر نشر کتابخانه توسط استاد عزیز هستیم.
سلام دوست عزیز
بله حتما ، اجازه بدید امروز یا فردا منتشر میکنم کتابخونه رو برای STM32
خیلی خیلی ممنون
فقط اگه با keil کار میکیند عالی میشه
سلام – خواهش میکنم ولی من keil ندارم و کد رو با GCC آماده میکنم
البته فرقی نمیکنه و کتابخانه احتمالا بدون تغییر قابل استفاده است.
با عرض سلام خدمت دوست و استاد گرامی
همچنان منتظر کتابخانه stm32 هستیم.
خدا قوت
سلام دوست عزیز
کتابخانه آپدیت شد و در حال حاظر قادر به پشتیبانی از STM32Fxx هست به علاوه بر این که با تمام کتابخانه های HAL/LL/SPL نیز قابل استفاده است.
سمپل کد هم برای GCC روی گیت هاب قرار گرفت که به سادگی قابل استفاده بر روی Keil نیز می باشد.
موفق باشید ِ در ضمن توضیحات پست هم آپدیت شد که توصیه میکنم مطالعه کنید.قسمت دانلود و راه اندازی کتابخانه lcd گرافیکی
سلام
استاد طبق راهنمایی انجام دادم شد کلی ERRor :((
لطفا در صورت امکان راهنمایی کنید.
تشکر
*** Using Compiler ‘V5.06 update 6 (build 750)’, folder: ‘C:\Keil_v5\ARM\ARMCC\Bin’
Rebuild target ‘My Lcd Nokia 1616’
assembling startup_stm32f103xb.s…
compiling stm32f1xx_it.c…
compiling stm32f1xx_hal_msp.c…
compiling main.c…
C:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h(133): warning: #47-D: incompatible redefinition of macro “HSE_STARTUP_TIMEOUT” (declared at line 105 of “../Inc/stm32f1xx_hal_conf.h”)
#define HSE_STARTUP_TIMEOUT ((uint16_t)0x0500) /*!< Time out for HSE start up */
C:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h(163): warning: #47-D: incompatible redefinition of macro "__MPU_PRESENT" (declared at line 69 of "../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h")
#define __MPU_PRESENT 0 /*!< Other STM32 devices does not provide an MPU */
C:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h(165): warning: #47-D: incompatible redefinition of macro "__NVIC_PRIO_BITS" (declared at line 70 of "../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h")
#define __NVIC_PRIO_BITS 4 /*!< STM32 uses 4 Bits for the Priority Levels */
C:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h(166): warning: #47-D: incompatible redefinition of macro "__Vendor_SysTickConfig" (declared at line 71 of "../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h")
#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */
C:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h(175): error: #101: "NonMaskableInt_IRQn" has already been declared in the current scope
NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */
C:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h(176): error: #101: "MemoryManagement_IRQn" has already been declared in the current scope
MemoryManagement_IRQn = -12, /*!< 4 Cortex-M3 Memory Management Interrupt */
C:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h(177): error: #101: "BusFault_IRQn" has already been declared in the current scope
BusFault_IRQn = -11, /*!< 5 Cortex-M3 Bus Fault Interrupt */
C:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h(178): error: #101: "UsageFault_IRQn" has already been declared in the current scope
UsageFault_IRQn = -10, /*!< 6 Cortex-M3 Usage Fault Interrupt */
C:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h(179): error: #101: "SVCall_IRQn" has already been declared in the current scope
SVCall_IRQn = -5, /*!< 11 Cortex-M3 SV Call Interrupt */
C:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h(180): error: #101: "DebugMonitor_IRQn" has already been declared in the current scope
DebugMonitor_IRQn = -4, /*!< 12 Cortex-M3 Debug Monitor Interrupt */
C:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h(181): error: #101: "PendSV_IRQn" has already been declared in the current scope
PendSV_IRQn = -2, /*!< 14 Cortex-M3 Pend SV Interrupt */
C:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h(182): error: #101: "SysTick_IRQn" has already been declared in the current scope
SysTick_IRQn = -1, /*!< 15 Cortex-M3 System Tick Interrupt */
C:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h(185): error: #101: "WWDG_IRQn" has already been declared in the current scope
WWDG_IRQn = 0, /*!< Window WatchDog Interrupt */
C:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h(186): error: #101: "PVD_IRQn" has already been declared in the current scope
PVD_IRQn = 1, /*!< PVD through EXTI Line detection Interrupt */
C:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h(187): error: #101: "TAMPER_IRQn" has already been declared in the current scope
TAMPER_IRQn = 2, /*!< Tamper Interrupt */
C:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h(188): error: #101: "RTC_IRQn" has already been declared in the current scope
RTC_IRQn = 3, /*!< RTC global Interrupt */
C:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h(189): error: #101: "FLASH_IRQn" has already been declared in the current scope
FLASH_IRQn = 4, /*!< FLASH global Interrupt */
C:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h(190): error: #101: "RCC_IRQn" has already been declared in the current scope
RCC_IRQn = 5, /*!< RCC global Interrupt */
C:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h(191): error: #101: "EXTI0_IRQn" has already been declared in the current scope
EXTI0_IRQn = 6, /*!< EXTI Line0 Interrupt */
C:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h(192): error: #101: "EXTI1_IRQn" has already been declared in the current scope
EXTI1_IRQn = 7, /*!< EXTI Line1 Interrupt */
C:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h(193): error: #101: "EXTI2_IRQn" has already been declared in the current scope
EXTI2_IRQn = 8, /*!< EXTI Line2 Interrupt */
C:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h(194): error: #101: "EXTI3_IRQn" has already been declared in the current scope
EXTI3_IRQn = 9, /*!< EXTI Line3 Interrupt */
C:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h(195): error: #101: "EXTI4_IRQn" has already been declared in the current scope
EXTI4_IRQn = 10, /*!< EXTI Line4 Interrupt */
C:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h(196): error: #101: "DMA1_Channel1_IRQn" has already been declared in the current scope
DMA1_Channel1_IRQn = 11, /*!< DMA1 Channel 1 global Interrupt */
C:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h(197): error: #101: "DMA1_Channel2_IRQn" has already been declared in the current scope
DMA1_Channel2_IRQn = 12, /*!< DMA1 Channel 2 global Interrupt */
C:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h(198): error: #101: "DMA1_Channel3_IRQn" has already been declared in the current scope
DMA1_Channel3_IRQn = 13, /*!< DMA1 Channel 3 global Interrupt */
C:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h(199): error: #101: "DMA1_Channel4_IRQn" has already been declared in the current scope
DMA1_Channel4_IRQn = 14, /*!< DMA1 Channel 4 global Interrupt */
C:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h(200): error: #101: "DMA1_Channel5_IRQn" has already been declared in the current scope
DMA1_Channel5_IRQn = 15, /*!< DMA1 Channel 5 global Interrupt */
C:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h(201): error: #101: "DMA1_Channel6_IRQn" has already been declared in the current scope
DMA1_Channel6_IRQn = 16, /*!< DMA1 Channel 6 global Interrupt */
C:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h(202): error: #101: "DMA1_Channel7_IRQn" has already been declared in the current scope
DMA1_Channel7_IRQn = 17, /*!< DMA1 Channel 7 global Interrupt */
C:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h(249): error: #101: "ADC1_2_IRQn" has already been declared in the current scope
ADC1_2_IRQn = 18, /*!< ADC1 and ADC2 global Interrupt */
C:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h(250): error: #101: "USB_HP_CAN1_TX_IRQn" has already been declared in the current scope
USB_HP_CAN1_TX_IRQn = 19, /*!< USB Device High Priority or CAN1 TX Interrupts */
C:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h(251): error: #101: "USB_LP_CAN1_RX0_IRQn" has already been declared in the current scope
USB_LP_CAN1_RX0_IRQn = 20, /*!< USB Device Low Priority or CAN1 RX0 Interrupts */
C:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h(252): error: #101: "CAN1_RX1_IRQn" has already been declared in the current scope
CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */
../Src/main.c: 4 warnings, 30 errors
compiling nokia1661_lcd_driver.c…
compiling stm32f1xx_hal_rcc_ex.c…
compiling stm32f1xx_hal_pwr.c…
compiling stm32f1xx_hal_gpio_ex.c…
compiling stm32f1xx_hal_tim.c…
compiling stm32f1xx_hal_gpio.c…
compiling stm32f1xx_hal_flash.c…
compiling stm32f1xx_hal_flash_ex.c…
compiling stm32f1xx_hal_rcc.c…
compiling stm32f1xx_hal_tim_ex.c…
compiling stm32f1xx_hal_cortex.c…
compiling stm32f1xx_hal.c…
compiling stm32f1xx_hal_dma.c…
compiling system_stm32f1xx.c…
"My Lcd Nokia 1616\My Lcd Nokia 1616.axf" – 30 Error(s), 4 Warning(s).
Target not created.
Build Time Elapsed: 00:01:53
سلام
ببخشید که دیر دارم جواب میدم
تا اونجا که دارم خطا ها رو میخونم متوجه شدم خطا ها مربوط به کتابخانه های خود st هست نه کتابخانه مورد استفاده در lcd :/
سلام من تمام کد ها و کتابخانه ها را به آردوینو اضافه کردم ولی در کتابخانه nokia1661_lcd.h به این خط ایراد میگیره::
uint8_t nlcdGetWidth();
متن ایرادش هم اینه:
exit status 1
expected ‘,’ or ‘…’ before ‘or’ token
خیلی دستکاریش کردم ولی بازم درست نشد.
خوب الان خطایی که داره میده میتونه مربوط به این خط نباشه و مربوط به خط های قبلی هم باشه ؛ آیا سیمیگولن ها درست رعایت شده توی کد ؟
در ضمن کتابخونه رو برای arduino سری های AVR پورت کردم که از قسمت دانلود می تونید دانلود کنید به همراه مثال 🙂
سلام من کد رو در کدویژن اجرا می کنم اما این خطا رو به من میده:
Error: C:\Users\ALI\Desktop\codevision code\codevision code.c(70): function argument #2 of type ‘flash unsigned char *’ is incompatible with required parameter of type ‘const unsigned char *’
باید چیکارش کنم؟؟
ممنون.
سلام دوست عزیز
قبلا که اشاره کردم const رو به مقدار flash تغییر بدید ، حتی توی ورودی های تابع
این خطا داره میگه به تابعی که ورودیش const unsigned char است نمی تونید ورودی flash unsigned char بدید
کدویژنه دیگه ! توصیه میکنم از کدویژن استفاده نکنید
با این حال برای رفع این ایراد میتونید ورودی تابع رو به flash unsigned char تغییر بدید
سلام اگه بخوام اینو با آردوینو راه بندازم چیکار باید بکنم
سلام دوست عزیز
خوب به سادگی میتونید کتابخونه ها رو به آردوینو اضافه کنید بدون کوچک ترین تغییری
چون همونطور که میدونید آردوینو هم از gcc استفاده میکنه
با سلام…
من سعی کردم کتابخانه رو در کدویژن اجرا کنم، اما به این خط ایراد میگیره،
امکانش هست راهنمایی بفرمایید.
const unsigned int *list = &_lcd_init_list[0];
با این پیغام :
Error: \nokia1661_lcd_driver.c(211): a value of type ‘flash unsigned int *’ can’t be assigned to an entity of type ‘unsigned int’
با تشکر
سلام
در تعریف متغییر _lcd_init_list (خط 173) واژه const رو به flash تغییر بدید.
در خط 194 نیز این کار رو تکرار کنید. 🙂
با عر ض سلام و خسته نباشید خدمت عوامل سیسوگ.
مهندس با این پروژه میشه تاریخ و زمان رو باجزئیات نمایش داد،امتحان کردین.
نباید مشکلی وجود داشته باشه ؛ شما قبلش باید تاریخ و زمان رو به هر جزییاتی که مد نظرتون هست به رشته تبدیل کنید بعد رشته رو نمایش بدید.
سلام مجدد،برای استفاده در stm32باید کدوم قسمت هارو تغیر بدم.
سلام دوست عزیز ؛ تنها قسمت هایی که پایه ها صفر و یک میشوند ؛ و البته اونجایی که پایه ها خروجی تعریف می شوند به همین سادگی
با سلام و درود،ممنونم از مطلب مفیدتون،قربان خواستم بدونم میشه از ال سی دی ۱۰۵ هم استفاده کرد.
تا اونجایی که اطلاع دارم نوع نمایشگر 105 متفاوت است.
سلام – اصلا با آردویینو همخونی نداره – چ کنم من عزیز ؟
منظورتون از این که همخوانی نداره چیشه ؛
اگر از آردوینو AVR استفاده میکنید احتمالا مشکلی نخواهید داشت ولی برای دیگر انواع اون احتمالا به مشکل میخورید.
اگر منظورتون رو متوجه بشم میتونم بهتر کمکتون کنم
سلام . مرسی بابت زحمتی که کشیدید.
من ال سی دی 1661رو با avrاستفاده از کتابخانه شما راه انداختم ولی با فرکانس بالاتر از 4 مگاهرتز چیزی نشون نمیده و برای فرکانس 4 مگاهرتز یا کمتر . نوشته ها رو مینوسه ولی مستطیل وسط تصویر رو رسم نمیکنه. به خاطر نوع دستورات کتابخانه ست که با بیشتر از 4 مگ جواب نمیده یا علت دیگه ای داره ؟
منظورتون از فرکانس 4 مگاهرتز – فرکانس میکرو هست یا فرکانس باس ؟
من این LCD رو با فرکانس 8 مگاهرتز روی باس راه اندازی کردم (80 مگ فرکانس کنترلر)
پس احتمالا مشکل سخت افزاری دارید شاید :/
سلام .
فرکانس میکرو 4 مگاهرتز هست که با avr راه انداختم . البته علتش رو الان فهمیدم . اون مقاومتها اجازه نمیداد با فرکانس بالاتر کار کنه . مقاومتها رو برداشتم و میکرو رو بهV 3.3 وصل کردم درست شد .
ولی بدون مقاومتها باز هم اون مربع وسط صفحه رو رسم نمیکنه . ولی باsetwindow و nlcdpixels یک خط افقی بدون مشکل رسم شد . با خودم گفتم شاید تایمینگ مشکل داشته باشه ،برا ی همین دیتا شیت رو نگاه کردم ولی
به متوجه مشکلی در تایمینگ نشدم . هنوز هم اون حلقه های for خطی رسم نمیکنن . به نظر میاد برای اجرای دستور
for( i=0;i<32;++i)
nlcdPixel(64+i,64,LCD_VGA_RED);
حساب مشکل داره حتی با کلاک پایین(1 مگاهرتز) . البته ال سی دی که خریدم متعلق به نوکیا 1661 هست و هیچ نام و نشان یا سریال یا چیز خاصی روش ننوشته بود .( ارزون و خدامیدونه چیه )ولی تمام کامندها رو اجرا میکنه.
به نظر شما علتش چی میتونه باشه که دستور زیر حلقه for رو اجرا نمیکنه ؟
خیلی جالبه ؛ نباید اینطور باشه چون برای رسم نوشته هم از تابع nlcdPixel استفاده میشه 😐 ؛ تازه از خود شما تونیسید خط رسم کنید که دیگه نباید هیچ مشکلی وجود داشته باشه
فایل هگز که قرار دادم رو تست کنید اگر اون رسم کرد ؛ نتیجه میگیریم که تنظیمات کامپایلر شما احتمالا متفاوت باشه
با چی کامپایل میکنید برنامه رو ؟
با سلام مجدد.
از فایلهای هگز استفاده نکردم چون مال آردوینو هستند . من کتابخانه رو روی atmega8 پیاده کردم . کمپایلرم avr gcc هست .( winavr) اپتیمایز هم به طور پیشفرض روی s هست . از همون مثالی که محبت کرده بودید و داخل کتابخانه قرار داده بودید استفاده کردم . الان که دارم این پیام رو برای شما مینویسم ، نسخه arm gcc این کتابخونه برای stm32 آماده شده ، توی این هم کار نمیکنه( کمپایلر آرم هیچ بهینه سازی انجام نمیده ) به نظر نماد مشکل از کمپایلر باشه . و جالب اینجاست که قسمت نمایش مربع برای avr توی پروتیوس کار میکنه .
خوب ما هم دقیقا از کامپایلر GCC استفاده کردیم یعنی همون winavr !
البته خوب از سخت افزار آردوینو استفاده کردیم که نخوایم یه برد جدا براش بزنیم.
این که میگید رسم خط مشکل داره برام جالبه چون رسم فونت از همون توابعی که برای نقطه گذاری استفاده میکنه که رسم خط داره استفاده میکنه ! احتمال میدم به دلیل آورفلو استک این مشکل پیش اومده باشه ؛ امکان داره با میکرویی که رم بیشتری داره تست کنید
مثلا مگا 32 !
سلام جناب زئوس .
این کامنت مربوط چند کامنت بعد از این میشه ولی چون لینک پاسخ فعال نشده بود !! در ادامه این کامنت نتیجه رو میگم .
مشکل عدم نمایش خطوط از پر شدن پشته نبود . چون روی stm32 با 16k رم هم جواب نمیداد .مشکل از کتابخانه بود .
توی کتابخانه ای که دانلود کردم .تابع nlcdpixel اینجوری تعریف شده :
void nlcdPixel(uint8_t x, uint8_t y,rgb_color16bit color)
{
_nlcdCmd1616(SPFD54124B_CMD_CASET, x, x+1); // column start/end
_nlcdCmd1616(SPFD54124B_CMD_RASET, y, y+1); // page start/end
_nlcdSendCmd(SPFD54124B_CMD_RAMWR); // RAMWR
_nlcdSendData(color >> 8);
_nlcdSendData(color & 0xFF);
}
در حالی که بعد از این که به شکل زیر اصلاحش کردم .( لطفا به اونجا که مادیر x , y تنظیم شدن نگاه کنید)
void nlcdPixel(uint8_t x, uint8_t y,rgb_color16bit color)
{
_nlcdCmd1616(SPFD54124B_CMD_CASET, x, x); // column start/end
_nlcdCmd1616(SPFD54124B_CMD_RASET, y, y); // page start/end
_nlcdSendCmd(SPFD54124B_CMD_RAMWR); // RAMWR
_nlcdSendData(color >> 8);
_nlcdSendData(color & 0xFF);
}
ممکنه ال سی دی من کمی تفاوت داشته باشه که با فرم قبلی تابع چیزی ارسال نمیشد . ولی این تابع اصلاح شده با منطق تابع setwindow _ هماهنگ تر هست .
مرسی وقت گذاشتید .
بله بسیار عالی ؛ خیلی خوشحالم که مشکل رو پیدا کردید ؛ دقیقا به نکته خوبی اشاره کردید و اون هم مدل کنترلر LCD است ؛
البته من کد شما رو با کنترلر خودم تست میکنم اگر اوکی بود ؛ کلا کد رو به این شکل تغییر میدم که دیگر دوستان دچار مشکل نشوند.
متشکرم برای این که تجربیاتتون رو در اختیار ما قرار می دهید.
براتون آرزوی موفقیت دارم.
مرسی لطف دارید.
سلام
LCD گوشی C2-05 هم میشه به همین شکل راه انداخت؟
سلام دوست عزیز
در مورد این LCD اطلاع ندارم ، واقعا باید تستش کرد.
با سلام و وقت بخیر و تشکر از مقاله خوبتون
یه سوال داشتم اینه که جوری میشه درایور یک lcd مربوط به گوشی ها رو فهمید چون تو شماتیک های خود نوکیا هیچ چیزی در مورد مدل LCD نگفته
با تشکر
سلام ؛ والا قدیم یه نرم افزاری بود که میگفت درایورشون چی هست ؛ یا کدوم lcd گوشی به کدوم میخوره
اونطور میشد درایورشون رو فهمید که چیه ؛ ولی هرچی میگردم پیداش نمیکنم متاسفانه ؛ قضیه مروبط به هفت هشت سال پیشه ؛
مویابلی ها داشتند نرم افزاره رو
ممنون از پاسخگویی
خواهش میکنم دوست عزیز.
مهندس من چند مدل از این برنامه هارو پیدا کردم ولی هیچ کدوم اسم درایور رو ذکر نکردن فقط معادلش رو گفتن که اینرو خوب میشه از همه سایتها بدست آورد تو شماتیک گوشی های نوکیا هم چیزی نیست
سلام دوست عزیز
سایت زیر رو ببینید ؛ چند مدل lcd رو هک کرده گذاشته ؛ یه برد جنرال هم برای هک طراحی کرده که اونم گذاشته ؛ شاید جواب سوالتون رو اونجا پیدا کنید
Nokia LCD Hack
ممنون از لطفتون سایت خیلی خوبیه با تشکر از شما
خواهش میکنم دوست عزیز 🙂
سلام ممنون از اطلاعات با ارزشی که در سایت قرار داده اید لطفا برای lcd nokia 5200 22pin شماتیک تصویری پایه های سوکتی قرار دهید با تشکر فراوان
سلام و درود دوست عزیز
متاسفانه روش هک این lcd موجود نیست
سلام آیا امکانش هست که روی این السیدی آیکون وعکس نشون داد؟
دستوری برای نمایش عکس در کتابخونه وجود داره؟
برای استفاده در کدویژن نیاز به بازبینی داره؟
بله کاملا همچین امکانی وجود داره ؛ احتمالا باید توابع مورد استفاده رو خودتون بنویسید ؛
امم فکر میکنم برای کدویژن استفاده از این کتابخونه نیاز هست قسمت هایی از کد بازبینی بشه – چیزی در حدود دو سا 4 سطر بیشتر به بازبینی نداره و بازبینیش هم کار ساده ای خواهد بود.
اگر سوالی بود در خدمتم
سلام ممنون از پاسخگویی
بنده همینجوری فایل هار وارد کدویژن کردم کامپایل زدم یه چندتا ارور داد
کتابخونه( avr/pgmspace)
چه کتابخونه ای؟ کلا تا حالا ندیدمش
لطف میکنید در مورد دستور
#define SBI(port,bit) asm(“sbi %0, %1” : : “I” (_SFR_IO_ADDR(port)), “I” (bit))
بیشتر توضیح بدید چیز زیادی ازش نفهمیدم نظراتم حوندم
🙂 اگه حدودا بگید کدوم بخشها به ویرایش نیاز داره ممنون میشم
pgmspace این کتابخونه برای دسترسی به حافظه س
الان چندجای دیگه به struct ها ارور گرفته فک کنم کلا نحوه نوشتنش تو کدویژن فرق میکنه درسته؟؟
خطایی رو که میده بدید تا بتونم بررسی کنم
سلام ؛ خوب کتایخونه pgmspace برای خوندن مقدار نوشته شده روی حافظه است ؛ تو کدویژن چون دسترسی به فلش مستقیمه ؛ میتونید از * استفاده کنید.
اون دستور اسمبی هست برای صفر یا یک کردن یه پورت خاص هست میتونید اونو با مثلا PORTA.5=1 جابجا کنید.
سلام
به ()cs_clr
()clk_set
()cs_set
()sda_set
()rst_clr
در کدویژن ایراد میگیره ومیگه تعریف نشدن
تو فایلای کتابخونه م گشتم همچین دستوراتی نوشته نشده
میدونین مشکل از کجاست؟
اوپس بله ؛ واقعا چه انتظاری از Codevision دارید ؛ توی کد این توابع بع شکل زیر تعریف شدن
#define LCD_PIN_FUNC(a, b) \
void _ ## a ## _set() { SBI(LCD_PORT,(LCD_ ## b)); } \
void _ ## a ## _clr() { CBI(LCD_PORT,(LCD_ ## b)); }
LCD_PIN_FUNC(rst, RST)
LCD_PIN_FUNC(cs, CS)
LCD_PIN_FUNC(sda, SDA)
LCD_PIN_FUNC(clk, CLK)
ولی از اونجایی که کدویژن فیوژن رو پشتیبانی نمیکنه باید دستی توابع رو دونه دونه تعریف کنید ؛ از اسم توابع عملکرد اونا مشخصه 🙂
اگر سوالی بود بفرمایید
با سلام
چطور کدی باید نوشت برای راه اندازی کتابخونه
اگه بگید روشش به چه صورت هست لطف بزرگی کردید
تشکر
سلام
خوب از مثالی که توی خود گیت پروژه قرار دادم استفاده کنید دوست من
نحوه استفاده از کتابخونه و فانکشن هایی که داره کاملا مشخص هست : لینک زیر
نحوه استفاده از کتابخانه
سلام من ال سی دی گوشی 5700 دارم آیا میشه با این برنامه راه اندازی بشه ممنون از زحمتتون
سلام دوست عزیز گمان نمیکنم که امکانش باشه
تا اونجایی که اطلاع دارم LCD5700 از دیتای پارالل پشتیبانی میکنه نه سریال
سلام
یه سوال میخام پی سی بی ال سی دی رو با روش اتو بزنم لازم نیست که هنگام چاپ روی کاغذ کلاسه miror
کنم ؟ یعنی مثل لایه باتوم بردای دیگه که با اتو میزنن
سلام دوست عزیز
اگه PCB را برای لایه Bottom میزنین باید Mirror کنین ولی اگه بخواین لایه Top باشه نیازی به Mirror نیست.
موفق باشین
ربطش تو اینه ک تست کردم و همون ال سی دی رنگیه رو 1280 جواب داد واسه خودمم عجیب بود ولی خب شد دیگه تصویرش منتها چون پیکسلاش ریز تره کوچیکتره|
ممنون بابت زحماتتون
بله واقعا جالبه ؛ ولی بعید نیست ؛ معمولا کنترلر های LCD قابلیت اینو دارند که بتونید آیدیشون رو بخونید و بر این اساس نوعش رو تشخصی بدید ؛ احتمالا شرکت نوکیا ؛ درایور LCD که استفاده میکنه این قابلیت رو داره که به صورت خودکار این کار رو انجام بده و نوع lcd رو تشخص بده و بر این اساس کار کنه !
اما یه سوال مطزح میشه و اون این که آیا تصویر درست بود ؟ – منو ها سرجاشون بودن ؟
تصویر هیچ مشکلی نداشت کاملا صحیح
یکی نیس جواب مارو بده پدرمون درومد!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
شرمنده جواب داده بودید من متوجه نشدمدوباره کامنت گذاشتم
خواهش میکنم دوست عزیز
خوب یه مدت نبودیم ؛ از حالا هستیم 🙂
خوااااااااااااااااااااااهشا راهنمایی کنید)))))))))))))))))))))))):
الان دوباره با سورس همون 1280 هم تست کردم کار نمیکنه ):
متوجه نمیشم چه مدل LCD تهیه کردید ؟ اگر LCD1280 تهیه کرده باشید نبایدم کار کنه خوب :/
هرجوری تست میکنم جواب نمیده مطمعنید کتابخونه مشکلی نداره چون همه توابع رو کامنت کردم فقط اینیشیال رو گذاشتم ولی با اجرای فقط همین تابع تمام پینها یک میشن موقعیم ک توابع دیگه درحال جرا شدنه پایه cs یک هستش مگه موقع نوشتن نباید صفر شه توی تابع اینیشیال هم اینواول نوشته بودید
// write 1 to rst and cs
LCD_PORT |= (1 << LCD_RST) | (1 << LCD_CS) | (1 << LCD_SDA);
کامنت با خطوط نمیخونه واسه همین کلا به کتابخونه شک کردم
کتابخونه که درسته ؛ بارها تست کردم مشکلی نداره ؛ با لاجیک آنالیزر پایه ها رو بررسی کنید.
فکر میکنم LCD رو اشتباه تهیه کرده باشید یا این که اتصالات مشکل داره
واقعا اینقدر چیز پیچیده ای نیست
حالا گیریم اینو اشتباه من گرفتم البته مدل 20 پین هم تهیه کردم کردم که فعلا باید کچل کنم و وقت نیس تست کنم من یه مدل ال سی دی داشتم اونم نوکیا بود ظاهرش شبیه همین 1661 هست پیناشم همین شکلیه خیلی اتفاقی چون دیدم پیناش شبیه به ال سی دیه 1280 (نوکیا ساده های خودمون) اومدم وصلش کردم به این گوشی در کمال تعجب تصویرش بالا اومد در حالی که اون اصلا صفحش رنگی نیس !
یه کد برای ال سی دی 1280 پیدا کردم که فونت فارسی همه چی داشت تستم کردم اوکی بود ولی این رنگیرو که تست کردم جواب نمیداد نمیدونید دلیلش چی میتونه باشه؟
واضح ترش اینجوری که دوتا ال سی دی روی یه موبایل جواب میده ولی با میکرو فقط یکیش جواب میده!!!
من الان متوجه منظور شما نمیشم واقعا ؛ LCD 1661 چه ربطی به 1280 داره ؛ یکی رنگی و یکی تک رنگ تازه رزولوشنونم فرق میکنه خوب :/
این که آیدی بشه چیپ رو شمارش رو خوند ، بله امکان داره ؛ توی کتابخونه امکانش رو گذاشتم ؛ البته اگر پایه ها رو درست وصل کرده باشید ؛ شما از فایل هگزی که قرار دادیم و همون مدل میکرویی که استفاده کردیم دقیقا استفاده کنید ببینید جواب میگیرد یا نه ؛ اگر همین مداری که بستیم جواب نداد ؛ بدونید و مطمین باشید مدل LCD شما با اون چیزی که معرفی کردیم فرق داره
سلام اقا من اینو تو همون اتمل بدون تغییرات واسه مگا هشت کامپایل کردم فرکانسم یک مگ وار نمیکنه دیتا رو پورت هست چک کردم ولی چیزی نمایش داده نمیشه درضمن من همین ال سی دی رو به موبایل وصل کردم(1280) کار میکرد تصویرو گوشه صفحه کامل نشون میدادواسه همین شک کردم ک درایورش اونی ک شما گفتی باشه
خوب چند تا نکنه ؛ اول این که ولتاژ میکرو چند ولته ؟ دقت دارید که LCD 3.3 ولت هستش ؟
دوم این که خوب گوشی Nokia 1280 نمایشگرش با این نمایشگری که ما کدش رو گذاشتیم فرق میکنه خوب 😐
ولتاژ همون 3.3 دادم شما با چه کامپایلری اینو تست کردید
راجب اون 1280 هم من همین السیدی رو روی نوکیا 1280 وصل کردم تصویر داشت(عجیب اما واقعی)
من اینو از علاالدین گرفتم پشتشم نوشته 1661
کامپایلر که از GCC استفاده کردم دوست عزیز
شما میتونید از اتمل استودیو برای کامپایل استفاده کنید
آیا شکل ظاهریش با عکسی که از LCD گذاشتیم هم خوانی نداره ؛ آیا بک لایتش روشن میشه ؟
به شکل ظاهری نمیشه اکتفا کرد مدلهای دیگه دیدم ک شباهتی بهم نداشتن ولی برای یک موبایل استفاده میشدن
😐
بک لایتشم روشن میشه راهی نیس از روی خود ال سی دی بفهمم چیپش چیه؟
خیر متاسفانه راهی نداره
سلام وقت بخیر
آیا اطلاعاتی در زمینه راه اندازی lcd nokia c5-00 و سامسونگ s3802 وجود دارد؟ با تشکر
در مورد مدل LCD نوکیا این مدل LCD مثل نمایشگر های گوشی های
Nokia 7020, Nokia X2-00, Nokia X2-02, Nokia X2-05, Nokia X3-00, Nokia 2710N
است ، ببینید درایوری راه اندازی برای یه کدوم پیدا میکنید یا نه
در ضمن نمایشگر 6300 هم قبلا راه اندازی کردند شاید بدردتون بخوره
سلام
اولا تشکر از مقاله عالیتون.
یه سوال برام پیش اومد شما چه طور به این نتیجه رسیدید که درایور این ال سی دی چیه؟
می خوام ماهیگیری هم یاد بگیرم.
خودم الان دنبال یه مدل ال سی دی 3 اینچ به بالا می گردم ولی موندم از کجا به اطلاعات درایورهای این گونه ال سی دی ها دسترسی داشته باشم؟
سایت خاصی هست؟
سلام دوست عزیز
خوب البته خوشحالیم که چنین دیدگاهی دارید!
برای پیدا کردن شماره کنترلر چند تا راه میشناسم ؛ اول جستجو توی گوگل ؛ دوم توی نقشه های گوشی معمولا شماره رو می نویسند ؛ سوم میتونید از همسانی LCD های مدل های مختلف استفاده کنید
یادمه یه نرم افزاری بود که مدل گوشی رو میزدی توش میگفت کدوم گوشی ها میتونند از همین lcd استفاده کنند
سلام مجدد
تشکر به خاطر پاسختون.
بنده به عنوان مثال دنبال درایور برای گوشی سامسونگ LCD SAMSUNG WAVE723 – S7230 رفتم:
https://www.gsmarena.com/samsung_s7230e_wave_723-3493.php
ابعاد گوشی مناسب کار بنده هست.
توی اینترنت دنبال راهنمای تعمیرش گشتم که به مورد زیر برخورد کردم:
http://s8.picofile.com/file/8348484768/aa.jpg
روی کانکتور نوشته شده “hea600” اما دیگه به نتیجه ای نرسیدم.
امکان داره راهنمایی کنین چیکار کنم؟
سلام
منم هرچه گشتم چیزی پیدا نکردم نه منولی ونه شماره ای و حتی سمپل راه اندازیی ؛ این کار رو سخت میکنه و حتی میشه گفت غیر ممکن
حالا از این موضوع که بگذریم پایه های این LCD خیلی چالش بر انگیر هست
ممنون بابت وقتی که گذاشتین…
یه جورایی خوشحال شدم (فکر کردم بنده مشکل دارم یا بد جسنجو کردم)… 🙂
شما موردی برای ال سی دی های سایز 3 یا 4 سراغ ندارین بریم تو نخش؟
در مورد پایه های این ال سی دی خود هم شک افتادم
خواهش میکنم دوست عزیز
ببینید از این نمایشگرهایی که توی سایت زیر راه اندازی شده چیزی بدردتون میخوره
http://andybrown.me.uk
LG KF700
Sony Ericsson U5
و….
سلام ممنون از زحمتی که کشیدید
من در مورد lcd c1 مشکل دارم که فکر میکنم شبیه مال شماست. من اول دوتا دونه از پاساژ علاالدین خریدم و راه انداختم وکار کرد.ولی بعد که دوباره رفتم تموم کرده بود و بناچار از دو جای دیگه خریدم که دو مدل مختلف بود . هر دو مدل انگار که فرمت سایز پکت دیتا اشتباه باشد اشکال ترسیمی را کوچکتر و یا بزرگتر رسم میکند وفونت هم در هم ریخته نمایش میدهد.و قابل استفاده نیستند.ناچارا دوباره رفتم واز دو مغازه دو مدل مختلف دیگه خریدم.این دفعه یک مدل بدون مشکل کار کرد وباز یک مدل دقیقا مثل دو تای اول خراب نمایش میدهد.احتمالا کنترلر آنها کمی فرق دارد.
آیا شما هم به این مشکل برخورده اید یا ایده ای یا نظری برای حل دارید؟
سلام دوست عزیز ؛ نه خوشبختانه من مشکلی نداشتم ؛ من سه سری تهیه کردم و همه سری ها به خوبی کار می کنند ؛ برای این که بشه بهتر بررسی کرد ؛ لطف کنید عکس با کیفیت از LCD ها تهیه کنید و خطایی که مشاهده میکنید تا بشه بهتر بررسی کرد.
سلام
لطفا لینکها را نگاه کنید
http://s9.picofile.com/file/8346457550/1.jpg
http://s9.picofile.com/file/8346457568/2.jpg
سلام
بله گمان میکنم حدس شما درست باشد و مشکل احتمالا به دلیل عدم اجرای صحیح فرامین باشد ؛ لطفا بگویید از چه میکروکنترلری استفاده کرده اید و تست بعدی که انجام میدهد این باشد که کلاک میکروکنترلر را کم کنید ببینید باز نتیجه این گونه است یا خیر ؟
متشکرم
سلام
من از STM32F103 استفاده میکنم .قبلا با گذاشتن دیلی تست کردم ولی فایده ای نداشت مشکل با کلاک نیست بلکه بنظر پیکر بندی کنترولر کمی فرق دارد که دایره تبدیل به بیضی می شود ولی رنگ و بعضی چیزها درست است
با تشکر
سلام دوست عزیز
من به کتابخانه تابع _nlcdRead رو اضافه کردم که با استفاده از اون می تونید آیدی کنترلر و رجیستر استاتوس رو بخونید
در ضمن دیتاشیت کنترلر رو هم به گیت اضافه کردم ؛ مراحل init رو بررسی کنید ؛ شاید توی کدی که نوشتم چیزی رو جا انداختم
آخرین ورژن رو از گیت میتونید دانلود کنید.
من موفق شدم در پلاک 368/1 علاالدین به قیمت 20 تومن این را پیدا کنم اما هنوز امتحانش نکردم . بهتره یک سوکت مادگی هم برایش بخرید تا نصبش راحتتر بشه این سوکتها بنام pitch drawer type معروف هستند
بسیار عاالی – متشکر برای معرفی – من خودم از فروشگاه انلاین خریداری کردم !
ایده سوکت جالب بود ؛ ولی مطمئن هستید که میشه از سوکت های FPC استفاده کرد ؟
سپاس از این مطلب
2 سوال
آیا از قطعه nokia 5110 پروتئوس می توان برای شبیه سازی این نمایشگر استفاده کرد
اگر نمیشود آیا این لینک شبیه ساز پرتئوس این نمایشگر است ؟ چگونه باید از آن استفاده کرد?
خوب پروتکل این دو قطعه متفاوت هستند و اماکن همانند سازی توی پروتئوس وجود نداره ! لینک های دانلود هم مروبط به کتاب خانه های راه اندازی برای میکروکنترلر هستش
با سلام …
امکانش هست توضیح این خط کد را بفرمایید :
asm(“sbi %0, %1” : : “I” (_SFR_IO_ADDR(port)), “I” (bit))
با تشکر
سلام دوست عزیز
در واقع این خط تعریف اینلاین اسمبلی در GCC هست که برای ست کردن یک بیت از یک رجیستر مورد استفاده قرار میگره ،
برای توضیحات بیشتر در خصوص inline Asm به این مقاله مرجعه کنید.
با سلام …
ممنون از شما، من سعی دارم این کتابخانه رو در کدویژن اجرا کنم ولی به این کدهای اسمبلی ایراد میگیره.
معادل این میشه دیگه درسته : sbi _SFR_IO_ADDR(LCD_PORT),LCD_RST ؟
در مورد فایلی سمپلی که قرار دادید، امکانش هست خروجی هگزر را هم بگذارید تا اول بتونیم درست بودن اتصالات و ال سی دی رو چک کنیم، بعد برای تغییر اقدام کنیم؟
با تشکر
سلام دوست عزیز ، اون دستور اسمبلی برای یک کردن یک بیت از یک پورت استفاده میشه ، فکر میکنم توی کدویژن به این صورت میتونید باز نویسیش کنید
PORTB.1 = 1;
که بیت یک از پورت B رو یک میکنه ؛ یا اینطور بنویسید
PORTB |=(1<<1); فایل هگز توی پست قرار گرفت.
سلام
با اتمل استیدیو برنامه رو برای مگا۸ کامپایل کردم سیم بندی با بازر چک کردم مشکلی نداره میکرو با ولتاژ ۳. ۳ ولت راه اندازی کردم بک لایت ال سی دی روشنه ولی چیزی نمایش نمیده
نمیدونم چرا؟
دلایل خیلی زیادی میتونه داشته باشه دوست من
اولین قدم ، شماتیک مداری رو که بستید بفرستید که ببینیم درست هست یا خیر
دقیقا همین برنامه رو کامپایل کردید ؟ تغییری توش ندادید ؟
همین برنامه فقط f_cpu رو 8000000
تعریف کردم
اگه میشه یه کدهگز با شماتیک mega8a تو سایتتون قرار بدین
فکر نمیکنم مشکلی وجود داشته باشه ،
سعی میکنم مساله رو بررسی کنم و نمونه کد رو برای مگا 8 بنویسم ببینم مشکلی داره یا نه !
سلام
اگه ممکنه یه عکس از جلو و پشت ال سی دی و یه عکس مونتاژ شده تو سایت قرار
بدین
به نظر من ازال سی دی هست احتمالا c1 من گرفتم درایورش با 1661
فرق میکنه شاید!!
کاش یه فیلم از سیم بندی وقطعات و تست عملی پروژه قرار میدادین و توضیحاتی عملی میدادین
فیلم که از پروژه بزارین یه سری از ریزه کاری یا که تو عمل پیش میاد گفته میشه
ممنون به خاطر توجهتون
سلام دوست عزیز
پست رو آپدیت کردم و عکس از خود LCD و نمونه مونتاژ شده به همراه برد مونتاژ شده در پست قرار دادم
بعید میدونم که کنترلر متفاوتی داشته باشه ! البته من تست نکردم ولی توی منوال های Nokia نوع LCD ها رو یکی ذکر کرده
فیلم اجرا شده رو هم میتونید در پست میکروکنترلر مقصر نیست ببینید.
سلام ممنون از خوبتون سایتتون نمونه کد مناسب و کتابخونه برای آردوینو هم قرار بدین.
سلام انشاله بزودی سعی خودمون را میکنیم