توليد الأصوات مع لغة Basic والمترجم Proton ومشروع سارينة بوليس :
الدالة FREQOUT :
الصيغة العامة :
كود:
Freqout Pin, Period, Freq1 {, Freq2}
الغرض :
توليد 2 نغمة "موجة جيبية" بترددين مختلفين أو بنفس التردد ، لفترة زمنية محددة .
العوامل :
Pin : هو طرف المنفذ والذى يحدد طرف الخرج المستخدم .
Period : قد يكون متغير أو ثابت أو تعبيير فى المدى (0 - 65535) والذى يحدد مقدار زمن توليد النغمة ( أو النغمات) .
Freq1 : قد يكون متغير أو ثابت أو تعبيير فى المدى (0 - 32767) والذى يحدد تردد النغمة الأولى .
Freq2 : قد يكون متغير أو ثابت أو تعبيير فى المدى (0 - 32767) والذى يحدد تردد النغمة الثانية .
عند تحديد هذا التردد ، يتم "مزج" الترددين معا ووالخروج من نفس طرف الخرج .
مثال : توليد نغمة بتردد 2500Hz لمدة ثانية واحدة على الطرف PORTA.0 :
كود:
' Generate a 2500Hz (2.5KHz) tone for 1 second (1000 ms) on bit 0 of PortA.
Freqout PORTA.0, 1000, 2500
وتشغيل 2 نغمة بتردد 2.5KHz وبتردد 3KHz لمدة ثانية واحدة :
كود:
' Play two tones at once for 1000ms. One at 2.5KHz, the other at 3KHz.
Freqout PORTA.0, 1000, 2500, 30000
ملاحظة :
الدالة Freqout تولد موجات جيبية باستخدام مبدأ تعديل عرض النبضة PWM . هذه الدالة سوف تعمل مع الكريستال 4MHz ، ومع ذلك ، يكون من الأفضل استخدامها مع كريستالات بترددات أعلى ، وتعمل بشكل أفضل عند 20MHz . الخرج الخام كنتيجة لهذه الدالة يتطلب الترشيح ، للتخلص من معظم ضوضاء التحويل.
الشكل أدناه يبين دائرة ترشيح الإشارة لتشغيل نغمات من خلال سماعة أو مكبر صوت .
تدريب تمهيدى :
فى هذا التريب سوف يتم توليد صوت من خلال سماعة صغيرة أو بزر .
الدائرة الكهربية :
البرنامج :
كود:
FREQOUT portb.0, 2000, 7200 ; Generate afrequencyof 7.2Khz
; for 2 secondson PORTB.0
END
مشروع سارينة البوليس :