當前位置:編程學習大全網 - 編程語言 - 51單片機的音樂噴泉的編碼

51單片機的音樂噴泉的編碼

功能實現通過ADC0832芯片對音頻信號的采集,轉換為數字信號給單片機,然後PWM脈沖寬度調制控制水泵水柱對的高低

//請先了解ADC0832模數轉換的串行協議,再來讀本函數,主要是對應時序圖來理解,本函數是模擬0832的串行協議進行的

// 1 1 0 通道

// 1 1 1 通道

unsigned char ad0832read(bit SGL,bit ODD)

{undefined

unsigned char i=0,value=0,value1=0;

SCL=0;

DO=1;

CS=0;//開始

SCL=1;//第壹個上升沿

SCL=0;

DO=SGL;

SCL=1; //第二個上升沿

SCL=0;

DO=ODD;

SCL=1; //第三個上升沿

SCL=0; //第三個下降沿

DO=1;

for(i=0;i<8;i++)

{undefined

SCL=1;

SCL=0; //開始從第四個下降沿接收數據

value<<=1;

if(DO)

value++;

}

for(i=0;i<8;i++)

{//接收校驗數據

value1>>=1;

if(DO)

value1+=0x80;

SCL=1;

SCL=0;

}

CS=1;

DO=1;

SCL=1;

if(value==value1)//與校驗數據比較,正確就返回數據,否則返回0

return value;

return 0;

}

void penquan() //PWM調壓

{undefined

date=ad0832read(1,0); //讀取ad值

h1=(255-date);//轉換

out=0; //水泵清零

delay(h1);

if(h1>70) led1=1; else led1=0; //ad值對比 點亮相應的燈

if(h1>80) led2=1; else led2=0; //ad值對比 點亮相應的燈

if(h1>90) led3=1; else led3=0; //ad值對比 點亮相應的燈

if(h1>100) led4=1; else led4=0; //ad值對比 點亮相應的燈

if(h1>110) led5=1; else led5=0; //ad值對比 點亮相應的燈

if(h1>115) led6=1; else led6=0; //ad值對比 點亮相應的燈

if(h1>120) led7=1; else led7=0; //ad值對比 點亮相應的燈

if(h1>130) led8=1; else led8=0; //ad值對比 點亮相應的燈

out=1; //關閉水泵

delay(date); //延時時間

}

void main()//主函數

{undefined

while(1)

{undefined

penquan(); //給定個延時次數

}

}

(轉載於CSDN)

  • 上一篇:追溯系統是什麽
  • 下一篇:502錯誤怎麽502錯誤怎麽解決
  • copyright 2024編程學習大全網