蜂鳴器。。有用的
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載):
0.png (13.27 KB, 下載次數: 31)
下載附件
2017-6-6 03:36 上傳
0.png (51.25 KB, 下載次數: 26)
下載附件
2017-6-6 03:36 上傳
單片機源程序如下:
- #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;
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
05 IIC-24C04與蜂鳴器.zip
(36.1 KB, 下載次數: 25)
2017-6-5 11:37 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|