doubt regarding music generation using at89c51

Status
Not open for further replies.

bobdxcool

Member level 5
Joined
Mar 9, 2012
Messages
82
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,286
Activity points
2,042
this is the circuit i'm planing to use to generate some msic using 8051..


pls tell me whether any other modifications are needed?


this is the program written!






Code C - [expand]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include<reg51.h>
sbit out=P1^0;  //output pin 1
 
void delay(unsigned char p,unsigned char q)
{
TMOD=0x01;  //timer0 mode1(16 bit)
TL0=q;      //load TL0
TH0=p;      //load TH0
TR0=1;   //turn on T0
while(TF0==0); // wait for flag generation
TR0=0;   // turn off T0
TF0=0;    // clear TF0
}
 
void play(unsigned char j,unsigned char k)
{
int i;
for(i=0;i<1000;i++)  //to play sound
{
  out=1;
  delay(j,k);
  out=0;
  delay(j,k);
}
}
 
void main()
{
int l;
while(1)
{
  play(0xfc,0x66);  //playing sound of frequency of about 500 hertz with a delay between two frequencies
  for(l=0;l<5;l++)   
  {
   delay(0x00,0x00);  //delay of 71 miliseconds
  }
  play(0xfe,0x33);  //playing sound of frequency of about 1000 hertz with a delay between two frequencies
  for(l=0;l<5;l++)
  {
   delay(0x00,0x00);  
  }
  play(0xff,0xa3);  //playing sound of frequency of about 5000 hertz with a delay between two frequencies
  for(l=0;l<5;l++)
  {
   delay(0x00,0x00);  
  }
  play(0xff,0xd1);  //playing sound of frequency of about 10000 hertz with a delay between two frequencies
  for(l=0;l<5;l++)
  {
   delay(0x00,0x00);  
  }
  play(0xff,0xdc);  //playing sound of frequency of about 13000 hertz with a delay between two frequencies
  for(l=0;l<5;l++)
  {
   delay(0x00,0x00);  
  }
  play(0xff,0xcc);  //playing sound of frequency of about 9300 hertz with a delay between two frequencies
  for(l=0;l<5;l++)
  {
   delay(0x00,0x00);  
  }
  play(0xff,0xe8);  //playing sound of frequency of about 20000 hertz with a delay between two frequencies
  for(l=0;l<5;l++)
  {
   delay(0x00,0x00);  
  }
} 
}





 
Last edited by a moderator:

Well, you are trying to generate the square wave signal on the appropriate pin.
This may play tones on a piezo. But I doubt that members might not call this "music".
Lets see.
 

Well, you are trying to generate the square wave signal on the appropriate pin.
This may play tones on a piezo. But I doubt that members might not call this "music".
Lets see.


so what if i place a 150 ohm speaker in place of the buzzer??
 

Don't use an ordinary speaker (low impedance) without an additional amplifier (single transistor will do). Rather use a piezo-type.

[Depends all on exact circuit. consider the port pull ups are present or not etc]

You better use an amplifire to hear something high. easyest way is to attach the base of a bipolar transistor to the pin and put the speaker in the collector circuit as a load. You can control the loudness and tons by using software PWM.
 
Last edited:


so i'll connect a speaker (1 terminal) to the collector of npn bc 547 transistor nd other terminal to ground.....nd connect base of tran to p1.0 and emitter to ground!!

correct me if i am wrong!!

between i have a 150 ohm speaker ..can it b used?? or should i go for an 8 ohm one only??

how to vary the loudness????
 

The 8051 port pin can sink 1.6mA (3.2mA for port 0) and source 60uA. Therefore, if you drive significant current, try to arrange your circuits to use current sinking.

See http://www.freewebs.com/maheshwankhede/ports.html for idea

You can choose any one option:-
1. Connect the speaker between the P1.0 pin and ground Do not omit series resistor 1K! [limit current as needed. check datasheet]

**broken link removed**

if you move the ground connection of the speaker to Vcc, you will get more volume.
[limit current as needed. check datasheet]

2.Use Transistor TO DRIVE SPEAKER

3.Use Transistor as directed and can control the loudness by using software PWM.
 

@papunblg

i am using a 4ohm 3 watt speaker and 2n3904 npn transistor as its driver.
i am connecting a 10k resistor b/w port of uc and base of 2n3904.the collector of the transistor i am connecting to 1 terminal of speaker,emitter to ground.
the other terminal of speaker should be grounded or should it be connected to VCC(5v of uc)??

correct me if i am wrong in other steps.
 





Here is an example. In place of the buzzer, you can connect a speaker

or


 
Last edited:

You can connect the collector to higher voltage (12V+) to get louder sound
 

hanks a ton sir!

---------- Post added at 19:26 ---------- Previous post was at 17:44 ----------

instead of 12v can i connect it 5 volt??
 

I mean to say:-

You can increase sound like this.
Otherwise connect it to 5 Volt
 

Status
Not open for further replies.
Cookies are required to use this site. You must accept them to continue using the site. Learn more…