PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : مشكل كوچك lcd



rayan2
24-02-2012, 23:58
سلام دوستان
من يه lcd رو راه اندازي كردم. كه از پايه هاي p0.0 تا p0.5 رو اختصاص دادم به اون.
حالا كه با پايه p0.29 يه سوئيچ ساده وصل ميكنم lcd از كار مي افته. چرا؟
وقتي اون سوئيچ رو بر ميدارم lcd نشون ميده. كلا اين اتفاق با بعضي از پايه ها مي افته.

مثلا با p0.20 نميشه اما با p0.14 ميشه!!!!

واقعا موندم.آيا به هدر فايلش ربطي داره؟

فايلهارو هم گذاشتم

ممنون از همتون

medadnoki
25-02-2012, 00:17
سلام!
خودتون جواب را دادید دیگه......
حالا که با این پورت مشکل هست از p0.20 استفاده کن......
آیه نازل نشده که!!!!!!!!!
من برنامه رو ندیدم ولی مدار درسته..........
کاشکی فایل hex رو هم میزاشتید....
شاید مشکل از proteus باشه

rayan2
25-02-2012, 01:28
بابا آخه همينجوري مشكلات كوچيك آدم رو هم جمع ميشن آدم آخرش ميبينه بابا هيچي درست كار نميكنه!!!
فايل هارو گذاشتم يه نگاهي بندازين تورو خدا

راستي آقا من هركاري ميكنم پايه هاي p0.27 تا p0.30 تو lpc2132 يك نميشن!!!!!!!
علت اين چيه ديگه؟

medadnoki
25-02-2012, 15:44
با پايه p0.29 يه سوئيچ ساده وصل ميكنم lcd از كار مي افته. چرا؟
دلیلش رو نفهمیدم ولی اصلا برای چی سوییچ میزاری......
جزو پروژت هست؟
اگر هم بخوای بزاری باید یه حلقه شرطی(IF) استفاده کنی....
مثلا بگی "" اگر پورت p0.29 برابر صفر شد ، سپس ;(lcd_puts(0 ""
غیر از این نمیشه......
تا الان برنامت درسته البته اگر سوییچ رو نزاری ، اگر هم بخوای که....


مثلا با p0.20 نميشه اما با p0.14 ميشه!!!!
تو سیستم من با p0.20 شد ولی با p0.14 نشدii998)
فکر کنم برای اینه که وقتی میفته تو حلقه بینهایت (while(1 ، دیگه با زدن کلید جواب نمیگیری:shj:
اصولش همونه که گفتم.....باید شرط بزاری
:wink:


راستي آقا من هركاري ميكنم پايه هاي p0.27 تا p0.30 تو lpc2132 يك نميشن!!!!!!!
هدفت از یک کردن این پایه ها چیه؟؟؟
به جایی وصل نیست که؟؟؟

rayan2
25-02-2012, 20:16
سوئيچ خوب لازمه.ولي حالا اونو رو پايه هاي ديگه ميذارم.

اون پايه ها هم كه يك نميشن رو بجايي وصل نكردم نه. بابا بيشتر از اينكه از اين لحاظ كه شايد لازم بشن و نتونم استفاده كنم اين اعصابمو خورد ميكنه كه دليل اين اتفاقاتي كه مي افتن واسم مبهم موندن!!!!!!

رو سيستم تو ببين اون پايه ها يك ميشن؟

راستي كسي اطلاعاتي در مورد رجيستر pinmode داره؟

medadnoki
25-02-2012, 20:32
سوئيچ خوب لازمه.ولي حالا اونو رو پايه هاي ديگه ميذارم.
باید شرط بزاری ها....


رو سيستم تو ببين اون پايه ها يك ميشن؟
روی سیستم من هم صفر هست


بابا بيشتر از اينكه از اين لحاظ كه شايد لازم بشن و نتونم استفاده كنم اين اعصابمو خورد ميكنه كه دليل اين اتفاقاتي كه مي افتن واسم مبهم موندن!!!!!!
این همه پایه داره این میکروی بدبخت......گیر دادی به این چند تا.....اگه زیاد حساس بشی از تاریخ دفاع پروژه عقب میمونی!!!!!!
میتونی از استاد راهنمای پروژه هم سوال کنی....همه پروژه رو لازم نیست خودت انجام بدی(کمک بگیر)


راستي كسي اطلاعاتي در مورد رجيستر pinmode داره؟
من نشنیدم....
search کردی؟........
یه نگاه هم به این سایت ها بنداز:
You can see links before reply

You can see links before reply

اگر نشد برو سایت های خارجی.....
اینطوری search کن.......
***register pinmode
***about register pinmode

esi_52000
25-02-2012, 21:08
دوستان جواب تمام این سوالات رو با یکم چرخیدن توی پستای دیگه پیدا میکنیداااا.
pinmode رجیستری برای تعیین pull up یا pulldown یا بدون مقاومت بودن پورت هستش.
پایه های 27 تا 30 از داخل مقاومت ندارند چون واسه i2c و یه سری کار دیگه هستن واسه همین روشن نمیشن

rayan2
25-02-2012, 21:27
دوستان جواب تمام این سوالات رو با یکم چرخیدن توی پستای دیگه پیدا میکنیداااا.
pinmode رجیستری برای تعیین pull up یا pulldown یا بدون مقاومت بودن پورت هستش.
پایه های 27 تا 30 از داخل مقاومت ندارند چون واسه i2c و یه سری کار دیگه هستن واسه همین روشن نمیشن



عزيزم من كه هيمنطوري يهويي نيومدم سوال كنم.سرچ كردم والا چيزي پيدا نكردم. اگه شما كه حرفه اي تشريف دارين با ديدن اين سوالات مثلا پيش پا افتاده ناراحت ميشين ميتونين جواب ندين!!!جسارت نشه ها اين چندمين باره كه ميبينم ناراحتين!!!

حالا اگه داغ نميكني بي زحمت يه مثالم واسه اين pinmode بنويس

esi_52000
25-02-2012, 22:05
عزيزم من كه هيمنطوري يهويي نيومدم سوال كنم.سرچ كردم والا چيزي پيدا نكردم. اگه شما كه حرفه اي تشريف دارين با ديدن اين سوالات مثلا پيش پا افتاده ناراحت ميشين ميتونين جواب ندين!!!جسارت نشه ها اين چندمين باره كه ميبينم ناراحتين!!!

حالا اگه داغ نميكني بي زحمت يه مثالم واسه اين pinmode بنويس

ما چاکرتم هستیم داداش رایان.ما کی باشیم داغ کنیم.یه جای دیگه هم گفتم من خودمم خیلی مبتدیم.بخدا قصد جسارت نداشتم .منظورم این بود که رراحت تر به جواب برسی .چشم اینم مثال.:0013::0013::0013:

mzarkoob
25-02-2012, 23:01
من يه lcd رو راه اندازي كردم. كه از پايه هاي p0.0 تا p0.5 رو اختصاص دادم به اون.
حالا كه با پايه p0.29 يه سوئيچ ساده وصل ميكنم lcd از كار مي افته. چرا؟
وقتي اون سوئيچ رو بر ميدارم lcd نشون ميده. كلا اين اتفاق با بعضي از پايه ها مي افته.
مثلا با p0.20 نميشه اما با p0.14 ميشه!!!!
واقعا موندم.آيا به هدر فايلش ربطي داره؟
فايلهارو هم گذاشتم

با سلام
این ال سی دی کاراکتری علارغم سادگیش داستانی داره برای خودشا! به نظر من نقص یک هدر خوب باعث میشه یک نفر از برنامه های موجود جواب نگیره و خودش بره دنبال نوشتن برنامه. در این میان هم کلی گیر میکنه و انجمن پر میشه از ایرادات در این مورد! نمونه اش خود من. اینجا (You can see links before reply) را ببینید
اول من فایل شما را دیدم. یه سری چیزها از جمله delay.h و lcd.h داخلش نبود! خوب از کجا بدونیم ایراد از چیه!؟:baad:
چیزی که من فهمیدم و امیدوارم درست باشه شما می خواهید با فشردن کلیدی که به یک پایه میکرو وصله عددی روی lcd نشون بدید. درسته؟حدس میزنم پایه ها با هم تداخل دارن. خوب شما یک پیکربندی روی پورت 0 انجام میدید برای ال سی دی و دوباره یک پیکر بندی انجام میدید روی پورت صفر تا پایه ای را ورودی کنید. خوب این دو تا را درست تنظیم نکردید قاطی شده. ابتدا ورودی یتان را یک پورت دیگه تعریف کنید. مثلا یک. ببینید اصلا کار میکنه. بعد وقتی می خواهید p0.20 را ورودی کنید فقط اون را ورودی کنید نه همه پورت را . زیرا قبلا p0.0 تا p0.5 به عنوان خروجی تعریف شده

rayan2
25-02-2012, 23:26
با سلام
این ال سی دی کاراکتری علارغم سادگیش داستانی داره برای خودشا! به نظر من نقص یک هدر خوب باعث میشه یک نفر از برنامه های موجود جواب نگیره و خودش بره دنبال نوشتن برنامه. در این میان هم کلی گیر میکنه و انجمن پر میشه از ایرادات در این مورد! نمونه اش خود من. اینجا (You can see links before reply) را ببینید
اول من فایل شما را دیدم. یه سری چیزها از جمله delay.h و lcd.h داخلش نبود! خوب از کجا بدونیم ایراد از چیه!؟:baad:
چیزی که من فهمیدم و امیدوارم درست باشه شما می خواهید با فشردن کلیدی که به یک پایه میکرو وصله عددی روی lcd نشون بدید. درسته؟حدس میزنم پایه ها با هم تداخل دارن. خوب شما یک پیکربندی روی پورت 0 انجام میدید برای ال سی دی و دوباره یک پیکر بندی انجام میدید روی پورت صفر تا پایه ای را ورودی کنید. خوب این دو تا را درست تنظیم نکردید قاطی شده. ابتدا ورودی یتان را یک پورت دیگه تعریف کنید. مثلا یک. ببینید اصلا کار میکنه. بعد وقتی می خواهید p0.20 را ورودی کنید فقط اون را ورودی کنید نه همه پورت را . زیرا قبلا p0.0 تا p0.5 به عنوان خروجی تعریف شده

نه بابا حواسم هست.مثلا من كل پايه هاي p.0ها رو خروجي ميكنم.خوب؟ حالا كه سوئيچ با جايي از مدار وصل نيست lcd كار ميكنه.خوب?الان سوئيچ رو به پايه p0.29 يا p0.14 كه وصل ميكنم lcd اون عددي كه (عدد 2) رو قبلا نشون ميداد حالا نشون نميده!!!!!!!!!!!!!!!!!!!!

rayan2
25-02-2012, 23:35
با سلام
این ال سی دی کاراکتری علارغم سادگیش داستانی داره برای خودشا! به نظر من نقص یک هدر خوب باعث میشه یک نفر از برنامه های موجود جواب نگیره و خودش بره دنبال نوشتن برنامه. در این میان هم کلی گیر میکنه و انجمن پر میشه از ایرادات در این مورد! نمونه اش خود من. اینجا (You can see links before reply) را ببینید
اول من فایل شما را دیدم. یه سری چیزها از جمله delay.h و lcd.h داخلش نبود! خوب از کجا بدونیم ایراد از چیه!؟:baad:
چیزی که من فهمیدم و امیدوارم درست باشه شما می خواهید با فشردن کلیدی که به یک پایه میکرو وصله عددی روی lcd نشون بدید. درسته؟حدس میزنم پایه ها با هم تداخل دارن. خوب شما یک پیکربندی روی پورت 0 انجام میدید برای ال سی دی و دوباره یک پیکر بندی انجام میدید روی پورت صفر تا پایه ای را ورودی کنید. خوب این دو تا را درست تنظیم نکردید قاطی شده. ابتدا ورودی یتان را یک پورت دیگه تعریف کنید. مثلا یک. ببینید اصلا کار میکنه. بعد وقتی می خواهید p0.20 را ورودی کنید فقط اون را ورودی کنید نه همه پورت را . زیرا قبلا p0.0 تا p0.5 به عنوان خروجی تعریف شده

نه بابا حواسم هست از بابت پيكربندي پورت ها و غيره.بببين مثلا من همي پين هاي پورت p0رو خروجي ميكنم خوب؟ بدون اتصال سوئيچ به مدار lcd مثل بچه آدم كار ميكنه و عدد 2 رو نشون ميده.خوب ؟حالا كه سوئيچ رو به پايه p0.29 يا p0.14 (كه قبلا اونارو خروجي كردم!!!!!!) وصل ميكنم lcd هيچي نشون نميده!!!!آخه وصل كردن سوئيچ كه يه وروديه به يه پايه اي غير از پايه هاي در گير با lcd چرا بايد همچين كاري بكنه؟اونم با بعضي از پايه ها!!!!!!ميكروم انگار طغيان كرده!!!

me28k
26-02-2012, 02:18
نه بابا حواسم هست از بابت پيكربندي پورت ها و غيره.بببين مثلا من همي پين هاي پورت p0رو خروجي ميكنم خوب؟ بدون اتصال سوئيچ به مدار lcd مثل بچه آدم كار ميكنه و عدد 2 رو نشون ميده.خوب ؟حالا كه سوئيچ رو به پايه p0.29 يا p0.14 (كه قبلا اونارو خروجي كردم!!!!!!) وصل ميكنم lcd هيچي نشون نميده!!!!آخه وصل كردن سوئيچ كه يه وروديه به يه پايه اي غير از پايه هاي در گير با lcd چرا بايد همچين كاري بكنه؟اونم با بعضي از پايه ها!!!!!!ميكروم انگار طغيان كرده!!!

دوست عزیز پایه ای که به اون سویچ وصل میکنین باید ورودی باشه نه خروجی :baad: .دلیل اینکه با زدن سویچ ال سی دی از کار میافته اینه که شما خروجی رو اتصال کوتاه میکنین و این کار باعث اختلال در ولتاژ دیگر خروجیها میشه که ال سی دی وصله.

rayan2
26-02-2012, 02:36
برادر مممممممممممممممممن!!!!!!!
من ديگه اونقداهم خنگ نيستما!!!!!
من همه ي اونارو تست كردم نمييييييشهههههههه!!!
در ثاني وقتي يه پايه خروجي هست بهش ولتا‍ژ بدي چرا بايد اختلال ايجاد شه؟؟؟؟؟؟!!!!!!
اصلا از همين روش براي جلوگيري از ورود نويز به ميكرو استفاده ميكنند!!!

me28k
26-02-2012, 11:07
من همي پين هاي پورت p0رو خروجي ميكنم خوب؟............................ به مدار حالا كه سوئيچ رو به پايه p0.29 يا p0.14 (كه قبلا اونارو خروجي كردم!!!!!!) وصل ميكنم lcd هيچي نشون نميده!!!!......................

lov:

me28k
26-02-2012, 11:22
در ثاني وقتي يه پايه خروجي هست بهش ولتا‍ژ بدي چرا بايد اختلال ايجاد شه؟؟؟؟؟؟!!!!!!
اصلا از همين روش براي جلوگيري از ورود نويز به ميكرو استفاده ميكنند!!!
lov:lov:
..مثلا اگه یکی از خروجی ها یک باشه و اون به gnd مدار بزنین مثل اینه که خروجی میکرو رو اتصال کوتاه کردین و به دلیل اینکه منبع تغذیه دیگر خروجی ها با این پایه مشترکه امکان اختلال داره....

به نظر من نویز از ورودی وارد میکرو میشه نه خروجی و برای جلوگیری از نویز ورودی هارو با مقاومت یا بدون مقاومت به gnd یا vcc مدار وصل میکنند.

mzarkoob
26-02-2012, 14:01
شما برنامت را کامل بذار تا بتونیم جزیاتش را ببینیم. این جور که من دیدم و دیباگ کردم نقص داشت . قبلا هم گفتم

rayan2
27-02-2012, 00:00
شما برنامت را کامل بذار تا بتونیم جزیاتش را ببینیم. این جور که من دیدم و دیباگ کردم نقص داشت . قبلا هم گفتم
اينم فايل هاش.لطفا تست كنين
اول بدون اينكه سوئيچ جايي وصل باشه run كنين.خواهيد ديد كه lcd عدد يك رو نشون ميده.حالا سوئيچ رو به پايه p0.29. وصل كنين و دوباره run كنين.خواهيد ديد كه lcdكار نخواهد كرد.با پايه p0.14 هم همينطوري ميشه!!!!

mzarkoob
27-02-2012, 09:42
این که همون برنامه قبلیه!!! دو فایل delay.h و lcd.h داخلش نیست!!!!!!!!!!!!!!!!!!!

rayan2
27-02-2012, 21:44
این که همون برنامه قبلیه!!! دو فایل delay.h و lcd.h داخلش نیست!!!!!!!!!!!!!!!!!!!

مهندس اينم فايل هاي هدرش.
هم delay و هم lcd

mzarkoob
27-02-2012, 23:57
میگم شما که میگید p0.29 را ورودی کردید که تا زدیمش فلان مقدار را نشون بده کجای این برنامه این تنظیمات را انجام دادید؟!

int main(void)
{
lcd_init();
while(1)
{
lcd_gotoxy(1,6);
lcd_puts(1);
}
}
فکر کنم فایل lcd.DSN با پروتئوس باز بشه که منم از سیستمم پاک کردم و داخلش را ندیدم چیه.

rayan2
28-02-2012, 00:44
من كي گفتم تا سوئيچ و زديم فلان شه؟
شما اصلا نگرفتيد مشكل من چيه .

من ميگم چه اون پايه رو ورودي كنم چه خروجي تا زماني كه اون پايه آزاده lcd نشون ميده خوب؟
حالا وقتي كه به اون پايه اون سوئيچ رو وصل ميكنم lcd خاموش ميشه
اينو بررسي كنين لطفا

mzarkoob
28-02-2012, 16:00
واقعا موندم.آيا به هدر فايلش ربطي داره؟
شما که همه کاری کردی بیا یه کار دیگه هم بکن. از این هدر استفاده نکن. از یه هدر ساده استفاده کن. اصلا هدر هم نمی خواد از یه برنامه ساده برای lcd استفاده کن. این جوری کامل روی ورودی خروجی ها تسلط داری. در اینجا (You can see links before reply) هم گفتم و در اینجا (You can see links before reply) در مورد این برنامه ساده بحث شده. شما خودت می تونی تنظیمات اولیه پیکربندی را مطابق میلت تغییر بدی:

#include <LPC23XX.h>
//DB4=PORT1.27 DB5=PORT1.28 DB6=PORT1.29 DB7=PORT1.30

#define RS (1<<20); //PORT1.20
#define E (1<<21); //PORT1.21
#define RW (1<<22); //PORT1.22
//-----------------------------
void delay(int delay){
long int j;
for(j=0;j<=delay;j++) __asm("nop");
}
//-----------------------------
void lcd_init_4bit(void){
FIO1CLR = RS;
FIO1CLR = RW;
FIO1SET = ((1<<0)|(1<<1)|(0<<2)|(0<<3))<< 27;
FIO1SET = E;
delay(70);
FIO1CLR = E;
delay(5000);
FIO1CLR = ((1<<0)|(1<<1)|(0<<2)|(0<<3))<< 27;

FIO1SET = ((1<<0)|(1<<1)|(0<<2)|(0<<3))<< 27;
FIO1SET = E;
delay(70);
FIO1CLR = E;
delay(5000);
FIO1CLR = ((1<<0)|(1<<1)|(0<<2)|(0<<3))<< 27;

FIO1SET = ((0<<0)|(1<<1)|(0<<2)|(0<<3))<< 27;
FIO1SET = E;
delay(70);
FIO1CLR = E;
delay(5000);
FIO1CLR = ((0<<0)|(1<<1)|(0<<2)|(0<<3))<< 27;
/////////////////////////////
FIO1SET = ((1<<0)|(1<<1)|(0<<2)|(0<<3))<< 27;
FIO1SET = E;
delay(70);
FIO1CLR = E;
delay(5000);
FIO1CLR = ((1<<0)|(1<<1)|(0<<2)|(0<<3))<< 27;

FIO1SET = ((1<<0)|(1<<1)|(0<<2)|(0<<3))<< 27;
FIO1SET = E;
delay(70);
FIO1CLR = E;
delay(5000);
FIO1CLR = ((1<<0)|(1<<1)|(0<<2)|(0<<3))<< 27;

FIO1SET = ((0<<0)|(1<<1)|(0<<2)|(0<<3))<< 27;
FIO1SET = E;
delay(70);
FIO1CLR = E;
delay(5000);
FIO1CLR = ((1<<0)|(1<<1)|(1<<2)|(1<<3))<< 27;
}
//-----------------------------
void lcd_putchar(unsigned char CHAR){

FIO1SET=RS;
FIO1CLR=RW
FIO1SET= ((CHAR&0XF0)>>4)<< 27 ;
FIO1SET=E;
delay(70);
FIO1CLR=E;
delay(5000);
FIO1CLR = ((CHAR&0XF0)>>4)<< 27;

FIO1SET = (CHAR&0X0F)<< 27;
FIO1SET=E;
delay(70);
FIO1CLR=E;
delay(5000);
FIO1CLR= (CHAR&0X0F)<< 27;
}
//-----------------------------
void command(unsigned char CHAR){

FIO1CLR=RS;
FIO1CLR=RW;
FIO1SET= ((CHAR&0XF0)>>4)<< 27 ;
FIO1SET=E;
delay(70);
FIO1CLR=E;
delay(5000);
FIO1CLR= ((CHAR&0XF0)>>4)<< 27;

FIO1SET= (CHAR&0X0F)<< 27;
FIO1SET=E;
delay(70);
FIO1CLR=E;
delay(5000);
FIO1CLR= (CHAR&0X0F)<< 27;
}
//-----------------------------
void lcd_putsf(unsigned char *data){
long int i;
for(i=0;data[i];i++) lcd_putchar(data[i]);
}


//--------------**********************---------------
//--------------**********************---------------
int main(void){

SCS|=1;
FIO1DIR = ((1<<20)|(1<<21)|(1<<22)|(1<<27)|(1<<28)|(1<<29)|(1<<30));
FIO1MASK = 0;
FIO1CLR = ((1<<20)|(1<<21)|(1<<22)|(1<<27)|(1<<28)|(1<<29)|(1<<30));
//LCD_4 BIT MODE
lcd_init_4bit();
//MAT 28
command(0x28);
//LCD CLEAR
command(0x01);
//ON DISPLAY & CURSOR-OFF
command(0x0C);
//RIGHT LCD
command(0x06);
//X_Y CONFIG X=0;Y=0
command(0x80);
//LCD TEST/LPC2368
lcd_putsf("TEST LCD/LPC2378");
command(0xC0);
lcd_putsf(" MAHDI ZARKOOB ");
delay(2000000);
//LCD CLEAR
command(0x01);
lcd_putsf(" how are you!! ");

while(1){
delay(2000000);
//LCD CLEAR
command(0x01);
lcd_putsf(" 1234567890 ");
}
}

من با پیکر بندی خودم روی lpc2378 تست کردم. به راحتی هم می توانید دیباگش کنید.:0013: