ربات سازان: طراح و تولیدکننده موتورهای الکتریکیربات سازان: طراح و تولیدکننده موتورهای الکتریکیربات سازان: طراح و تولیدکننده موتورهای الکتریکیربات سازان: طراح و تولیدکننده موتورهای الکتریکی
  • صفحه نخست
  • محصولات
    • درایورهای موتور DC
    • درایورهای موتور Stepper
    • کنتـــرلرها
    • عملگر خطی | سروو جک
    • الکتروموتور و دینام
    • ربـــات‌ها
  • مقالات آموزشی
    • مستندات آموزشی محصولات
      • مستندات آموزشی درایور PMD90
      • مستندات آموزشی درایور MD10/AMD10
      • مستندات آموزشی درایور PMD60A
      • مستندات آموزشی درایور MSD02
      • مستندات آموزشی مولد پالس
      • مستندات آموزشی درایور PMD30
      • مستندات آموزشی درایور MDC20
      • مستندات آموزشی سرو درایور MHD4830
      • مستندات آموزشی درایورهای استپر پنج فاز
      • مستندات آموزشی درایور MD5
      • مستندات آموزشی ربات روهان
    • موتورهای الکتریکی و کاربردهای آن
      • موتورهای الکتریکی DC
      • موتورهای الکتریکی AC
      • موتورهای الکتریکی Stepper
      • سایر موتورهای الکتریکی
    • مقالات آموزشی الکترونیک
    • آموزش میکروکنترلر
      • آموزش میکروکنترلرهای AVR
      • آموزش میکروکنترلرهای ARM سری LPC
      • آموزش میکروکنترلرهای ARM سری STM
    • آموزش کاربردی آردوینو
    • رباتیک و معرفی ربات‌های کاربردی
    • آموزش مفاهیم پایه در مکانیک
    • آموزش مفاهیم پایه در کنترل
    • آموزش برنامه‌نویسی
    • ایده‌های ربات سازان جهت جذب سرمایه گذار
    • سایر مقالات آموزشی
  • تماس با شرکت
✕

۳-۵ نوشتن کاراکترها بر روی LCD با استفاده از نرم افزار CodeVision

  • صفحه نخست
  • بلاگ ربات سازان
  • میکروکنترلر
  • ۳-۵ نوشتن کاراکترها بر روی LCD با استفاده از نرم افزار CodeVision
2-5 اتصال میکروکنترلرهای AVR به LCD
۲-۵ اتصال میکروکنترلرهای AVR به LCD
۱۱ بهمن ۱۳۹۷
بخش ۳-۱ راه اندازی سنسور مادون قرمز (اینفرارد یا IR) با برد آردوینو
بخش ۳-۱ راه اندازی سنسور مادون قرمز (اینفرارد یا IR) با برد آردوینو
۱۱ بهمن ۱۳۹۷

۳-۵ نوشتن کاراکترها بر روی LCD با استفاده از نرم افزار CodeVision

۱۱ بهمن ۱۳۹۷
blank
دسته‌بندی‌ها
  • میکروکنترلر
برچسب‌ها
  • آموزش میکروکنترلرهای AVR
3-5 نوشتن کاراکترها بر روی LCD با استفاده از نرم افزار CodeVision

3-5 نوشتن کاراکترها بر روی LCD با استفاده از نرم افزار CodeVision

برای استفاده از امکانات CodeVision برای نوشتن بر روی LCD باید ابتدا کتابخانه­‌ی مربوط به آن‌را در برنامه اضافه کنیم. اگر از Code Wizard استفاده کنید این عمل به صورت خود‌به‌خودی انجام خواهد‌شد. اولین دستور قابل استفاده در CodeVision برای چاپ تنها یک کاراکتر دستور ()lcd_putchar است.

با استفاده از این تابع می­‌توانید بر روی LCD خود یک کاراکتر چاپ کنید.

به قطعه کد زیر نگاه کنید:

[php]
while (1)
{
lcd_putchar('a');
};
[/php]

 

اگر این قطعه کد را کامپایل کرده و بر روی میکروکنترلری که به یک LCD متصل شده‌ است بریزید بر روی LCD مشاهده خواهید‌کرد که تمام خانه­‌های LCD شامل حرف a خواهند‌ شد. علت این امر آن است که از آنجایی که حلقه‌ی (while(1 همواره در‌حال اجرا است در هر بار یک a بر روی یک خانه‌ی LCD چاپ می‌شود و cursor توسط نرم‌افزار CodeVision بر روی خانه‌ها جابه‌جا می­‌شود و تمام خانه‌ها پر از حرف a می‌شود. Cursor همان مکان‌نما است که به همواره به صورت خود‌به‌خود به آخرین مکان قابل نوشتن اشاره دارد. همچنین به‌جای نوشتن عبارت ‘a’ در داخل تابع می­‌توانید یک کاراکتر را که قبلا تعریف و مقداردهی کرده‌اید را به این تابع پاس‌دهید.

مثلا مثل قطعه کد زیر عمل کنید:

[php]
while (1)
{
char str='a';
lcd_putchar(str);
};
[/php]

 

بازهم در این حالت اتفاقی مشابه قبل رخ خواهد‌داد. یک روش ساده برای این­که از چاپ شدن بیش از یک کاراکتر بر‌روی LCD در حلقه‌ی (while(1 جلوگیری کنیم استفاده از تکنیک flag گذاری است. نحوه ­استفاده از این تکنیک را در زیر مشاهده می­‌کنید.

[php]
int flag=1;
void main(void)
{
// Declare your local variables here
[/php]

[php]
while (1)
{
if(flag)
{
lcd_putchar('a');
flag=0;
}
};
[/php]

 

در این تکنیک در‌ابتدای برنامه ضمن تعریف متغیر flag و مقدا‌ردهی به آن به عدد ۱ و سپس پس از ورود به حلقه و یک بار صحیح بودن شرط حلقه و اجرای دستور مورد نظر و نهایتا صفر کردن flag برای غلط شدن شرط حلقه استفاده شده‌ است. هرجای برنامه که باز نیاز داشتید تابع داخل if دوباره اجرا شود می‌­توانید متغیر flag را ۱ کنید. در واقع ۱ به معنای همان true بودن شرط if است. حال می­توانید هرجا که نیاز به پاک کردن تمام کاراکترهای روی  LCD داشتید، از دستور ( ) lcd_clear استفاده‌ کنید.

به قطعه کد زیر نگاه کنید. در این قطعه کد کاراکتر   ‘a’ بر‌روی LCD چاپ شده و به مدت ۲ ثانیه نیز بر‌روی صفحه­ ی LCD قابل مشاهده است و پس از آن این کاراکتر از روی صفحه پاک می­‌شود. اگر می­‌خواهید رشته ­ای ثابت از حروف و اعدد را بر روی LCD چاپ کنید می­‌توانید از دستور ()lcd_putsf استفاده کنید.

[php]
int flag=1;
void main(void)
{
// Declare your local variables here
[/php]

[php]
while (1)
{
if(flag)
{
lcd_putchar('a');
flag=0;
}
delay_ms(2000);
lcd_clear();
};
[/php]

 

مثلا به قطعه کد مقابل نگاه کنید:

[php]
int flag=1;
void main(void)
{
// Declare your local variables here
[/php]

[php]
while (1)
{
if(flag)
{
lcd_putsf("Hello AVR World 12/8/2012");
flag=0;
}
};
[/php]

با اجرای چنین کدی بر روی میکرو‌ رشته‌ای متشکل از اعداد و حروف بر روی LCD قابل مشاهده است. توجه داشته باشید که طول این رشته نباید بیش از ۳۲ کاراکتر باشد. نکته­‌ای که در این دستور وجود دارد این است که شما تنها رشته‌های ثابت را می­‌توانید با این تابع بر روی LCD چاپ کنید.

تابع دیگری که به وسیله ­ی آن می­‌توان یک رشته با طول و حروف متغیر را بر روی LCD چاپ کرد به صورت ( )lcd_puts است.

با استفاده از این تابع می‌­توان با پاس دادن یک اشاره گر به رشته که همان نام رشته می­‌باشد یک رشته را بر روی LCD چاپ کرد. حال به قطعه کد زیر نگاه کنید:

[php]
int flag=1;
char str[]="Dreamy World of Electronics";
void main(void)
{
// Declare your local variables here
[/php]

[php]
while (1)
{
if(flag)
{
lcd_puts(str);
flag=0;
}
};
[/php]

 

در قطعه کد بالا ابتدا یک رشته با محتوای “Dreamy World of  Electronics” تولید کرده‌­ایم، سپس با استفاده از پاس‌دادن نام رشته به تابع ()lcd_puts  آن را بر روی LCD چاپ کردیم. در این جا چون طول رشته‌ها و محتوای آن قابل‌ تغییر است می­‌توان چندین‌بار یک رشته را بر روی LCD با محتوای متفاوت چاپ کرد. مثلا به قطعه کد زیر نگاه کنید:

[php]
int flag=1;
char str[]="Dreamy World of Electronics";
void main(void)
{
// Declare your local variables here
[/php]

[php]
while (1)
{
str[0]='*';
str[0]='^';
str[0]='^';
str[0]='*';
if(flag)
{
lcd_puts(str);
flag=0;
}
};
[/php]

 

پس از اجرای چنین کدی عبارت “*^^*my World of Electronics” بر‌روی LCD چاپ خواهد‌شد. بنابراین همان­طور که­ می­‌بینید می­‌توان عناصر داخل یک رشته را قبل از چاپ کردن تغییر داد. با استفاده از این تابع می­‌توانید محاسبات عددی خود را پس از آنکه آنها را به رشته تبدیل کردید بر روی LCD چاپ کنید.

 

حال اگر بخواهیم مکان شروع عمل نوشتن کاراکتر­ها در LCD را مشخص کنیم می­‌توانیم از تابع (lcd_gotoxy(int column , int row استفاده کنیم.

در واقع خانه‌های موجود در یک LCD به ابعاد 2*8 ومشابه آن LCD های 2*16 دارند به شکل زیر است.

 

(7,0) (6,0) (5,0) (4,0) (3,0) (2,0) (1,0) (0,0)
(7,1) (6,1) (5,1) (4,1) (3,1) (2,1) (1,1) (0,1)

 

حال مشابه قطعه کد زیر می­‌توان شروع نوشتن رشته­‌ی str را از خانه‌ی (0,1)  از‌ سر‌ گرفت.

[php]
int flag=1;
char str[]="AVR Book";
void main(void)
{
// Declare your local variables here
[/php]

[php]
while (1)
{
lcd_gotoxy(0,1);
if(flag)
{
lcd_puts(str);
flag=0;
}
};
[/php]

 

در‌واقع حرف ‘A’ که اولین حرف از رشته‌ی str است در خانه­‌ی (0,1) از LCD چاپ خواهد‌ شد.

حال اگر بخواهیم اعداد و متغیرهایی از نوع­‌های integer و یا float را برروی LCD چاپ کنیم می‌­توانیم از تابع ()sprint مانند قطعه کد زیر استفاده کنیم.

[php]
#include <stdio.h>

int flag=1;
char str[20];
int amount=18;

void main(void)
{
// Declare your local variables here
[/php]

[php]
while (1)
{
if(flag)
{
sprintf(str,"the amount is : %d",amount);
lcd_puts(str);
flag=0;
}
};
[/php]

 

این تابع در‌ واقع برای عملکرد خود نیاز به یک رشته و عدد مورد نظر دارد.

این تابع عدد مورد نظر را به رشته تبدیل کرده و آن را داخل رشته­‌ی پاس داده‌شده به خود می­‌گذارد و ما با استفاده از این رشته می­‌توانیم عدد تبدیل یافته به رشته را روی LCD چاپ کنیم. تا این‌جا شما به‌طور کامل با روش‌های چاپ کاراکترها در انواع مختلف بر‌روی LCD کاملا آشنا شدید، لازم به ذکر است مفاهیم این فصل در فصول بعدی به دفعات تکرار خواهد شد، بنابراین لطفا در یادگیری مفاهیم این فصل دقت لازم را به عمل آورید.

 

 

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

مطالب و مقالات مرتبط

4-9 راه‌اندازی ماژول SRF08 Range finder

4-9 راه‌اندازی ماژول SRF08 Range finder

۲۹ بهمن ۱۳۹۷

۴-۹ راه‌اندازی ماژول SRF08 Range finder


مشاهده مطلب ...
3-9 معرفی توابع I2C در CodeVision

3-9 معرفی توابع I2C در CodeVision

۲۹ بهمن ۱۳۹۷

۳-۹ معرفی توابع I2C در CodeVision


مشاهده مطلب ...
2-9 راه‌اندازی پروتکل I2C در CodeVision

2-9 راه‌اندازی پروتکل I2C در CodeVision

۲۹ بهمن ۱۳۹۷

۲-۹ راه‌اندازی پروتکل I2C در CodeVision


مشاهده مطلب ...

2 Comments

  1. blank sina گفت:
    ۹ اردیبهشت ۱۳۹۷ در ۰۴:۲۷

    سلام داداشم
    فک کنم اشتباه می فرمایید، چون lcd_putchar() فقط مخصوص چاپ کاراکتر هست و نه متغیر، منم خودم این مشکل رو داشتم، چون برای رشته این مشکل وجود نداره، چون هم تابع puts برای متغیر هست و هم putsf , putse برای رشته در فلش و اییپرام، خلاصه بگم خودم درستش کردم، کافیه بری تو کتابخانه lcd.h و یه ضربدر * قبل از معرفی آرگومان c تابع lcd_putchar() بذاری، مشکل حل میشه، و هم میتونه کاراکتر و هم متغیر رو بخونه، با پروتئوس تست کردم درسته، اما هنوز با میکرو تستش نکردم،
    بگو یا علی

    پاسخ
  2. blank sina گفت:
    ۹ اردیبهشت ۱۳۹۷ در ۰۴:۳۰

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

    پاسخ

دیدگاهتان را بنویسید لغو پاسخ

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

جستجو در مطالب ربات سازان

✕

آخرین نوشته‌های ربات سازان

  • انتخاب بهینه‌ترین هیت‌سینک برای کاربردهای الکترونیک قدرت0
    انتخاب بهینه‌ترین هیت‌سینک برای کاربردهای الکترونیک قدرت
    ۳ آبان ۱۴۰۲
  • خواندن پلاک الکتروموتورهای سه فاز0
    خواندن پلاک الکتروموتورهای سه فاز
    ۱۳ تیر ۱۴۰۱
  • خواندن دیتاشیت موتور دی سی1
    خواندن دیتاشیت موتور دی سی
    ۱۳ خرداد ۱۴۰۱
  • محاسبه نسبت گیربکس2
    محاسبه نسبت گیربکس
    ۸ خرداد ۱۴۰۱
  • محاسبه سرعت استپ موتور بر حسب دور بر دقیقه0
    محاسبه سرعت استپ موتور بر حسب دور بر دقیقه
    ۲ خرداد ۱۴۰۱

لوگوی ربات سازان

درباره ربات سازان

شرکت ربات سازان فعالیت خود را از سال ۱۳۹۳ شروع کرده است. در ابتدا حوزه کاری شرکت طراحی و ساخت ربات‌های پلتفرم آزمایشگاهی بود که به مرور با بومی‌سازی درایور موتورهای استفاده شده در این ربات‌ها محصولی جدید به سبد محصولات شرکت اضافه شد. پس از آن شرکت به صورت تخصصی شروع به طراحی و ساخت انواع درایورهای موتورهای الکتریکی دی سی و استپر کرد و اکنون پس از گذشت ۸ سال از فعالیت شرکت توانسته‌ایم با پوشش دادن رنج وسیعی از درایورهای موتورهای الکتریکی در ولتاژ، جریان و توان‌های مختلف نیازهای صنعت کشور عزیزمان را در زمینه‌های مختلف برطرف نماییم.

blankblankblankblank

دسترسی سریع

  • صفحه اصلی
  • بلاگ ربات سازان
  • همه محصولات ربات سازان
  • ارتباط با ما
تمامی حقوق مادی و معنوی مطالب این وبسایت متعلق به ربات سازان می‌باشد.
      ✕

      ورود

      گذرواژه خود را فراموش کرده اید؟

      می خواهید یک حساب کاربری ایجاد کنید؟