آموزش STM32آموزش های ARM

آموزش اتصال LCD کاراکتری به STM32

سلام. آموزش اتصال LCD کاراکتری به STM32 با آردوینو را آماده کردیم.

کنترل ال سی دی کاراکتری با STM32 و کد آردوینو

برای هر پروژه ای، استفاده از صفحه نمایش ها تعامل با کاربر را افزایش میدهد. رایج ترین صفحه نمایش برای پروژه ها، ال سی دی کاراکتری 16*2 است. این نوع نمایشگر نه تنهای برای نمایش اطلاعات حیاتی به کاربر استفاده میشود بلکه به عنوان ابزاری برای اشکال زدایی پروژه در مراحل اول استفاده میشود. در این آموزش ARM یاد میگیریم چطور یک صفحه نمایش ال سی دی کاراکتری 16*2 را با استفاده از STM32 کنترل کنیم. برنامه نویسی این پروژه در محیط نرم افزار آردوینو انجام میشود. برای افرادی که با برنامه نویسی arduino آشنا هستند، کد این پروژه بسیار ساده است.

مدار پروژه اتصال LCD کاراکتری به STM32

شماتیک مدار پروژه اتصال LCD کاراکتری 16*2 به STM32 در تصویر زیر نشان داده شده است.

کنترل ال سی دی کاراکتری با STM32 و نرم افزار Arduino

همانطور که می بینید اتصالات پروژه بر روی یک برد بورد نیز قابل انجام است. برای برنامه نویسی میکروکنترلر STM32 به یک برد FTDI نیاز داریم.

Vcc و پین GND پروگرامر FDTI به ترتیب به پین ​​5 ولت و پین GND برد STM32 وصل شده اند. پین Rx و Tx از برد FTDI به پین ​​A9 و A10 برد STM32 وصل شده است تا بتوانیم بورد را مستقیماً و بدون بوت لودر برنامه ریزی کنیم. بعد باید LCD را به صفحه STM32 وصل کنید. ما قصد داریم از ال سی دی در حالت 4 بیتی استفاده کنیم ، بنابراین باید 4 پین بیت داده (DB4 به DB7) و دو پین کنترل (RS و EN) را به برد STM32 وصل کنیم همانطور که در مدار ارتباط ال سی دی با STM32F103C8T6 نشان داده شده است.

جدول زیر اتصالات پین های این پروژه را نشان میدهد و کار شما را ساده تر میکند.

شماره پین ال سی دی نام پین ال سی دی نام پین STM32
1 GND GND
2 VCC 5V
3 VEE GND
4 Register Select (RS) PB11
5 Read/Write (RW) GND
6 Enable (EN) PB10
7 Data Bit 0 (DB0) عدم اتصال
8 Data Bit 1 (DB1) عدم اتصال
9 Data Bit 2 (DB2) عدم اتصال
10 Data Bit 3 (DB3) عدم اتصال
11 Data Bit 4 (DB4) PB0
12 Data Bit 5 (DB5) PB1
13 Data Bit 6 (DB6) PC13
14 Data Bit 7 (DB7) PC14
15 LED مثبت 5V
16 LED منفی GND

مواد مورد نیاز

  1. STM32 – برد توسعه (BluePill) (STM32F103C8T6)
  2. ال سی دی کاراکتری 16*2
  3. پروگرامر FTDI
قطعات مورد نیاز را از فروشگاه قطعات آیرنکس تهیه کنید.

برنامه نویسی ال سی دی کاراکتری در برد STM32

همانطور که در این آموزش گفته شد، ما از نرم افزار Arduino IDE برای برنامه ریزی میکروکنترلر STM32 استفاده خواهیم کرد. اما، Arduino IDE به طور پیش فرض برد STM32 را نمیتواند برنامه ریزی کند، از این رو باید یک بسته را بارگیری کنیم و Arduino IDE را برای این کار آماده کنیم. این دقیقاً همان کاری است که در آموزش قبلی ما با استفاده از Arduino IDE و STM32F103C8T6 انجام دادیم. بنابراین پیشنهاد میکنم قسمت قبلی آموزش STM32 که ما در آن تمامی مراحل آپلود کد بر روی یک برد STM32 را آموزش دادیم مشاهده کنید : STM 32 چیست؟ آموزش برنامه نویسی برد STM32 با آردوینو

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

یکی از مزایای قابل توجه استفاده از Arduino برای برنامه ریزی میکروکنترلر های ما این است که آردوینو تقریبا برای هر سنسور و ماژول مشهور کتابخانه های آماده دارد. بنابراین در ابتدا ما کتابخانه کریستال مایع که مخصوص ال سی دی ها است را فراخوانی میکنیم.

#include <LiquidCrystal.h> // include the LCD library

در خط بعدی باید مشخص کنیم که کدام پین های GPIO از STM32 ما وظیفه کنترل نمایشگر LCD را به عهده دارند. با خطوط زیر ما پین های ال سی دی را معرفی کرده و سپس کار بار آن را شروع میکنیم.

const int rs = PB11, en = PB10, d4 = PB0, d5 = PB1, d6 = PC13, d7 = PC14; 
LiquidCrystal lcd(rs, en, d4, d5, d6, d7); //معرفی پین های ال سی دی

در مرحله بعد در تابع setup void () ذکر میکنیم که از چه نوع LCD استفاده میکنیم. از آنجا که ال سی دی مورد استفاده ما در اینجا 16*2 است با خط دوم کد زیر آن را معرفی میکنیم. سپس ما مکان متن مورد نظر را تعیین کرده و متن دلخواه را روی ال سی دی چاپ میکنیم. سپس تعریف میکنیم که متن ها برای چند ثانیه نمایش داده شوند و در آخر با دستور lcd.clear ()؛ صفحه را پاکسازی میکنیم.

void setup() {
  lcd.begin(16, 2);//استفاده از ال سی دی کاراکتری 16*2
  lcd.setCursor(0, 0); //ستون اول ردیف اول
  lcd.print("Interfacing LCD"); //نمایش متن دلخواه
  lcd.setCursor(0, 1); //ستون اول ردیف دوم
  lcd.print("-irenx"); //نمایش این متن
  delay(2000); //تاخیر به مدت 2 ثانیه
  lcd.clear(); //پاکسازی ال سی دی
}

سپس در void loop، در خط اول عبارت STM32 –Blue Pill را نمایش میدهیم و در خط دوم مقدار ثانیه ها را نمایش میدهیم. مقدار ثانیه ها با استفاده از تابع millis () بدست می آید.

داخل حلقه void ، “STM32 – Blue Pill” را در خط اول و مقدار ثانیه ها در خط دوم نمایش می دهیم. مقدار دوم را می توان از تابع millis () بدست آورد. میلی ثانیه () یک تایمر است که درست از زمانی که MCU نیرو می گیرد افزایش می یابد. مقدار به صورت میلی ثانیه است بنابراین قبل از نمایش بر روی LCD ما آن را با 1000 تقسیم می کنیم.

void loop() {
  lcd.setCursor(0, 0); //ستون اول ردیف اول
  lcd.print("STM32 -Blue Pill"); //نمایش متن
  lcd.setCursor(0, 1); //در اول ردیف دوم
  lcd.print(millis() / 1000); //نمایش مقدار ثانیه ها
}

کد کامل :

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید
#include <LiquidCrystal.h> 
const int rs = PB11, en = PB10, d4 = PB0, d5 = PB1, d6 = PC13, d7 = PC14; 
LiquidCrystal lcd(rs, en, d4, d5, d6, d7); 
void setup() {
  lcd.begin(16, 2);
  lcd.setCursor(0, 0); 
  lcd.print("Interfacing LCD"); 
  lcd.setCursor(0, 1); 
  lcd.print("irenx"); 
  delay(2000); 
  lcd.clear(); 
}
void loop() {
  lcd.setCursor(0, 0);  
  lcd.print("STM32 -Blue Pill");
  lcd.setCursor(0, 1); 
  lcd.print(millis() / 1000);
}

بارگذاری برنامه در برد STM32F103C8T6

اتصالات را همانطور که در نمودار مدار نشان داده شده است برقرار کنید و کد کامل را در Arduino IDE قرار دهید و آپلود کنید. به ابزارها بروید و اطمینان حاصل کنید که تابلوی صحیح همانطور که در شروع کارآزمایی انجام شده است ، انتخاب شده است. همچنین قبل از بارگذاری برنامه اطمینان حاصل کنید که جامپر را مانند تصویر زیر و برد پایین روی 1 تنظیم کنید که حالت برنامه نویسی است.

تغییر حالت عملی و برنامه نویسی در STM32

همانطور که در قسمت قبلی گفتیم، در صورتی که کد را بارگذاری کنید عملیات اجرا میشود و پس از ریستارت شدن برد دیگر عملکرد انجام نمیشود. بنابراین پس از بارگذاری برنامه، جامپر را روی 0 بگذارید مانند برد بالایی در تصویر بالا. همچنین از آنجا که برنامه روی STM32 بارگذاری شده است دیگر نیازی به اتصال برد FTDI نداریم.

این فقط یک پروژه رابط کاربری ساده برای کمک به استفاده از نمایشگر LCD با برد STM32 است. در ادامه می توانید از این روش برای ساخت پروژه های جالب استفاده کنید.

قسمت بعد را هم ببینید : آموزش برنامه نویسی STM32 با پورت USB

5 (6 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید قرار بدهم. سوالات مربوط به این مطلب را در قسمت نظرات همین مطلب اعلام کنید. سعی میکنم در اسرع وقت به نظرات شما پاسخ بدهم.

5 نظر

  1. const int rs = PB7, en = PB6, d4 = PB5, d5 = PB4, d6 = PB3, d7 = PB15;
    LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
    این کد مشکلی داره ایا؟

    1. سلام عزیز
      برای STM32 بهتر هست از نمایشگر اولد استفاده کنید

  2. آموزشاتون خیلی خوبه ولی کاش با توابع hal هم آموزش میدادید

  3. سلام
    من دو روز هست دارم همین پروژه رو انجام میدم ….اما نمیدونم مشکل از کجاست …روی ال سی دی کاراکترهای عجیب غریب میاد و قسمتی از متن همون چیزی هست که میخوام اما بقیه یا وسط کارکترها حروف بی ربط هستند

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *