امتیاز موضوع:
  • 5 رأی - میانگین امتیازات: 2.6
  • 1
  • 2
  • 3
  • 4
  • 5
شما هم میتونید MP3 Player بسازید اونهم با LCD رنگی
#1
Brick 
سلام من همین پست رو تو سایت http://www.ECA.IR هم قرار دادم ولی اینجا بودنش هم خالی از لطف نیست امید وارم خوشتون بیاد


این MP3 Player فایلهای MP3 WMA WAV MID رو بدون مشکل و بهترین کیفیت پخش میکنه
و قابلیت نشون دادم فایلهای BMP رو هم داره

که فایل های PCB و شماتیک و سورسشو پیوست کردم At
زبان برنامه نویسی C و در کامپایلر CodeVisionAVR نوشته شده

دوستان مواد لازم برای پخت این MP3 Player
یک عدد میکرو MEGA64 یا MEGA128
یک LCD رنگی با 240 در 320 پیکسل و 265 هزار رنگ که مال گوشی N96 چینی هست (چیپش هم ILI9320 یا ILI9325 هست که سورس ما هردوشو ساپرت میکنه)
یه IC مخصوص تاچ (ADS7846)
یکی برای شارژ باتری لیتیوم پلیمر(MAX1811)
یکی دیگه برای ساعت همون RTC به شماره (DS1307)
یه سنسور دما(DS1820)
از همه مهمتر چیپ مخصوص دکودر MP3 و WMA و ... (VS1003)
دوتا رگلاتور ولتاژ یکی 3.3 ولت و یکی 2.5 ولت
و یه مموری MicroSD که من تا هشت گیگشو امتحان کردم و جواب داده
و خازن و مقاومت به مقدار کافی و دوتا کریستال و یه شستی
همشو تو یه برد مدار چاپی که فایلشو هم براتون اپلود کردم میریزید
با یه هویه مناسب یه هم میزنید
برنامشو با یه پرگرامر JTAG ICE یا AVR ISP پروگرام میکنید
حالا اماده شده و میتونید با سلیقه خودتون تزیین کنید و نوش جان
فقط منو از یاد نبرید یه یادی هم از من بکنید Heart

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

.zip   Sch&PCB.zip (اندازه: 71.91 KB / تعداد دفعات دریافت: 2,646)
.zip   MP3 Player V3.zip (اندازه: 739.35 KB / تعداد دفعات دریافت: 2,981)
اگر مطلبی مفید بود سپــــاس واگر مفیدتر بود دادن اعتبار را فراموش نکنید dont
به پيغام خصوصي ها فقط در صورت واقعا خصوصي بودن پاسخ داده خواهد شد Confused

پاسخ
 سپاس شده توسط hadivahdati ، SAJAD-G ، becksmary ، masoud_m_bf ، امیرحسین ، jumper ، Ebrahim ، narsis ، مهندس ، Soheil ، ali_reza_m ، iman_ieee ، hesam.m ، MpM ، narges ، 1134 ، cniran ، morteza_stp ، moltimeter ، scarce ، hashemi.mreza ، amiran ، M.K_Soft ، reza5iran ، mohammad_6910 ، naeemabadi ، ehsancompany ، h0x00i ، ghaeem ، a 810 ، ATmega ، atmelboy ، farid499 ، yasooj ، hamid_gh ، kasaee ، saeedking2012 ، zander ، sadeghmojtabaei ، behzadv ، Farzad ، skiboys ، galaxyboy ، mgm1387 ، Novice ، able ، Nimaaryamehr ، ehsan8 ، mohammad_m2 ، sinup ، Mori3p ، majid1 ، morteza_j ، ashkanparadox ، UFO ، mo2_star ، ali2914 ، fhgb ، prince_moein ، sonyk770 ، milad_kh.s ، kamymajaz ، mohsen_mps ، ارميـا ، sina-electronic ، amir_726 ، falahi.saeed ، artd179 ، amin_m_d ، erfanva ، behroz2010 ، atige ، arm9mcu ، kamran0080 ، titaniom1370 ، moein masoumi ، mehdigostar ، jamshidb ، ehsan2774 ، stareye shab ، پوریا php ، mozhdeh ، starir
#2
خیلی ها فقط دانلود می کنند تا وقتی تست کردن نتیجه رو بگن
ولی اگر زیر پستتون رو نگاه کنید می بینید خیلی ها تشکر کرده اند
بنده هم فیلم رو دیدم همون روزه اول هم مدارات شماتیک و پی سی بی
واقعا شاهکار بود
فقط یک سوال داشتم آیا برنامه رو خودتون نوشتید ؟
اگر همان کاری را انجام دهید که همیشه انجام می دادید، همان نتیجه ای را می گیرید که همیشه می گرفتید .
افراد موفق کارهای متفاوت انجام نمی دهند، بلکه کارها را بگونه ای متفاوت انجام می دهند.
پاسخ
 سپاس شده توسط polestar ، 1134 ، artd179 ، kamran0080 ، m.n879 ، mehrannori
#3
قیمتش چند در میاد ؟! :دی
پاسخ
 سپاس شده توسط 1134 ، artd179
#4
(7-2-1390، 02:45 عصر)امیرحسین نوشته است: خیلی ها فقط دانلود می کنند تا وقتی تست کردن نتیجه رو بگن
ولی اگر زیر پستتون رو نگاه کنید می بینید خیلی ها تشکر کرده اند
بنده هم فیلم رو دیدم همون روزه اول هم مدارات شماتیک و پی سی بی
واقعا شاهکار بود
فقط یک سوال داشتم آیا برنامه رو خودتون نوشتید ؟

سلام دوست من همه اینهارو میدونم تشکر جای خود ولی بهتر نیست یه نظری یا انتقادی باشه
این باعث میشه من هم دلگرم بشم نه؟
در مورد سوالت هم به اینجا یه نگاهی بکن http://www.eca.ir/forum2/index.php?topic=47701.75
اگر مطلبی مفید بود سپــــاس واگر مفیدتر بود دادن اعتبار را فراموش نکنید dont
به پيغام خصوصي ها فقط در صورت واقعا خصوصي بودن پاسخ داده خواهد شد Confused

پاسخ
 سپاس شده توسط 1134 ، artd179 ، kamran0080
#5
من دارم با تغییراتی توی این پروژه کمی بصورت دلخواه خودم تنظیمش می کنم
دنبال این بودم
نقل قول: خوب دوستان من توی این برنامه یه طبقه بندی کلی کردم و هر کدوم از توابع رو که به هم یه به یه چیپ خاص مربوط هستن رو تو یه فایل جداگانه گزاشتم که به این ترتیب هستن
کتابخونه های عمومی خود کدویژن که استفاده کردم (فکر کنم همتون بدونین برای چه کارین)
mega128.h
delay.h
stdio.h
stdlib.h
sleep.h
و کتابخونه های خود من
diskio.h برای توابع FAT و SD کاته
hw_mcu.h توی این فایل پینهای میکرو دیفاین شده و یه تابع برای اینیشیال میکرو
ds18x20.c توابع مربوط به سنسور دما
rtc.c توابع مربوط به ساعت و تاریخ
spi.c توابع مربوط به SPI (تو این کار SD و دکودر MP3 و ای سی تاچ از SPI استفاده میکنند)
ili9325.c توابع مربوط به LCD
ads7846.c توابع کار با ای سی تاچ اسکرین
ts_tools.c توابع کالیبره و موقعیت یاب تاچ
mmc.c از اسمش هم معلومه توابع SD کارت ماست
ccsbcs.c یه تعداد دیتابیس هست که برای یونیکدهای مورد نیاز برای فت
ff.c توابع مربوط به فت هست
file_tools.c توابع مربوط به سرچ فایلهای قابل پخش با این MP3 Player و ایجاد PLAY LIST
ID3.c خوندن تگ فایلهای صوتی
sdbmp.c توابع مربوط به فایلهای BMP
VS1003B.c توابع دکودر MP3
و چندتا فایل دیگه که زیاد مهم نیست ولی حتما بهش برسیم توضیح میدم

و یکسری داکیومنت در این رابطه

اگر بتونید مستنداتتون رو به این تاپیک منتقل کنید که کاربرا راحت تر بتونند به آنها دسترسی پیدا کنند عالی میشه

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

اگر همان کاری را انجام دهید که همیشه انجام می دادید، همان نتیجه ای را می گیرید که همیشه می گرفتید .
افراد موفق کارهای متفاوت انجام نمی دهند، بلکه کارها را بگونه ای متفاوت انجام می دهند.
پاسخ
 سپاس شده توسط polestar ، 1134 ، artd179 ، kamran0080
#6
دوستان مواد لازم برای پخت این MP3 Player
یک عدد میکرو MEGA64
یک LCD رنگی با 240 در 320 پیکسل و 265 هزار رنگ که مال گوشی N96 چینی هست (چیپش هم ILI9320 یا ILI9325 هست که سورس ما هردوشو ساپرت میکنه)
یه IC مخصوص تاچ (ADS7846)
یکی برای شارژ باتری لیتیوم پلیمر(MAX1811)
یکی دیگه برای ساعت همون RTC به شماره (DS1307)
یه سنسور دما(DS1820)
از همه مهمتر چیپ مخصوص دکودر MP3 و WMA و ... (VS1003)
دوتا رگلاتور ولتاژ یکی 3.3 ولت و یکی 2.5 ولت
و یه مموری MicroSD که من تا هشت گیگشو امتحان کردم و جواب داده
و خازن و مقاومت به مقدار کافی و دوتا کریستال و یه شستی
همشو تو یه برد مدار چاپی که فایلش هم بالا براتون اپلود کردم میریزید
با یه هویه مناسب یه هم میزنید
برنامشو با یه پرگرامر JTAG ICE یا AVR ISP پروگرام میکنید
حالا اماده شده و میتونید با سلیقه خودتون تزیین کنید و نوش جان
فقط منو از یاد نبرید یه یادی هم از من بکنید
خوب دوستان من توی این برنامه یه طبقه بندی کلی کردم و هر کدوم از توابع رو که به هم یه به یه چیپ خاص مربوط هستن رو تو یه فایل جداگانه گزاشتم که به این ترتیب هستن
کتابخونه های عمومی خود کدویژن که استفاده کردم (فکر کنم همتون بدونین برای چه کارین)
mega128.h
delay.h
stdio.h
stdlib.h
sleep.h
و کتابخونه های خود من
diskio.h برای توابع FAT و SD کاته
hw_mcu.h توی این فایل پینهای میکرو دیفاین شده و یه تابع برای اینیشیال میکرو
ds18x20.c توابع مربوط به سنسور دما
rtc.c توابع مربوط به ساعت و تاریخ
spi.c توابع مربوط به SPI (تو این کار SD و دکودر MP3 و ای سی تاچ از SPI استفاده میکنند)
ili9325.c توابع مربوط به LCD
ads7846.c توابع کار با ای سی تاچ اسکرین
ts_tools.c توابع کالیبره و موقعیت یاب تاچ
mmc.c از اسمش هم معلومه توابع SD کارت ماست
ccsbcs.c یه تعداد دیتابیس هست که برای یونیکدهای مورد نیاز برای فت
ff.c توابع مربوط به فت هست
file_tools.c توابع مربوط به سرچ فایلهای قابل پخش با این MP3 Player و ایجاد PLAY LIST
ID3.c خوندن تگ فایلهای صوتی
sdbmp.c توابع مربوط به فایلهای BMP
VS1003B.c توابع دکودر MP3
و چندتا فایل دیگه که زیاد مهم نیست ولی حتما بهش برسیم توضیح میدم
من فرض رو بر این میزارم که شما به برنامه نویسی C اشنا هستین پس با جزئیاتکاری ندارم ولی هر کجاش جای سوال بود بپرسین
اگر تو فایل ili9325.c دقت کنید یک فایل دیگه font_courier.h هم include شده این فایل فونت ما هستش که دو تا فونت توش هست یکی
font_vrinda11x16 و دومی هم font_vrinda18x16 چون من نیازی به فونت دوم نداشتم این فونت رو توضیح کردم
یازده تا از رنگها رو هم برای سهولت کار دیفاین کردم
#define LCD_COL_RED 0x001F
#define LCD_COL_GREEN 0x07E0
#define LCD_COL_BLUE 0xF800
#define LCD_COL_YELLOW 0x07FF
#define LCD_COL_PURPLE 0xF81F
#define LCD_COL_BLACK 0x0000
#define LCD_COL_WHITE 0xFFFF

#define BLACK RGB(0x00, 0x00, 0x00)
#define WHITE RGB(0xFF, 0xFF, 0xFF)
#define RED RGB(0xFF, 0x00, 0x00)
#define GREEN RGB(0x00, 0xFF, 0x00)
#define BLUE RGB(0x00, 0x00, 0xFF)
#define YELLOW RGB(0xFF, 0xFF, 0x00)
#define MAGENTA RGB(0xFF, 0x00, 0xFF)
#define CYAN RGB(0x00, 0xFF, 0xFF)
#define GRAY RGB(0x80, 0x80, 0x40)
#define SILVER RGB(0xA0, 0xA0, 0x80)
#define GOLD RGB(0xA0, 0xA0, 0x40)
سطر های قبلش هم کامندهای مورد نیاز LCD دیفاین شده
بعدش هم 27 تا تابع تعریف شده که به این ترتیب هست
این توابع به دو دسته
1 توابعی که شما برای کار با LCD نیاز دارین
2 توابعی که برای توابع 1 نیاز هست ولی شما نیاز ندارین (مگر اینکه بخواین خودتون تابع دیگه ای بنویسید)
void LCDOutIns(unsigned short ins) این تابع برای نوشتن یک استراکشن در LCD به کار میره
void LCDOutDat(unsigned short dat) این تابع برای نوشتن دیتا در LCD به کار میره
void LCDOutDat2(unsigned char dath,unsigned char datl); ابن تابع هم مثل تابه قبل برای نوشتن دیتا در LCD به کار میره
فرق این دوتا تابع باهم در اینه که ورودی اولی از نوع short هست ولی در دومی دو ورودی char
unsigned short LCDInIns(void) این تابع برای خوندن انستراکشن از LCD بکار میره
unsigned short LCDInDat(void) این تابع برای خوندن دیتا از LCD بکار میره
ورودی هردو هم از نوع short هست
void LCDRst(void) فرمان ریست برای LCD رو میده
void LCDInit(void) برای اینیشیال LCD استفاده میشه (فقط یک بار در اول برنامه)
بقیش هم بمونه برای بعد
توی این توابع از یه enum به نام LCD_mode_t استفاده شده که سه حالت NORMAL و INVERSE و FULL داره فک نکنم زیاد توضیح بخاد چون از اسمش مشخصه (در آخر اکثر توابع استفاده شده و مد نمایش رو انتخاب میکنه)
از توابع پر مصرف توی این LCD

void LCDSetFontColor(unsigned short color) برای تعریف رنگ فونت به کار میره
void LCDSetBackColor(unsigned short color) برای تعریف رنگ پس زمینه به کار میره
void LCDCfgFont(flash unsigned char *_font, unsigned char width, unsigned char height_div_8,unsigned char gap) برای تعریف فونت به کار میره
void LCDSetVaryWidth(unsigned char on) برای فشورده کردن فونت به کار میره (اگر یک باشه جاهای خالی متن رو حذف میکنه)
void LCDSetBold(unsigned char on) میزان بولد بودن فونت رو تنظیم میکنید (اگر عدد 1 بهش بدین فونت رو 1 پیکسل کلفت تر میکنه)
void LCDFillRect(LCD_pos_t sx,LCD_pos_t ex,LCD_pos_t sy,LCD_pos_t ey,unsigned short color,LCD_mode_t mode) یک مربع با طول و عرض ابتدا از X و Y خاص میکشه
void LCDFillCirc(LCD_pos_t cx,LCD_pos_t cy,LCD_pos_t rad,unsigned short color, LCD_mode_t mode) یک دایره با طول و عرض ابتدا از X و Y خاص میکشه
void LCDShowPicBack(LCD_pos_t sx,LCD_pos_t ex,LCD_pos_t sy,LCD_pos_t ey,const unsigned short *pic,unsigned int total_x,unsigned int total_y,LCD_mode_t mode) یه عکس رو در بکگراند میکشه
void LCDShowPic2(LCD_pos_t sx,LCD_pos_t ex,LCD_pos_t sy,LCD_pos_t ey,flash unsigned short *pic,LCD_mode_t mode) نمایش عکس از فلش تو LCD
void LCDSetMargins(LCD_pos_t xl,LCD_pos_t xr,LCD_pos_t yu,LCD_pos_t yl) با این تابع حاشیه ها رو در مربع و دایره نتظیم میکنید
void LCDSetMarginsDefault(void) ریست کردن دستور قبل
void LCDSetOffset(LCD_pos_t x,LCD_pos_t y) افست LCD رو برای کاراکترها ست میکنه
void LCDPrintStr(unsigned char line,unsigned char column,char *str,LCD_mode_t mode) یک رشترو میتونید با این تابع تو LCD بنوسید
void LCDPrintCh(unsigned char line,unsigned char column,char c,LCD_mode_t mode) یک کاراکتر رو میتونید با این تابع تو LCD بنوسید
اول از همه اگر اشتباه تایپی یا املایی بود شرمنده شما ببخشید

امروز میخوام در مورد تابع
void LCDPrintStr(unsigned char line,unsigned char column,char *str,LCD_mode_t mode);
که برای نوشتن متن رو LCD به کار میره بیشتر توضیح بدم
اینت تابع خروجی نداره ولی چهارتا وردی داره
1 unsigned char از اسمش هم پیداست سطر که میخوایم متن تو اون سطر باشه (این LCD در حالت عمودی به 20 سطر و درحالت افقی به 15 سطر تقسیم شده)
2 unsigned char column این متغیر هم ابتدای متن میگیره (که میتونه درحالت عمودی تا 240 و در حالت افقی تا 320 باشه)
3 char *str متنی هست که قراره چاپ بشه و از نوع رشته و در رم باید باشه
4 LCD_mode_t mode مود نوشتن هست و سه حالت داره
درمورد این مود هم باید بگم که
1 LCD_MODE_NORMAL یعنی رنگ خود متن که با تابع LCDSetFontColor تعریف شده و رنگ جاهای خالی متن هم با رنگی که با تابع LCDSetBackColor تعریف شده پر میشه
LCD_MODE_INVERSE 2 یعنی رنگ خود متن که با تابع LCDSetFontColor تعریف شده و رنگ جاهای خالی متن هم با مخالف (نات) رنگی که با تابع LCDSetBackColor تعریف شده پر میشه
LCD_MODE_FULL 3 یعنی رنگ خود متن که با تابع LCDSetFontColor تعریف شده و رنگ جاهای خالی متن هم با رنگی قبلا بوده پر میشه

خود تابع رو اگر دقط کنید از یک while هست که توش از تابع
void LCDCharDisp(char charactor,LCD_pos_t sx,LCD_pos_t sy,LCD_mode_t mode)
که برای نوشتن یک کاراکتر هست استفاده شده یعنی توی این while ما یکی یکی کاراکترهارو به این تابع میدیم تا تو LCD چاپ بشه
بقییه وایل هم برای پاک کردن جاهای خالی هست اگر یادتون باشه یه توظیحی در مورد تابع
void LCDSetVaryWidth(unsigned char on)
داده بودم که کارش فشورده کردن متن هست اگر به این تابع مقدار یک بدیم متغیر vary_width_on یک میشه و در نتیجه وارد IF شده و دستور
posx += last_non_zero-first_non_zero+char_gap; اجرا میشه این دستور مقدار posx (موقعیت X LCD ) رو به مقدار جاهای خالی فونت کم میکنه
ولی خود تابع
void LCDCharDisp(char charactor,LCD_pos_t sx,LCD_pos_t sy,LCD_mode_t mode)
این تابع هم مثل تابع قبل چهار ورودی مشابه داره و خروجی نداره
تنها تفاوت این دو تابه اینه که سومین ورودی اولی رشته یا متن هست در حالی که این تابه کاراکتر میگیره
ببینیم توی تابه چه خبره
این تابه کمی بزرگه ولی همشو توضیح میدم
void LCDCharDisp(char charactor,LCD_pos_t sx,LCD_pos_t sy,LCD_mode_t mode) //low level function to print a character on LCD
{
unsigned int x,y;
unsigned char i,j;
LCD_pos_t ex,ey;
unsigned short c;

buf_store(charactor - 0x20);

if (vary_width_on)
{
ex = sx + (last_non_zero - first_non_zero) + char_gap - 1;
}
else
{
ex = sx + FONT_WIDTH - 1;
}

ey = sy + FONT_HEIGHT - 1;

LCDOutIns(LCD_INS_START_ADX);
LCDOutDat(sx);
LCDOutIns(LCD_INS_END_ADX);
LCDOutDat(ex);
LCDOutIns(LCD_INS_GRAM_ADX);
LCDOutDat(sx);
x = ex - sx + 1;

#ifndef LCD_ORN_PORTRAIT
sy = LCD_SIZE_Y - 1 - sy; // mirror start y address
ey = LCD_SIZE_Y - 1 - ey; // mirror end y address
LCDOutIns(LCD_INS_START_ADY);
LCDOutDat(ey);
LCDOutIns(LCD_INS_END_ADY);
LCDOutDat(sy);
LCDOutIns(LCD_INS_GRAM_ADY);
LCDOutDat(sy);//fix from bug of v1_00
y = sy - ey + 1;
#else
LCDOutIns(LCD_INS_START_ADY);
LCDOutDat(sy);
LCDOutIns(LCD_INS_END_ADY);
LCDOutDat(ey);
LCDOutIns(LCD_INS_GRAM_ADY);
LCDOutDat(sy);
y = ey - sy + 1;
#endif

LCDOutIns(LCD_INS_RW_GRAM);

if (mode == LCD_MODE_NORMAL)
{
for (j=0; j<y; j++)
for (i=0; i<x; i++)
{
if (buf_read(i,j))
{
LCDOutDat(font_color);
}
else
{
c = LCDInDat(); // ignore invalid data
c = LCDInDat();
LCDOutDat©;
}
}
}
else
if (mode == LCD_MODE_INVERSE)
{
for (j=0; j<y; j++)
for (i=0; i<x; i++)
{
c = LCDInDat(); // ignore invalid data
c = LCDInDat();
if (buf_read(i,j))
{
LCDOutDat(~c);
}
else
{
LCDOutDat©;
}
}
}
else
if (mode == LCD_MODE_FULL)
{
for (j=0; j<y; j++)
for (i=0; i<x; i++)
{
if (buf_read(i,j))
{
LCDOutDat(font_color);
}
else
{
LCDOutDat(back_color);
}
}
}
}
اگر دقت کنید این تابع به دو قسمت تقسیم شده
1 اینیشیال LCD
2 انتخاب نوع مود LCD (همونهایی که بالا توضیح دادم)
من توضیح خط به خط نمیدم اما اگر لازم بود و هر کجاش نا مفهوم بود بگین
توی این تابع ما از چندتا تابع که قبلا توضیح کارشونو دادم استفاده شده
unsigned char buf_read(unsigned char column,unsigned char row)
unsigned char buf_read(unsigned char column,unsigned char row)
void LCDOutDat(unsigned short dat)
unsigned short LCDInDat(void)
void LCDOutDat(unsigned short dat)
void buf_store(unsigned char charactor)
unsigned char buf_read(unsigned char column,unsigned char row)
فقط باید بگم این دو تابع اخری دیتای مورد نیاز برای یک کاراکتر رو از لیست فونت استخراج کرده و در رم قرار میده
و با دو تا FOR تو در توی داخل هر مود بایت به بایت دیتا رو در هر پیکسل قرار میدن
موفق باشید و سربلند
امروز میخوام توابع MMC رو براتون بگم
یکی از فایلهای انکلود شده در برنامه MMC.C هست که از 12-13 تا تابع تشکیل شده
چند تاشون برای SPI هستن و بقیش برای خود MMC

BYTE rcvr_spi (void)
برای خوندن یک بایت از SPI به کار میره
int wait_ready (void)
تاخیر برای پاسخ از دیوایس در SPI به کار میره
void deselect (void)
MMC رو دیسلکت میکنه
int select (void)
برای سلکت MMC به کار میره توی این تابع از تابه wait_ready استفاده شده که در صورت جواب ندادن MMC از تابه خارج و مقدار 0 برگردونده میشه ولی
در صورت پاسخگویی مقدار 1 برگردونده خواهد شد
void init_spi (void)
برای اینیشیال پینهای SPI و خود رجسترهای SPI به کار رفته و فقط یک بار استفاده میشه
void power_off (void)
این تابع تو این برنامه غیر فعال است که برای قطع ولتاژ MMC به کار میره
int rcvr_datablock (BYTE *buff,UINT btr)
برای خوندن یک بلوک دیتای MMC بکار میره
BYTE send_cmd ( BYTE cmd,DWORD arg)
برای نوشتن کامند در MMC بکار میره
DSTATUS disk_initialize (BYTE drv)
برای تشخیص و اینشیال نوع MMC بکار میره (SD v1 , SD v2 , SD v3 , MMC)
DRESULT disk_read (BYTE drv,BYTE *buff,DWORD sector,BYTE count)
برای خوندن دیتا از MMC بکار میره
DRESULT disk_write (BYTE drv,BYTE *buff,DWORD sector,BYTE count)
برای نوشتن دیتا در MMC بکار میره البته چون نیازی بهش نیست توضیحش کردم
void disk_timerproc (void)
این تابع برای چک کردن وضعیت MMC بکار میره که باید توی یه تایمر 100HZ قرار بگیره
سلام
توی توابع فت همه چیز تقریبا مشخص هست ولی باز یه مختصر توضیح هم میدم
کلا این توابع فت هست
برای انتخاب دیسک و درایو به کار میره * f_mount - Register/Unregister a work area

برای باز کردن یا ایجاد فایل بکار میره * f_open - Open/Create a file

برای خروج از فایل به کار میره * f_close - Close a file

برای خوندن از فایل به کار میره * f_read - Read file

برای نوشتن در فایل به کار میره * f_write - Write file

برای انتقال پواینتر به ادرسی از فایل برای خوندن یا نوشتن * f_lseek - Move read/write pointer, Expand file zize

* f_truncate - Truncate file size
* f_sync - Flush cached data

برای باز کردن یک دایرکتوری یا پوشه * f_opendir - Open a directory

برای خوندن محتوای یک پوشه * f_readdir - Read a directory item

* f_getfree - Get free clusters
* f_stat - Get file status

برای ایجاد پوشه * f_mkdir - Create a directory

پاک کردن پوشه یا فایل * f_unlink - Remove a file or directory

برای تغییر صفات فایل (مثل هیدن بودن یا سیستمی بودن یا ...) * f_chmod - Change attribute

* f_utime - Change timestamp

برای تغییر نام یا جابجا کردن فایل یا پوشه * f_rename - Rename/Move a file or directory

برای ایجاد فایلهای سیستمی در درایو * f_mkfs - Create a file system on the drive

* f_forward - Forward file data to the stream directly

برای تغییر پوشه جاری * f_chdir - Change current directory

برای تغییر درایو جاری * f_chdrive - Change current drive

* f_getcwd - Retrieve the current directory
* f_gets - Read a string
* f_putc - Write a character
* f_puts - Write a string
* f_printf - Write a formatted string
و این هم توابع دیسک یا همون CD کارت خودمون
برای اینیشیال دیسک * disk_initialize - Initialize disk drive

برای خوندن مشخصات دیسک * disk_status - Get disk status

برای جوندن دیسک * disk_read - Read sector(s)

برای نوشتن دیسک * disk_write - Write sector(s)

* disk_ioctl - Control device dependent features

برای خوندن زمان جاری * get_fattime - Get current time
اونهایی هم که توضیح ندارن یا خودم نمیدونم دقیقا برای چه کاریه یا استفاده نکردم
یزی که اینجا خیلی مهمه و من یادم رفت بگم فایل ffconf.h هست که از فایل ff.h انکلود شده
این فایل کلا برای تنظیم قابلیتهای فت ما هست که باید قبل از همه توضیح میدادم ولی شرمنده فراموش شد


حالا توی این فایل چی هست ؟
اینجا امکانات توابع فت دیفاین شده و شما میتونید چیزهایی که نمیخواین و از توابع کم کنید یا توابع مورد نیاز رو فعال کنید

define _FS_TINY
با یک کردن این دیفاین حجم توابع به میزان قابل توجه کم میشه البته یه توضیحاتی هم خودش داده

define _FS_READONLY
0 برای رید و رایت
1 برای فقط رید همون ریدونلی یا فقط خواندنی

define _FS_MINIMIZE
0 محدودیتی ایجاد نمی کنه
1 توابع f_stat و f_getfree و f_unlink و f_mkdir و f_chmod و f_truncate و f_rename رو خذف میکنه
2 علاوه بر توابع یک توابع f_opendir و f_readdir رو هم حذف میکنه
3 علاوه بر توابه 1 و 2 تابع f_lseek هم خذف میشه

define _USE_STRFUNC
0 توابع رشته ای رو غیر فعال میشه
1 توابع رشته ای رو فعال میکنه

define _USE_MKFS
0 تابع f_mkfs غیر فعال میشه
1 تابع f_mkfs فعال میشه

define _USE_FORWARD
0 تابع f_forward غیر فعال
1 تابع f_forward فعال میشه

define _USE_FASTSEEK
0 انتقال سریع غیر فعال میشه
1 انتقال سریع فعال میشه

define _CODE_PAGE
برای تعریف کدپیج استفاده میشه که برای اضافه کردن حروف زبان خاص هست که اگر یک باشه فقط کدهای اسکی هست و یا میتونید از لیستش زبانی رو که مد نظرتون هست انتخاب کنید و کد اونو وارد کنید

define _USE_LFN
برای اینکه بتونید اسم کامل فایل یا پوشه رو داشته باشید باید مقدار این دیفاین بین 1 تا 3 باشه و اگر 0 باشه غیر فهال هست
define _MAX_LFN
برای وارد کردن ماکزیمم کاراکتر اسم فایل یا پوشه ها هستش البته در صورتی که _USE_LFN فعال باشه

یه تعدادی هم هست که زیاد به کار نمیان و پر مصرفشون همسن ها بود که توضیح دادم
اگر مطلبی مفید بود سپــــاس واگر مفیدتر بود دادن اعتبار را فراموش نکنید dont
به پيغام خصوصي ها فقط در صورت واقعا خصوصي بودن پاسخ داده خواهد شد Confused

پاسخ
 سپاس شده توسط امیرحسین ، SAJAD-G ، jumper ، hajar1272 ، mosfet ، ATmega ، مهرداد ، A.H.A ، fhgb ، jahedi_mohammad ، kamran0080 ، moein masoumi ، respina_sina
#7
آقا مرسی . لطف کردید.At
جناب امیر حسین احتمالا" این همون پروژه من نیست که ضبط و پخش صدا روی حافظه SD هستش؟ اینو بدم استاد؟!!
پاسخ
 سپاس شده توسط kamran0080
#8
(20-3-1390، 01:40 عصر)cniran نوشته است: آقا مرسی . لطف کردید.At
جناب امیر حسین احتمالا" این همون پروژه من نیست که ضبط و پخش صدا روی حافظه SD هستش؟ اینو بدم استاد؟!!
سلام دوست من این پروژه امکان ضبط نداره ولی فرمت های mp3 , wav و vma , mid و BMP رو پخش میکنه
در ضمن در صورتی که نیاز باشه اماده و مونتاژ شده این برد رو من دارم و میفروشم .
اگر مطلبی مفید بود سپــــاس واگر مفیدتر بود دادن اعتبار را فراموش نکنید dont
به پيغام خصوصي ها فقط در صورت واقعا خصوصي بودن پاسخ داده خواهد شد Confused

پاسخ
 سپاس شده توسط kamran0080
#9
سلام
این هم چندتا عکس از این MP3 Player








اگر مطلبی مفید بود سپــــاس واگر مفیدتر بود دادن اعتبار را فراموش نکنید dont
به پيغام خصوصي ها فقط در صورت واقعا خصوصي بودن پاسخ داده خواهد شد Confused

پاسخ
 سپاس شده توسط امیرحسین ، M_Javad ، behnamdk ، jahedi_mohammad ، d_azad_b ، kamran0080
#10
سلام
من تازه كار با avr را شروع كردم.تا حدودي كار با زبان c را ياد گرفتم ولي همانطور كه مي دانيد اين زبان اصلا در وصايل تجاري استفاده نمي شود من هم تصميم دارم كه زبان هايي مثل اسمبلي و هگز را بخوانم به نظر شما اين كار درستيه يا بهتره برم روي همان c كار كنم.خيلي ممنون مي شوم اگر راهنماييم كنيد.Smile
پاسخ
 سپاس شده توسط polestar


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  wave player با اتمگا 16 sajjad85 22 7,369 6-8-1392، 11:29 صبح
آخرین ارسال: mohammadha
  درخواست ماژول mp3 player مرتضي 58 0 834 31-3-1392، 12:16 عصر
آخرین ارسال: مرتضي 58
  مشکل با LCD رنگی و فرکانس کاری میکرو Dr.Xylitol 15 3,874 29-3-1391، 10:08 عصر
آخرین ارسال: Dr.Xylitol
  درخواست فايل هگز mp3 player (فايل ضميمه شده است) aria2345 1 862 15-1-1391، 11:35 عصر
آخرین ارسال: polestar
  نمایش JPG روی LCD های رنگی Farzad 6 2,762 14-10-1390، 11:02 عصر
آخرین ارسال: electronicnarm2010
  دانلود پروژه های AVR : اسیلسکوپ دیجیتال - WAVE PLAYER - پازل - دفتر نقاشی AMANA 5 3,853 11-4-1390، 02:10 عصر
آخرین ارسال: polestar
  ساعت عقربه ای با نمایشگر LCD رنگی drafshin 1 1,649 7-3-1390، 07:29 عصر
آخرین ارسال: robocar

پرش به انجمن:


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