PIC產(chǎn)生聲音的方法
//PIC產(chǎn)生聲音的方法
//★★★★★★★★★PIC產(chǎn)生聲音的方法★★★★★★★★★★★\
//單征機(jī)型號(hào):PIC16F877A
//功能描述:產(chǎn)生一個(gè)頻率段,驅(qū)動(dòng)BUZ發(fā)聲。
//端口定義:RC2,BUZ驅(qū)動(dòng)口。
#include
__CONFIG(0x1832);
//芯片配置字,看門狗關(guān),上電延時(shí)開(kāi),掉電檢測(cè)關(guān),低壓編程關(guān),加密,4M晶體HS振蕩
#define buz RC2 //定義聲音控制腳
//========================================================================
//功能描述:延時(shí)子程序
//函數(shù)名稱:void sounddelay0(unsigned char delay_count)
void sounddelay0(unsigned char delay_count)
{
unsigned char i; //定義循環(huán)變量
for(i=delay_count;i>0;i--); //根據(jù)頻率決定延時(shí)時(shí)間
}
//========================================================================
//功能描述:發(fā)聲子程序
//函數(shù)名稱:void sound200ms()
void sound200ms()
{
unsigned char fre_repeat,s_max,s_min,i,j;
//同一頻率重復(fù)次數(shù),最高頻率,最低頻率,循環(huán)變量i,j
fre_repeat=4; //同一頻率循環(huán)4次
s_max=0x93; //聲音最高頻率
s_min=0x47; //聲音最低頻率
for(i=s_max-s_min;i>0;i--) //輸出最高頻率與最低頻率內(nèi)的每一個(gè)頻率的聲音
{
for(j=fre_repeat;j>0;j--) //每個(gè)聲音循環(huán)4次
{
buz=1; //輸出聲音
sounddelay0(s_min+i); //延長(zhǎng)一段時(shí)間
buz=0; //關(guān)閉聲音
sounddelay0(s_min+i); //延長(zhǎng)一段時(shí)間
}
}
}
//========================================================================
//功能描述:主函數(shù)
//函數(shù)名稱:void main()
void main()
{
TRISC=0; //設(shè)置C口為輸出
sound200ms(); //調(diào)用發(fā)聲函數(shù)
}