ARDUINOAVRLCDSTM32بسکامکدویژن

راه اندازی نمایشگر SSD1306 OLED با آردوینو ، بسکام ، کدویژن ، STM32

4.9/5 - (165 امتیاز)

آموزش راه اندازی نمایشگر SSD1306 OLED موضوع این مقاله می باشد . پس تا پایان این آموزش با ما همراه باشید . نمایشگر بسیار کوچک است و اندازه آن 0.96 اینچ می باشد . بنابراین برای نمایش اطلاعات باید از فونت و شکلهای گرافیکی با ابعاد بزرگتر استفاده کنیم . نمایشگرهای فوق العاده OLED بسیار سبک هستند و تصویری روشن و واضح تر تولید می کنند.

پروتکل ارتباطی SSD1306 OLED

در قلب صفحه نمایش یک کنترل کننده یا درایور تک تراشه قدرتمند CMOS با نام SSD1306 وجود دارد. این چیپ ست می تواند با میکروکنترلر به چندین روش از جمله I2C و SPI و Parallel ارتباط برقرار کند .

Parallel 6800-series Interface
Parallel 8080-series Interface
MCU Serial Interface (4-wire SPI)
MCU Serial Interface (3-wire SPI)
MCU I2C Interface

به لطف تنوع پذیری کنترلر SSD1306 ، این ماژول در اندازه ها و رنگ های مختلف ارائه می شود . به عنوان مثال 128×64 ، 128×32  پیکسل ، با OLED های سفید ، OLED های آبی و OLED های دو رنگ .

نمایشگرهای SSD1306 OLED موجود در بازار به صورت بورد آماده ، فقط در دو حالت SPI , I2C موجود می باشد .

نمایشگر OLED با درایور SSD1306
نمایشگر OLED با درایور SSD1306

SPI به طور کلی سریعتر از I2C است اما به پایه های ورودی و خروجی بیشتری نیاز دارد. در حالی که I2C فقط به دو پایه نیاز دارد و می توان آن را با سایر وسایل جانبی I2C به اشتراک گذاشت. کاربر زمانی که در پروژه خود به تعداد پایه های کمتر نیاز دارد می تواند از نمایشگر با رابط I2C استفاده کند . و زمانی که در پروژه خود به سرعت بیشتر نیاز دارد می تواند از نمایشگر با رابط SPI استفاده کند .

حافظه رم در سایه یا Shadow RAM Buffer چیست ؟

توجه : طبق اطلاعات دیتا شیت SSD1306 نشان می دهد که:
“در حالت سریال ، فقط عملیات نوشتن مجاز است.”

این بدین معنی است که در ارتباط های SPI , I2C که سریال هستند . فقط می توانیم بر روی OLED SSD1306 عملیات نوشتن یا WRITE را انجام دهیم و نمی توانیم از RAM داخلی OLED SSD1306 دیتا بخوانیم یا عملیات READ انجام دهیم .

اگرچه SSD1306 دارای یک (GDDRAM(Graphic Display Data RAM  داخلی برای صفحه نمایش است ، اما ما نمی توانیم محتوای آن را بخوانیم . بنابراین ، نمی توان بافر صفحه را برای انجام عملیات ریاضی مثل رسم اشکال گرافیکی دستکاری کرد.

به بیان ساده تر زمانی که ما می خواهیم بر روی نمایشگر متنی نمایش بدهیم ، متن ما به صورت ردیفی از بایت ها می باشد . در هر بار نوشتن یک بایت در حافظه RAM LCD نوشته می شود . بنابراین دسترسی و نوشتن جداگانه بر روی یک پیکسل امکان پذیر نیست .

برای نوشتن و دسترسی به پیکسل های جداگانه ، باید آنچه را که در حال حاضر در آدرس مورد نظر LCD می خواهیم بنویسیم ، ابتدا بخوانیم . در عملیات خواندن 8 بیت خوانده می شود و یک عمل Mask بر روی بیت یا پیکسل مورد نظر انجام می دهیم . یعنی بیت مورد نظر را دستکاری می کنیم و بقیه بیت ها باید به حالت قبلی  باقی بمانند . سپس دوباره 8 بیت را در آدرس قبلی بنویسیم . هر بیت نشان دهنده پیکسل OLED خاصی بر روی صفحه است که می تواند از طریق برنامه روشن یا خاموش شود.

راه اندازی نمایشگر oled ssd1306
راه اندازی نمایشگر oled ssd1306

در نمایشگرهایی که امکان خواندن دیتا از حافظه RAM آنها وجود ندارد . از روشی به نام  Shadow RAM Buffer یا بافر رم سایه می توانیم استفاده کنیم . بدین صورت که به اندازه تعداد پیکسل های صفحه نمایشگر ، یک بافر از رم داخلی میکروکنترلر تشکیل می دهیم .

128pixel x 64pixel  = 8192 bits / 8 = 1024 bytes = 1KB

بنابراین به 1K بایت حافظه RAM نیاز داریم . برای اینکه بتوان از عملیات ریاضی و رسم اشکال گرافیکی مثل ترسیم دایره و مربع و شکل موجهای مختلف استفاده کرد ، باید میکروکنترلری را انتخاب کنیم که حافظه RAM داخلی آن بیشتر از 1K بایت باشد .

 

از این پس تمامی تغییرات ، از قبیل نوشتن متن یا گرافیک ابتدا داخل این بافر انجام می شود و در پایان ، اطلاعات داخل بافر را به  GDDRAM نمایشگر منتقل می کنیم ، به این عمل رفرش یا آپدیت صفحه نیز می گوییم .

نمایشگر SSD1306 OLED که ما تهیه کردیم . از نوع رابط I2C می باشد ، که در ادامه به نحوه عملکرد آن می پردازیم .

پایه های SSD1306

GND : باید به زمین متصل شود .
VCC  : منبع تغذیه صفحه نمایش است .
SCL  : پین کلاک سریال برای رابط I2C است.
SDA : پین داده سریال برای رابط I2C است.

توجه : نمایشگرهای OLED SSD1306 که در بازار وجود دارند ، ممکن است ترتیب پایه های آنها با هم متفاوت باشد . مثلا ممکن است پایه های تغذیه نمایشگری که شما دارید با نمایشگری که تصویرش را در این آموزش مشاهده می کنید متفاوت باشد . بنابراین موقع راه اندازی و طراحی PCB به این نکته توجه داشته باشید . ترتیب پایه ها بر روی هر نمایشگر نوشته شده است .

منبع تغذیه نمایشگر OLED SSD1306

نمایشگر OLED بدون نور پس زمینه کار می کند زیرا نور خود را ایجاد می کند . به همین دلیل صفحه نمایش دارای کنتراست بسیار بالا ، زاویه دید بسیار گسترده است و می تواند سطوح عمیق سیاه را نمایش دهد. عدم وجود نور پس زمینه به طور قابل توجهی مصرف توان مورد نیاز برای راه اندازی OLED را کاهش می دهد. صفحه نمایش به طور متوسط از جریان حدود 20 میلی آمپر استفاده می کند ، اگرچه به میزان روشن بودن نمایشگر بستگی دارد.

 

ولتاژ کاری کنترلر SSD1306 از 1.65 ولت تا 3.3 ولت است در حالی که پنل OLED به ولتاژ تغذیه 7 ولت تا 15 ولت نیاز دارد. این نیاز با استفاده از مدار افزاینده داخلی تامین می شود . و این امکان را برای ما فراهم می کند تا بتوانید به راحتی و بدون استفاده از مبدل سطح منطقی ، OLED SSD1306 را به یک میکروکنترلر با سطح منطقی 5 ولت متصل کنید.

راه اندازی نمایشگر OLED SSD1306 با ARDUINO

کتابخانه راه اندازی oled با درایور ssd1306 با قابلیت پشتیبانی از فونت فارسی برای اولین بار توسط سایت میکرونیک ارائه می شود .

این کتابخانه در واقع کتابخانه Adafruit_SSD1306 می باشد که توسط سایت میکرونیک توابع و فونت فارسی به این کتابخانه افزوده شده است . در کنار کتابخانه SSD1306 از کتابخانه قدرتمند Adafruit_GFX استفاده شده و قابلیت نمایش انواع شکلهای گرافیکی و تصاویر را نیز دارد . همچنین می توان از فونت های خود کتابخانه Adafruit_GFX نیز استفاده نمود .

برای نوشتن متن فارسی روی lcd گرافیکی توسط نرم افزار آردوینو به شکل زیر عمل می کنیم .

بهمراه فونت فارسی در سایزهای 8*8 ، 10*9 ، 11*9 ، 16*12 .

راه اندازی oled ssd1306 با آردوینو
راه اندازی oled ssd1306 با آردوینو

راه اندازی oled ssd1306 با آردوینو
راه اندازی oled ssd1306 با آردوینو

راه اندازی نمایشگر OLED SSD1306 با بسکام

در نرم افزار بسکام کتابخانه ای برای راه اندازی OLED SSD1306  وجود ندارد . بنابراین باید خودمان کتابخانه ای برای راه اندازی و درایو نمایشگر SSD1306 بنویسیم . در انتهای این مقاله کتابخانه ای به همین منظور آماده کرده ایم که می توانید تهیه کنید و در نرم افزار بسکام از آن استفاده کنید .

در کتابخانه بسکام OLED SSD1306 از پروتکل I2C سخت افزاری استفاده شده است . بنابراین پایه های SCK و SDA  نمایشگر SSD1306 را فقط می توانیم به پایه های SCK و SDA میکروکنترلر وصل کنیم . سرعت انتقال داده در پروتکل I2C سخت افزاری را می توانیم تا 400K بیت بر ثانیه تنظیم کنیم .

همچنین آموزش ساخت فونت فارسی و انگلیسی و علامتهای دلخواه را با ابعاد و سایز های مختلف درون سایت قرار داده ایم . فونت های ایجاد شده با کتابخانه OLED SSD1306 کاملا سازگار است و  قابلیت نمایش بر روی نمایشگر SSD1306 را دارد .

در نرم افزار بسکام نمی توانیم متن و عبارات فارسی را تایپ کنیم و اگر متن فارسی بنویسیم به صورت حروف ناخوانا نمایش داده می شود . برای رفع این مشکل و اینکه بتوانیم درون نرم افزار بسکام عبارات فارسی تایپ کنیم در آموزشی با عنوان ارسال SMS فارسی با ماژول SIM800 با بسکام ، راه کاری ارائه کردیم که می توانید به آن روش عمل نمائید .

راه اندازی نمایشگر Oled SSD1306 با بسکام
راه اندازی نمایشگر Oled SSD1306 با بسکام

 

راه اندازی نمایشگر SSD1306 با بسکام
راه اندازی نمایشگر SSD1306 با بسکام

راه اندازی oled ssd1306 با bascom
راه اندازی oled ssd1306 با bascom

راه اندازی نمایشگر OLED SSD1306 با کدویژن

در نرم افزار CodeVision اگر به CodeWizard  و بخش lcd گرافیکی ها مراجعه کنید ، مشاهده خواهید کرد که کتابخانه OLED SSD1306 برای کدویژن وجود ندارد ، و نرم افزار کدویژن از نمایشگر با درایور SSD1306 پشتیبانی نمی کند .

بنابراین کتابخانه راه اندازی نمایشگر SSD1306 را برای علاقه مندان به نرم افزار کدویژن ، آماده کرده ایم . می توانید در انتهای همین صفحه کتابخانه را تهیه کنید .

اگر تمایل دارید فونت فارسی و انگلیسی و علامتهای دلخواه خود را برای نمایش بر روی OLED SSD1306 بسازید می توانید از آموزش ساخت فونت فارسی و انگلیسی برای انواع LCD گرافیکی استفاده کنید .

ما در نرم افزار CodeVision امکان تایپ و نوشتن حروف فارسی را نداریم و حروف فارسی با علائم ناخوانا نمایش داده می شوند . برای اینکه بتوانیم حروف فارسی را در نرم افزار کدویژن تایپ کنیم باید تنظیماتی را ویندوز خود انجام دهیم . انجام این تنظیمات را در آمورش ارسال sms فارسی با sim800 توسط کدویژن در مقاله ای دیگر در همین سایت قرار داده ایم ، می توانید مطالعه کنید .

برای راه اندازی OLED SSD1306  در کدویژن از پروتکل I2C نرم افزاری استفاده شده است . بنابراین پایه های SCK و SDA  نمایشگر را می توانیم بر روی پایه های دلخواه از میکروکنترلر پیکربندی کنیم .

همانطور که می دانید سرعت انتقال داده در پروتکل I2C بین 100K تا 400K بیت بر ثانیه می باشد . این سرعت در I2C نرم افزاری برابر با 100K بیت بر ثانیه می باشد . برای رسیدن به سرعت 400K بیت بر ثانیه باید از پروتکل I2C سخت افزاری با TWI استفاده کنیم . در حال حاضر کتابخانه راه اندازی نمایشگر OLED SSD1306 فقط قابلیت راه اندازی با پروتکل I2C نرم افزاری را دارد .

در ابتدای همین مقاله اشاره کردیم برای اینکه بتوان عملیات ریاضی مانند ترسیم اشکال هندسی و ترسیم شکل موج ها را نمایش بدهیم . باید از روشی به نام Shadow RAM Buffer استفاده کنیم .

در کتابخانه راه اندازی نمایشگر SSD1306 از روش Shadow RAM Buffer استفاده کرده ایم و به 1 کیلو بایت حافظه RAM نیاز داریم . بنابراین هنگام انتخاب میکروکنترلر باید به این نکته توجه داشته باشیم ، حافظه RAM میکروکنترلر باید بیشتر از 1 کیلو بایت باشد . میکروکنترلر هایی مانند ATMEGA8 , ATMEGA16 و سری ATTINY ها به دلیل وجود حافظه RAM کمتر از 1 کیلو بایت قابلیت این کار را ندارند . نمایشگر OLED SSD1306 با میکروکنترلر های ATMEGA32 , ATMEGA328 به راحتی راه اندازی می شود .

راه اندازی نمایشگر SSD1306 با کدویژن
راه اندازی نمایشگر SSD1306 با کدویژن

راه اندازی oled ssd1306 با codevision
راه اندازی oled ssd1306 با codevision

راه اندازی نمایشگر SSD1306 با Codevision
راه اندازی نمایشگر SSD1306 با Codevision

فارسی نویسی بر روی oled ssd1306
فارسی نویسی بر روی oled ssd1306

راه اندازی نمایشگر OLED SSD1306 با STM32

کتابخانه نمایشگر OLED SSD1306 برای STM32 توسط توابع HAL نوشته شده است و توسط نرم افزار STM32CubeMX ایجاد شده و فرکانس کاری stm32 توسط کریستال خارجی روی فرکانس 8 مگا هرتز تنظیم شده است . البته می توان فایل CubeMX را اجرا کنید و تنظیمات دلخواه خود را پیکربندی کنید .

کتابخانه راه اندازی نمایشگر OLED SSD1306 با STM32 فقط قابلیت راه اندازی با پروتکل I2C سخت افزاری را دارد . در این مثال ما از هدر بورد Bluepill که میکروکنترلر بکاررفته در این بورد Stm32f103c8t6 می باشد استفاده کرده ایم . این میکروکنترلر دارای دو پورت I2C سخت افزاری می باشد . توسط نرم افزار STM32CUBEMX به راحتی می توانیم یکی ار دو پورت I2C را برای اتصال به نمایشگر OLED SSD1306 پیکربندی کنیم .

در این مثال نماشگر OLED SSD1306 به پورت I2C سخت افزاری اول ، میکروکنترلر Stm32f103c8t6 متصل شده است . بنابراین پایه SDA , SCL نمایشگر SSD1306 به پایه های PB6 , PB7 میکروکنترلر Stm32f103c8t6 باید متصل شوند .

در کتابخانه راه اندازی نمایشگر SSD1306 با STM32 از روش Shadow RAM Buffer استفاده شده است . بنابراین  به 1 کیلو بایت حافظه RAM نیاز دارد . میکروکنترلر Stm32f103c8t6 دارای 20 کیلو بایت حافظه RAM داخلی می باشد . بنابراین  براحتی می توان نمایشگر SSD1306 را با آن راه اندازی  کرد .

راه اندازی نمایشگر SSD1306 با STM32
راه اندازی نمایشگر SSD1306 با STM32

راه اندازی ssd1306 با stm32
راه اندازی ssd1306 با stm32

راه اندازی نمایشگر SSD1306 با STM32
راه اندازی نمایشگر SSD1306 با STM32

راه اندازی ssd1306 با stm32
راه اندازی ssd1306 با stm32

 

آموزش ساخت فونت فارسی

فیلم آموزشی شامل ساخت فونت فارسی و انگلیسی در ابعاد دلخواه ، ساخت کاراکترهای سفارشی و علامت های پرکاربرد به صورت فونت و آموزش تبدیل تصویر به کد هگز در ابعاد دلخواه و نمایش بر روی lcd گرافیکی می باشد . بهمراه تمامی ابزارها و نرم افزارهای ساخت فونت و ویرایش تصویر .
حجم فیلم : 79.68 مگابایت
مدت زمان : 32 دقیقه و 45 ثانیه

  نویسنده : حسین غیاثوند
 خرید و دانلود در لحظه :

نوشته های مشابه

مشترک شدن
اطلاع رسانی کن
guest
58 دیدگاه
قدیمی ترین
جدیدترین محبوب ترین
بازخورد داخلی
مشاهده همه نظرات