','

' ); } ?>
آموزش راه اندازی oled ssd1306
آموزش راه اندازی oled ssd1306

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

آموزش راه اندازی نمایشگر 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 استفاده کند .

توجه : طبق اطلاعات دیتا شیت 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 می باشد ، که در ادامه به نحوه عملکرد آن می پردازیم .

ابتدا نگاهی به Pinout آن می اندازیم :

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 استفاده می کنید . می توانید از کتابخانه قدرتمند Adafruit برای راه اندازی استفاده کنید .

راه اندازی نمایشگر 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

  نویسنده : حسین غیاثوند
 تاریخ انتشار : 1399/8/25
 خرید و دانلود در لحظه :

اضافه کردن به سبد خرید

0 دیدگاه
بازخورد داخلی
مشاهده همه نظرات