magiccar 發表於 2010-2-2 21:11

單晶片魔法車05-聰明聲控車(一)

前幾項的實驗讓我們漸漸瞭解:透過程式的規劃可以讓電路簡化,而運用不同的指令又可以讓程式簡化,所以熟悉指令的用法可以說是學習程式設計的捷逕,這是同學一定要知道的喔!

在完成了光控魔法車的實驗後,我們就要把聲音的信號透過單晶片的程式規劃,做出指定的動作。

實驗五:聰明聲控車(一)

實驗內容:開啟電源後聲控電路處於待命狀態。用當接收到拍手聲時,
     單晶片立即啟動繼電器,讓魔法車前進(或是轉彎)。當再
     接收到拍手聲時,單晶片立即關閉繼電器,讓魔法車停止或
     恢復先前狀態。

使用材料:實驗四的材料,電容式麥克風,2SC1815(NPN電晶體)*1,7.5KΩ電阻*1,10uf電容*1

電路照片:
這次增加了一顆電晶體,用來放大聲音的信號


線路仍然非常簡單


程式內容:

/*實驗五:聰明聲控魔法車一*/
#include <AT89x051.h>
void delay(unsigned char tmp); //宣告延時函數
void main(void)    //主程式開始
{
 P3_0=1;     //啟始輸入功能
 P1_2=0;     //關閉繼電器
 while(1)   //無限循環
 {      
  P1_5=~P1_2;  //LED顯示繼電器狀態
  while(P3_0==0)  //當有聲音時
  {
      P1_2=~P1_2;  //繼電器 on-off 切換
      delay(10);    //等待一段時間
  }
 }
}
void delay(unsigned char tmp) //延時函數
{                    //改變參數大小,可調整時間
  unsigned char i,j;     //宣告使用到的變數
  i=tmp;      //把呼叫程式式中的參數100指定給變數i
  while(i)     //只要i不為0,
 {           //就執行{...}中的指令
  i--;     //把i值減1
  j=255;    // <-+
  while(j)     //    |
  {         // 用j值讓程式執行256次的迴圈,到延時效果
         j--;     //  |
   }         // <-+
 }
}


編譯好的程式在這裡
頁: [1]
查看完整版本: 單晶片魔法車05-聰明聲控車(一)