จุฬาลงกรณ์มหาวิทยาลัย

คณะวิศวกรรมศาสตร์

ภาควิชาวิศวกรรมคอมพิวเตอร์

2110-362 MICRO INTERF LAB

ชื่อ.............................................

เลขประจำตัว................................

หมายเลขเครื่อง............................

วันที่...........................................


5. การสร้างเสียงเพลงด้วยวิธีการ Direct Synthesis

วัตถุประสงค์

  1. เพื่อให้นิสิตคุ้นเคยกับการใช้วงจร Interface ต่างๆ มากขึ้น
  2. เพื่อให้นิสิตเข้าใจหลักการของวงจรสร้างสัญญาณเสียงอย่างง่าย
  3. เพื่อให้นิสิตเข้าใจและสามารถออกแบบระบบ BUS เพื่ออ่าน/เขียนข้อมูลจากอุปกรณ์ต่างๆ ได้
  4. เพื่อให้นิสิตได้พัฒนาทักษะในการออกแบบและสังเคราะห์วงจรมากขึ้น

ทฤษฎีที่เกี่ยวข้อง

จากการศึกษาในวิชาฟิสิกส์นั้น เราสามารถสรุปได้ว่าเสียงเกิดจากการสั่นสะเทือนของวัตถุ เสียงดนตรีก็เช่นเดียวกัน โน๊ตดนตรีที่มีการแบ่งเป็นตัวโน๊ตต่างๆนั้น เกิดจากการสั่นสะเทือนที่ความถี่ต่างกัน เครื่องดนตรีต่างชนิดกันนั้นที่โน๊ตตัวเดียวกัน จะมีความถี่มูลฐานเดียวกัน ส่วนคุณภาพหรือความไพเราะของเสียงนั้น ขึ้นอยู่กับค่า Hamonic ของเครื่องดนตรีแต่ละชนิด

ในการสังเคราะห์เสียงดนตรีสามารถทำได้โดยการสร้างสัญญาณเพื่อให้ Speaker สั่นสะเทือนด้วยสัญญาณความถี่มูลฐานของโน๊ตดนตรีที่ต้องการ ซึ่งวิธีการที่ง่ายที่สุดคือการสร้างสัญญาณ Square Wave ออกมายัง Speaker

ตัวโน๊ต ความถี่(Hz)
C 261.63
D 293.67
E 329.63
F 349.23
G 392.00
A 440.00
B 493.89
C' 523.26

ในวงจรกำเนิดเสียงของบอร์ดทดสอบนั้น Speaker จะต่อผ่าน D/A (DAC0830) ที่Address ตำแหน่งที่ 05H (ให้นิสิตดูรายละเอียดการ Decode ตำแหน่งได้จากแผนผังวงจร) ดังนั้นหากต้องการให้ Speaker ส่งสัญญาณออกมา อาจทำได้โดยการเขียนค่า 0FFH ออกไปยังตำแหน่งดังกล่าว และเมื่อต้องการให้ Speaker หยุดส่งสัญญาณเสียง ให้เขียนค่า 00H ออกไปแทน

 

การทดลอง

  1. ให้นิสิตศึกษาโครงสร้างวงจรกำเนิดเสียง แล้วทำการออกแบบและสร้างวงจรสำหรับการสร้างสัญญาณเสียงโน๊ตต่างๆ ออกมายัง Speaker ของบอร์ดทดสอบ ทั้งนี้ให้ไล่สัญญาณเสียงจาก C D E F G A B C' A G F E D วนกลับไปมาตลอดเวลา โดยให้ค้างที่แต่ละตัวโน๊ตประมาณ 0.5-1 วินาที

  2. ให้นิสิตออกแบบและสร้างวงจรสำหรับอ่านค่าโน๊ตเพลงจาก KeyPad แล้วนำค่าที่ได้ไปเก็บใน RAM โดยกำหนดให้ 1,2,3,4,5,6,7 แทนโน๊ต C,D,E,F,G,A,B ตามลำดับ โดยเมื่อผู้ใช้กดปุ่ม # ให้เล่นเพลงตามลำดับโน๊ตที่บันทึกไว้ และหากผู้ใช้กดปุ่ม * ให้ทำการ Reset Counter เพื่อเริ่มการบันทึกโน๊ตเพลงใหม่ตั้งแต่ต้น

หมายเหตุ