Google Translate

جهت دريافت رايگان تازه هاي سايت شماره مويايل خود را به همراه نام و نام خانوادگي به شماره 09123812060 ارسال كنيد.
| · مثال تابلو 16 در 128 با مبدل آنلاین | [ 1 نظر - 187 مشاهده ] |
| · ساعت دیجیتال توسط 8051 و اسمبلی | [ 0 نظر - 246 مشاهده ] |
| · تابلو روان و اندازه گیری دما با SMT160 | [ 0 نظر - 328 مشاهده ] |
| · تایمر راه پله دیجیتالی Digitally Stair Timer | [ 1 نظر - 557 مشاهده ] |
| · انیمیشن در تابلوروان توسط 74HC595 | [ 3 نظر - 1116 مشاهده ] |
ميكروكنترل: ضبط صوت دیجیتال توسط میکرو AVR
دراین مقاله با موارد زیر اشنا میشوید :
![]() بنا به سفارش یکی از دوستان که مداری مشابه یکی از توضیحات شرکت اتمل در مورد Digital Sound Recorder که از آدرس زیر میتوانید مطالعه کنید به من شد. www.atmel.com/atmel/acrobat/doc1456.pdf
من هم پس از مطالعه مطلب فوق با ایجاد اصلاحاتی در مدار آن را مجددا طراحی و ساختم که در ادامه با آن آشنا می شوید.من در برنامه خودم اطلاعات صدای شروع ویندوز XP را
که به اسم Windows XP Startup.wav در سیستم قرار دارد را توسط برنامه WinHex در
فلاش رام میکرو قرار دادم. تا میکرو بدون نیاز به هیچگونه حافظه جانبی بتواند
صدای فوق را پخش کند. البته طبق محاسبات من برای پخش هر یک ثانیه صدای مونو شما
نیاز به حدود 7 کیلو بایت حافظه دارید که با توجه به اینکه من از میکرو
ATmega32 با 32 کیلوبایت حافظه فلاش استفاده کردم میتوانستم تا 4 ثانیه صدا در
آن ذخیره کنم. توجه داشته باشید که در اغلب برنامه ها ما درصد کمی از این حافظه
را مورد استفاده قرار میدهیم پس در پروژه های خود میتوانید برای کاربر پسندتر
شدن از این قابلیت بهره ببرید. مثلا میتوانید با استفاده از میکرو ATmega128 تا
حدود 18 ثانیه صدا ذخیره کنید و بعنوان مثال تک تک اعداد 0 تا 9 و برخی ارقام و
حروف را در آن قرار دهید و تا پس از آن هر شماره ای را که میخواهید برایتان
بخواند!
خوب حال برای تبدیل فایل صوتی به فرمتی که بتوان در سورس برنامه از آن استفاده کرد به برنامه های زیر نیاز داریم :
http://www.brothersoft.com/imtoo-video-converter-ultimate-250449.html
حالا که فایل wav شما آماده شد باید توسط برنامه Sound Recorder ویندوز فایل را
باز کنید. باز کردن این برنامه بر روی Start کلیک کنید.بر
رروی All Programs رفته ، بر روی Accessories
بروید ، بر روی Entertainment رفته و Sound Recorder
را اجرا کنید.![]() فایل مورد نظرتان را در باین برنامه باز کنید. و منوی File گزینه Save As را انتخاب کنید در پنجره باز شده بر روی دکمه Change کلیک کنید و در پنجره جدید از منوی کشویی Attributes گزینه اول (8.000kHz;8Bit;Mono) را انتخاب کنید و Ok کنید و فایلتان را ذخیره کنید. حالا نوبت به تبدیل فایل به اطلاعات قابل استفاده در برنامه است. با توجه به اینکه من برنامه را به زبان سی نوشتم (البته توضیحات فوق را با کمی تغییر میتواند در مورد سایر زبانها همچون بیسیک و یا اسمبلی هم استفاده کرد) باید مراحل زیر را دنبال کنید. برای این منظور برنامه WinHex را دانلود کنید:
http://winhex.software.informer.com/download
سپس بعد از اجرای برنامه فایل مورد نظر را در آن باز
کنید.
سپس بر روی کدهای نشان داده شده کلیک کنید و دکمه های Ctrl+A را بزنید تا تماما انتخاب شوند. حال از منوی Edit گزینه Copy Block و از منوی باز شده گزینه C Source را انتخاب کنید. در این مرحله در برنامه خود Paste کنید. خواهید دید کدی مشابه زیر تولید شده:
unsigned char data[104]={ 0x3E,0x3E,0x3E,0x27,0x44,0x75,0x70,0x6C,0x69,0x63,0x61,0x74, 0x72,0x65,0x63,0x74,0x6F,0x72,0x79,0x20,0x27,0x25,0x73,0x27, 0x6F,0x72,0x65,0x64,0x2E,0x27,0x29,0x3B,0x0D,0x0A,0x44,0x75, 0x61,0x74,0x65,0x20,0x64,0x69,0x72,0x65,0x63,0x74,0x6F,0x72, 0x3A,0x5C,0x50,0x72,0x6F,0x67,0x72,0x61,0x6D,0x20,0x46,0x69, 0x44,0x65,0x73,0x69,0x67,0x6E,0x20,0x45,0x78,0x70,0x6C,0x6F, 0x39,0x39,0x20,0x53,0x45,0x5C,0x53,0x79,0x73,0x74,0x65,0x6D, 0x67,0x6E,0x6F,0x72,0x65,0x64,0x2E,0x0D,0x0A,0x3E,0x3E,0x3E, 0x6C,0x69,0x63,0x61,0x74,0x65,0x20,0x64,0x69,0x72,0x65,0x63 }; این کدها بصورت آرایه میباشند که شامل اطلاعات صدا هستند. برای اینکه این کدها در بخش حافظه flash ذخیره شوند باید ابتدای تعریف آرایه کلمه const را اضافه کنید. این کدها بصورت آرایه میباشند که شامل اطلاعات صدا هستند. برای اینکه این کدها در بخش حافظه flash ذخیره شوند باید ابتدای تعریف آرایه کلمه const را اضافه کنید. در این بخش جرئیات استفاده از مبدل آنالوگ به دیجیتال جهت ضبط صدا ، استفاده از باس SPI جهت ارتباط با حافظه MMC و مدالسیون پهنای باند PWM برای پخش آشنا میگردید. نمونه کاربردهای که نیاز یک یا تعدادی از این بلوک ها دارند عبارتند از لاگرهای دما ، دستگاه های پاسخگویی تلفن ، یا ضبط کنندهای دیجیتالی صدا. تصویر 1، نمونه سیگنال آنالوگ.
نخست، سیگنال آنالوگ(تصویر1) به نمونه های زمانی (تصویر 2) تبدیل میشود. زمان بین دو نمونه "پریود نمونه برداری" نامیده میشود. و متقابلا آن به "فرکانس نمونه برداری" وابسته است.مطابق با قضیه نمونه برداری ، فرکانس نمونه برداری باید دو برابر فرکانس سیگنال باشد. تصویر 2، سیگنال زمان گسسته.
تصویر 3، سیگنال کوانتیزه.
تصویر 4، سیگنال دیجیتال.
تصویر 5، سیگنال دیجیتال با کاهش بیت.
در این مدار نتیجه سیگنالها 8 بیتی است. این سیگنال اکنون میتواند در حافظه ذخیره شود. تصویر 6، دو از مثال از سیگنال PWM.
در تصویر 6 دو نمونه از سیگنال نشان داده شده است. مبدل PWM دوشیبه است در شیب اول تا زمانیکه مقدار شمارنده به عدد مورد نظر نرسیده خروجی صفر است پس از رسیدن شمارنده خروجی یک میشود. سپس در شیب نزولی تا زمانیکه مقدار شمارنده از عدد مورئ نظر کمتر نشده مقدار خروجی یک باقی می ماند. به این ترتیب پالسی با عرض متناسب با عدد مورد نظر تولید میشود در تصویر 7 خروجی PWM برای سیگنال مثال نشان داده شده است. تصویر 7، سیگنال خروجی PWM فیلتر شده.
در این مدار فرکانس قطع فیلتر خروجی بر روی 4000Hz تنظیم شده است، که یک چهارم فرکانس PWM (15,686Hz) است. تصویر 8، سیگنال خروجی PWM.
مدار میکروفن و اسپیکر آمپلی فایر میکروفن یک آمپلی فایر معکوس ساده است.
گین مدار توسط مقاومت R1 و R9 تنظیم میشود.(گین = R1 / R9). R4 برای تامین تغذیه
میکروفن و C1 برای مسدود کردن ورود مقادیر DC به آمپلی فایر استفاده شده. R2 ,R3
مقدار افست را تنظیم میکنند.R5 و C8 یک فیلتر پایین گذر ساده را تشکیل میدهند.
بعلاوه R5 محافظت میکند آمپلی فایر را از هرگونه خطر در صورتیکه خروجی اتصال کوتاه
شده باشد. مدار اسپیکر شامل 5 طبقه فیلتر پایین گذر چبیچو است و یک طبقه تقویت
کننده. جهت مشاهده نقشه در ابعاد بزرگتر برروی آن کلیک کنید برنامه میکرو
/***************************************************** This program was produced by the CodeWizardAVR V1.25.9 Professional Automatic Program Generator © Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Version : Date : 2010/05/21 Author : Hossein Lachini Company : HLachini Comments: Chip type : ATmega32 Program type : Application Clock frequency : 8.000000 MHz Memory model : Small External SRAM size : 0 Data Stack size : 512 *****************************************************/ #include <mega32.h> #include <stdlib.h> #include <delay.h> #include <spi.h> #include "mmc_lib.h" #include "Windows XP Startup.c" #define KEY_PLAY PIND.1 #define KEY_RECORD PIND.2 #define KEY_ERASE PIND.3 #define LED PORTB.0 #define ON 1 #define OFF 0 #define SectorSize 512 #define MMC_CS PORTB.4 #define RECORD_TIME 30 // Alphanumeric LCD Module functions #asm .equ __lcd_port=0x15 ;PORTC #endasm #include <lcd.h> #define ADC_VREF_TYPE 0x60 typedef unsigned char BYTE; typedef unsigned int WORD; BYTE buf_mmc[SectorSize]; // Read the 8 most significant bits // of the AD conversion result unsigned char read_adc(unsigned char adc_input) { ADMUX=adc_input | (ADC_VREF_TYPE & 0xff); // Delay needed for the stabilization of the ADC input voltage delay_us(10); // Start the AD conversion ADCSRA|=0x40; // Wait for the AD conversion to complete while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; return ADCH; } // Declare your global variables here unsigned char t1ovf; // Timer 1 overflow interrupt service routine interrupt [TIM1_OVF] void timer1_ovf_isr(void) { // Place your code here if(t1ovf) t1ovf--; } void play_sample(void) { WORD idx; for(idx=0;idx<DURATION;idx++) { OCR1B = data[idx]; t1ovf=2; while(t1ovf); } OCR1B = 0; } void menu(void) { lcd_clear(); lcd_putsf("PLY REC ERS"); } void record(void) { WORD i,mmc_sector_num; lcd_clear(); lcd_putsf("Record"); lcd_gotoxy(0,1); LED = ON; for(mmc_sector_num=0;mmc_sector_num<RECORD_TIME*14;mmc_sector_num++) { for(i=0;i<SectorSize;i++) { buf_mmc[i] = read_adc(0); t1ovf=2; while(t1ovf); } mmc_write(mmc_sector_num, buf_mmc); if(mmc_sector_num%(RECORD_TIME*14/10)==0) lcd_putsf("#"); } LED = OFF; menu(); } void play(void) { WORD idx,mmc_sector_num; lcd_clear(); lcd_putsf("Play"); lcd_gotoxy(0,1); LED = ON; for(mmc_sector_num=0;mmc_sector_num<RECORD_TIME*14;mmc_sector_num++) { mmc_read(mmc_sector_num, buf_mmc); for(idx=0;idx<SectorSize;idx++) { OCR1B = buf_mmc[idx]; t1ovf=2; while(t1ovf); } if(mmc_sector_num%(RECORD_TIME*14/10)==0) lcd_putsf("#"); } LED = OFF; menu(); } void mic2spk(void) { lcd_clear(); lcd_putsf("Mic -> Spk"); lcd_gotoxy(0,1); lcd_putsf(" REC => EXIT"); while(~KEY_ERASE) { OCR1B = 1 * read_adc(0); t1ovf=2; while(t1ovf); } menu(); } void adc2lcd(void) { BYTE ad; char str[8]; static unsigned char ad_old; lcd_clear(); lcd_putsf("ADC -> LCD"); lcd_gotoxy(0,1); lcd_putsf(" REC => EXIT"); delay_ms(3000); while(~KEY_RECORD) { ad = read_adc(0); if(ad != ad_old) { lcd_clear(); lcd_putsf("ADC="); itoa(ad, str); lcd_gotoxy(5,0); lcd_puts(str); lcd_gotoxy(0,1); ad_old = ad; ad/=16; for(;ad;ad--) lcd_putsf("#"); delay_ms(100); } } menu(); } void testmmc(void) { WORD i,mmc_sector_num; lcd_clear(); lcd_putsf("Erase"); LED = ON; for(mmc_sector_num=0;mmc_sector_num<DURATION/SectorSize; این برنامه با کدویژن نوشته شده است. در ابتدای برنامه صدای استارت ویندوز که درون حافظه اصلی میکرو ذخیره شده پخش میشود. بدینوسیله شما از سالم بودن میکرو و مدار اسپیکر مطمئن میشوید. در حین پخش این صدا میتوانید وارد منوهای تست میکروفن ، تست مبدل آنالوگ به دیجیتال و یا تست حافظه وارد شوید. پس ازپایان پخش صدای استارت ویندوز، میتوانید یکی از منوهای ضبط و یا پخش و یا پاک کردن حافظه را انتخاب کنید. در صورتیکه مایل باشید
میتوانید میکرو پروگرم شده و یا مدار کامل برروی PCB به
همراه توضیحات و یا فقط نقشه های PCB و برنامه
میکرو و سایر اطلاعات لازم را جهت ساخت و ارائه در دانشگاه و
یا سایر کاربردهای خود با سفارش به ما دریافت کنید کلمات کليدي : ضبط صوت دیجیتال توسط میکرو آمپلی فایر ATmega32 MMC ویندوز AVR ارسال شده در مورخه : شنبه، 8 خرداد ماه ، 1389 توسط lachini
مرتبط با موضوع : ساعت دیجیتال توسط 8051 و اسمبلی [چهارشنبه، 3 شهريور ماه ، 1389] تایمر موزیکال توسط AVR [يكشنبه، 25 اسفند ماه ، 1387] مدار دزدگیر با امکان شماره گیری [چهارشنبه، 23 بهمن ماه ، 1387] منبع تغذيه ديجيتالي صفر تا سي ولت با Atmega8-PWM [سه شنبه، 17 دي ماه ، 1387] منبع تغذيه ديجيتالي صفر تا سي ولت با Atmega8 [سه شنبه، 17 دي ماه ، 1387] شماره گير تلفن جادويي [پنجشنبه، 25 مهر ماه ، 1387]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ] |
امتیاز دهی به مطلب
تعداد آراء: 23 ![]() انتخاب ها
|