51单片机 AT24C04+蜂鸣器+Proteus仿真

51单片机 AT24C02+蜂鸣器+Proteus仿真


  • Proteus仿真截图

由于是音频效果,只能以截图展示基本电路
在这里插入图片描述

实例代码

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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define NOP4() {\_nop\_();\_nop\_();\_nop\_();\_nop\_();}

sbit SCL = P1^0;
sbit SDA = P1^1;
sbit SPK = P3^0;

uchar code HI_LIST[] =
{
0,226,229,232,233,236,238,240,241,242,245,246,247,248
};
uchar code LO_LIST[] =
{
0,4,13,10,20,3,8,6,2,23,5,26,1,4,3
};
uchar code Song_24C04[] =
{
1,2,3,1,1,2,3,1,3,4,5,3,4,5
};
uchar sidx;

void DelayMS(uint x)
{
uchar t;
while(x--)
{
for(t=120;t>0;t--);
}
}

void Start()
{
SDA=1;SCL=1;NOP4();SDA=0;NOP4();SCL=0;
}

void Stop()
{
SDA=0;SCL=0;NOP4();SCL=1;NOP4();SDA=1;
}

void RACK()
{
SDA=1;NOP4();SCL=1;NOP4();SCL=0;
}

void NO\_ACK()
{
SDA=1;SCL=1;NOP4();SCL=0;SDA=0;
}

void Write\_A\_Byte(uchar b)
{
uchar i;
for(i=0;i<8;i++)
{
b<<=1;SDA=CY;\_nop\_();SCL=1;NOP4();SCL=0;
}
RACK();
}

void Write\_IIC(uchar addr,uchar dat)
{
Start();
Write\_A\_Byte(0xa0);
Write\_A\_Byte(addr);
Write\_A\_Byte(dat);
Stop();
DelayMS(10);
}

uchar Read\_A\_Byte()
{
uchar i,b;
for(i=0;i<8;i++)
{
SCL=1;b<<=1;B|=SDA;SCL=0;
}
return b;
}

uchar Read\_Current()
{
uchar d;
Start();
Write\_A\_Byte(0xa1);
d=Read\_A\_Byte();
NO\_ACK();
Stop();
return d;
}

uchar Random\_Read(uchar addr)
{
Start();
Write\_A\_Byte(0xa0);
Write\_A\_Byte(addr);
Stop();
return Read\_Current();
}

void T0\_INT() interrupt 1
{
SPK=!SPK;
TH0=HI_LIST[sidx];
TL0=LO_LIST[sidx];
}

void main()
{
uchar i;
IE=0x82;
TMOD=0x00;
for(i=0;i<14;i++)
{
Write\_IIC(i,Song_24C04[i]);
}
while(1)
{
for(i=0;i<14;i++)
{
sidx=Random\_Read(i);
TR0=1;
DelayMS(300);
}
}
}

程序源码和仿真资源

1
2
3
链接:https://pan.baidu.com/s/18l3TTWBeRh8Tp6dy-BAesQ 
提取码:0m69