Thông báo

Collapse
No announcement yet.

Tải nhạc chuông cho máy điện thoại bàn = 89S

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

  • Tải nhạc chuông cho máy điện thoại bàn = 89S

    thấy chuông điện thoại ở nhà giống với ông hàng xóng we , nhân gặp đợt thực tập VĐK , tui làm lun sp này , Nói chung rất cute , rất style ko đụng hàng ! ông thầy ko có chỗ nào để hỏi (chắc có lẽ nó dở we..heee) ...chạy rất ổn định và tốt ......

    mạch nguyên lý


    mạch thu tín hiệu chuông



    mạch phát nhạc




    Code:
    //----------nạp cho kon U1 , con nhận tín hiệu bell_signal
    #include<AT89S53.h>
    
    sbit bell_signal = 0xB0;
    sbit OFF 		 = 0xB1;
    sbit ON13 		 = 0xA5;
    sbit OFF13 		 = 0xA4;
    
    void delay_ms(unsigned char ms)
    { unsigned int i,j;
      for(i=0;i<ms;i++)
      for(j=0;j<120;j++){};
    }
    
    main()
    { bell_signal = 1;
      OFF		  = 1; 
      ON13		  = 1;
      OFF13       = 1;
      
      while(1)
       { if(!bell_signal) { delay_ms(1);ON13=0;delay_ms(1);ON13 = 1;};
    	 bell_signal  = 1;
       }
    }
    Code:
    #include<AT89S53.h>
    
    sbit OFF34 = 0xA5;
    sbit ON34  = 0xA6;
    sbit ON13  = 0xB5;
    sbit OFF13 = 0xB6;
    
    sbit play = 0x80;
    sbit stop = 0x81;
    sbit next = 0x82;
    
    unsigned char preloadTH=0xFF,preloadTL=0xFF;
    unsigned int  pointer=0,i=0,j;
    //octa: 0
    //key :                   C     C#    D     D#    E    F     F#    G    G#    A    A#    B  
    const 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};
    const unsigned int chuan=200;
    const float crystal=11.0592;
    
    code unsigned char array[]=											
    
    {"4a~,5d^,5F^,5e~,5a~,5d^,5C^,5d^,5e^,5F&,5d^,5g^,5g@,5g%,5d^,5C~,5C%,4a@,5a^,5a@,5a^,5e@,5e^ \
    5d&,4a^,4b^,5d~,5F^,5e^,5a~,5C^,5d. \
    5d@,5C@,5d@,5e@,5F@,5g@,5F@,5e@,5g^,5F^,5g^,5b@,5b%,5a~,5g^,5F^,5e^ \
    5F^,6C^,6d&,6d^,6e^,6d@,6d%,6d^,6e^,6d^,6C^,5b^,5a.,5g@,5F@,5g@,5a@,5b~ \
    5g^,5F^,5g^,5b@,5b%,5a~,5g^,5F^,5e^,5F^,6C^,6e^,6d~,5a^,5b^,5a@,5b%,6d^,6e~,6d^,6C^,6d. \
    5a^,5F@,5g@,5a^,5F@,5g@,5a@,4a@,4b@,5C@,5d@,5e@,5F@,5g@,5F^,5d@,5e@,5F^ \
    4F@,4g@,4a@,4b@,4a@,4g@,4a@,4F@,4g@,4a@,4g^,4b@,4a@,4g^,4F@,4e@,4F@,4e@,4d@,4e@,4F@,4g@,4a@,4b@,4g^ \
    4b@,4a@,4b^,5C@,5d@,4a@,4b@,5C@,5d@,5e@,5F@,5g@,5a@ \
    5a^,5F@,5g@,5a^,5F@,5g@,5a@,4a@,4b@,5C@,5d@,5e@,5F@,5g@,5F^,5d@,5e@,5F^ \
    4F@,4g@,4a@,4b@,4a@,4g@,4a@,4F@,4g@,4a@,4g^,4b@,4a@,4g^ \
    4F@,4e@,4F@,4e@,4d@,4e@,4F@,4g@,4a@,4b@,4g^,4b@,4a@,4b^ \
    5C@,5d@,4a@,4b@,5C@,5d@,5e@,5F@,5g@,5a@ \
    4a~,5d^,5F^,5e~,5a~,5d^,5C^,5d^,5e^,5F& \
    5d^,5g^,5g~,5d^,5C^,5C~,s"
    };
    
    
    void delay_ms( unsigned int ms )
    { unsigned int i,j;
      for (i=0;i<ms;i++)
      for (j=0;j<120;j++){};
    }
    
    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/4);   break;	// 0,25
          case '<' : return trave(chuan/2);	  break;	// 0,5
    	  case '@' : return trave(chuan*3/4); break;	// 0,75
    	  case '=' : return trave(chuan);     break;	// 1 
          case '#' : return trave(chuan*5/4); break;	// 1,25
    	  case '^' : return trave(chuan*3/2); break;	// 1,5 ; den = 180
    	  case '!' : return trave(chuan*7/4); break;	// 1,75
    	  case '>' : return trave(chuan*2);   break;	// 2
          case '%' : return trave(chuan*9/4); break;    // 2,25
    	  case '`' : return trave(chuan*5/2); break;    // 2,5
    	  case 'o' : return trave(chuan*11/4);break;	//2,75
    	  case '~' : return trave(chuan*3);   break;    // 3
    	  case '$' : return trave(chuan*7/2); break;    // 3,5
    	  case '+' : return trave(chuan*15/4);break;    // 3,75
    	  case '*' : return trave(chuan*4);   break;    // 4
          case '&' : return trave(chuan*9/2); break;    // 4,5
    	  case ':' : return trave(chuan*5);   break;    // 5
    	  case '.' : return trave(chuan*6);   break;    //6
          case '?' : return trave(chuan*7);   break;    //7,5
       }
    }
    void timer0_ISR() interrupt 1
    {
       P2_0=!P2_0;
       TL0=preloadTL;
       TH0=preloadTH;
       if(i==0)
          {
             if(array[pointer]=='s')
    		 	{ TR0 = 0;
    			  pointer = 0; // comeback
    			  TR0 = 1;
    			};
    		 key(array[pointer],array[pointer+1]);
             j=tempo(array[pointer+2]);
          	 
    	  }
       i++;
       if(i==j)
          {
             i=0;
             pointer+=4;
          }   
    }
    void main(void)
    {  
       TMOD =0x01; // dung timer0 16 bit
       TL0  =0xFF;
       TH0  =0xFF;
       ET0  =1;
       EA   =0; // chua cho phep ngat
       TR0  =1;
       
       ON13  = 1;
       OFF13 = 1;
       ON34  = 1;
       OFF34 = 1;
       play  = 1;
       stop  = 1;
    
       
       while(1)
       { if(!ON13){ON34=0;EA=1;};
       	 if(!stop)
    	       { delay_ms(50);
    		     while(!stop) continue ;
    			 delay_ms(10);
    		     EA=0;pointer =0;
    		   	};
    	 if(!play)
    	       { delay_ms(50);
    		     while(!play) continue ;
    			 delay_ms(10);
    		     EA = 1;
    		   };
    	 //if(!OFF13){ON13=1;ON34=1;EA=0;OFF34=0;pointer=0;};
       	 //OFF34 = 1;
       	 //OFF13 = 1;
       };
    }
    sp của tui đã chạy thực tế , các u có thể xem nó hoạt động ở video sau
    http://www.2shared.com/file/3517579/.../MOV03285.html

  • #2
    Code:
    unsigned char preloadTH=0xFF,preloadTL=0xFF;
    unsigned int  pointer=0,i=0,j;
    //octa: 0
    //key :                   C     C#    D     D#    E    F     F#    G    G#    A    A#    B  
    const 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};
    const unsigned int chuan=200;
    const float crystal=11.0592;
    
    code unsigned char array[]=											
    
    {"4a~,5d^,5F^,5e~,5a~,5d^,5C^,5d^,5e^,5F&,5d^,5g^,5g@,5g%,5d^,5C~,5C%,4a@,5a^,5a@,5a^,5e@,5e^ \
    5d&,4a^,4b^,5d~,5F^,5e^,5a~,5C^,5d. \
    5d@,5C@,5d@,5e@,5F@,5g@,5F@,5e@,5g^,5F^,5g^,5b@,5b%,5a~,5g^,5F^,5e^ \
    5F^,6C^,6d&,6d^,6e^,6d@,6d%,6d^,6e^,6d^,6C^,5b^,5a.,5g@,5F@,5g@,5a@,5b~ \
    5g^,5F^,5g^,5b@,5b%,5a~,5g^,5F^,5e^,5F^,6C^,6e^,6d~,5a^,5b^,5a@,5b%,6d^,6e~,6d^,6C^,6d. \
    5a^,5F@,5g@,5a^,5F@,5g@,5a@,4a@,4b@,5C@,5d@,5e@,5F@,5g@,5F^,5d@,5e@,5F^ \
    4F@,4g@,4a@,4b@,4a@,4g@,4a@,4F@,4g@,4a@,4g^,4b@,4a@,4g^,4F@,4e@,4F@,4e@,4d@,4e@,4F@,4g@,4a@,4b@,4g^ \
    4b@,4a@,4b^,5C@,5d@,4a@,4b@,5C@,5d@,5e@,5F@,5g@,5a@ \
    5a^,5F@,5g@,5a^,5F@,5g@,5a@,4a@,4b@,5C@,5d@,5e@,5F@,5g@,5F^,5d@,5e@,5F^ \
    4F@,4g@,4a@,4b@,4a@,4g@,4a@,4F@,4g@,4a@,4g^,4b@,4a@,4g^ \
    4F@,4e@,4F@,4e@,4d@,4e@,4F@,4g@,4a@,4b@,4g^,4b@,4a@,4b^ \
    5C@,5d@,4a@,4b@,5C@,5d@,5e@,5F@,5g@,5a@ \
    4a~,5d^,5F^,5e~,5a~,5d^,5C^,5d^,5e^,5F& \
    5d^,5g^,5g~,5d^,5C^,5C~,s"
    };
    
    
    void delay_ms( unsigned int ms )
    { unsigned int i,j;
      for (i=0;i<ms;i++)
      for (j=0;j<120;j++){};
    }
    
    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/4);   break;	// 0,25
          case '<' : return trave(chuan/2);	  break;	// 0,5
    	  case '@' : return trave(chuan*3/4); break;	// 0,75
    	  case '=' : return trave(chuan);     break;	// 1 
          case '#' : return trave(chuan*5/4); break;	// 1,25
    	  case '^' : return trave(chuan*3/2); break;	// 1,5 ; den = 180
    	  case '!' : return trave(chuan*7/4); break;	// 1,75
    	  case '>' : return trave(chuan*2);   break;	// 2
          case '%' : return trave(chuan*9/4); break;    // 2,25
    	  case '`' : return trave(chuan*5/2); break;    // 2,5
    	  case 'o' : return trave(chuan*11/4);break;	//2,75
    	  case '~' : return trave(chuan*3);   break;    // 3
    	  case '$' : return trave(chuan*7/2); break;    // 3,5
    	  case '+' : return trave(chuan*15/4);break;    // 3,75
    	  case '*' : return trave(chuan*4);   break;    // 4
          case '&' : return trave(chuan*9/2); break;    // 4,5
    	  case ':' : return trave(chuan*5);   break;    // 5
    	  case '.' : return trave(chuan*6);   break;    //6
          case '?' : return trave(chuan*7);   break;    //7,5
       }
    }
    void timer0_ISR() interrupt 1
    {
       P2_0=!P2_0;
       TL0=preloadTL;
       TH0=preloadTH;
       if(i==0)
          {
             if(array[pointer]=='s')
    		 	{ TR0 = 0;
    			  pointer = 0; // comeback
    			  TR0 = 1;
    			};
    		 key(array[pointer],array[pointer+1]);
             j=tempo(array[pointer+2]);
          	 
    	  }
       i++;
       if(i==j)
          {
             i=0;
             pointer+=4;
          }   
    }
    void main(void)
    {  
       TMOD =0x01; // dung timer0 16 bit
       TL0  =0xFF;
       TH0  =0xFF;
       ET0  =1;
       EA   =0; // chua cho phep ngat
       TR0  =1;
    bác đã vi phạm luật bản quyền vui lòng liên hệ tác giả không thì sẽ bị phiền phức đấy nhe!.
    kekeke.lâu lâu lên mạng thấy có người sài code của mình thấy dui ghê mặc dù hồi giờ thực ra mình cũng sài code của người khác nhiều.
    chúc vui vẻ...
    Cty TNHH Cơ Điện tử Hiệp Phát.
    ------------------------------------------
    Trần Hoàng Giang
    11-04-1985

    Mobil: 0905 438 533

    Comment


    • #3
      hee có thế chứ , cuối cùng tui cũng tìm đc tác giả irf540, tui cố ý để nguyên code của u lun đó
      U có phần mềm tìm tần số of note đúng ko ? lúc trước tui có tải về nhưng ko chạy đc
      U có thể post cái đó lên ko ? vì khi gặp note giáng thì tui pó chíu ...hơn nữa code của u ko có dấu lặng ... Tui đang thêm vào cho hoàn chỉnh ....

      Comment


      • #4
        cái này tui làm lâu quá rồi không biết để đâu nói chung bác lên google search cái bảng tần số của các nốt nhạc rồi viết chương trình lại
        máy tui hồi đó bị die ổ cứng.keke
        Cty TNHH Cơ Điện tử Hiệp Phát.
        ------------------------------------------
        Trần Hoàng Giang
        11-04-1985

        Mobil: 0905 438 533

        Comment

        Về tác giả

        Collapse

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

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

        Collapse

        • Andrea14
          Vấn đề về tốc độ quay
          bởi Andrea14
          Chào mọi người,

          Tôi muốn mô phỏng sự thay đổi các mùa bằng cách từ từ nghiêng một quả địa cầu 16 inch bằng một động cơ bước nhỏ. Một động cơ bước khác sẽ quay quả địa cầu theo thời gian thực. Hệ thống truyền động...
          hôm nay, 12:42
        • bqviet
          Trả lời cho Đấu tắt điện cho máy tính bảng
          bởi bqviet
          Bqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
          06-12-2025, 17:17
        • nguyendinhvan
          Trả lời cho Xin hỏi về mạch thu FM/AM trong catsette
          bởi nguyendinhvan
          Theo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
          05-12-2025, 19:59
        • afrendly
          Trả lời cho Đấu tắt điện cho máy tính bảng
          bởi afrendly
          Có vẻ ngoài hiểu biết của mình rồi. Cuối cùng mình quyết định tìm mua 2 pin trên Shopee, giá 200K thay vào. Tuy nhận pin được 1%, sạc mãi không vào nhưng cũng mở được máy lên. Vậy cũng tạm. Cảm ơn bạn đã hỗ trợ nhé....
          04-12-2025, 01:27
        Đang tải...
        X