|
Tài trợ cho PIC Vietnam |
Cảm biến Camera, siêu âm, hồng ngoại, gyro, la bàn... |
|
Ðiều Chỉnh | Xếp Bài |
20-09-2009, 01:32 PM | #1 |
Đệ tử 2 túi
Tham gia ngày: Jan 2009
Bài gửi: 34
: |
Dùng PIC6F877A phát 1 vài bản nhạc.
Chào mọi nguời!
Mình đang làm về 1 vấn đề như sau: Mình muốn dùng PIC 16F877A để phát 1 vài bản nhạc không lời.Romantic... chẳng hạn.Mình cũng nghĩ là phải dùng CCP để điều chế xung PWM.Nhưng mình chưa có hướng làm cụ thể và còn 1 số chỗ chưa hiểu.Cụ thể như phát các nốt nhạc khác nhau là có tần số khác nhau.Nhưng nếu chỉ thay đổi độ rộng xung thì tần số phát là ko đổi.Ai đã từng làm về vấn đề này cho mình hỏi thêm là mình có thể luôn để độ rộng xung là 1/2 chu kì xung mà chỉ thay đổi tần số phát dc ko vậy?Mong nhận được các cao kiến từ mọi người! |
20-09-2009, 10:19 PM | #2 | |
Nhập môn đệ tử
Tham gia ngày: Nov 2008
Bài gửi: 7
: |
Trích:
|
|
21-09-2009, 12:00 AM | #3 |
Đệ tử 2 túi
Tham gia ngày: Jan 2009
Bài gửi: 34
: |
uh!Cam on ban nhieu ha!
|
21-09-2009, 04:15 PM | #4 |
Nhập môn đệ tử
Tham gia ngày: Nov 2008
Bài gửi: 7
: |
mình đã làm rồi, cả mạch thật nữa, nếu cần mình có thể share code cho bạn
#define c40 132 //dinh nghia cho tg #define c41 62 //dinh nghia cho ck #define d40 148 //may not nay moi chi viet duoc bai happy birtday #define d41 55 //con nhung not viet bai khac se cap nhat sau #define e40 174 //boi tac gia thuoc loai mu am nhac #define e41 46 //nen khong doc duoc not nhac---thank #define f40 166 #define f41 49 #define g40 196 #define g41 41 #define a40 220 #define a41 37 #define b4b0 232 #define b4b1 35 #define b40 247 #define b41 33 void not(int16 tg,int16 ck) //ck bien dat chu ky= (1/f)/30us/2 { //tg=0.25xfx2 int16 y;y=0; //not nhac chi duoc phat trong 250ms while(y!=tg) //muon keo dai thoi gian phat tang bien tg { while(count!=ck){} //tg phat con phu thuoc vao nhip dieu cua bai nhac loa1=!loa1;count=0;++y; //nen phai dieu chinh tg cho hop ly } //phai dat tg va ck 16bit de mo rong thoi gian //va so luong tan so am co the phat duoc loa1=0;delay_ms(5); //dat khoang lang 5ms } void nhac() { setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2);//****BAT time0 DO CHIA TAN 2 set_timer0(237); LCD_putcmd(clear_scr);//xoa man hinh printf(LCD_putchar," HAPPY BIRTHDAY "); LCD_putcmd(0xC0); //xuong hang2 printf(LCD_putchar," MY DARLING"); delay_ms(1000); LCD_putcmd(clear_scr); printf(LCD_putchar," HAP"); not(c40,c41); printf(LCD_putchar,"PY "); not(c40,c41); printf(LCD_putchar,"BIRTH"); not(d40*2,d41); printf(LCD_putchar,"DAY"); not(c40*2,c41); LCD_putcmd(0xC0); printf(LCD_putchar," TO "); not(f40*2,f41); printf(LCD_putchar,"YOU"); not(e40*4,e41); LCD_putcmd(clear_scr); printf(LCD_putchar," HAP"); not(c40,c41); printf(LCD_putchar,"PY "); not(c40,c41); printf(LCD_putchar,"BIRTH"); not(d40*2,d41); printf(LCD_putchar,"DAY"); not(c40*2,c41); LCD_putcmd(0xC0); printf(LCD_putchar," TO "); not(g40*2,g41); printf(LCD_putchar,"YOU"); not(f40*4,f41); LCD_putcmd(clear_scr); printf(LCD_putchar," HAP"); not(c40,c41); printf(LCD_putchar,"PY "); not(c40,c41); printf(LCD_putchar,"BIRTH"); not(c40*2,c41);; printf(LCD_putchar,"DAY"); not(a40*2,a41); LCD_putcmd(0xC0); printf(LCD_putchar," DEAR "); not(f40*2,f41); printf(LCD_putchar,"SO "); not(e40*2,e41); printf(LCD_putchar,"SO "); not(d40*2,d41); LCD_putcmd(clear_scr); printf(LCD_putchar," HAP"); not(b4b0,b4b1); printf(LCD_putchar,"PY "); not(b4b0,b4b1); printf(LCD_putchar,"BIRTH"); not(a40*2,a41); printf(LCD_putchar,"DAY"); not(f40*2,f41); LCD_putcmd(0xC0); printf(LCD_putchar," TO "); not(g40*2,g41); printf(LCD_putchar,"YOU"); not(f40*4,f41); LCD_putcmd(clear_scr); } thạch anh 20MHz thay đổi nội dung bởi: phamquang_hung, 21-09-2009 lúc 04:35 PM. |
24-09-2009, 09:55 PM | #5 |
Nhập môn đệ tử
Tham gia ngày: Sep 2009
Bài gửi: 1
: |
hay thế nhỉ
__________________
Sory...... No DATA |
25-09-2009, 12:07 AM | #6 |
Nhập môn đệ tử
Tham gia ngày: Sep 2009
Bài gửi: 8
: |
Mạch của nó thì sao???
|
01-10-2009, 02:39 AM | #7 |
Nhập môn đệ tử
Tham gia ngày: Nov 2008
Bài gửi: 7
: |
|
|
|