圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 5740|回復: 0

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

[複製鏈接]
magiccar 發表於 2010-2-2 21:11 | 顯示全部樓層 |閱讀模式
前幾項的實驗讓我們漸漸瞭解:透過程式的規劃可以讓電路簡化,而運用不同的指令又可以讓程式簡化,所以熟悉指令的用法可以說是學習程式設計的捷逕,這是同學一定要知道的喔!

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

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

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

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

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

線路仍然非常簡單
IMGP7853.JPG

程式內容:

  1. /*實驗五:聰明聲控魔法車一*/
  2. #include <AT89x051.h>
  3. void delay(unsigned char tmp); //宣告延時函數
  4. void main(void)    //主程式開始
  5. {
  6.  P3_0=1;     //啟始輸入功能
  7.  P1_2=0;     //關閉繼電器
  8.  while(1)     //無限循環
  9.  {      
  10.     P1_5=~P1_2;    //LED顯示繼電器狀態
  11.     while(P3_0==0)  //當有聲音時
  12.     {
  13.       P1_2=~P1_2;  //繼電器 on-off 切換
  14.       delay(10);    //等待一段時間
  15.     }
  16.  }
  17. }
  18. void delay(unsigned char tmp) //延時函數
  19. {                    //改變參數大小,可調整時間
  20.   unsigned char i,j;       //宣告使用到的變數
  21.   i=tmp;        //把呼叫程式式中的參數100指定給變數i
  22.   while(i)       //只要i不為0,
  23.  {           //就執行{...}中的指令
  24.     i--;       //把i值減1
  25.     j=255;      // <-+
  26.     while(j)     //    |
  27.     {         // 用j值讓程式執行256次的迴圈,到延時效果
  28.          j--;     //    |
  29.    }         // <-+
  30.  }
  31. }
複製代碼


編譯好的程式在這裡
Mic_1.hex (191 Bytes, 下載次數: 1, 售價: 30 個銅錢)
您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

QQ|Archiver|手機版|小黑屋|圓創力科技有限公司 IOP Robotic Technology Co.,Ltd Tel: 07-3924582 Fax: 07-3924001

GMT+8, 2024-11-23 18:51 , Processed in 0.027016 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回復 返回頂部 返回列表