مهندس موفق الکترونیک

راه اندازی LCD کاراکتری و ADC در میکروکنترلر PIC

در ادامه مجموعه آموزش های میکروکنتر PIC توسط کامپایلر CCS C ، در این بخش به آموزش نحوه ی استفاده از LCD کاراکتری با استفاده از میکروکنترلر PIC می پردازیم و همزمان بخش ADC میکروکنترلر را نیز راه اندازی کرده و به صورت ساده نتایج تبدیل ADC را روی LCD نمایش می دهیم.

بخش اول، راه اندازی ADC

اگر آشنایی قبلی با واحد ADC میکروکنترلرها ندارید، پیشنهاد می کنم ابتدا این مطلب را مطالعه بفرمایید.

برای این برنامه از میکروکنترلر PIC16F877A استفاده می کنیم. مطابق آموزش های جلسات قبلی این میکروکنترلر را در بخش تنظیمات انتخاب کرده و فرکانس کلاک میکروکنترلر را روی 8MHZ تنظیم می کنیم. از سمت چپ بخش Analog را انتخاب می کنیم.

1

در بخش Analog Input پایه های ورودی که قصد استفاده به عنوان ورودی آنالوگ را داریم و همچنین پایه های مرجع را (در صورتی که میخواهیم مرجعی غیر از تغذیه میکروکنترلر برای مبدل ADC در نظر بگیریم) تعیین می کنیم.

در بخش Unites تعیین می کنیم که نتایج چند بیتی باشد و در بخش پایین آن کلاک بخش ADC را تعیین می کنیم.

بخش دوم راه اندازی LCD کاراکتری

اگر با LCD های کاراکتری آشنایی قبلی ندارید، پیشنهاد می کنم ابتدا این مطلب را در مورد LCD های کاراکتری مطالعه کنید.

مطلب پیشنهادی:  آموزش میکروکنترلرهای PIC با یک تمرین تایمر ساده

برای استفاده از LCD کاراکتری توسط میکروکنترلر PIC ، از سمت چپ پنجره تنظیمات بخش LCD(External) را انتخاب می کنیم. با زدن تیک  Use LCD می توانیم تعیین کنیم که پایه های LCD به کدامیک از پایه های میکروکنترلر وصل می شود.

با زدن تیک Include Example یک برنامه نمونه برای کار با LCD تولید می شود که می توانید برای یادگیری بیشتر از آن استفاده کنید.

2

بخش سوم، نمایش نتایج تبدیل ADC بر روی LCD

کد زیر ولتاژ آنالوگ روی پایه A0 میکروکنترلر را توسط واحد ADC خوانده و بر روی LCD کاراکتری نمایش می دهد.

// Melec.ir PIC CCS C courses
#define LCD_RS_PIN PIN_C0
#define LCD_RW_PIN PIN_C1
#define LCD_ENABLE_PIN PIN_C2
#define LCD_DATA4 PIN_C3
#define LCD_DATA5 PIN_C4
#define LCD_DATA6 PIN_C5
#define LCD_DATA7 PIN_C6
#include <16F877A.h>
#device ADC=10
#use delay(crystal=8000000)
#include <lcd.c>
void main()
{
float32 ADC_result;
  lcd_init(); 
  lcd_gotoxy(1,1);
  lcd_putc("Melec.ir Courses");
    lcd_gotoxy(1,2);                 
  lcd_putc("ADC reading:");
    setup_adc(ADC_CLOCK_DIV_32);      
  setup_adc_ports(AN0);             
  set_adc_channel(0);               
   while(TRUE)
  {
    ADC_result = read_adc();
    lcd_gotoxy(13,2);                
    printf(lcd_putc,"%4f",( ADC_result *0.0049));
    delay_ms(10);                   
  }
}

در بخش اول با عبارات define پایه های LCD که به میکروکنترلر وصل می شوند مشخص شده اند. این بخش توسط خود برنامه با انجام تنظیمات LCD در بخش wizard نرم افزار که در بخش قبلی توضیح داده شد ایجاد می شود.

  • یک متغیر به نام ADC_result برای ذخیره سازی نتایج تبدیل ADC ایجاد شده است. برای نمایش مقدار اعشاری ولتاژ این متغیر را از نوع float تعریف کرده ایم.
  • توسط تابع ()lcd_init که توسط خود نرم افزار ایجاد می شود تنظیمات اولیه LCD انجام می شود.
  • توسط تابع lcd_gotoxy(x, y) می توان محل نوشتن متن مورد نظر بر روی LCD را در سطر y و ستون x تنظیم کنیم.
  • توسط تابع lcd_putc(“String”) می توانیم عبارت نوشته شده به جای String را روی LCD نمایش دهیم.
مطلب پیشنهادی:  آموزش میکروکنترلر PIC با کامپایلر CCS

به عنوان مثال برای نمایش متن Mele.ir در سطر اول و ستون سوم به بعد LCD :

  lcd_gotoxy(3,1);
  lcd_putc("Melec.ir");

در ادامه سه تابع نوشته شده برای تنظیمات ADC است که توسط خود نرم افزار با انجام تنظیمات بخش های قبلی ایجاد می شوند.

تابع setup_adc فرکانس کلاک میکروکنترلر را تعیین می کند.

توابع setup_adc_ports و set_adc_channel پایه ورودی ADC میکروکنترلر را تعیین می کنند که در این مثال پایه A0 به عنوان ورودی آنالوگ تنظیم شده است.

در حلقه ی while(TRUE) که حلقه ی دائمی برنامه است، ابتدا توسط تابع read_adc  نتایج تبدیل ADC را خوانده و در متغیر ADC_result ذخیره سازی می کنیم، سپس مقدار متغیر ADC_result را با ضرب در عدد 0.0049 توسط تابع استاندارد printf به شکل یک رشته در آورده و توسط تابع lcd_putc بر روی LCD نمایش می دهیم.

عدد 0.0049 به صورت تقریبی است و از تقسیم عدد 5 بر عدد 1024 به دست آمده است. نتایج شبیه سازی در نرم افزار پروتئوس:

امیدوارم این بخش از آموزش میکروکنترلر PIC و کامپایلر CCS C برایتان مفید واقع شده باشد. سربلند و پیروز باشید.

اگر این نوشته‌ برایتان مفید بود لطفا کامنت بنویسید.

مطالعه دیگر جلسات این آموزش<< جلسه قبلی                    جلسه بعدی >>

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

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

یک دیدگاه

  1. درود بر شما:
    ممنونم عالی بود.