PDA

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



M3R
03-08-2010, 19:32
سلام.
من مجله میکرو کنترلر 5 رو خوندم و همون پروژه که تو فایل پیوست بود رو اجرا کردم و عکس هم رو lcd نشون داده شد ولی یه مشکل عجیب هست :
وقتی که میخوام یه عکس دیگه رو نشون بدم با نرم افزاری که تو مجله بود تبدیل به فایل هگز کردم ولی موقعی که include کردم ارور میداد.
حتی همون عکسی که تو pmm5 بود و رو lcd نمایش میداد رو به جای picture اسمش رو عوض کردم گذاشتم picture1 و تو برنامه هم اسم رو از picture به picture1 تغییر دادم ولی باز هم ارور داد 8O
همون اروری که موقع که میخواستم عکس رو عوض کنم داد!!

identifier "picture1" is undifined
فکر کنم این ارور مربوط به این باشه که من فایل رو اضافه نکرده باشم ولی من این کار رو هم کردم.
فقط به جای include picture.h گذاشتم include picture1.h

1nafar
03-08-2010, 20:24
سلام
توی فایل picture1.h ، دو تا خط زیر رو اضافه کنید :
const unsigned short picture[] =
{
240,320,

هنرفر
03-08-2010, 20:24
فکر کنم به خاطر این ارور میده که وقتی شما عکسی را به کد تبدیل میکنید باید اسم عکس و سایز آن را در فایل درست شده وارد کنید.چون شما اسم عکس را عوض کردید ولی داخل فایل تولید شده اسم را عوض نکردید ارور میده.اگه به فایل کد عکس مجله 5 را باز کنید متوجه می شید.
const unsigned short name[] =
باید در فایل ساخته شده به جای قسمت name نام عکس را بنویسید مثلا picture1.

M3R
04-08-2010, 02:22
سلام.
مشکلم حل شد.
همون کاری که آقای هنرفر گفتن رو کردم درست شد.
حالا میخوام یه متغییر روی lcd نشون بدم.باید چه کار کنم؟

M3R
04-08-2010, 17:46
کسی نمیخواد جواب بده؟

farzadsw
04-08-2010, 21:09
اگه متغیر کاراکتری باشه که فکر نکنم مشلی داشته باشید . اما اگه متغیر عددی هست باید تبدیل به رشته بشه و بعد نشون داده بشه. برای متغیر های int ( تا 5 رقمی) یه تابع نوشته بودم که عدد رو تبدیل به رشته میکرد . با توجه به اینکه تابع رو با حلقه for نوشتم میتونی خیلی راحت تغییرش بدی و برای عدد های بزرگتر هم استفاده کنی.

تو مجله شماره 10 سورس پروژه هم هست .

M3R
05-08-2010, 03:05
سلام.
من این برنامه رو نوشتم ولی ارور میده!!! این هم ارورش :
main.c(21): warning: #223-D: function "intstr" declared implicitly

این هم برنامم :
char str[5]="test";
int a;
tftlcd_init();
while (1){
intstr(a,str);
tftlcd_putsf(str,BLUE,WHITE,1);
delay_ms (1000);

farzadsw
05-08-2010, 04:53
سلام.
من این برنامه رو نوشتم ولی ارور میده!!! این هم ارورش :
main.c(21): warning: #223-D: function "intstr" declared implicitly

این هم برنامم :
char str[5]="test";
int a;
tftlcd_init();
while (1){
intstr(a,str);
tftlcd_putsf(str,BLUE,WHITE,1);
delay_ms (1000);

اینی که نوشتید ارور نیست ، warning هست .

ولی اگه ارور میده و فایل هدر رو هم اضافه کردید ، کل فولدر پروژه رو آپلود کنید تا تست کنم . برنامه خودم رو الان هم امتحان کردم کار میکرد .

Aghaeifar
05-08-2010, 10:16
این جور warning ها رو میشه برطرف کرد فایل پروژه رو بذاری تصحیح می کنیم

اگه اجازه بدی شما که تاپیک زدی من هم همیجا سوالم روبپرسم کلا در مورد برنامه نویسیش

خواستم ببینم چطور میشه وقتی یه جمله رو مثلا "hello word " رو می نویسم رو پاک کنیم ؟ و طوری پاک شه که رنگی پس زمینه رو به جاش بگیره ؟ د ر برنامه های بزرگ گاهی نمیشه تشخیص داد در فلان لحظه رنگ پس زمینه چیه و می خواهی مثلا یه خط رو هم حذف کنی

باید چی کنم ؟ الگوریتم ساده به ذهنم نمی رسه از این ها روش های طولانی فقط پیدا کردم

M3R
05-08-2010, 12:24
سلام.
ارور هم میده و مینویسه target not created .
این هم پروژه :

farzadsw
05-08-2010, 13:53
این جور warning ها رو میشه برطرف کرد فایل پروژه رو بذاری تصحیح می کنیم

اگه اجازه بدی شما که تاپیک زدی من هم همیجا سوالم روبپرسم کلا در مورد برنامه نویسیش

خواستم ببینم چطور میشه وقتی یه جمله رو مثلا "hello word " رو می نویسم رو پاک کنیم ؟ و طوری پاک شه که رنگی پس زمینه رو به جاش بگیره ؟ د ر برنامه های بزرگ گاهی نمیشه تشخیص داد در فلان لحظه رنگ پس زمینه چیه و می خواهی مثلا یه خط رو هم حذف کنی

باید چی کنم ؟ الگوریتم ساده به ذهنم نمی رسه از این ها روش های طولانی فقط پیدا کردم

اگه پس زمینه یهرنگ ساده باشه (که نیست) خیلی راحت میشد این کار رو کرد. ولی در حالت کلی باید چند لایه (حداقل 2 لایه) به طور مجازی تعریف کرد و اطلاعات لایه پایینی باید یه جایی ذخیره بشه (همون راه های طولانی) . شبیه push و pop که تو stack هست .


سلام.
ارور هم میده و مینویسه target not created .
این هم پروژه :
خباین فایلهای هدرش رو هم میذاشتی تو فولدرش (همشون رو) ، من اون فایلها رو ندارم برای همین همون اولش گیر میده LIB_AT91SAM7X256.h وجود نداره .

درضمن برنامتون یه اشکلاتی هم داره :
هدر با پسوند c نداریم که : tftlcd_functions.c
str رو به صورت global باید تعریف کنید تا تو تابع بشه استفاده کرد ، مثلا خارج main تعریف کنید.
به متغیر a یه مقدار اولیه بدید.

M3R
05-08-2010, 16:24
سلام.
من اون هدر رو با همونجوری با پسوند c نوشتم و کار میکنه!!
آخه تو مجله هم همینجوری نوشته.
این هم فایل پروژه با هدرهاش :

Aghaeifar
05-08-2010, 20:54
تابع intstr در کتابخانه هایی که اضافه کردید که نیست ...(از توابع زبان C هست)

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

M3R
05-08-2010, 21:59
سلام.

تابع intstr در کتابخانه هایی که اضافه کردید که نیست ...(از توابع زبان c هست)
خوب یعنی باید کتابخونه ای اضافه کنم؟! اگه باید اضافه کنم چه کتابخونه ای؟؟

من کامپایل کردم کلی خطا داد و خیلی از چیز هایی که define شده بودن در هدر فایل ال سی دی می گفت تعریف نشده اند. ؟!!
من همین پروژه رو فقط به جای متغییر عکس گذاشتم و درست کار میکنه!!
نمیدونم چرا برای شما این ارورها رو میده!!!!

Aghaeifar
05-08-2010, 23:01
اگه مشکلت فقط اون warning هست . می خوای عدد رو به رشته تبدیل کنی دیگه ؟ از تابع itoa استفاده کن که در یکی از کتابخانه های stdio.h یا stdlib.h است

M3R
06-08-2010, 01:19
اگه مشکلت فقط اون warning هست . می خوای عدد رو به رشته تبدیل کنی دیگه ؟ از تابع itoa استفاده کن که در یکی از کتابخانه های stdio.h یا stdlib.h است

سلام.
من از itoa استفاده کردم ولی :
Build target 'Target 1'
compiling main.c...
main.c(21): warning: #223-D: function "itoa" declared implicitly
linking...
tft.axf: Error: L6218E: Undefined symbol itoa (referred from main.o).
Target not created

همینها رو مینویسه !!! :cry:
stdio و stdlib هم include کردم ولی باز هم همین ارورها رو میده !! :x
فایل پروژه ام هم گذاشتم. اگه زحمتی نیست یه برنامه بنویسید که یک متغییر رو روی lcd نشون بده .

Aghaeifar
06-08-2010, 01:43
می خوای متغیر رو نشون بدی ؟ تابع sprintf استفاده کن و چند متغیر رو می تونی همزمان برییز در یک رشته و قرار بدی . من n مرتبه این رو برای ال سی دی رنگی تست کردم من اگه اون خطا های که برام پیش اومد رو درست کردم می ذارم فکر کنم کتابخونه های اتمل رو ندارم(تا اون موقع خودت حتما درست کردی)

M3R
06-08-2010, 02:28
سلام.
نیازی نیست پروژه بنویسی فقط متن برنامه با کتابخونه ای که لازم داره رو بهم بگو.
ممنون.

Aghaeifar
06-08-2010, 02:36
خوب همون sprintf قبلا در کدویژن برای avr کار نکردی براش ؟ واسه lcd کارکتری لازم میشد :mrgreen:

این طور باید استفاده کنید : مثلا متغیر a از نوع int هست و شما هم یه رشته با طول 10 مثلا داری
char buf[10];
int a=20;
sprintf(buf,"data=%d",a);
lcd_puts(buf);

دستور lcd_puts هم برای قرار دادن رشته هست خودت به نام تابع برنامه خودت عوضش کن.(احتمالا می دونستی و لازم به تکرار من نبود)


در ال سی دی نشون می ده :
data=20

کتابخونه stdio.h هم باید اضافه شه

farzadsw
06-08-2010, 04:15
اون هدری که تو مجله 10 بود توش اینا رو اضافه کرده بودم :


long pow(int b , int p)
{
long result=1;
for(;p>0;p--)result *=b;
return result;
}

int digit(int n)
{
int i,j;
for (i=4 ;i>0 ;i--)
{
j = n/pow(10,i);
if ( j != 0 )break;

}
return i+1;
}


void intstr(int n ,char *str)
{

int i,d;
d= digit(n)-1;
for (i = 0 ; i< d ; i++)
{
str[i] = n / pow(10,d-i);
n = n - str[i] * pow(10,d-i) ;
str[i] +=48;
}
str[d] = n+48;

for (i = d+1 ; i< 5 ; i++)
{
str[i] = 0;
}

}


اگه اینا رو یه جایی از برنامه تعریف کنی اون ارور ها دیگه نیست .
البته همونطور که آقا علی هم گفت ، میشه ازتوابع آماده برای این کار استفاده کرد ولی من دیدم نوشتن سادس و کیف هم داره (!) خودم یه تابع ساده نوشتم.

M3R
06-08-2010, 12:28
خوب همون sprintf قبلا در کدویژن برای avr کار نکردی براش ؟ واسه lcd کارکتری لازم میشد

این طور باید استفاده کنید : مثلا متغیر a از نوع int هست و شما هم یه رشته با طول 10 مثلا داری
char buf[10];
int a=20;
sprintf(buf,"data=%d",a);
lcd_puts(buf);

دستور lcd_puts هم برای قرار دادن رشته هست خودت به نام تابع برنامه خودت عوضش کن.(احتمالا می دونستی و لازم به تکرار من نبود)


در ال سی دی نشون می ده :
data=20

کتابخونه stdio.h هم باید اضافه شه
سلام.
ممنون از کمکت
ولی باید اینو بگم که من قبلا با بیسیک کار میکردم و حالا تازه شروع به یادگیری زبان c کردم.
البته حدود 2 هفته ای رفتم سراغ C و codevision و بعد فهمیدم که وقتم رو الکی سر basic هدر دادم.
البته bascom هم خصوصیات خاص خودش رو داره .
راستی یه جایی دیدم نوشته کامپایلر basic هم برای arm میخواد بیاد . این حقیقت داره؟؟

M3R
06-08-2010, 17:01
سلام.
مشکل با نشون دادن متغییر رو lcd حل شد هم از روش آقا فرزاد استفاده کردم و هم روش علی آقا .
ولی الان یه مشکل دیگه دارم!!
موقعی که یه متغییر رو بخوام رو lcd نشون بدم که مقدارش همینجور تغییر کنه نمیشه .
مثلا الان عدد 1 نشون میده وقتی که مقدار متغییر شد 2 و میخواد رو lcd نشون بده عدد 1 قبلی رو lcd میمونه و عدد 2 هم میاد روش و پس از چند تا عدد میشه یه مربع تو پر.
اگه بعد از هر بار نشون دادن عدد lcd رو پاک کنم درست میشه که اینجوری هم موقعی که عکس تو صفحه هست نمیشه استفاده کرد.
حتی یه کار دیگه هم کردم موقعی که عدد رو نشون دادم قبل از اینکه بخواد عدد بعدی رو نشون بده اومدم و جای عدد رو خالی کردم با دستور زیر ولی باز هم نشد.
(tftlcd_gotox,y (1,1
tftlcd_puts (str,black,white,1)
delay_ms (100)
tftlcd_gotoxy (1,1)
tftlcd_putsf (" ",black,white,1)
حالا باید از چه روشی استفاده کنم؟

farzadsw
06-08-2010, 18:47
من مشکل اینچنینی نداشتم ، تو برنامه عدد ها تغییر میکرد ولی هر دفعه فقط عدد جدید رو مینوشت .
اینطوری هم استفاده کردم :

tftlcd_putsf(str,BLUE,WHITE,1);
احتمالا خود تابع tftlcd_putsf هدری که شما استفاده کردید مشکل داره . با اونی که تو مجله 10 بود مقایسه کنید .

M3R
07-08-2010, 02:04
سلام.
مشکل از کتابخونه بود و کتابخونه شما رو که گذاشتم درست شد :o
ولی کتابخونه شما هم یه مشکل داره !!!
وفتی که از کتابخونه شما استفاده میکنم دیگه نمیشه از کتابخونه delay استفاده کرد به دلیل اینکه تو خط 265 از کتابخونه شما تابع delay_ms استفاده شده که تو کتابخونه delay هم هست . چون من تازه کار هستم نتونستم درستش کنم .
اگه زحمتی نیست درستش کنید.
با تشکر.

Aghaeifar
07-08-2010, 10:16
خوب فقط تو هم rename کن اسم توابع delay رو هر جا استفاده شده به اسم مورد نظرت (replace all ) بزن

M3R
08-08-2010, 15:44
سلام.
یه مشکل دیگه تو کتابخونه ای که آقا فرزاد معرفی کزدن پیدا کردم.
این کتابخونه برای نمایش عکس مشکل داره.من اومدم کد نمایش عکس رو از کتابخونه pmm5 کپی کردم و به جای همون کد تو کتابخونه جدید ریختم و درست شد.همه چیش رو تست کردم درست جواب میده.
این هم از کتابخونه جدید :