خوش آمديد!
11:34 شنبه 1 ارديبهشت ماه ، 1403
تغییر آدرس سایت
اطلاعیه مهم آدرس سایت از HLachini.com به آدرس HLachini.elewiz.com تغییر پیدا کرده است.
حتما لینکهای صفحات خود را به آدرس جدید تغییر دهید.
همچنین سایت جدیدی نیز بزودی به آدرس EleWiz.com راه اندازی خواهد شد.

مترجم گوگل

Google Translate

فروشگاه

نرم افزار


نرم افزار LTG
نرم افزار تولید کننده سورس بسکام تابلوروان 16 در 64
تعداد:


GIF Code Wizard
تبديل انيميشن به كد تابلوروان
تعداد:


مدارات آماده


ماژول Wav Player
Mono/Stereo 8khz-48Khz
تعداد:


پروگرامر هوشمندUSB برای AVR
پروگرامر AVR با قابلیت درج تمامی میکروکنترولرها از پین یک زیف سوکت و تامین کلاک جهت پوشش تمامی حالات فیوزبیت CKSEL
تعداد: 50


ليست محصولات
SMS خبرنامه

SMS

جهت دريافت رايگان تازه هاي سايت شماره مويايل خود را به همراه نام و نام خانوادگي به شماره 99009123812060  ارسال كنيد.

عضویت در خبرنامه

ایمیل - Email



تازه های سایت
· موتور همو پلار در 10 ثانيه[ 5 نظر - 15312 مشاهده ]
· نصب برنامه در Slax[ 9 نظر - 11668 مشاهده ]
· ورود به محيط Slax[ 16 نظر - 12106 مشاهده ]
· خواندن فایلهای MMC و SD با فرمت FAT16 , FAT32[ 33 نظر - 25936 مشاهده ]
· رله کنترل فاز Three Phase Monitor[ 35 نظر - 30023 مشاهده ]

[ موارد بیشتر در بخش اخبار و تازه ها ]
کیت نمایشگر سحرآمیز

ميكروكنترل: ضبط صوت دیجیتال توسط میکرو AVR

دراین مقاله با موارد زیر اشنا میشوید :
  • پخش صدای ضبط شده در میکرو بدون نیاز به حافظه جانبی.
  • ضبط صدا توسط میکرو.
  • ارتباط با کارت های حافظه های MMC و SD جهت ذخیره و خواندن اطلاعات.
  • پخش صدا توسط PWM در میکرو.
  • و ...
Digital Sound Recorder
بنا به سفارش یکی از دوستان که مداری مشابه یکی از توضیحات شرکت اتمل در مورد Digital Sound Recorder که از آدرس زیر میتوانید مطالعه کنید به من شد.
www.atmel.com/atmel/acrobat/doc1456.pdf
من هم پس از مطالعه مطلب فوق با ایجاد اصلاحاتی در مدار آن را مجددا طراحی و ساختم که در ادامه با آن آشنا می شوید.


من در برنامه خودم اطلاعات صدای شروع ویندوز XP را که به اسم Windows XP Startup.wav در سیستم قرار دارد را توسط برنامه WinHex در فلاش رام میکرو قرار دادم. تا میکرو بدون نیاز به هیچگونه حافظه جانبی بتواند صدای فوق را پخش کند. البته طبق محاسبات من برای پخش هر یک ثانیه صدای مونو شما نیاز به حدود 7 کیلو بایت حافظه دارید که با توجه به اینکه من از میکرو ATmega32 با 32 کیلوبایت حافظه فلاش استفاده کردم میتوانستم تا 4 ثانیه صدا در آن ذخیره کنم. توجه داشته باشید که در اغلب برنامه ها ما درصد کمی از این حافظه را مورد استفاده قرار میدهیم پس در پروژه های خود میتوانید برای کاربر پسندتر شدن از این قابلیت بهره ببرید. مثلا میتوانید با استفاده از میکرو ATmega128 تا حدود 18 ثانیه صدا ذخیره کنید و بعنوان مثال تک تک اعداد 0 تا 9 و برخی ارقام و حروف را در آن قرار دهید و تا پس از آن هر شماره ای را که میخواهید برایتان بخواند!
خوب حال برای تبدیل فایل صوتی به فرمتی که بتوان در سورس برنامه از آن استفاده کرد به برنامه های زیر نیاز داریم :
  • ImTOO Video Converter Ultimate برای تبدیل فرمت های مختلف صدا و تصویر به هم.
  • WinHex برای ویرایش و مشاهده فایلها بصورت Hex.
  • Sound Recorder ویندوز که بهمراه ویندوز بر روی کامپیوتر نصب میشود.
حالا کمی درباره برنامه های بالا توضیح میدهم. برنامه را من برای تبدیل فیلمهایی که از اینترنت با فرمت mkv دانلود میکردم گرفتم.

ImTOO Video Converter Ultimate

فوق العاده برنامه سبک ولی کارآمدی هست که تا با اون کار نکنید متوجه منظور من نخواهید شد. از اون دسته برنامه هایی هست که واقعا من خوشم میاد ساده و کاربردی و سبک. هیچ فرمتی را نمیتونید پید ا کنید که ساپورت نکنه. شما هم اگه فایل صوتی با فرمتی غیر از wav دارید برای تبدیل و یا برش قسمتی از آن میتونید از این برنامه استفاده کنید. برای دانلود فایل با حجم 42.45 مگابایت از آدرس زیر استفاده کنید:
http://www.brothersoft.com/imtoo-video-converter-ultimate-250449.html
حالا که فایل wav شما آماده شد باید توسط برنامه Sound Recorder ویندوز فایل را باز کنید. باز کردن این برنامه بر روی Start کلیک کنید.بر رروی All Programs رفته ، بر روی Accessories بروید ، بر روی Entertainment رفته و Sound Recorder را اجرا کنید.

Sound Recorder

فایل مورد نظرتان را در باین برنامه باز کنید. و منوی File گزینه Save As را انتخاب کنید در پنجره باز شده بر روی دکمه Change کلیک کنید و در پنجره جدید از منوی کشویی Attributes گزینه اول (8.000kHz;8Bit;Mono) را انتخاب کنید و Ok کنید و فایلتان را ذخیره کنید.
حالا نوبت به تبدیل فایل به اطلاعات قابل استفاده در برنامه است. با توجه به اینکه من برنامه را به زبان سی نوشتم (البته توضیحات فوق را با کمی تغییر میتواند در مورد سایر زبانها همچون بیسیک و یا اسمبلی هم استفاده کرد) باید مراحل زیر را دنبال کنید.
برای این منظور برنامه WinHex را دانلود کنید:
http://winhex.software.informer.com/download
سپس بعد از اجرای برنامه فایل مورد نظر را در آن باز کنید.

WinHex


سپس بر روی کدهای نشان داده شده کلیک کنید و دکمه های 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 برای پخش آشنا میگردید. نمونه کاربردهای که نیاز یک یا تعدادی از این بلوک ها دارند عبارتند از لاگرهای دما ، دستگاه های پاسخگویی تلفن ، یا ضبط کنندهای دیجیتالی صدا.
حافظه MMC مورد استفاده میتواند از هر رنجی انتخاب شود. این حافظه ها با ولتاژ 3.3 ولت و با واسط SPI کار میکنند که برای دسترسی سریع به حافظه بهتر است که بصورت سکتورهای 512 بایتی به آن دسترسی داشته باشیم برای این منظور یک ارایه بعنوان بافر در برنامه جهت دسترسی به حافظه تعریف شده است.
همانطور که عنوان شد حافظه MMC جهت ارتباط از رابط سریال SPI برای دسترسی به اطلاعات استفاده میکند این واسط سخت افزار ساده تری نیاز دارد و باعث کاهش نویز و کاهش ابعاد و تعداد پین های فعال میگردد. نمونه کاربردهای این حافظه ذخیره سازی تصویر، اطلاعات و یا صوت است.
برای تامین ولتاژ 3.3 ولت مورد نیاز حافظه از یک رگولاتور خطی بنام LF33 استفاده شده است. حافظه در فرکانس 2MHz کار میکند و در مد صفر ارتباط بین میکروکنترولر و حافظه برقرار شده است.
در این مدار میکرو ATmega32 برای گرفتن نمونه های آنالوگ از میکروفن ، از مبدل آنالوگ به دیجیتال داخلی استفاده کرده و انتقال اطلاعات بین میکرو حافظه نیز با استفاده از رابط SPI میکرو انجام میشود. از PWM میکرو نیز برا ی پخش صدا استفاده شده است. کدهای اصلی برنامه خیلی کم هستند و براحتی میتوان در میکروهای کوچکتر نیز قرار داد.
قبل ار اینکه صدا را بتوان در حافظه ذخیره نمود باید آنرا به سیگنالهای دیجیتال تبدیل کرد. اینکار در طی چندین مرحله انجام میشود.

تصویر 1، نمونه سیگنال آنالوگ.

سیگنال آنالوگ

نخست، سیگنال آنالوگ(تصویر1) به نمونه های زمانی (تصویر 2) تبدیل میشود. زمان بین دو نمونه "پریود نمونه برداری" نامیده میشود. و متقابلا آن به "فرکانس نمونه برداری" وابسته است.مطابق با قضیه نمونه برداری ، فرکانس نمونه برداری باید دو برابر فرکانس سیگنال باشد.

یک سیگنال صدا شامل اطلاعات ماکزیمم زیر 3000Hz است. بنابراین یک فیلتر پایین گذر را میتوان بعنوان محدود کننده باند سیگنال استفاده نمود.

برای یک فیلتر پایین گذر ایده ال با فرکانس قطع 3000Hz فرکانس نمونه برداری باید 6000Hz باشد. عمل برداشتن مقادیر دیجیتال از روی نمونه های آنالوگ کوانتیزیشن نامیده میشود.سیگنال آنالوگ کوانتیزه شده بسیار نزدیک به سیگنال اصلی است.(تصویر 3). تعداد مقادیر دیجیتال را رزولوشن مینامند که مقادیر محدودی هستند. برای نمونه تا 256 مقدار برای یک سیگنال دیجیتال 8 بیتی یا 10 مقدار در این مثال. بنابراین در کوانتیزه کردن سیگنالهای آنالوگ همیشه بخشی از اطلاعات از بین میروند. این خطای کوانتیزه کردن رابطه عکس با رزولوشن سیگنال دیجیتال ،محدوده حداکثر و حداقل مقادیر ( 3 تا 8 در این مثال) دارد.مبدل آنالوگ به دیجیتال میکرو میتواند برای رنج دینامیک سیگنال توسط AGND و AREF برروی مینیمم و ماکزیمم مقادیر سیگنال تنظیم شود.

از سوی دیگر آمپلیفایر میکروفن را میتوان برروی حد دینامیک ADC تنظیم نمود.

هر دوی این روشها مقادر خطای کوانتیزه کردن را کاهش میدهد تصویر 4 مقادیر دیجیتال بدست آمده از سیگنال آنالوگ را نشان میدهد. اینها مقادیر خوانده شده از نتایج تبدیلات ADC هستند.

در این مدار مقادیر ماکزیمم و مینیمم با ارزش نیستند. و بخش بالای ماکزیمم و زیر مینیمم حاوی اطلاعاتی نمیباشند. و میتوان آنها را برای صرفه جویی در حافظه حذف نمود.

اینکار را میتوان با شیفت به پایین دادن تمام سیگنال و برش بالای max انجام داد.(تصویر 5).

تصویر 2، سیگنال زمان گسسته.

سیگنال زمان گسسته

تصویر 3، سیگنال کوانتیزه.

سیگنال کوانتیزه

تصویر 4، سیگنال دیجیتال.

سیگنال دیجیتال

تصویر 5، سیگنال دیجیتال با کاهش بیت.

سیگنال دیجیتال با کاهش بیت

در این مدار نتیجه سیگنالها 8 بیتی است. این سیگنال اکنون میتواند در حافظه ذخیره شود.

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

تصویر 6، دو از مثال از سیگنال PWM.

دو از مثال از سیگنال PWM

در تصویر 6 دو نمونه از سیگنال نشان داده شده است. مبدل PWM دوشیبه است در شیب اول تا زمانیکه مقدار شمارنده به عدد مورد نظر نرسیده خروجی صفر است پس از رسیدن شمارنده خروجی یک میشود. سپس در شیب نزولی تا زمانیکه مقدار شمارنده از عدد مورئ نظر کمتر نشده مقدار خروجی یک باقی می ماند. به این ترتیب پالسی با عرض متناسب با عدد مورد نظر تولید میشود در تصویر 7 خروجی PWM برای سیگنال مثال نشان داده شده است.

فرکانس سیگنال PWM باید دو برابر فرکانس سیگنال باشد. اما مقدار 4 برابر بزرگتر از سیگنال اصلی معمولا توصیه میشود. بسته به فیلتر خروجی میتوان بهترین گزینه را با افزایش کلاک یا کاهش رزولوشن سیگنال انتخاب نمود.

تصویر 7، سیگنال خروجی PWM فیلتر شده.

سیگنال خروجی PWM فیلتر شده

در این مدار فرکانس قطع فیلتر خروجی بر روی 4000Hz تنظیم شده است، که یک چهارم فرکانس PWM (15,686Hz) است.

سرعت کلاک سیستم و رزولوشن PWM مقدار فرکانس PWM را تعیین میکنند. با کلاک سیستم 8MHz برای رزولوشن 10 بیت 3922Hz است(8MHz/2x2^10=3922Hz) 7843Hz برای رزولوشن 9 بیت و 15,686Hz برای رزولوشن 8 بیت.

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

فیلتر خروجی فرکانس های بالای سیگنال حامل PWM را حذف میکند. نتیجه خروجی سیگنال برای سیگنال نمونه نشان داده شده ، شبیه تصویر 8 است.

تصویر 8، سیگنال خروجی PWM.

سیگنال خروجی PWM

مدار میکروفن و اسپیکر

آمپلی فایر میکروفن یک آمپلی فایر معکوس ساده است. گین مدار توسط مقاومت R1 و R9 تنظیم میشود.(گین = R1 / R9). R4 برای تامین تغذیه میکروفن و C1 برای مسدود کردن ورود مقادیر DC به آمپلی فایر استفاده شده. R2 ,R3 مقدار افست را تنظیم میکنند.R5 و C8 یک فیلتر پایین گذر ساده را تشکیل میدهند. بعلاوه R5 محافظت میکند آمپلی فایر را از هرگونه خطر در صورتیکه خروجی اتصال کوتاه شده باشد. مدار اسپیکر شامل 5 طبقه فیلتر پایین گذر چبیچو است و یک طبقه تقویت کننده.
فیلتر ها از دو طبقه دوتایی فیلتر اکتیو(R6 , R7 , R8 , C2 , C7 و R7 , R10 , R11 , R9 , C9 , C5) و یک طبقه فیلتر پسیو(R11 , C4) است.

مدار ضبط صوت دیجیتال

جهت مشاهده نقشه در ابعاد بزرگتر برروی آن کلیک کنید

برنامه میکرو

/*****************************************************
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;
mmc_sector_num++) { for(i=0;i<SectorSize;i++) { buf_mmc[i] = data[mmc_sector_num*SectorSize+i]; } mmc_write(mmc_sector_num, buf_mmc); } for(i=0;i<SectorSize;i++) { buf_mmc[i] = 0; } mmc_read(0, buf_mmc); for(i=0;i<SectorSize && buf_mmc[i] == data[i];i++); lcd_clear(); if(i==SectorSize) { lcd_putsf("MMC OK"); LED = OFF; } else { lcd_putsf("MMC Fail!"); } delay_ms(1000); menu(); } void init(void) { // Input/Output Ports initialization // Port A initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTA=0x00; DDRA=0x00; // Port B initialization // Func7=In Func6=Out Func5=In Func4=In Func3=In Func2=In Func1=In Func0=Out // State7=T State6=0 State5=T State4=T State3=T State2=T State1=T State0=0 PORTB=0x00; DDRB=0xB1; // Port C initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00; DDRC=0x00; // Port D initialization // Func7=In Func6=In Func5=In Func4=Out Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=0 State3=T State2=T State1=T State0=T PORTD=0x00; DDRD=0x10; LED = OFF; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=FFh // OC0 output: Disconnected TCCR0=0x00; TCNT0=0x00; OCR0=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 8000.000 kHz // Mode: Ph. correct PWM top=00FFh // OC1A output: Discon. // OC1B output: Non-Inv. // Noise Canceler: Off // Input Capture on Falling Edge // Timer 1 Overflow Interrupt: On // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x21; TCCR1B=0x01; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer 2 Stopped // Mode: Normal top=FFh // OC2 output: Disconnected ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; // External Interrupt(s) initialization // INT0: Off // INT1: Off // INT2: Off MCUCR=0x00; MCUCSR=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x04; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00; // ADC initialization // ADC Clock frequency: 1000.000 kHz // ADC Voltage Reference: AVCC pin // Only the 8 most significant bits of // the AD conversion result are used ADMUX=ADC_VREF_TYPE & 0xff; ADCSRA=0x83; // LCD module initialization lcd_init(16); // SPI initialization // SPI Type: Master // SPI Clock Rate: 2000.000 kHz // SPI Clock Phase: Cycle Half // SPI Clock Polarity: Low // SPI Data Order: MSB First SPCR=0x50; SPSR=0x00; mmc_init(); LED = OFF; // Global enable interrupts #asm("sei") } void main(void) { // Declare your local variables here init(); lcd_clear(); lcd_putsf("LOADING..."); lcd_gotoxy(0,1); lcd_putsf("PLY ERS"); play_sample(); if(KEY_PLAY) mic2spk(); if(KEY_ERASE) adc2lcd(); menu(); while (1) { // Place your code here if(KEY_PLAY) play(); if(KEY_RECORD) record(); if(KEY_ERASE) testmmc(); }; }

این برنامه با  کدویژن نوشته شده است. در ابتدای برنامه صدای استارت ویندوز که درون حافظه اصلی میکرو ذخیره شده پخش میشود. بدینوسیله شما از سالم بودن میکرو و مدار اسپیکر مطمئن میشوید. در حین پخش این صدا میتوانید وارد منوهای تست میکروفن ، تست مبدل آنالوگ به دیجیتال و یا تست حافظه وارد شوید. پس ازپایان پخش صدای استارت ویندوز، میتوانید یکی از منوهای ضبط و یا پخش و یا پاک کردن حافظه را انتخاب کنید.

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



کلمات کليدي : ضبط صوت دیجیتال توسط میکرو آمپلی فایر ATmega32 MMC ویندوز AVR
ارسال شده در مورخه : شنبه، 8 خرداد ماه ، 1389 توسط lachini  چاپ مطلب

مرتبط با موضوع :

 خواندن فایلهای MMC و SD با فرمت FAT16 , FAT32  [چهارشنبه، 29 دي ماه ، 1389]
 ولتمتر AC با امکان ارسال SMS  [شنبه، 18 دي ماه ، 1389]
 تابلو نمایش نرخ ارز با ATmega8  [جمعه، 17 دي ماه ، 1389]
 ساعت دیجیتال توسط ATmega8  [جمعه، 9 مهر ماه ، 1389]
 ساعت دیجیتال توسط 8051 و اسمبلی  [چهارشنبه، 3 شهريور ماه ، 1389]
 تایمر موزیکال توسط AVR  [يكشنبه، 25 اسفند ماه ، 1387]
 مدار دزدگیر با امکان شماره گیری  [چهارشنبه، 23 بهمن ماه ، 1387]
 منبع تغذيه ديجيتالي صفر تا سي ولت با Atmega8-PWM  [سه شنبه، 17 دي ماه ، 1387]
 منبع تغذيه ديجيتالي صفر تا سي ولت با Atmega8  [سه شنبه، 17 دي ماه ، 1387]
 شماره گير تلفن جادويي  [پنجشنبه، 25 مهر ماه ، 1387]

نام شما: [ کاربر جدید ]

عنوان:
 
نظر:


:) ;) |) :- :( :0 :# *) ^) +)) :} |(( @: (:) :? :**

کد امنيتي : qoy35faj
تايپ کد امنيتي : [ بازگشت ]

درخواست كمك (امتیاز : 0)
توسط ميهمان در مورخه : شنبه، 15 خرداد ماه ، 1389
سلام مهندس پيشاپيش از زحمات زياد شما نسبت به ايجاد اين وب سايت پر محتوي كمال تشكر و قدرداني را دارم. اين وب سايت با توجه به مطالب خوبي كه در اون قرار دادين خيلي مي تونه مفيد باشه خصوصا در كشور ما كه از اين دست سايت ها خيلي كمه، من مي خواستم درمورد نحوه ي ارتباط avr با gsm بدونم و كد اون رو اگه محبت كنيد برام ميل كنيد. مثلا اينكه چطور ميشه بوسيله ي avr به يك موبايل sms داد و دريافت كرد. lotfi.mcitp@gmail.com


[ ارسال جوابیه ]


ashkan (امتیاز : 0)
توسط ميهمان در مورخه : جمعه، 21 خرداد ماه ، 1389
سلام ممنون از مطالب مفید سایت


[ ارسال جوابیه ]


بسیار عالی (امتیاز : 0)
توسط ميهمان در مورخه : شنبه، 22 خرداد ماه ، 1389
سلام مهندس ، واقعا عالی و جذاب بود. خدا حفظتون کنه ، شما خیلی به گردن برو بچه های الکترونیک ایران حق دارید. بی صبرانه منتظر ادامه ی مطلب هستم. موفق باشید.


[ ارسال جوابیه ]


هادی (امتیاز : 0)
توسط ميهمان در مورخه : سه شنبه، 1 تير ماه ، 1389
مداری را می خواهم که با ورودی های مختلف ترکهای خاصی از صدای ظبط شده را برایم پخش کند . میتونید کمکم کنید hasanzadehhadi@yahoo.com


[ ارسال جوابیه ]


سعید (امتیاز : 1)
توسط saeiddiod در مورخه : جمعه، 11 تير ماه ، 1389
(مشخصات کاربر | ارسال پیغام شخصی)
سلام مهندس دستت درد نکنه.واقعا عالیه اگه لطف کنید طریقه اتصال مموری موبایل به AVR رو هم بذارید فوق العاده میشه بازم ممنون


[ ارسال جوابیه ]


تشکر (امتیاز : 0)
توسط ميهمان در مورخه : دوشنبه، 21 تير ماه ، 1389
با تشکر خدمت شما خیلی مطلب خوبی هست اگر ادامه آن را هم بذارید عالی میشه دست شما درد نکنه


[ ارسال جوابیه ]


ایول (امتیاز : 0)
توسط ميهمان در مورخه : چهارشنبه، 23 تير ماه ، 1389
یک سوال اساسی با اینکه کلی زحمت کشیدین ولی قسمت اسلی ماجرا رو نگفتین الان یه بچه دبستانی هم بلده کار های بالا رو حتی بهتر هم انجام بده (البته نه من) با تشکر که این همه زحمت کشیدین


[ ارسال جوابیه ]


عالیه!عالیه! (امتیاز : 0)
توسط ميهمان در مورخه : شنبه، 26 تير ماه ، 1389
خیلی ممنونم از طرح این موضوع بسیار جالب. با اشتیاق کامل منتظر ادامه پروژه هستم


[ ارسال جوابیه ]


proffesional passage (امتیاز : 0)
توسط ميهمان در مورخه : يكشنبه، 27 تير ماه ، 1389
this is intellegent technolopgy from electronic course m.r hossein lachini you succesfull


[ ارسال جوابیه ]


هزاردستان (امتیاز : 0)
توسط ميهمان در مورخه : شنبه، 9 مرداد ماه ، 1389
مهندس جان سلام آقا خیلی توپه میشه یه زحمت دیگه هم بکشی که مدارشم را توضیح بدبد آقا من فکرش نمی کردم تو ایران کسی باشه که اینقدر اطلاعات و تجربیات خودشا به راحتی به ملت یاد بده ممنون مهندس


[ ارسال جوابیه ]


یاور (امتیاز : 0)
توسط ميهمان در مورخه : شنبه، 9 مرداد ماه ، 1389
بسیار جالب است امیدوارم همیشه کوشاباشید


[ ارسال جوابیه ]


مهران (امتیاز : 0)
توسط ميهمان در مورخه : دوشنبه، 11 مرداد ماه ، 1389
فوق العادست لطفا ادامه بدین


[ ارسال جوابیه ]


[بدون موضوع] (امتیاز : 0)
توسط ميهمان در مورخه : سه شنبه، 16 آذر ماه ، 1389
سلام مهندس خسته نباشید دستتون درد نکنه ببخشید امکانش هست مدار میکروفن و اسپیکر را بیشتر توضیح بدید؟؟؟ مقاومت ها و خازن هایی که فرمودید در عکس به هم مربوط نمیشن. من نفهمیدم کدومها را توضیح دادید. متشکر.


[ ارسال جوابیه ]


moshkel (امتیاز : 0)
توسط ميهمان در مورخه : جمعه، 19 آذر ماه ، 1389
salam mohandes mikhastam bebinam chera barnamaro to codvision copy mikonam erore #include "mmc_lib.h" mide ba tashakor


[ ارسال جوابیه ]


reza (امتیاز : 0)
توسط ميهمان در مورخه : دوشنبه، 4 بهمن ماه ، 1389
سايت مهندس لاچيني | پروژه ها و آموزش الكترونيك و تابلوروان - ضبط صوت دیجیتال توسط میکرو AVR من می خواهم تبادل لینک [www.novintabligh.net]انجام دهم ضمنا برای ثبت آگهی رایگان [www.novintabligh.com] باید چه کاری انجام دهم سايت مهندس لاچيني | پروژه ها و آموزش الكترونيك و تابلوروان - ضبط صوت دیجیتال توسط میکرو AVR


[ ارسال جوابیه ]


درخواست کمک (امتیاز : 0)
توسط ميهمان در مورخه : يكشنبه، 24 بهمن ماه ، 1389
ضبط صوت عالی بود ولی اگر می شد برنامه با نرم افزار bascom نوشته شود بهتر بود من می خواهم در یک lcdرنگی عکس بگذارم و فارسی بنویسم اما نمی دانم از چه lcd استفاده کنم و چه جور به atmega وصل کنم.


[ ارسال جوابیه ]


سلام (امتیاز : 0)
توسط ميهمان در مورخه : جمعه، 23 ارديبهشت ماه ، 1390
سلام من میخوام یه مدار بسازم که بشه اطلاعات زیادی رو مثلا در حد اجناس یه فروشگاه توش ضبط کرد که با خواندن هر کدوم از اونا تو میکروفن فراخونی بشه لطفا کمکم کنید متشکرم


[ ارسال جوابیه ]


درخواست (امتیاز : 0)
توسط ميهمان در مورخه : جمعه، 21 مرداد ماه ، 1390
سلام مهندس خسته نباشی واقعا دمت گرم. خدا خیرت بده. مهندس من متاسفانه طراحی pcb بلد نیستم ، امکانش هست فایل pcb رو هم برای دانلود قرار بدید؟.. بسیار ممنون و سپاسگذارم. mt.faraji@gmail.com


[ ارسال جوابیه ]


مشکل برنامه (امتیاز : 0)
توسط ميهمان در مورخه : سه شنبه، 29 شهريور ماه ، 1390
سلام دو قسمت از برنامه ارور میدهد که مربوط به دو خط از برنامه که کلمه DURATION استفاده شده است. لطفا مرا راهنمایی کنید. با تشکر از زحمات بی شائبه شما و سایت فوق العاده تان.


[ ارسال جوابیه ]

  • [بدون موضوع] توسط ميهمان در مورخه : دوشنبه، 5 دي ماه ، 1390
  • [بدون موضوع] توسط ميهمان در مورخه : چهارشنبه، 6 ارديبهشت ماه ، 1391

مدار چندتا مشکل داره (امتیاز : 1)
توسط amir00 در مورخه : جمعه، 4 آذر ماه ، 1390
(مشخصات کاربر | ارسال پیغام شخصی)
سلام آقای مهندس، دستتون درد نکنه بابت پروژه اما چندتا مشکل هست یکیش را که در تالار نوشتم : http://www.hlachini.com/ftopicp-3378.html#3378 یکی هم اینکه فایل هدر "Windows XP Startup.c" موجود نیست. میشه در مورد مشکلی که در تالار بیان کردم توضیحی بفرمایید؟


[ ارسال جوابیه ]


راهنمایی برای پروژه (امتیاز : 0)
توسط ميهمان در مورخه : سه شنبه، 23 خرداد ماه ، 1391
سلام من دانشجوی ترم چهار برقم برای پروژه مدار منطقیم که ساخت ولتمتر هست در مورد مبدل آنالوگ به دیجیتال به یک سری مقاله احتیاج داشتم مقاله شما رو خوندم دراین پروژه ساخت ولتمتر حتما باید از روش شیب دوگانه استفاده کنیم Dual Slope اگه تو این ضمینه که روش شیب دوگانه چیه و به چه کتاب هایی باید مراجعه کنم کمکم کنید ممنون میشم


[ ارسال جوابیه ]


ضبط صوت دیجیتال (امتیاز : 0)
توسط ميهمان در مورخه : چهارشنبه، 16 فروردين ماه ، 1391
سلام مهندس ضمن تشکر از زحمات شما می تونم فایل شبیه سازی مدار ضبط صوت را داشته باشم apple_m59@yahoo.com


[ ارسال جوابیه ]


اذان گو (امتیاز : 0)
توسط ميهمان در مورخه : جمعه، 27 بهمن ماه ، 1391
باسلام میخواستم ازتون خواهش کنم که یک برنامه اذان گو با میکرویatmga8طراحی کنید واونو توی سایت قرار دهید که دوستان هم بتوانند برای پروژه پایان ترم استفاده کنیم.


[ ارسال جوابیه ]


دمت گرم (امتیاز : 0)
توسط ميهمان در مورخه : دوشنبه، 5 فروردين ماه ، 1392
سلام میشه با بیسکام هم بذارید


[ ارسال جوابیه ]


درخاست کمک (امتیاز : 1)
توسط amirt در مورخه : شنبه، 31 فروردين ماه ، 1392
(مشخصات کاربر | ارسال پیغام شخصی)
سلام مهندس من در مورد wave player که شما درست کردین یه سوال داشتم.خواهش می کنم جواب بدین.من هر چی که زیر خود اون صفحه ارسال پیام میزدم یه صفحه آبی میومد که مانع ارسال درخواست می شد. نمی دونم چرا من فایل شما رو کامپایل کردم حتی mmc_lib.h را هم پیدا کردم و موقع کامپایل شدن هیچ مشکلی نداشت . اما وقتی کامپایل به همراه ساخت کدهای پروژه رو می زدم 5 تا وارنینگ + یک error با این مضمون میده که مانع ساخت فایل hex میشه. linker error:the program has no 'main ' function در واقع همه warning , linker error ها مربوط به فایل کتابخانه mmc_lib.h میشه ممکنه راهنماییم کنید البته اگه کتابخانه درستش رو دارین واسم بفرستین ایمیلم: amirt.366@gmail.com بی صبرانه منتظر جوابتون هستم.


[ ارسال جوابیه ]


ادامه درخواست کمک amirt (امتیاز : 1)
توسط amirt در مورخه : شنبه، 31 فروردين ماه ، 1392
(مشخصات کاربر | ارسال پیغام شخصی)
اگه میشه یه ایمیلی بدین که من واستون خود فایل mmc_lib.h رو بفرستم چو ن اینجا نمی شه کپیش کرد همش اون صفحه آبی میاد... ممنون میشم اگه جواب بدین


[ ارسال جوابیه ]


کمک (امتیاز : 0)
توسط ميهمان در مورخه : چهارشنبه، 22 خرداد ماه ، 1392
مسخره کردی کو کتابخونه ی mmc


[ ارسال جوابیه ]


komakkkkk (امتیاز : 0)
توسط ميهمان در مورخه : يكشنبه، 30 تير ماه ، 1392
salam mishe file pcb va baghie chiz haro be man bedin? man daram roo ye porozhe kar mikonam fagghat mikham dade haye 8 biti ro play konam hamin mishe be man komak konid? rezanajimiy@yahoo.com


[ ارسال جوابیه ]


مشکل با فایل صوتی بزرگ (امتیاز : 0)
توسط ميهمان در مورخه : جمعه، 2 اسفند ماه ، 1392
با سلام و تشکر از مطلب جالبتون. من طبق فرمایشات شما پروژه رو ساختم خوبم کار میکنه، اما اگه مقدار فایل صوتی بیشتر از 20درصد کل حافظه فلش باشه بدون اینکه اشکالی نشون بده کامپایل میشه ولی چه توی شبیه ساز و چه توی مدار واقعی اصلا میکرو روشن هم نمیشه. میخواستم اگه ممکنه راهنماییم کنید. متشکرم.


[ ارسال جوابیه ]


تشکر (امتیاز : 0)
توسط ميهمان در مورخه : جمعه، 26 ارديبهشت ماه ، 1393
آقای مهندس ممنون از مطلب مفیدتون


[ ارسال جوابیه ]


درخواست راهنمايي (امتیاز : 0)
توسط ميهمان در مورخه : جمعه، 26 ارديبهشت ماه ، 1393
سلام امكانش هست به زبان بسكام هم بنويسيد


[ ارسال جوابیه ]


خواندن فایلهای MMC و SD با فرمت FAT16 , FAT32 (امتیاز : 0)
توسط ميهمان در مورخه : سه شنبه، 10 تير ماه ، 1393
با سلام خسته نباشيد من اين برنامه رو خواستم استفاده كنم ولي فايل hex رو ندارم اگه ميشه به ايميلم فايل hex رو بفرستيد ممنون ميشم


[ ارسال جوابیه ]


درخاست راهنمایی. (امتیاز : 0)
توسط ميهمان در مورخه : شنبه، 24 بهمن ماه ، 1394
با سلام و خسته نباشید خدمت مهندس لاچینی. بنده با یک مشکل مواجه شدم که واقعا عجیب بنظر میرسه. من یرنامه waw player دارم که وقتی از sd کرت استفاده میکنم جواب میده.ولی وقتی از mmc وخشاب اون که درواقع باید مثل همون sd کارت باشه استفاده میکنم جواب نمیده؟ اینو هم عرض بکنم که کلاس هردو مموری 10 هستش. اگه امکان داره راهنماییم کنین. خیلی ممنون از زحمت هاتون.


[ ارسال جوابیه ]


شماتیک (امتیاز : 0)
توسط ميهمان در مورخه : يكشنبه، 25 بهمن ماه ، 1394
با تشکر از شما نقشه شماتیکو باز نمیکنه میشه بفرستین برام h.fazelkarimi@gmail.com


[ ارسال جوابیه ]


shematic (امتیاز : 0)
توسط ميهمان در مورخه : شنبه، 5 تير ماه ، 1395
سلام و خسته نباشید ... مطالب خیلی مفیدی بودن فقط شماتیک رو بازنمیکنه اگه امکانش هست واسم بفرستینش sh.parasto94@gmail.com ممنونم


[ ارسال جوابیه ]


رکوردر صدا (امتیاز : 0)
توسط ميهمان در مورخه : چهارشنبه، 27 مرداد ماه ، 1395
سلام قیمت این برد با شماتیک و برنامه رو بگید eiragmostaghim@gmail.com 09122048469


[ ارسال جوابیه ]


مهدی (امتیاز : 0)
توسط ميهمان در مورخه : يكشنبه، 14 آبان ماه ، 1396
مهندس جان شما خودتو زیاد از حد بالا میدونی یا مارو سطح پایین که به هیچکدوم پاسخ نمیدین؟قضیه چیه؟ منم سوال دارم نمدونم بنا هه جوابم بدی یا نه ولی میپرسم به امید اینکه جواب بدی... من یه مداری طراحی کردم یه کار خاصی انجام میده و از مگا 64 استفاده کردم ..میخوام یه فایل صوتی 3ثانیه ای با کیفیت علی پخش کنم...من متأسفانه از توضیحات شما چیزی متوجه نشدم چون با بیسک کد میزنم...اگه زحمتی نیست باید تل جواب بدید..یا اگه گزرم افتاد دوباره میام همنجان@ROZ0030


[ ارسال جوابیه ]

امتیاز دهی به مطلب
امتیاز متوسط : 3.83
تعداد آراء: 96


لطفا رای مورد نظرتان را در مورد این مطلب ارائه نمائید :

عالی
خیلی خوب
خوب
متوسط
بد

موضوعات مرتبط

مدارات ميكروكنترولر

پروگرامر و تستر آِی سی سانا با قابلیت تشخیص اتوماتیک قطعه و درج تمامی قطعات از پین یک زیف و تامین کلاک قابل استفاده در بسکام و کدویژن