PDA

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



arm-mohsen-avr
05-02-2012, 22:55
با سلام به دوستان :hi:
بازم اومدم :0013:

من دارم با پورت سریال کار می کنم و نیاز به نمایش اعداد(صحیح و اعشاری) و رشته و کاراکتر دارم ، ار اونجایی که توابع در avrstudio کار نمی کنند . ( از جمله ftoa و itoa و غیره که در هدر های stdio , stdlib هستند )می خواستم خودم اینکار رو انجام بدم .تاحالا تونستم رشته و کارکتر رو نمایش بدهم و همچنین اعداد صحیح تک رقمی رو با استفاده از فرمول زیر می تونم چاپ کنم ولی مشکل اینه که وقتی عدد اعشاری شد یا طول عدد افزایش پیدا کند مثلا 10 رقمی باید چی کار کنم . روش پیشنهادی شما چیست //در پایین تا جایی که برای نمایش یک عدد است پیش رفتم می زارم . باتشکر:wink:

float adad=4;
adad=adad+48;
usart_send(adad);

void usart_send( char chs)
{
while(!(UCSRA & (1<<UDRE)));
UDR = chs;
}

arm-mohsen-avr
05-02-2012, 23:10
دوستان میشه یک متغیر رو تو یه ارایه کپی کرد ///
به عنوان مثال :

float adaad=12345;
float temp[4]={1,2,3,4,5};
چجوری این کپی رو انجام بدم؟؟؟؟؟؟:(

agape
05-02-2012, 23:33
دایی جان این همه تابع سطح بالا تو سی هست فکر کنم یه جایی از تنظیمات رو درست انجام نمیدی که کار نمیکنه !
خوب از sprintf استفاده کن ! اگه printff کار کنه اینم حتما کار میکنه و الگوشم به این ترتیبه


char temp[10];
sprintf(temp,"%f",1.256);

که با این دستور مقدار رشته شده توی متغییر تمپ قرار می گیره

m.safavy
23-04-2012, 16:43
سلام دوستان
من از sprintf برای نمایش اعداد اعشاری روی LCD استفاده کردم ولی همانطور که در شکل معلومه عدد اعشاری رو نمایش نمیده!!!!
اگه راهنمایی کنید ممنون میشم

arm-mohsen-avr
23-04-2012, 17:13
باید اینجوری بنویسی
sprintf(lcd_buff,"%3.4f",data);


با 4 رقم اعشار و 3 رقم صحیح

agape
23-04-2012, 21:55
دایی جان خوب معلومه کار نمیکنه چون این دستور به صورت پیش فرض به فقط اعداد بدون علامت رو نمایش میده و باید تو تنظیمات قسمت اعشاری اون رو هم فعال کنید ! تو ویناستودیو نمیدونم کجاش هست، تو winavr تو میک فایل میشه تنظیمش کرد

m.safavy
23-04-2012, 22:11
باید اینجوری بنویسی
sprintf(lcd_buff,"%3.4f",data);


با 4 رقم اعشار و 3 رقم صحیح
آقا محسن اینجوری هم امتحان کردم فقط 4f رو LCD نمایش میده

sadmonew
23-04-2012, 22:36
سلام دوستان
من از sprintf برای نمایش اعداد اعشاری روی LCD استفاده کردم ولی همانطور که در شکل معلومه عدد اعشاری رو نمایش نمیده!!!!
اگه راهنمایی کنید ممنون میشم
سلام مهندس
تو Codevision اين قسمت رو تنظيم كردي(تو عكس)؟

m.safavy
24-04-2012, 00:20
سلام
آره الان پیداش کردم ممنون درست شد.

راستی یه سوال دیگه هم داشتم مهندس
من میخوام پیک سیگنال sin که بین 0 و 5 ولت تغیرات داره رو با ADC محاسبه کنم و مقدار آن را به LCD ارسال کنم
ولی هر کار میکنم دقتش زیاد نمیشه
مثلا وقتی پیک 5 ولته میکرو 4.86 رو نشون میده چه طوری میشه دقتش رو بالا برد

ali_h
24-04-2012, 01:24
سلام
اگر شماتیک و برنامتون رو بذارید راحت تر می شه کمکتون کرد.
یا به عبارت دیگه تنها راهی که ما بفهمیم شما دارین چی کار می کنین تا بتونیم کمکتون کنیم اینه که تیکه adc برنامه و شماتیکتون رو بذارین :0013:

m.safavy
24-04-2012, 02:34
این فعلا قسمتی از برنامه است که میخوام کاملش کنم
اگر هم زیاد مرتب نیست شما ببخشید.
You can see links before reply

m.safavy
25-04-2012, 16:37
دوستان و اساتید کسی نبود راهنمایی کنه؟:(