ايران ويج

نسخه‌ی کامل: کسی در مورد این کد چیزی میدونه ؟؟؟
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2
این کد مربوط به LCD تو زبون C تو AVR Amaze

خط اول و سوم که شروع و پایان کد نویسی اسمبلی هستن.
خط وسط برا تعیین پورتی که میخوایم LCD رو بهش وصل کنیم هستش

حالا مشکل من اینه که چطور تعیین میکنیم که LCD به فلان پایه میکرو وصل هستش؟؟؟؟؟

کد:
#asm
.equ __lcd_port=0x1B ;PORTA
#endasm
دقیق متوجه منظورتون نشدم

ولی معمولا از قسمت Codewizard و لبه LCDمشخص میکنید کدوم پورت رو جهت اتصال ب lcd انتخاب کردین و همونجا مشخصه کدوم پین ب کدوم پایه lcd وصل میشه
ک معمولا اتصال lcd های کارکتری بصورت 4 بیت هست و بترتیب زیر:


RS------------------portx.0
RD------------------portx.1
EN------------------portx.2
freeeeeeeeeeee------portx.3
DB4-----------------portx.4
DB5-----------------portx.5
DB6-----------------portx.6
DB7-----------------portx.7

portx حالا میتونه a/b/c/d/......... باشه
موفق باشید
سلام.
یه کار دیگه هم میتونید انجام بدین اونم اینه که از هدر alcd.h استفاده کنی.
آموزشش تو انجمن هست .
موفق باشید.
ممنون از راهنماييتBiggrin

فقط يه چند تا چيز Whistle

مثلا ال سي دي lm016l که 16 ستون داره و 2 سطر

VSS-VDD====>اينا که به زمين و 5 ولت وصل ميشن


سوال1: VEE====>اين پايه درخشندگي هستش؟؟؟؟====>ببين درس فهميدم : اگه روشن باشه LCD ما صفحه اش روشن تر ميشه و اگه خاموش باشه ممکنه تو تاريکي نتونيم چيزاي !!! داخل LCD رو بخونيم.====>درست گفتم؟؟

سوال2: RW====>(بازم تو کتاب که خونده بودم نوشته بود :mrgreen: : اگه اين پايه 0 باشه: نوشتن /اگه 1 باشه: خواندن )==> يعني اگه 1 باشه ما ميتونيم ببخونيم که تو LCD چي چي نوشته شده|درست گفتم؟

سوال3: RS===>(تو کتاب که خونده بودم نوشته بود: اگه اين پايه 0 باشه: ورودي فرمان/اگه 1 باشه: ورودي کاراکتر )====>؟؟؟؟؟؟؟؟؟؟؟؟؟؟


سوال4 : E====>????


سوال5 : چرا ما از پايه هاي DB0 تا DB3 استفاده نميکنيم (تو اکثر پروژه ها اين طوري بوده) ؟؟؟؟؟


سوال آخر :

پس ما برا تعیین پورتی که به ال سی دی وصل هستش مثلا تو کد زیر به جای PORTA پورت مورد نظرمون رو مینوسیم(مثلا PORTB)

کد:
#asm
.equ __lcd_port=0x1B ;PORTA
#endasm

ولی این که 0x1B رو هر جور که مورد نیازمون هست مقدار دهی میکنیم
(ابن که ربطی به تعیین پایه ای که به LCD وصل هست که نداره؟؟؟)
نقل قول: ممنون از راهنماييتBiggrin
فقط يه چند تا چيز Whistle
مثلا ال سي دي lm016l که 16 ستون داره و 2 سطر
VSS-VDD====>اينا که به زمين و 5 ولت وصل ميشن
خواهش میشه ، وظیفش.
نقل قول: سوال1: VEE====>اين پايه درخشندگي هستش؟؟؟؟====>ببين درس فهميدم : اگه روشن باشه LCD ما صفحه اش روشن تر ميشه و اگه خاموش باشه ممکنه تو تاريکي نتونيم چيزاي !!! داخل LCD رو بخونيم.====>درست گفتم؟؟
آره ، شما اینو باید به یه مولتی ترن وصل میکنی به این صورت که پایه بالا یه به +5 و پایینی به زمین و وسطی رو به VEE میدی ، اینطوری کنتراست رو تنظیم میکنی.
نقل قول: سوال2: RW====>(بازم تو کتاب که خونده بودم نوشته بود :mrgreen: : اگه اين پايه 0 باشه: نوشتن /اگه 1 باشه: خواندن )==> يعني اگه 1 باشه ما ميتونيم ببخونيم که تو LCD چي چي نوشته شده|درست گفتم؟
آره میتوین ، اما همیشه اینو به زمین وصل کن.
نقل قول: سوال3: RS===>(تو کتاب که خونده بودم نوشته بود: اگه اين پايه 0 باشه: ورودي فرمان/اگه 1 باشه: ورودي کاراکتر )====>؟؟؟؟؟؟؟؟؟؟؟؟؟؟
آره دیگه ، شما مثل اینکه میخوای فلسفه ال سی دی رو بدونی :d
ورودی فرمان میشه ، اینکه مکان ، کمان نما رو تایین کنی ، یا مثلاً دستور پاک کردن صفحه نمایش رو بفرستی و ...
نقل قول: سوال4 : E====>????
این پایه انیبل هست ، یه پالس خیلی کوچیک بش میدی ال سی دی فعال میشه.
یادم نیست ، اما فک کنم یه پالس 450 نانو ثانیه بود :| (( دقیقش یادم نیس ))
نقل قول: سوال5 : چرا ما از پايه هاي DB0 تا DB3 استفاده نميکنيم (تو اکثر پروژه ها اين طوري بوده) ؟؟؟؟؟
دو حالت داره ، یکی راه اندازی 4 بیتی یکی هم 8 بیتی.
4 بیتی رو ما راه میندازیم که پایه کمتری از میکرو ، رو اشغال کنه.
نقل قول: سوال آخر :
پس ما برا تعیین پورتی که به ال سی دی وصل هستش مثلا تو کد زیر به جای PORTA پورت مورد نظرمون رو مینوسیم(مثلا PORTB)
کد:
#asm
.equ __lcd_port=0x1B ;PORTA
#endasm
خیر ، باید اون مقدار جلویی رو عوضش کنی Biggrin
نقل قول: ولی این که 0x1B رو هر جور که مورد نیازمون هست مقدار دهی میکنیم
(ابن که ربطی به تعیین پایه ای که به LCD وصل هست که نداره؟؟؟)
این دستور اسمبلی پایه های متصل به میکرو ، رو تایین میکنه.
گفتم که از alcd.h استفاده کنی تا اینطور مشکلاتی نداشته باشی.
دادا دمت گرمClapClapClapHappyHappyHappyHeartHeartHeartShyAmaze

سفارشیه برات فرستادم
:gol::gol::gol::gol::gol::gol::gol::gol::gol::gol::gol::gol::gol:


این دیگه چیه>>>>alcd.h ؟؟؟؟؟؟؟؟
تو همین جا یه سرچی تو پست های قبلی زدم ولی چیزی...WhistleWhistle
خودت میتونی لینکش رو بدیShyShyShyWhistle

فقط بازم چند تا چیز:Shy

سوال1: اگه از کل db0.تا.db7 استفاده کنیم میشه 8 بیتی و اگه از db4-تا-
db7 استفاده کنیم میشه 4 بیتی مگه نه؟

سوال2 : این داستان 4 بیتی و 8 بیتی چیه؟
مثلا تو اعداد حالت 4 بیتی حدودا تا عدد 15 رو پشتیبانی میکنه و حالت 8 بیتی هم تا ....
من این طور فهمیدم که تو حالت 4 بتی برا lcd در یک لحظه حداکثر 4 بیت میتونی بهش ارسال کنی>>>>>>درست گفتم؟؟؟

سوال 3 : با توجه به سوال 2Amaze>>> مثلا رشته mahdi چند بیته؟؟؟؟
هر حرف میشه 1 بیت یا؟؟؟؟؟؟؟

سوال 4 :
مثلا ما بیتای زیر رو مقدار دهی میکنیم
RS------------------portx.0
RD------------------portx.1
EN------------------portx.2
freeeeeeeeeeee------portx.3
DB4-----------------portx.4
DB5-----------------portx.5
DB6-----------------portx.6
DB7-----------------portx.7

مشکل من اینه که نمیفهمم که تعیین 0 یا 1 بیت های بالا چه ربطی به تعیین پروتی از میکرو که lcd بهش میخواد وصل بشه داره؟؟؟؟Question
نقل قول: دادا دمت گرمClapClapClapHappyHappyHappyHeartHeartHeartShyAmaze
فدامدا
نقل قول: سفارشیه برات فرستادم
:gol::gol::gol::gol::gol::gol::gol::gol::gol::gol::gol::gol::gol:
سفارش چی ؟ Amaze
نقل قول: این دیگه چیه>>>>alcd.h ؟؟؟؟؟؟؟؟
یه هدره دیگه Biggrin
نقل قول: تو همین جا یه سرچی تو پست های قبلی زدم ولی چیزی...WhistleWhistle
خودت میتونی لینکش رو بدیShyShyShyWhistle
بفر ما اینک لینک ( لینک )
نقل قول: فقط بازم چند تا چیز:Shy
امر بفرما.
نقل قول: سوال1: اگه از کل db0.تا.db7 استفاده کنیم میشه 8 بیتی و اگه از db4-تا-
db7 استفاده کنیم میشه 4 بیتی مگه نه؟
آره.
نقل قول: سوال2 : این داستان 4 بیتی و 8 بیتی چیه؟
مثلا تو اعداد حالت 4 بیتی حدودا تا عدد 15 رو پشتیبانی میکنه و حالت 8 بیتی هم تا ....
من این طور فهمیدم که تو حالت 4 بتی برا lcd در یک لحظه حداکثر 4 بیت میتونی بهش ارسال کنی>>>>>>درست گفتم؟؟؟
آره ، اما تو 2 مرحله میفرسته (( تو حالت 4 بیتی )).
مرحله اول اگه اشتباه نکنم بایت پر ارزش و مرحله دوم بایت کم ارزش رو میفرسته Biggrin
(( من قدیما واسش هدر نوشتم دقیقش یادم نیس )).
تو حالت 8 بیتی هم مرحله اول همرو میفرسته.
نقل قول: سوال 3 : با توجه به سوال 2Amaze>>> مثلا رشته mahdi چند بیته؟؟؟؟
هر حرف میشه 1 بیت یا؟؟؟؟؟؟؟
ببین کد اسکش رو میفرسته.
مثلاً واسه حرف m کد اسکی اون میشه : 0x6D
اول 6 که بایت پر ارزشه میفرسه
بعد d که بایت کم ارزش هست رو میفرسته.
البته اعداد بالا در مبنای هگز هستش .
نقل قول: سوال 4 :
مثلا ما بیتای زیر رو مقدار دهی میکنیم
RS------------------portx.0
RD------------------portx.1
EN------------------portx.2
freeeeeeeeeeee------portx.3
DB4-----------------portx.4
DB5-----------------portx.5
DB6-----------------portx.6
DB7-----------------portx.7
مشکل من اینه که نمیفهمم که تعیین 0 یا 1 بیت های بالا چه ربطی به تعیین پروتی از میکرو که lcd بهش میخواد وصل بشه داره؟؟؟؟Question
سوالتو یه بار دیگه شفاف بپرس :O ، نفهمیدم چی گفتی.
سوال3: RS===>(تو کتاب که خونده بودم نوشته بود: اگه اين پايه 0 باشه: ورودي فرمان/اگه 1 باشه: ورودي کاراکتر )====>؟؟؟؟؟؟؟؟؟؟؟؟؟؟
نقل قول: آره دیگه ، شما مثل اینکه میخوای فلسفه ال سی دی رو بدونی Biggrin
ورودی فرمان میشه ، اینکه مکان ، کمان نما رو تایین کنی ، یا مثلاً دستور پاک کردن صفحه نمایش رو بفرستی و ...

پس اگه ورودی فرمان باشه : ما میتونیم کارای رو به رو رو انجام بدیم : فعال/غیر فعال کردن مکان نما--پاک کردن صفحه--نوشتن در صقحه--جابه جایی مکان نما و....
درست گفتم؟؟؟

حالا حالت کاراکتری چیه قضه اش!!!؟؟؟؟
-----------------------------------------------------------------------------------
تو مقدار دهی --مثلا 0x1B که میگیم که به پورت A وصل هست.
این بیتاش چی هستن رو دوستمون تو پست های اوله جواب داد که گفت

RS------------------portx.0
RD------------------portx.1
EN------------------portx.2
freeeeeeeeeeee------portx.3
DB4-----------------portx.4
DB5-----------------portx.5
DB6-----------------portx.6
DB7-----------------portx.7

حالا من مشکل من اینجاس که این بیتا چه ربطی به تعیین پایه ای که LCD قراره بهش وصل بشه داره؟؟؟

--------------------------------------------------------------------------------------
نقل قول: سوال3: RS===>(تو کتاب که خونده بودم نوشته بود: اگه اين پايه 0 باشه: ورودي فرمان/اگه 1 باشه: ورودي کاراکتر )====>؟؟؟؟؟؟؟؟؟؟؟؟؟؟
نقل قول: آره دیگه ، شما مثل اینکه میخوای فلسفه ال سی دی رو بدونی Biggrin
ورودی فرمان میشه ، اینکه مکان ، کمان نما رو تایین کنی ، یا مثلاً دستور پاک کردن صفحه نمایش رو بفرستی و ...

پس اگه ورودی فرمان باشه : ما میتونیم کارای رو به رو رو انجام بدیم : فعال/غیر فعال کردن مکان نما--پاک کردن صفحه--نوشتن در صقحه--جابه جایی مکان نما و....
درست گفتم؟؟؟
آره ، خوب منم که همین رو گفتم Biggrin
نقل قول: حالا حالت کاراکتری چیه قضه اش!!!؟؟؟؟
توضیح دادم که ، همون کد اسکی اون کارکتر رو میفرسته به ال سی دی تا نشونش بده.
نقل قول: تو مقدار دهی --مثلا 0x1B که میگیم که به پورت A وصل هست.
این بیتاش چی هستن رو دوستمون تو پست های اوله جواب داد که گفت

RS------------------portx.0
RD------------------portx.1
EN------------------portx.2
freeeeeeeeeeee------portx.3
DB4-----------------portx.4
DB5-----------------portx.5
DB6-----------------portx.6
DB7-----------------portx.7

حالا من مشکل من اینجاس که این بیتا چه ربطی به تعیین پایه ای که LCD قراره بهش وصل بشه داره؟؟؟
خب این پین ها باید درست تعریف بشن تا ال سی دی درست کار کنه.
نمیشه که شما پین اینیبل رو تعریف نکنی و ... باید درست تعریف بشن.
به همون حالتی که تو شماتیک هستن بهمون صورت هم باید پین هارو تعریف کنی براش.
اخوی مثلا کتابخانه lcd.h شامل توابع زیر هستش

کد php:
void _lcd_ready();
void _lcd_write_data(unsigned char data);
Unsigned char lcd_read_byte(unsigned char addr);
unsigned char lcd_init(unsigned char lcd_columns)
void lcd_clear(void)
void lcd_gotoxy(unsigned char xunsigned char y)
void lcd_putchar(char c)
void lcd_puts(char *str)
void lcd_putsf(char flash *str

حالا کتابخانه alcd.h شامل چه توابعی هستش؟؟؟؟؟؟؟؟؟

راستی منظور از هدر alcd.h همون کتابخانه هستش دیگه؟؟
سلام.
تو alcd.h هم همین توابع هستش .
فقط این 3 تارو نداره:
کد:
void _lcd_ready();
void _lcd_write_data(unsigned char data);
Unsigned char lcd_read_byte(unsigned char addr);
منظور از هدر هون کتابخونس :)
صفحه‌ها: 1 2