Thông báo

Collapse
No announcement yet.

Dùng 8051 tạo ra nhạc ?

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • #16
    đơn âm thì đơn giản, còn đa âm mà chỉ dùng vdk chắc ko nổi.
    Cách đơn giản nhất để phát đa âm chắc là lưu nhạc dạng wav, tức là dạng analog chuyển sang digital rồi dùng vdk đọc ra,chuyển D/A rồi đưa ra loa, vậy thì dung lượng nhớ phải khủng, tốc độ A/D, D/A cao nữa, ko nổi.
    Có cách là dùng thêm 1 chip decoder mp3 nữa, mình cũng đang tìm hiểu, chưa bắt tay làm.
    Ah nghe nói có chip decoder midi nữa? có ko nhỉ? search trên mạng ko thấy, bạn nào biết dzụ này ko? nhạc midi nghe cũng hay hơn nhiều so với đơn âm thông thường
    Phạm Minh Tuấn

    (+84) 982006467

    Comment


    • #17
      Thui nào các bác đừng có giấu nghề nữa?
      Chỉ cho tui cách mắc VDK và code đi !
      Tạo ra nhạc nghịch tí thui mà!

      Comment


      • #18
        Nguyên văn bởi hoainamctin Xem bài viết
        Thui nào các bác đừng có giấu nghề nữa?
        Chỉ cho tui cách mắc VDK và code đi !
        Tạo ra nhạc nghịch tí thui mà!
        tự thân vận động mới thấy thú u ơi ! You Ctrl C , Ctrl V thì chả còn gì thú vị cả

        Comment


        • #19
          Nguyên văn bởi Zz_Bi_zZ Xem bài viết
          [code]
          Code:
          #include<AT89S53.h>
          unsigned char preloadTH=0xFF,preloadTL=0xFF;
          unsigned int pointer=0,ii=0,jj;
          //octa: 0
          //key            C     C#    D     D#    E    F     F#    G    G#    A    A#    B  
          code float key_octa0[]={16.35,17.32,18.35,19.45,20.6,21.83,23.12,24.5,25.96,27.5,29.14,30.87};
          code unsigned int chuan=200;
          code float crystal=11.0592;
          
          //music
          code unsigned char music[]=
          {
          	"4d~,4d~,3g~,3a~,4d.,4d~,4g~,4a~,4b~,4a=,4g=,4d.,4e~,3a~,4c~,3g~,3a~,4d~,4d ,4d=,4c=,3a~,4c~,3g~,3a~,4do",
          	"4g~,4g~,4d~,3a~,4g.,4g~,4a~,4g~,4b=,4a=,4g~,4d.,4g~,4e ,4e~,4d~,4c ,4d~,4d~,3a~,4d~,3b~,3a~,3go,4d ,4go",
          	"4go,4a ,4b~,4a~,4F~,4g.,4d~,4g~,4a~,4a=,4b=,4a~,4g.,4d~,3a ,3a ,3a~,4d ,4d~,4d ,3a=,3b=,3a~,3g.,4b=,4a=",
          	"4g~,4d~,4g~,4d~,3a.,4g~,4g ,4F~,4a~,5d.,4a=,4b=,4d ,3a ,4go,4d~,4d~,3g~,3a~,4do,4g~,4g~,4d~,3a~,4go,4g~",
          	"4d~,4g~,4a~,4A ,4a~,5d~,4b~,4a~,4g~,4F~,4g ,4d ,4d ,4g~,4a~,4A ,4a~,5d~,4b~,4a~,4g~,4F~,4go,s"
          };
          void doitanso(float tanso)
          {
          	unsigned int giatrinap;
          		giatrinap=65536-(unsigned int)((1000000*crystal)/(24*tanso));
          		preloadTL=(unsigned char)giatrinap;
          		preloadTH=(unsigned char)(giatrinap>>8);	
          }
          void key(unsigned char octa,unsigned char k)
          {
          	float tanso;
          	switch (k)
          	{
          		case 'c' : tanso=key_octa0[0];  break;
          		case 'C' : tanso=key_octa0[1];  break;
          		case 'd' : tanso=key_octa0[2];  break;
          		case 'D' : tanso=key_octa0[3];  break;
          		case 'e' : tanso=key_octa0[4];  break;
          		case 'f' : tanso=key_octa0[5];  break;
          		case 'F' : tanso=key_octa0[6];  break;
          		case 'g' : tanso=key_octa0[7];  break;
          		case 'G' : tanso=key_octa0[8];  break;
          		case 'a' : tanso=key_octa0[9];  break;
          		case 'A' : tanso=key_octa0[10]; break;
          		case 'b' : tanso=key_octa0[11]; break;
          	}
          	switch (octa)
          	{
          		case '1' : tanso*=2;   break;	
          		case '2' : tanso*=4;   break;
          		case '3' : tanso*=8;   break;
          		case '4' : tanso*=16;  break;
          		case '5' : tanso*=32;  break;
          		case '6' : tanso*=64;  break;
          		case '7' : tanso*=128; break;
          		case '8' : tanso*=256; break;
          	}
          	doitanso(tanso);
          }
          unsigned int trave(unsigned int ms)
          {
          	unsigned int a;
          	a=preloadTH;
          	a=a<<8|preloadTL;
          	return (ms*crystal*1000)/12/(65536-a);
          }
          unsigned int tempo(unsigned char tem)
          {
          switch (tem)
          	{
          		case '=' : return trave(chuan);  	break;
          		case '~' : return trave(chuan*2);  	break;
          		case ' ' : return trave(chuan*4);  	break;
          		case '.' : return trave(chuan*6);  	break;
          		case 'o' : return trave(chuan*8);	break;
          	}
          }
          unsigned char ngattimer_0() interrupt 1
          {
              P2_0=!P2_0;
          	TL0=preloadTL;
          	TH0=preloadTH;
          	if(ii==0)
          		{
          			if(music[pointer]=='s')
          				TR0=0;
          			key(music[pointer],music[pointer+1]);
          			jj=tempo(music[pointer+2]);
          		}
          	ii++;
          	if(ii==jj)
          		{
          			ii=0;
          			pointer+=4;
          		}	
          }
          void main(void)
          {
          	TMOD=17;
          	TL0=0xff;
          	TH0=0xff;
          	ET0=1;
          	EA=1;
              TR0=1;
              while(1);
          }
          coppy đoạn mã của đồng chí irf540 & F7 thì tui thấy có vài thông báo sau
          - interrupt() may not receive or return value(s)
          - mảng music[] out of bounds
          tui cũng thấy hơi lạ , hay là tui chưa gặp kiểu này
          Code:
          unsigned char ngattimer_0() interrupt 1
          tui chữa lại void ngattimer_0() interrupt 1 thì ko lỗi
          còn cái mảng music kia thì chưa bit phải chữa ntn ? thử khai báo unsigned long vẫn chưa đc
          bác dùng cái gì dậy. keil hay ride.
          tui dùng ride.
          trong thư mục tui upload có file protues đó. mở lên là thấy chạy lìn đó mà.
          Cty TNHH Cơ Điện tử Hiệp Phát.
          ------------------------------------------
          Trần Hoàng Giang
          11-04-1985

          Mobil: 0905 438 533

          Comment


          • #20
            Ai chả muốn tự thân vận động thì mới zui
            Nhưng chả biết bắt đầu từ đâu và làm như thế nào
            Thế mới phải hỏi chứ

            Comment


            • #21
              Nguyên văn bởi irf540 Xem bài viết
              bác dùng cái gì dậy. keil hay ride.
              tui dùng ride.
              trong thư mục tui upload có file protues đó. mở lên là thấy chạy lìn đó mà.
              hic ! tui dùng Keil Bác ah ! hèn gì nó báo lỗi

              Comment


              • #22
                Nguyên văn bởi hoainamctin Xem bài viết
                Ai chả muốn tự thân vận động thì mới zui
                Nhưng chả biết bắt đầu từ đâu và làm như thế nào
                Thế mới phải hỏi chứ
                1 câu hỏi mà chưa chắc MOD đã trả lời thấu đáo cho bạn đc !

                Comment


                • #23
                  tui cũng muốn tự mình làm 1 cái nè!!!!!
                  có thể gởi mail theo địa chỉ sau:

                  Comment


                  • #24
                    các bác ơi,cho em hỏi với.cái code kia có chính xác ko vậy?sao em thử dùng reads51 và cả keil c nữa,nó đều báo lỗi.em kém lập trình quá.các bác chỉ giúp em với.please!
                    Thanks!

                    Comment


                    • #25
                      Muốn làm bạn nên học 1 chút về nhạc lý là ok, nhờ code của các bạn trên 4rum + 1 chút mò mẫm mình cũng mò ra cách viết code cho bản nhạc rồi, tuy nhiên nhiều chỗ vẫn phải chỉnh sửa để nghe cho hay hơn

                      Comment


                      • #26
                        các bác cho em phần lập trình với.để em tự mò ra bản nhạc của em.em định làm thế nhưng cái code ở trên cứ báo lỗi.em ko biết làm gì nữa.nản quá!các bác giúp em với.
                        em định làm bài tập lớn mạch này mà.mong các bác giúp đỡ!
                        thanks!
                        yahoo của em đây: loveboy_bkaa@yahoo.com

                        Comment


                        • #27
                          Sr vì đã đào mộ!
                          Mình ko dịch dc chương trình này vì trình dịch của mình với bạn # nhau!
                          Bạn nào có trình dịch thích hợp làm ơn thay cho mình chân phát ra loa là P1.0 hoặc bất cứ 1 chân P1.x nào với!
                          Thanks!
                          Trần Đức Sơn

                          tel:0934691385

                          Comment


                          • #28
                            bác nào chưa làm đc thì vô học hỏi bọn BKDN nhá ... tụi nó làm rầm rầm roy đây nè....^^
                            http://svdanang.com/%40pbk/showthread.php?t=32067

                            Comment


                            • #29
                              Cho mình xin cách đấu vào VDK đi mấy bạn,cái này dùng con IC 83c51 được k vậy mọi người,và cái này mình dùng khoảng bao nhiêu cổng điều khiển vậy?

                              Comment


                              • #30
                                Cho mình hỏi thêm là mình đấu cái loa vào chân nào vậy?và cách làm cho đèn chớp nháy theo điệu nhạc nữa chứ, mình là thành viên mới nhờ sự giúp đỡ giùm

                                Comment

                                Về tác giả

                                Collapse

                                hoainamctin Tìm hiểu thêm về hoainamctin

                                Bài viết mới nhất

                                Collapse

                                Đang tải...
                                X