تبلیغات
دست نوشته ها - displaying text in LCD with ATmega16 | برنامه نویسی + لینوکس و متن باز + روزنوشت + موسیقی

نویسنده: "feeruzy ارسال شده در: " درسی ، "، زمان ارسال: " 16 شهریور 90 ساعت 12:38"
  • سربرگ: برنامه ای که متنی را روی یک LCD ۲*۱۶ که توسط یک میکرو کنترلر ATmega16 کنترل می شود نمایش می دهد.

دانشجویان کامپیوتری به گوش  باشند که سرانجام آز ریزپردازنده گریبانشان را با میکرو های مختلف خواهد گرفت و مجبور خواهند بود به روشهای مختلف با این میکروها درگیر شوند. پس چه بهتر از اینکه از قبل برای این کارزار خود را بیازمایند و سپس پای در گود نهند!

این برنامه ای که در ادامه اومده برنامه ایه که به میکرو کنترلر atmega16 پروگرم میشه تا با اتصال به پرت های b و d این میکرو به عنوان درگاه اتصال به نمایشگر LCD ۲*۱۶ یه متن مثلا نام و نام خانوادگی نویسنده برنامه رو روی صفحه نمایش بده. برای نوشتن این برنامه از کامپایلر code vision استفاده میشه که دستورات زبان c رو به کدهای Hex تبدیل میکنه و این کد ها روی میکرو پروگرم میشن و ادامه قضایا!

البته اگه شما به این میکرو دسترسی ندارید میتونید از محیط پروتئوس استفاده کنید که عملکرد کلی برد و المان های الکترونیکی رو برای شما شبیه سازی میکنه.
شمای کلی این برد به این صورته :
Interface_LCD_with_AVR_microcontroller_string_circuit
  • این هم تصویر برد و المانها :
Interfacing_LCD_with_AVR_Microcontroller
  • این هم سورس برنامه :

//Program to Display string on LCD using AVR Microcontroller (ATmega16)
/*
LCD DATA port----PORT B
signal port------PORT D
rs-------PD0
rw-------PD1
en-------PD2
*/

#include<avr/io.h>
#include<util/delay.h>

#define LCD_DATA PORTB //LCD data port

#define crtl PORTD
#define en PD2 // enable signal
#define rw PD1 // read/write signal
#define rs PD0 // register select signal

void LCD_cmd(unsigned char cmd);
void init_LCD(void);
void LCD_write(unsigned char data);

int main()
{
DDRB=0xff;
DDRD=0x07;
init_LCD(); // initialization of LCD
_delay_ms(50); // delay of 50 mili seconds
LCD_write_string("pctimer.blogspot.com"); // function to print string on LCD
return 0;
}

void init_LCD(void)
{
LCD_cmd(0x38); // initialization of 16X2 LCD in 8bit mode
_delay_ms(1);

LCD_cmd(0x01); // clear LCD
_delay_ms(1);

LCD_cmd(0x0E); // cursor ON
_delay_ms(1);

LCD_cmd(0x80); // ---8 go to first line and --0 is for 0th position
_delay_ms(1);
return;
}

void LCD_cmd(unsigned char cmd)
{
LCD_DATA=cmd;
signal =(0<<rs)|(0<<rw)|(1<<en);
_delay_ms(1);
signal =(0<<rs)|(0<<rw)|(0<<en);
_delay_ms(50);
return;
}

void LCD_write(unsigned char data)
{
LCD_DATA= data;
signal = (1<<rs)|(0<<rw)|(1<<en);
_delay_ms(1);
signal = (1<<rs)|(0<<rw)|(0<<en);
_delay_ms(50);
return ;
}

void LCD_write_string(unsigned char *str) //store address value of the string in pointer *str
{
int i=0;
while(str[i]!='\0') // loop will go on till the NULL character in the string
{
LCD_write(str[i]); // sending data on LCD byte by byte
i++;
  }
return;
}

  • منبع :‌گاراژ مهندس ها
  • توضیحات: licence.mihanblog.com


آخرین ویرایش در: " 16 شهریور 90 ساعت 13:11"
برچسب ها: "atmega16" ، "code vision" ، "lcd 2*16" ، "الکترونیک" ، "ریزپردازنده" ،
در این ارتباط بخوانید: ""displaying text in LCD with ATmega16" in Google.com
نظرات