ورود/ایجاد حساب کاربری
   منوی اصلی
· خانه
· لیست کاربران
· جستجو
· آمار مشاهدات
· آرشیو مقالات


- شرح
· راهنمای نویسندگان
· درباره ما

   همکاری با نشریه
در صورتی که مایل به همکاری با نشریه هستید، می‌توانید در لیست پستی نشریه عضو شده و در جریان امور قرار گیرید. برای اطلاعات بیشتر، اینجا کلیک کنید.

   کاربران
سردبیر
هیچ مدیر کمکی حاضر
همکاران
هیچ مدیر کمکی حاضر
اعضا:
جدیدترین:جدید امروز:0
جدیدترین:جدید دیروز:0
جدیدترین:مجموع:2471
جدیدترین:جدیدترین:
ufumenarayu
اعضا:حاضر
اعضا:اعضا:0
مهمان‌ها:مهمان‌ها:6
مجموع:مجموع:6
کاربران حاضر
هیچ کاربر حاضری وجود ندارد

   ورود کاربران




 


 برای ورود مشکل دارید؟
 ثبت نام کاربران جدید

آشنایی با Kontrollerlab

(4599 مجموع کلمات موجود در متن)
(8619 بار مطالعه شده است)  نسخه چاپی

Kontrollerlab ابزاریست مناسب برای برنامه نویسی میکروکنترلر های AVR در گنو/لینوکس، تحت مجوز GPL . به طور خلاصه این برنامه با استفاده از ابزار زیر محیط مناسبی به منظور پیاده سازی پروژه های مربوطه فراهم می کند:

  • avr-gcc برای کامپایل برنامه های نوشته شده به زبان c و ... .
  • avrdude ، uisp برای آپلود و دانلود برنامه به/از میکروکنترلر.
  • عیب یابی با سیستم و عیب یابی در مدار (in-circuit debugging).
  • Serial terminal جاسازی شده در Kontrollerlab برای راحتی عیب یابی.
  • Kate ویرایشگر جاسازی شده در Kontrollerlab.
در این مقاله سعی شده است موارد پایه برای کار با این IDE توضیح داده شود و کاربران بعد از مطالعه این مقاله بتوانند برنامه را دریافت، نصب، اجرا کرده و تنظیمات پایه را انجام دهند.

نصب برنامه از روی کد منبع

برای نصب برنامه از روی کد منبع، به آخرین کد منبع ارائه شده که با پسوند tar.bz2 یا tar.gz مشخص می شود و کامپایلر ++GNU C نیاز دارید، که در بیشتر توزیع ها به طور پیش فرض وجود دارد. کد منبع را از [1] دانلود کرده و در دایرکتوری خانگی خود /home/user/ قرار دهید.اکنون با وارد کردن دستورات زیر آنرا از حالت فشرده خارج کنید:

$ cd /home/user
$ tar -xzfv kontrollerlab*.tar.gz
or
$ tar -xjfv kontrollerlab*.tar.bz2

حال وارد دایرکتوری ایجاد شده به نام kontrollerlab-versionnuber شوید و دستورات زیر را برای نصب وارد کنید:

$ cd kontrollerlab-*
$ ./configure
$ make
# make install

حال با وارد کردن kontrollerlab در خط فرمان می توانید برنامه را اجرا نمایید.

نصب برنامه از روی مخازن SVN

قبل از هر چیز مطمئن شوید که ابزار Subversion را در سیستم خود نصب دارید، زیرا برای اجرای دستور SVN به آن نیاز خواهید داشت. سپس با وارد کردن خط زیر آخرین کد منبع ارائه شده، دانلود شده و در دایرکتوری به نام kontrollerlab در دایرکتوری جاری شما ذخیره خواهد شد.

$ svn -co https://svn.sourceforge.net/svnroot/kontrollerlab/trunk kontrollerlab

حال makefile را ساخته و نصب را آغاز می کنیم:

$ cd kontrollerlab
$ make -f Makefile.cvs
$ ./configure
$ make
# make install

و سرانجام نصب به پایان رسیده و می توانید برنامه را به وارد کردن kontrollerlab در خط فرمان اجرا کنید.

نصب برنامه با استفاده از بسته های RPM

# rpm -iv /home/user/kontrollerlab*.rpm

به همین سادگی، برنامه نصب شده و می توانید با تایپ kontrollerlab در خط فرمان برنامه را اجرا کنید.

نصب برنامه با استفاده از بسته های Ubuntu

جدیدترین بسته ها را از [3] دانلود کرده و در دایرکتوری خانگی خود ذخیره کنید و سپس با دستور زیر برنامه را نصب کنید:

$ sudo dpkg -i /home/user/kontrollerlab*.deb

و با دستور kontrollerlab آنرا اجرا کنید.

نصب برنامه با استفاه از بسته های Debian

با توجه به اینکه بسته های دبیان مستقیما از مخازن svn ساخته می شوند، ممکن است ناپایدار باشند و در بعضی موارد منجر به هنگ کردن سیستم شود! و مزیت آن اینکه آخرین بسته توسعه یافته را نصب خواهید داشت. جدیدترین بسته دبیان را از [4] دانلود کنید و در دایرکتوری خانگی خود ذخیره کنید و برای نصب تایپ کنید:

$ sudo dpkg -i /home/user/kontrollerlab*.deb

اگر در طول نصب خطایی رخ داد، ممکن است با وارد کردن دستور زیر ( به منظور fix شدن dependence ها ) مشکل برطرف شود.

# apt-get install -f

بعد از نصب می توانید با وارد کردن دستور kontrollerlab در خط فرمان برنامه را اجرا کنید.

نصب برنامه با Gentoo Ebuild

با استفاده از Ebuild می توان kontrollerlab را برای Gentoo نصب کرد.برای اطلاعات بیشتر می توانید به [5] مراجعه کنید

مشکلات معمول که ممکن است در طول فرآیند نصب اتفاق بیافتد

Qt (>= Qt 3.2) (headers and libraries) not found. Please check your installation!

در این حالت، کتابخانه و یا هدرهای QT در سیستم نصب نشده است. چک کنید که بسته qt-devel نصب باشد. دلیل دیگر آن ممکن است این باشد که اسکریپت پیکربندی نمی تواند کتابخانه های مورد نیاز را پیدا کند. چک کنید که بسته Libtool نصب باشد. می توانید در هنگام وارد کردن دستور configure مسیر کتابخانه qt را مستقیما وارد نمایید، به عنوان مثال اگر qt در usr/lib/qt-3.3/ نصب باشد :

$ ./configure --with-qt-dir=/usr/lib/qt-3.3
--------------------------------------------------------------------
In the prefix, you've chosen, are no KDE headers installed. This will fail.
So, check this please and use another prefix!

در این حالت، چک کنید که kdelibs-devel و libtool نصب شده باشد.

کار با Kontrollerlab

با توضیحاتی که در این قسمت داده خواهد شد فرا خواهید گرفت که چطور یک پروژه جدید را شروع کرده، فایل کد C جدید اضافه کنید و چند خط کد بنویسید و سپس به میکروکنترلر خود آپلود نمایید.در اینجا با مطرح کردن مثالی مراحل را طی می کنیم و برنامه ای می نویسیم که چند LED بعد از اجرای برنامه شروع به چشمک زدن کنند!

فرض می کنیم بر روی سیستم خود UISP , avr-gcc , kontrollerlab و AVRdude را نصب داریم.

برای اجرای برنامه می توانید در خط فرمان kontrollerlab را تایپ کنید. به منظور ایجاد یک پروژه جدید گزینه new project را از منوی project انتخاب کنید؛ بعد از انتخاب گزینه باید محلی برای ذخیره پروژه مشخص کنید و نام پروژه را نیز مشخص کنید.و بعد از کلیک روی Open پروژه جدید در پنجره برنامه نمایش داده می شود. حال می توانید فایل های منبع (source code) را بسازید و یا فایل های از پیش ساخته شده را به پروژه خود اضافه کنید. برای اضافه کردن فایل موجود از منوی file گزینه '...Open' را انتخاب کنید و فایل مورد نظر خود را انتخاب کنید، اگر فایل انتخاب شده در دایرکتوری پروژه نباشد، برنامه فایل را در آن دایرکتوری کپی خواهد کرد و فایل به پروژه شما تعلق خواهد داشت.

برای ساخت یک source code جدید از منوی file گزینه new -> new را انتخاب کنید و در ادامه گزینه new را بزنید.پنجره کوچکی نمایان خواهد شد که در شکل زیر نمایش داده شده است. حال می توانید نوع فایل مورد نظر را انتخاب کرده و نام آن را مشخص کنید و به پروژه خود اضافه کنید. به عنوان مثال یک فایل جدید C از نوع 'C source' انتخاب و ok را بزنید. حال می توانید به نوشتن برنامه خود بپردازید.






برای کامپایل برنامه خود می توانید گزینه ' Build all ' را از منوی project انتخاب کنید.[6]
برای مثال خود (LED)، خطوط زیر را به فایل کد منبع C که ایجاد کرده اید اضافه کنید:

#include <avr/io.h>
int main()
{
char state;
int i, j, k; // Wait counters
DDRA=0x00; // Set all pins as outputs
state=0;
while (1) // Loop forever
{
for (i=0; i<10000; i++)
for (j=0; j<100; j++)
k++;
state = ~state;
PORTA = state;
}
}

فرض شده که LED ها به PORTA متصل هستند. پنجره برنامه بعد از نوشتن کد برنامه به شکل زیر خواهد بود:






برای انتخاب نوع (سری) میکروکنترلر خود به منوی project رفته و گزینه ' Config Project ' را انتخاب کنید. در پنجره ظاهر شده می توانید میکروکنترلر خود را انتخاب کنید و تنظیمات دیگری نیز انجام دهید.[7]
بعد از انجام تنظیمات و انتخاب میکروکنترلر، برای ساخت پروژه خود گزینه ' Build all ' را انتخاب کنید.در text box بالا آمده روند کار نمایش داده می شود و اگر خطایی در طول کار اتفاق افتاده باشد می توانید با دو بار کلیک کردن روی آن به خطی از برنامه که خطا مربوط به آن می شود بروید و بررسی کرده و مشکل را برطرف کنید.

اگر همه چیز خوب پیش رفت، زمان آن است که برنامه را به میکروکنترلر آپلود نمایید. توضیحات بیشتر برای پیکربندی های لازم را می توانید در [8] مشاهده نمایید.
برای پاک کردن، آپلود و بازبینی (verify) برنامه میکروکنترلر از نوار ابزار program می توانید استفاده کنید، که در شکل زیر نمایش داده شده است.






یک راه آسان برای ساخت، آپلود و بازبینی برنامه میکروکنترلر استفاده از دکمه ' Ignite ' نشان داده شده است. اکنون با کلیک بر روی دکمه ' Ignite ' برنامه به میکروکنترلر آپلود شده و بازبینی می شود و در text box روند کار نمایش داده می شود.

به همین سادگی شما پروژه بسیار ساده ای را با Kontrollerlab انجام داده و نتیجه گرفته اید.

تنظیمات کامپایلر

با انتخاب گزینه ' Configure Project ' از منوی پروژه، پنجره تنظیمات کامپایلر مانند شکل زیر نمایش داده می شود.


در سربرگ common ، در سمت راست و بالا می توانید نوع میکروکنترلر خود را انتخاب کنید و در زیر آن فرکانس کاری آن را به هرتز مشخص کنید.در زیر آن اطلاعاتی از میکروکنترلر انتخابی شما نمایش داده می شود. اگر می خواهید از SRAM خارجی استفاده کنید در سمت راست و پایین پنجره چک باکس (check box) مربوطه را تیک زده و ظرفیت حافظه مورد استفاده را مشخص کنید. و در پایین پنجره می توانید نام فایل hex و map را مشخص کنید.
برای پیکربندی کامپایلر سربرگ ' compiler ' را انتخاب کنید. که در زیر نشان داده شده است:


در این پنجره می توانید دستورات لازم را برای کامپایلر تنظیم کنید.

Mcall-prologues : توابع prologues/epilogues به منظور فراخوانی زیر روال های (subroutine) تعریف شده به کار می روند.
Wstrict-prototypes : اگر تابعی بدون مشخص کردن انواع آرگومان آن تعریف شود، هشدار می دهد.
Wall : فعال کردن همه اخطارها.
G : اطلاعات مورد نیاز برای عیب یابی را فراهم می کند. (برای دیباگر ضروری است[9])
Define F_CPU symbol : دستور DF_CPU=X را به کامپایلر اضافه می کند که می توانید به جای X فرکانسی که در سربرگ قبلی ست کرده اید را قرار دهید. بیشتر کتابخانه ها از این فلگ به منظور های مختلف استفاده می کنند، مانند محاسبه نرخ انتقال (baud rate) رجیستر با توجه به نرخ داده شده.
در قسمت optimizetion level می توانید سطح بهینه سازی را مشخص کنید:

  • سطح صفر (o0-) : بهینه سازی غیر فعال. که برای عیب یابی مناسب است.
  • سطح یک (o1-) و سطح دو (o2-) :انتخاب مناسبی هستند برای زمانیکه حالت کد سریع (fast code) فعال شده است، گزینه (os-).
  • سطح سه (o3-) : برای برنامه های میکروکنترلر توصیه نمی شود.

تنظیمات پروگرامر

برای باز کردن پنجره پیکربندی پروگرامر گزینه Configure programmer از منوی project را انتخاب کنید.


در سر برگ اول نوع رابط پروگرامر خود را می توانید انتخاب کنید :
UISP : که از [10] می توانید دانلود کنید.و AVRDUDE که از [11] قابل دانلود است.
در این سر برگ همچنین می توانید مسیر کامل برنامه را وارد کنید. زمانیکه Kontrollerlab با مشکل پیدا کردن رابط پروگرامر مواجه شود، این عمل مشکل را برطرف می کند.
سر برگ دوم و سوم فقط برای تنظیمات UISP می باشد و سربرگ آخر مخصوص AVRDUDE ، در سر برگ دوم که در شکل زیر نشان داده شده می توان تنظیمات عمومی UISP را انجام داد.


تنظیمات موجود در این قسمت و آرگومان های متناظر آن :

  • (Programmer type (-dprog : انتخاب نوع پروگرامر مورد استفاده.
  • (Port parallel (-dlpt : انتخاب پورت موازی مناسب.
  • (No data polling (-dno-poll : غیر فعال کردن نمونه دیتا.
  • (Disable retries of program enable (-dno-retry
  • (AT89S'parallel programming (-d89 : پروگرام کردن موازی دو میکروکنترلر AT89s52 و AT89s51 .
  • (Voltage (-dvoltage : ولتاژ منبع تغذیه را می توانید مشخص کنید.که روی مشخصات زمانی (timing spacs) تاثیر دارد.
  • (SCK high/low time (-dt_sck : مینیمم زمان بالا/پایین sck را می توانید تنظیم کنید.
  • (Flash max write delay (-dt_wd_flash : ماکزیمم تاخیر نوشتن روی فلش را مشخص می کند.
  • (EEPROM max write delay (-dt_wd_eeprom : ماکزیمم تاخیر نوشتن روی eeprom را مشخص می کند.
  • (Reset high time (-dt_reset : می توانید حداکثر زمان بیکاری/استراحت را مشخص کنید.
  • (Port(serial) (-dserial : ست کردن پورت سریال.
  • (Speed (-dspeed : ست کردن سرعت انتقال.



عیب یابی (Debugging)

کی از سخت ترین و خسته کننده ترین کارها در برنامه نویسی جستجو برای باگ ها و برطرف کردن آنهاست.یک برنامه عیب یابی خوب ابزاری است کلیدی که این کار را بسیار آسان تر می کند.از آنجا که همه برد های میکروکنترلر، سیستم های جاسازی شده (embedded) هستند، یک برنامه عیب یاب (دیباگر) مفید و قابل استفاده باید بتواند خط به خط برنامه را بررسی کند، در حالیکه تبادلات بین برد و دنیای بیرون توسط میکروکنترلر ، روی برد در حال انجام است، که عیب یابی در مدار (In Circuit Debugging (ICD نامیده می شود.

Dot matrix library wizard

با استفاده از این ویزارد می توانید کتابخانه LCD را اضافه کنید[12]. کتابخانه در بسته Kontrollerlab موجود است و با استفاده از این ویزارد به صورت خودکار به دایرکتوری پروژه شما اضافه خواهد شد. برای اضافه کردن آن، چک باکس ' ADD HD44780 library by peter Fleury to the project ' را علامت بزنید.(مطابق شکل)


در این قسمت به طور خلاصه، این تنظیمات را داریم :

تنظیمات عمومی (General setting)

LCD_CONTROLLER_KS0073 : اگر از LCD های نوع HD44780 یا KS0073 استفاده می کنید، این مقدار را به ترتیب صفر یا یک قرار دهید.
LCD_DISP_LENGTH : این پارامتر تعداد کاراکتر های یک خط از نمایشگر را مشخص می کند.می توانید برای اطلاعات بیشتر به دیتاشیت LCD مراجعه کرد.
LCD_LINE_LENGTH : این پارامتر تعداد بایت اختصاص داده شده در آدرس RAM به یک خط از نمایشگر را مشخص می کند. مقدار آن برای LCD های 16*2 اغلب اوقات 40*0 است.
LCD_LINES : تعداد خطوط نمایش گر را مشخص می کند.
LCD_START_LINE1 : آدرس شروع حافظه رم برای اولین خط از نمایشگر را مشخص می کند. اغلب اوقات 0*0 انتخاب خوبی برای این پارامتر است.
LCD_START_LINE2 : آدرس شروع حافظه رم برای دومین خط از نمایشگر را مشخص می کند. اغلب اوقات 40*0 انتخاب مناسبی برای این پارامتر است.
LCD_START_LINE3 : آدرس شروع حافظه رم برای سومین خط از نمایشگر را مشخص می کند این پارامتر فقط برای نمایشگر های سه خطی صدق می کند و اغلب اوقات مقدار آن 14*0 است.
LCD_START_LINE4 : آدرس شروع حافظه رم برای چهارمین خط از نمایشگر را مشخص می کند. بدیهی است که این پارامتر برای نمایشگر های دارای چهار خط صدق می کند.در اغلب اوقات 54*0 مقدار مناسبی است.
LCD_WRAP_LINES : اگر این پارامتر یک شود، WRAPPING در LCD صورت می گیرد.
XTAL : فرکانس کریستال به هرتز. به طور پیش فرض، در F_CPU ست می شود، که یک مقدار ثابت پردازنده است و در صفحه تنظیمات کامپایلر قابل تغییر است.

تنظیمات رابط (Interface)

: شماره پایه متصل شده به پایه شماره صفر دیتا نمایشگر.
LCD_DATA0_PORT : نام پورت پایه ای که به پایه دیتا شماره صفر نمایشگر متصل شده است.
LCD_DATA1_PIN : شماره پایه متصل شده به پایه شماره یک دیتا نمایشگر.
LCD_DATA1_PORT : نام پورت پایه ای که به پایه دیتا شماره یک نمایشگر متصل شده است.
LCD_DATA2_PIN : شماره پایه متصل شده به پایه شماره دو دیتا نمایشگر.
LCD_DATA2_PORT : نام پورت پایه ای که به پایه دیتا شماره دو نمایشگر متصل شده است.
LCD_DATA3_PIN : شماره پایه متصل شده به پایه شماره سه دیتا نمایشگر.
LCD_DATA3_PORT : نام پورت پایه ای که به پایه دیتا شماره سه نمایشگر متصل شده است.
LCD_E_PIN : شماره پایه متصل شده به پایه ENABLE نمایشگر.
LCD_E_PORT : نام پورت پایه ای که به پایه ENABLE نمایشگر متصل شده است.
LCD_RS_PIN : شماره پایه متصل شده به پایه RESET نمایشگر.
LCD_RS_PORT : نام پورت پایه ای که به پایه RESET نمایشگر متصل شده است.
LCD_RW_PIN : شماره پایه متصل شده به پایه RW نمایشگر.
LCD_RW_PORT : نام پورت پایه ای که به پایه RW نمایشگر متصل شده است.
LCD_IO_MODE : دو روش برای دسترسی به نمایشگر وجود دارد: اگر می خواهید از پورت I/O استفاده کنید، مقدار این پارامتر را یک قرار دهید و اگر می خواهید مکان هایی (خانه هایی) از حافظه را به پایه های نمایشگر اختصاص دهید، این مقدار را صفر قرار دهید.
LCD_PORT : به طور پیش فرض، همه پایه های متصل شده به LCD از یک پورت مشترک هستند. این پورت مشترک در این قسمت مشخص می شود.

  • شایان ذکر است که تنظیمات پیش فرض قابلیت اجرایی بالایی را فراهم می کند.

برای ایجاد تغییرات لازم، روی آیتم مربوطه در لیست کلیک کنید و سپس در کادر موجود در زیر لیست می توانید ارزش پارامتر مربوطه را تغییر دهید. به عنوان مثال، زمانیکه روی 'LCD_LINE_LENGHT' کلیک می کنید، کادر مربوطه در زیر لیست نمایان شده و می توانید مقدار مربوطه را در آن ست کنید (شکل زیر)


بعد از اعمال تغییرات با کلیک بر روی گزینه oK همه تنظیمات اعمال خواهد شد. به طور پیش فرض بار اولی که در پروژه بر روی گزینه OK کلیک می کنید، همه هدرهای کتابخانه (Library's header) و فایل کد های 'dm_lcd.c' و 'dm_lcd.h' در دایرکتوری پروژه کپی خواهند شد. در صورتی که عبارت 'Add HD44780 library by Peter Fleury to the project' در بالای پنجره را از حالت انتخاب شده خارج کنید و روی Ok کلیک کنید برنامه هشداری منبی بر اینکه ' آیا مطمئن هستید که می خواهید کتابخانه ها را از پروژه حذف کنید؟ ' نمایش خواهد داد.

  • توصیه می شود این گزینه همواره در حالت انتخاب شده باشد.

Dot matrix character wizard

با استفاده از این قسمت برنامه می توانید کاراکتر های دلخواه را در LCD های متنی که دارای حافظه رم تولید کاراکتر هستند، (Character generator RAM) رسم کنید.می توان صفحه رسم کاراکتر 8*5 و یا 10*5 را انتخاب کرد (شکل زیر)


نام متغیر که اطلاعات کاراکتر رسم شده را نگهداری می کند را در قسمت Variable name و نوع آنرا در قسمت type مشخص کنید. که نوع static prog_char گزینه مناسبی است، در این نوع AVR-GCC اطلاعات را در Flash EEPROM ذخیره می کند، (محلی که معمولا برنامه ذخیره می شود) که این امر سبب می شود در فضای رم میکروکنترلر صرفه جویی شود. برای این منظور لازم است که فایل هدر pgmspace.h را داشته باشید که با استفاده از عبارت:

#include <avr/pgmspace>

امکان پذیر خواهد بود. در غیر این صورت دیتای نوع prog_char تعریف نشده است.
اگر متغیر را در یک تابع وارد می کنید (درون تابع به کار می برید)، مطمئن شوید که آنرا static تعریف کرده اید. اگر بیرون تابع تعریف شده است، static بودن آن لزومی ندارد.
اندازه کاراکترهایی که در نمایشگر از آن استفاده می شود را می توانید با استفاده از دکمه های رادیویی '5*8' و '5*10' انتخاب کنید.فقط کاراکتر هایی که به طور صحیح انتخاب شده‌اند تغییر خواهند کرد.برای اضافه کردن کاراکتر از دکمه 'add' و برای حذف کاراکتر از 'remove' استفاده کنید.ترتیب قرار گرفتن کاراکتر ها در لیست را می توانید با دکمه های 'up' و 'down' تغییر دهید.

رسم کاراکتر

برای رسم کاراکتر، از قسمت سبز رنگ در سمت چپ پنجره استفاده کنید، با کلیک چپ روی هر خانه یک نقطه سیاه ایجاد شده و با کلیک راست بر روی آن، نقطه پاک خواهد شد. همچنین می توانید با کلیک چپ و نگاه داشتن دکمه و کشیدن آن نقطه های متوالی را رسم کنید. در حین رسم می توانید پیش نمایش کوچکی از کاراکتر را در سمت راست فضای سبز در لیست موجود ببینید.
همچنین می توانید از یک برنامه خارجی برای رسم طرح خود استفاده کنید و آن را ذخیره کرده و سپس با استفاده از 'conqueror' به دایرکتوری ذخیره شده رفته و فایل را با ماوس (mouse) کشیده و در فضای سبز پنجره برنامه رها کنید.Kontrollerlab طرح را قبول کرده و به صورت کاراکتر متناسب با برنامه تبدیل می کند. (طرح به grayscale تبدیل خواهد شد و هر پیکسل تاریک تر از 128 به صورت یک نقطه تاریک رسم خواهد شد).

حال با استفاده از یک مثال کوچک و کاربردی بیشتر به این مطلب می پردازیم :
کد زیر هشت کاراکتر تعریف شده توسط کاربر را که بر پایه LCD مدل HD44780 هستند را با استفاده از کتابخانه Peter Fleury نمایش می دهد.همانطور که در قسمت قبل توضیح داده شد این کتابخانه در حالت پیش فرض به صورت خودکار به پروژه اضافه می شود. البته می توانید از کتابخانه های دیگری نیز برای ارتباط با نمایشگر استفاه کنید. در اینجا این کتابخانه انتخاب شده است، زیرا به همراه Kontrollerlab ارائه می شود، انعطاف پذیر است و کار با آن بسیار ساده است.

#include "dm_lcd.h"
#include <avr/pgmspace.h>


int main()
{
// WIZARD CODE Do not edit the lines below.
// Otherwise the wizard may be unable to reread the settings.
// WIZARD DOT_MATRIX_CHARACTER_WIZARD 5x8
static prog_char newChar[] = { 0x3, 0x5, 0x9, 0x11, 0x9, 0x5, 0x3,
0x0, 0xe, 0xe, 0xe, 0xe, 0xe, 0x1f,
0xe, 0x4, 0x4, 0xe, 0x1f, 0xe, 0xe,
0xe, 0xe, 0xe, 0x0, 0x4, 0x1e, 0x1f,
0x1e, 0x4, 0x0, 0x0, 0x0, 0x4, 0xf,
0x1f, 0xf, 0x4, 0x0, 0x0, 0x1, 0xe,
0xe, 0x5, 0x4, 0x4, 0xa, 0x11, 0x1,
0x2, 0x2, 0x4, 0x14, 0x8, 0x8, 0x0,
0x7, 0x8, 0x1e, 0x8, 0x1e, 0x8, 0x7,
0x0 };
// END OF WIZARD CODE

uint8_t addressCounter=0;

lcd_init(LCD_DISP_ON);
lcd_clrscr();
lcd_home();
lcd_puts("CG-RAM ");
lcd_putc(0);
lcd_puts("\x1\x2\x3\x4\x5\x6\x7\nHello world!\0");

for (addressCounter=0;addressCounter<64;addressCounter++)
{
lcd_command((1<<LCD_CGRAM)+addressCounter);
lcd_data( pgm_read_byte(&newChar[ addressCounter ]) );
}

while (1)
{;}
}

برنامه فوق به صورت زیر سازمان دهی شده است :
ابتدا کاراکتر های تعریف شده توسط کاربر قرار دارد. سپس نمایشگر مقدار دهی اولیه شده ( Initialized ) و با دستور ()lcd_clrscr صفحه نمایش پاک می شود. بعد از آن، مکان نما (cursor)در ابتدای خط اول ست شده و عبارت ' CG-RAM ' به نمایشگر ارسال می شود. حال به منظور آماده کردن نمایشگر برای نمایش اولین کاراکتر که ایندکس 0 دارد، 0 (عدد باینری، صفر ASCII نیست!) را به نمایشگر ارسال می کنیم. برای این منظور نمی توان از دستور lcd_puts استفاده کرد، زیرا lcd_puts یک رشته تهی پایان یافته دریافت می کند و آن را به غلط تفسیر خواهد کرد.

پس از آن، همه کاراکتر های تعریف شده توسط کاربر را در یک خط پشت سر هم نوشته شده و سپس عبارت ' hello world ' در خط دوم نوشته شده است. حال به نمایشگر می گوییم که کاراکتر ها چگونه نمایش داده شود. برای این کار از حلقه for استفاده می کنیم. در حلقه ' CG RAM address ' با استفاده از lcd_command آدرس رم CG ست می شود و سپس یک بایت از آرایه کاراکتر به نمایشگر ارسال می شود.
اگر مکان نما را در یکی از خط های میان عبارت :

// WIZARD CODE Do not edit the lines below.
AND
// END OF WIZARD CODE

قرار دهیم و ویزارد Dot Matrix Character را باز کنیم، پنجره ویزارد بالا خواهد آمد و مانند شکل زیر نشان داده می شود و اطلاعات به صورت اتوماتیک از فایل خوانده می شود. اگر کاراکتر ها را تغییر دهید و روی Ok کلیک کنید، خطوط مربوطه در برنامه به صورت اتوماتیک تغییر خواهند کرد.


نتیجه مثال بالا به صورت شکل زیر نمایش داده خواهد شد:



مترجم: مهدی اکبری   Makbari61@gmail.com

منبع:

http://www.cadmaniac.org/projectMain.php?projectName=kontrollerlab


پانویسها:

[۱] http://www.cadmaniac.org/projectMain.php?projectName=kontrollerlab&section=download
[۲] http://www.cadmaniac.org/projectMain.php?projectName=kontrollerlab&section=download
[۳] http://www.cadmaniac.org/projectMain.php?projectName=kontrollerlab&section=download
[۴] http://www.cadmaniac.org/projectMain.php?projectName=kontrollerlab&section=download
[۵] http://bugs.gentoo.org/show_bug.cgi?id=162116
[۶] http://www.cadmaniac.org/projectMain.php?projectName=kontrollerlab&section=docs_compilerSettings
[۷] http://www.cadmaniac.org/projectMain.php?projectName=kontrollerlab&section=docs_compilerSettings
[۸] http://www.cadmaniac.org/projectMain.php?projectName=kontrollerlab&section=docs_downloadSettings
[۹] http://www.cadmaniac.org/projectMain.php?projectName=kontrollerlab&section=docs_debugging
[۱۰] http://savannah.nongnu.org/projects/uisp
[۱۱] http://savannah.nongnu.org/projects/avrdude
[۱۲] http://www.jump.to/fleury

PDF Version


تمامی مطالب و مقالات این سایت تحت مجوز GNU FDL قرار دارند. بنابراین کپی و ایجاد تغییر در آنها مطابق شرایط این مجوز آزاد می‌باشد.