امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
راه اندازی LCD با ATMEGA16 or 32
نویسنده پیام
parviz2012 آفلاین
كاربر دو ستاره
**

ارسال‌ها: 171
موضوع‌ها: 16
تاریخ عضویت: آبان ۱۳۹۰

تشکرها : 4
( 98 تشکر در 74 ارسال )
ارسال: #1
راه اندازی LCD با ATMEGA16 or 32
سلام.
من فکر کنم تا حالا 5 6 تا پروژه برای راه اندازی ال سی دی 2 در 16 با ای تی مگا 16 یا 32 از اینترنت و جای دیگه گرفتم. مدارشونو می بندم برنامه ریزی هم میکنم. ال سی دی روشن میشه ولی هیچ چی روش نمینویسه.
یکیش همین لینکه
میشه یه پروژه معرفی کنید بعد یه خورده هم مفصل روش توضیح بدید.
راستی اگه تو مدارای ای وی آر بجای کریستال ذکر شده کریستال با مقدار دیگه بذاری چه تاثیری داره؟ مثلا 4 مگا بجای 12 مگا
دستان پر توان برس به داد این ناتوان اینم از گجت.....
تنک یو

گمان مبر که به پایان رسیده کار جهان / هزار باده ناخورده در رگ تاک است
(آخرین ویرایش در این ارسال: ۱۰-آبان-۱۳۹۰, ۰۷:۳۵:۲۸، توسط parviz2012.)
۱۰-آبان-۱۳۹۰, ۰۷:۲۰:۱۳
وب سایت ارسال‌ها
پاسخ
h0x00i آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 959
موضوع‌ها: 109
تاریخ عضویت: دى ۱۳۸۹

تشکرها : 2866
( 2450 تشکر در 949 ارسال )
ارسال: #2
RE: راه اندازی LCD با ATMEGA16 or 32
سلام دوست عزیز ...

برای کار با lcd اول باید lcd به میکرو معرفی کنید و پایه های اون به میکرو معرفی کنید و همین طور نوع اون که از چه مدلی استفاده می کنید

کد:
معرفی پایه های lcd
Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Portc.7 , Rs = Portc.6
معرفی نوع lcd
Config Lcd = 16 * 2

بعد ار این می توانید با تایپ کردن دستور
کد:
LCD "welcom"
یک متن یا رشته یا یک متغیر یه کارکتور را نمایش بدی

پیشنهاد می کنم قبل از هر دستوری از cls برای پاک کردن صفحه نمایش lcd استفاده کنید

اخر سر هم حتما اتصال های بین میکرو و lcd حتما تست کن ببین درست بر قرار هست بهتر از یک پتانسیو متر برای تنظیم نور lcd استفاده کنی

اینم یک برنامه ساده برای کار

کد:
$regfile = "m8def.dat"
$crystal = 16000000

'lcd
Config Lcdpin = Pin , Db4 = Pind.2 , Db5 = Pind.3 , Db6 = Pind.4 , Db7 = _
Pind.5 , E = Pind.1 , Rs = Pind.0
Config Lcd = 16 * 2

Dim A As Integer , B As Single

Cls

Lcd "welcom"
Locate 2 , 2

A = 10
B = 11
B = A + B
Lcd "a + b =",B

End 'end program

درمورد کریستال : باید از همون کریستال استفاده کنی یا با دستور
Config Clockdiv = x
مقدار کریستال بدست بیاری
مقدار x می تونه : 1 , 2 , 4 , 8 ,16 , 32 ,64 , 128 , 256 باشه


اینم نحوه اتصال به میکرو
[تصویر:  oj5mc5ew8v4f68lhaab.png]


:)

دوستان الکترونیکی پیشنهاد می کنم حتما برن python یاد بگیرن ...
پروژه ، مقاله ،... 
(آخرین ویرایش در این ارسال: ۱۰-آبان-۱۳۹۰, ۱۱:۰۹:۱۹، توسط h0x00i.)
۱۰-آبان-۱۳۹۰, ۱۰:۵۹:۵۲
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : علي برقي, sajadgh, رسول, omid_phoenix, Ambassador
علي برقي آفلاین
كاربر دو ستاره
**

ارسال‌ها: 209
موضوع‌ها: 25
تاریخ عضویت: اردیبهشت ۱۳۹۰

تشکرها : 477
( 406 تشکر در 166 ارسال )
ارسال: #3
RE: راه اندازی LCD با ATMEGA16 or 32
سلام
شما اون پتانسیومتر رو وصل کردی؟
اگه وصل کردی آیا باهاش بازی میکنی؟منظورم اینه که کم و زیادش میکنی؟
آخه اون پتانسیومتر برای تغییر کنتراست کارکترهاست . با چرخوندن پتانسیومتر میتونی کارکتر هاتو محو یا تاریک تاریک کنی.

من تو را دوست دارم.. دیگری تو را دوست دارد.. دیگری دیگری را دوست دارد.. و این چنین است که ما تنهاییم..
۱۰-آبان-۱۳۹۰, ۱۱:۰۷:۳۳
ارسال‌ها
پاسخ
تشکر شده توسط : h0x00i, sajadgh, رسول
sajadgh آفلاین
كاربر دو ستاره
**

ارسال‌ها: 90
موضوع‌ها: 7
تاریخ عضویت: مرداد ۱۳۸۸

تشکرها : 207
( 225 تشکر در 88 ارسال )
ارسال: #4
RE: راه اندازی LCD با ATMEGA16 or 32
نقل قول: اخر سر هم حتما اتصال های بین میکرو و lcd حتما تست کن ببین درست بر قرار هست بهتر از یک پتانسیو متر برای تنظیم نور lcd استفاده کنی
اگه از سالم بودن lcd مطمئنی به توصیه آقای h0x00i گوش کن در چون اگه مقدار پتناسیومتر تنظیم کنتراست درست نباشه و یا اصلا وجود نداشته باشه صفحه به صورت خالی نمایش داده میشه. اگر هم نشد که احتمالا lcd شما مشکل داره ...
راستی یادم رفته بود تغییر کریستال تو این برنامه ها فقط سرعت کار رو تغییر میده.
نکته: نا گفته نماند که اگه شما جایه کریستال 1مگ یه کریستال 16مگ استفاده کنی برنامه دیگه کار نمیکنه چون توابع lcd از کریستال 1 مگ برای محاسبه زمانهای تاخیر استفاده کردن که این باعث میشه با کریستال 16مگ lcd دیگه پاسخ گو نباشه

خدایا ، در ۲ راهی زندگی ام تابلوی راهت را محکم قرار بده

نکند که با نسیمی راهم را کج کنم
(آخرین ویرایش در این ارسال: ۱۰-آبان-۱۳۹۰, ۱۱:۳۲:۲۸، توسط sajadgh.)
۱۰-آبان-۱۳۹۰, ۱۱:۰۹:۴۲
ارسال‌ها
پاسخ
تشکر شده توسط : علي برقي, h0x00i, رسول, vigraz
parviz2012 آفلاین
كاربر دو ستاره
**

ارسال‌ها: 171
موضوع‌ها: 16
تاریخ عضویت: آبان ۱۳۹۰

تشکرها : 4
( 98 تشکر در 74 ارسال )
ارسال: #5
RE: راه اندازی LCD با ATMEGA16 or 32
آقا خیلی متشکر راستی من این برنامه ای که دادید رو توی bascom avr اجرا و کامپایل کنم؟
من atmega 8 ندارم اگه همین کد رو که دادید تو atmega16a چه تغییری میکنه؟
آخه اگه اون لینکی که بالا نوشتم رو ببینیند . من بردم توی winavr و موقع make allتوی برنامه programmers notepad خطا داد که متغیر ctrl نمیشناسه منم بالای کدها بعد از هدرها نوشتم int ctrl=0
بعد کامپایل شد. ولی گفتم ال سی دی روشن میشه حتی تموم خونه های سطر اولش هم به صورت نقطه چین در میومد ولی اون کلمه A رو نشون نمیداد.


گمان مبر که به پایان رسیده کار جهان / هزار باده ناخورده در رگ تاک است
(آخرین ویرایش در این ارسال: ۱۰-آبان-۱۳۹۰, ۱۶:۰۰:۱۹، توسط parviz2012.)
۱۰-آبان-۱۳۹۰, ۱۵:۵۵:۳۴
وب سایت ارسال‌ها
پاسخ
sajadgh آفلاین
كاربر دو ستاره
**

ارسال‌ها: 90
موضوع‌ها: 7
تاریخ عضویت: مرداد ۱۳۸۸

تشکرها : 207
( 225 تشکر در 88 ارسال )
ارسال: #6
RE: راه اندازی LCD با ATMEGA16 or 32



(۱۰-آبان-۱۳۹۰, ۱۵:۵۵:۳۴)parviz2012 نوشته است: آقا خیلی متشکر راستی من این برنامه ای که دادید رو توی bascom avr اجرا و کامپایل کنم؟
من atmega 8 ندارم اگه همین کد رو که دادید تو atmega16a چه تغییری میکنه؟
آخه اگه اون لینکی که بالا نوشتم رو ببینیند . من بردم توی winavr و موقع make allتوی برنامه programmers notepad خطا داد که متغیر ctrl نمیشناسه منم بالای کدها بعد از هدرها نوشتم int ctrl=0
بعد کامپایل شد. ولی گفتم ال سی دی روشن میشه حتی تموم خونه های سطر اولش هم به صورت نقطه چین در میومد ولی اون کلمه A رو نشون نمیداد.

بله دوست عزیز توسط بسکام کامپایل کنید

وه به جای
کد:
$regfile = "m8def.dat"
بنویسید
کد:
$regfile = "m16def.dat"

خدایا ، در ۲ راهی زندگی ام تابلوی راهت را محکم قرار بده

نکند که با نسیمی راهم را کج کنم
(آخرین ویرایش در این ارسال: ۱۱-آبان-۱۳۹۰, ۰۰:۱۵:۴۷، توسط sajadgh.)
۱۱-آبان-۱۳۹۰, ۰۰:۰۷:۲۰
ارسال‌ها
پاسخ
تشکر شده توسط : رسول, h0x00i, vigraz, rade_abi101
parviz2012 آفلاین
كاربر دو ستاره
**

ارسال‌ها: 171
موضوع‌ها: 16
تاریخ عضویت: آبان ۱۳۹۰

تشکرها : 4
( 98 تشکر در 74 ارسال )
ارسال: #7
RE: راه اندازی LCD با ATMEGA16 or 32
پس چرا این تو codevision جواب نمیده؟
یه بررسی کن بی زحمت.
کد:
کد:
#include <mega16.h>
#include <lcd.h>
#include <stdio.h>
#define xtal 8000000

#asm
.equ __lcd_port=0x1B ;PORTA
#endasm

unsigned char second, minute,hour;
unsigned char lcd_buff[10];

interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{
if(second==59)
{
second=0;
if(minute==59)
{
minute=0;
if(hour==24)
hour=0;
else
hour++;
}
else
minute++;
}
else
second++;

sprintf(lcd_buff,"Time = %d:%d:%d",hour, minute, second);
lcd_clear();
lcd_puts(lcd_buff);
}

// Declare your global variables here


void main(void)
{

// Timer/Counter 2 initialization
// Clock source: TOSC1 pin
// Clock value: PCK2/128
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x08;
TCCR2=0x05;
TCNT2=0x00;
OCR2=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x40;

lcd_init(16);

#asm("sei") // Global enable interrupts

while (1);

}

و عکس مدارش در پیوست البته من به ال سد دی 5 ولت میدم ولی بازم گفتم یه سطر کلا خونه هاش روشن میشه و چیزی نمینویسه.


فایل‌(های) پیوست شده بندانگشتی (ها)
   

گمان مبر که به پایان رسیده کار جهان / هزار باده ناخورده در رگ تاک است
۱۲-آبان-۱۳۹۰, ۰۳:۳۱:۳۳
وب سایت ارسال‌ها
پاسخ
علي برقي آفلاین
كاربر دو ستاره
**

ارسال‌ها: 209
موضوع‌ها: 25
تاریخ عضویت: اردیبهشت ۱۳۹۰

تشکرها : 477
( 406 تشکر در 166 ارسال )
ارسال: #8
RE: راه اندازی LCD با ATMEGA16 or 32
سلام

اگه از سخت افزارش مطمئني ، اين برنامه رو تست كن . من هميشه براي نشون دادن متغيير تو ال سي ذي كاركتري از اين روش استفاده ميكنم .
کد:
#include <mega16.h>

// Alphanumeric LCD functions
#include <lcd.h>
#include <stdlib.h>
#asm
.equ __lcd_port=0x1B ;PORTA
#endasm



unsigned int second, minute,hour;
unsigned char *a;

interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{
second++;
if(second==60)
{
second=0;
minute++;
if(minute==60)
{
minute=0;
hour++;
if(hour==24)
hour=0;
}
}
lcd_gotoxy(0,0);
lcd_putsf("Time=");
itoa(hour,a);
if(hour<10)
lcd_putsf("0");
lcd_puts(a);
lcd_putsf(":");
itoa(minute,a);
if(minute<10)
lcd_putsf("0");
lcd_puts(a);
lcd_putsf(":");
itoa(second,a);
if(second<10)
lcd_putsf("0");
lcd_puts(a);
}


void main(void)
{

// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0xFF;


// Timer/Counter 2 initialization
// Clock source: TOSC1 pin
// Clock value: PCK2/128
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0x08;
TCCR2=0x05;
TCNT2=0x00;
OCR2=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x40;



lcd_init(16);

// Global enable interrupts
#asm("sei")

while (1);
}
فايل شبيه سازيشم اينجا گذاشتم .


فایل‌(های) پیوست شده
.zip   lcd.zip (اندازه: 6.02 KB / تعداد دفعات دریافت: 311)

من تو را دوست دارم.. دیگری تو را دوست دارد.. دیگری دیگری را دوست دارد.. و این چنین است که ما تنهاییم..
(آخرین ویرایش در این ارسال: ۱۳-آبان-۱۳۹۰, ۰۳:۲۰:۱۲، توسط علي برقي.)
۱۳-آبان-۱۳۹۰, ۰۳:۱۷:۱۷
ارسال‌ها
پاسخ
تشکر شده توسط : h0x00i, sajadgh, vigraz
alinavidy آفلاین
تازه وارد

ارسال‌ها: 4
موضوع‌ها: 0
تاریخ عضویت: دى ۱۳۹۰

تشکرها : 25
( 0 تشکر در 0 ارسال )
ارسال: #9
RE: راه اندازی LCD با ATMEGA16 or 32
با عرض سلام و خسته نباشید
من یه ال سی دی گرافیکی ks1080p و متاسفانه یه چند ثانیه کل مدار رو با 12 ولت روشن کردم میکروم که atmega32 بود سوخت و ال سی دی هم کار نمی کنهبا ینکه یه سری قطعات پشت ال سی دی هست آیا میشه اون رو دوباره تعمیر و راه اندازی کرد و یا تستی برای این ال سی دی ها وجود دارد.
با تشکر
۰۱-مهر-۱۳۹۱, ۱۸:۵۳:۱۶
ارسال‌ها
پاسخ
omid_phoenix آفلاین
مدیر بخش
*****

ارسال‌ها: 2,238
موضوع‌ها: 108
تاریخ عضویت: شهریور ۱۳۹۱

تشکرها : 12682
( 15433 تشکر در 4574 ارسال )
ارسال: #10
RE: راه اندازی LCD با ATMEGA16 or 32
(۱۲-آبان-۱۳۹۰, ۰۳:۳۱:۳۳)parviz2012 نوشته است: پس چرا این تو codevision جواب نمیده؟
یه بررسی کن بی زحمت.
کد:
کد:
#include <mega16.h>
#include <lcd.h>
#include <stdio.h>
#define xtal 8000000

#asm
.equ __lcd_port=0x1B ;PORTA
#endasm

unsigned char second, minute,hour;
unsigned char lcd_buff[10];

interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{
if(second==59)
{
second=0;
if(minute==59)
{
minute=0;
if(hour==24)
hour=0;
else
hour++;
}
else
minute++;
}
else
second++;

sprintf(lcd_buff,"Time = %d:%d:%d",hour, minute, second);
lcd_clear();
lcd_puts(lcd_buff);
}

// Declare your global variables here


void main(void)
{

// Timer/Counter 2 initialization
// Clock source: TOSC1 pin
// Clock value: PCK2/128
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x08;
TCCR2=0x05;
TCNT2=0x00;
OCR2=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x40;

lcd_init(16);

#asm("sei") // Global enable interrupts

while (1);

}

و عکس مدارش در پیوست البته من به ال سد دی 5 ولت میدم ولی بازم گفتم یه سطر کلا خونه هاش روشن میشه و چیزی نمینویسه.

مهندس اینکه شبیه سازیش نادرسته!!

به پایه 2 تغذیه وصل نیست!

باید به این طریق اتصال داده میشد؛

[تصویر:  slrhscrtlgrp35acuv.jpg]

(آخرین ویرایش در این ارسال: ۰۱-مهر-۱۳۹۱, ۲۰:۰۶:۴۹، توسط omid_phoenix.)
۰۱-مهر-۱۳۹۱, ۲۰:۰۵:۲۵
ارسال‌ها
پاسخ
تشکر شده توسط : vigraz, alinavidy, h0x00i, Ambassador
h0x00i آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 959
موضوع‌ها: 109
تاریخ عضویت: دى ۱۳۸۹

تشکرها : 2866
( 2450 تشکر در 949 ارسال )
ارسال: #11
RE: راه اندازی LCD با ATMEGA16 or 32
البته توی شبیه سازی لازم نیست lcd تغذیه داشته باشه .


(۱۲-آبان-۱۳۹۰, ۰۳:۳۱:۳۳)parviz2012 نوشته است: پس چرا این تو codevision جواب نمیده؟
یه بررسی کن بی زحمت.
کد:
کد:
#include <mega16.h>
#include <lcd.h>
#include <stdio.h>
#define xtal 8000000

#asm
.equ __lcd_port=0x1B ;PORTA
#endasm

unsigned char second, minute,hour;
unsigned char lcd_buff[10];

interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{
if(second==59)
{
second=0;
if(minute==59)
{
minute=0;
if(hour==24)
hour=0;
else
hour++;
}
else
minute++;
}
else
second++;

sprintf(lcd_buff,"Time = %d:%d:%d",hour, minute, second);
lcd_clear();
lcd_puts(lcd_buff);
}

// Declare your global variables here


void main(void)
{

// Timer/Counter 2 initialization
// Clock source: TOSC1 pin
// Clock value: PCK2/128
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x08;
TCCR2=0x05;
TCNT2=0x00;
OCR2=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x40;

lcd_init(16);

#asm("sei") // Global enable interrupts

while (1);

}

و عکس مدارش در پیوست البته من به ال سد دی 5 ولت میدم ولی بازم گفتم یه سطر کلا خونه هاش روشن میشه و چیزی نمینویسه.

برنامت مشکل داره در قسمت تایمر اصلاحش کن

کد:
while (1)
{
lcd_gotoxy(0,0);
lcd_putsf("iranvig.com");
};
کد زیز اضافه کنی متوجه میشه lcd مشکلی نداره


فایل‌(های) پیوست شده بندانگشتی (ها)
   

:)

دوستان الکترونیکی پیشنهاد می کنم حتما برن python یاد بگیرن ...
پروژه ، مقاله ،... 
(آخرین ویرایش در این ارسال: ۲۴-اسفند-۱۳۹۱, ۱۶:۱۵:۵۵، توسط h0x00i.)
۲۴-اسفند-۱۳۹۱, ۱۶:۱۳:۰۵
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : hadikh73, Ambassador


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  منو سازی با atmega16 shomakher 10 11,999 ۱۳-مهر-۱۳۹۹, ۱۸:۴۷:۳۳
آخرین ارسال: sarakingly
  [پروژه] راه اندازی آیسی فلش w25qxx Ambassador 0 1,154 ۲۰-مرداد-۱۳۹۹, ۱۸:۲۲:۵۶
آخرین ارسال: Ambassador
  برنامه راه اندازی رله از طریق پورت شبکه (enc28j60) haisam 15 14,252 ۲۰-آبان-۱۳۹۷, ۰۹:۵۲:۵۹
آخرین ارسال: ali3000aab
  راه اندازی ماژول gy-955 با AVR و کدویژن hadikh73 6 7,689 ۰۴-شهریور-۱۳۹۷, ۱۲:۰۸:۲۱
آخرین ارسال: hadikh73
  راه اندازی سنسور sht11 blackstar368 10 10,511 ۲۶-دى-۱۳۹۵, ۱۲:۲۲:۴۷
آخرین ارسال: ehsan1082
Cool مشکل در راه اندازی ال سی دی گرافیکی sed winnuke 0 2,411 ۱۹-مهر-۱۳۹۵, ۱۳:۱۱:۳۰
آخرین ارسال: winnuke
  راه اندازی tdc-gp2 mostafa-m 0 2,114 ۰۸-مهر-۱۳۹۵, ۱۹:۵۸:۰۰
آخرین ارسال: mostafa-m
  [سوال] راه اندازی igbtبا میکرو mostafa-m 0 2,299 ۰۸-خرداد-۱۳۹۵, ۱۸:۱۹:۱۵
آخرین ارسال: mostafa-m
  راه اندازی ماژول دمای غیرتماسی MCU90615 nex 1 2,516 ۲۹-اردیبهشت-۱۳۹۵, ۲۳:۵۷:۲۰
آخرین ارسال: lolohacko
  راه اندازی LCD های رنگی iman-63 18 34,962 ۲۱-آذر-۱۳۹۴, ۰۵:۰۴:۲۲
آخرین ارسال: alinnn

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 8 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS