聲控小車
一、實(shí)驗(yàn)?zāi)康?br>本實(shí)驗(yàn)利用聲音檢測電路檢測聲音,當(dāng)有較大聲音時產(chǎn)生中斷信號,控制小車的起、
停。通過實(shí)驗(yàn)要求掌握以下知識點(diǎn):
1.掌握與外中斷相關(guān)的特殊功能寄存器的設(shè)置方法。
2.了解聲音檢測電路的電路原理和使用方法。
3.掌握查詢方式和中斷方式的卻別。
二、實(shí)驗(yàn)預(yù)備知識
1.程序中有多個中斷的程序編寫格式
在單片機(jī)的實(shí)際運(yùn)用中,很多情況下在一個程序中會用到多個中斷。下面以同時使用
兩個外部中斷為例,說明多中斷的程序結(jié)構(gòu)。
ORG 0000H
SJMP MAIN
ORG 0003H ;INT1 中斷入口
SJMP INT1IN
ORG 0013H ;定時器T0 中斷入口
SJMP T1 IN
ORG 0030H
MAIN: MOV IE ,# ;允許T1 、INT1 中斷
MOV IP ,# ;設(shè)置中斷優(yōu)先級
……
……
INT0IN:…… ;INT1 中斷服務(wù)程序
……
RETI
INT1IN:…… ;T1 中斷服務(wù)程序
……
RETI
END
程序中如果需要更多的中斷,可以按照以上程序的方法添加即可。但是要考慮如果兩
個(或多個)中斷優(yōu)先級的問題,可以通過設(shè)置特殊功能寄存器IP 來設(shè)置各中斷的優(yōu)先級。
2.聲音檢測電路使用
主電路板上的聲音檢測電路在沒有檢測到聲音時其輸出端為高電平,當(dāng)麥克風(fēng)接收到
一定強(qiáng)度的聲音時其輸出端變?yōu)榈碗娖?。用跳線冒短接JP17 的2、3 腳就可以把聲音檢測
電路的輸出接到單片機(jī)的INT0(P3.2)端。
調(diào)節(jié)RP1 電位器可以調(diào)節(jié)聲音檢測電路的靈敏度,環(huán)境噪聲比較大是,應(yīng)降低靈敏度,
在環(huán)境噪聲較小時可以提高靈敏度。
3.小車的電機(jī)控制
小車由兩個電機(jī)分別驅(qū)動左右兩面的車輪轉(zhuǎn)動。要實(shí)現(xiàn)小車原地順時針旋轉(zhuǎn),需要左
面電機(jī)正轉(zhuǎn),右面電機(jī)反轉(zhuǎn)。如果右面電機(jī)正轉(zhuǎn),而左面電機(jī)反轉(zhuǎn),則小車逆時針轉(zhuǎn)動。
小車電機(jī)的正反轉(zhuǎn)由P1.4~P1.7 控制,對它們進(jìn)行操作就可以實(shí)現(xiàn)電機(jī)的控制,例如:要
實(shí)現(xiàn)左電機(jī)正轉(zhuǎn)和右電機(jī)反轉(zhuǎn)需執(zhí)行下列程序:
SETB P1.5
SETB P1.6
LCALL DELAY1 ;延時0.5 秒
CLR P1.4
CLR P1.7
由于電機(jī)是電感性負(fù)載,并且有機(jī)械慣性,因此在電機(jī)運(yùn)轉(zhuǎn)方向變化時需要過度時間,
以上程序段中的0.5 秒延時就是電機(jī)方向轉(zhuǎn)換的過度時間。
三、硬件連接
把電路中的JP17 用跳線冒短接。
四、實(shí)驗(yàn)內(nèi)容
1.根據(jù)硬件連接繪制電路圖
2.根據(jù)現(xiàn)場環(huán)境,調(diào)整小車上聲音檢測電路的靈敏度。
3.編程使小車原地旋轉(zhuǎn),順時針轉(zhuǎn)5 秒反時針轉(zhuǎn)5 秒,通過聲音檢測電路產(chǎn)生中斷
使小車停止。程序流程圖如下:
a 主程序 b 中斷程序
圖3-13 程序結(jié)構(gòu)框圖
在主程序中的初始化程序要對中斷進(jìn)行設(shè)置,要求把中斷觸發(fā)方式設(shè)置成下降沿觸發(fā)
方式,并設(shè)置堆棧指針的值。中斷程序中,執(zhí)行電機(jī)停止指令后,如果運(yùn)行RETI 指令返
回主程序,則電機(jī)又會起動,所以執(zhí)行電機(jī)停止程序后應(yīng)停留在中斷程序中不返回,但是必須要寫RETI 語句。
3.采用查詢方式實(shí)現(xiàn)以上功能,對比二者的不同,并分析原因。查詢方式的程序如
下:
ORG 0000H
LOOP: SETB P1.5 ;順時針轉(zhuǎn)動
SETB P1.6
LCALL DELAY1 ;延時0.5 秒
CLR P1.4
CLR P1.7
LCALL DELAY ;延時5 秒
JB P3.2 ,NEXT1 ;判斷是否有停止信號
SJMP STOP
SETB P1.4 ;反時針轉(zhuǎn)動
SETB P1.7
LCALL DELAY1 ;延時0.5 秒
CLR P1.5
CLR P1.6
LCALL DELAY ;延時5 秒
JB P3.2 ,NEXT1
SJMP STOP
NEXT1: SJMP LOOP
STOP: MOV P1,#0FFH ;中斷服務(wù)程序,停止小車的運(yùn)動。
SJMP $
RETI
DELAY: ;延時5 秒
DELAY1: ;延時0.5 秒
END
五、擴(kuò)展內(nèi)容
1.編寫程序?qū)崿F(xiàn)以下功能:小車平時靜止不動,D2 以每秒一次的速度閃爍,當(dāng)對著
小車上的麥克風(fēng)拍一下手時,小車向前運(yùn)行3s。
2.分析如果中斷后不停留在中斷程序,而返回主程序,會出現(xiàn)什么現(xiàn)象。
六、思考題
1.根據(jù)試驗(yàn)現(xiàn)象分析查詢方式和中斷方式為什么會出現(xiàn)不同的現(xiàn)象?
2.分析如果中斷后不停留在中斷程序,而返回主程序,會出現(xiàn)什么現(xiàn)象?
評論
查看更多