智能尋跡機(jī)器人實(shí)驗(yàn)指導(dǎo)書_第1頁
智能尋跡機(jī)器人實(shí)驗(yàn)指導(dǎo)書_第2頁
智能尋跡機(jī)器人實(shí)驗(yàn)指導(dǎo)書_第3頁
智能尋跡機(jī)器人實(shí)驗(yàn)指導(dǎo)書_第4頁
智能尋跡機(jī)器人實(shí)驗(yàn)指導(dǎo)書_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、 益芯科技讓您在興趣中學(xué)習(xí),在運(yùn)用中掌握,在掌握中應(yīng)用。簡 介 單片機(jī)益智系列智能尋跡機(jī)器人是由益芯科技為科教方便而研發(fā)設(shè)計(jì)。根據(jù)現(xiàn)代學(xué)校對嵌入式系統(tǒng)開發(fā)的需求。依據(jù)提高學(xué)生實(shí)際動(dòng)手操作能力和思考能力,以加強(qiáng)學(xué)生對現(xiàn)實(shí)生活中嵌入式系統(tǒng)的應(yīng)用為參照。智能尋跡機(jī)器人全新的設(shè)計(jì)模式,良好的電路設(shè)計(jì),一體化的機(jī)電組合,智趣的系統(tǒng)開發(fā),更是成為加強(qiáng)學(xué)生學(xué)習(xí)興趣的總動(dòng)源。 智能尋跡機(jī)器人采用現(xiàn)在較為流行的8位單片機(jī)作為系統(tǒng)大腦。以8051系列家族中的AT89S51/AT89S52為主芯片。40腳的DIP封裝使它擁有32個(gè)完全I(xiàn)O(GPIO通用輸入輸出)端口,通過對這些端口加以信號輸入電路,控制電路,執(zhí)行電

2、路共同完成尋跡機(jī)器人。P0.0,P0.1,P0.2,P0.3分別通過LG9110電機(jī)驅(qū)動(dòng)來驅(qū)動(dòng)電機(jī)1和電機(jī)2。由電機(jī)的正轉(zhuǎn)與反轉(zhuǎn)來完成機(jī)器人的前進(jìn),后退,左轉(zhuǎn),右轉(zhuǎn),遇障礙物繞行,避懸崖等基本動(dòng)作。在機(jī)器人前進(jìn)時(shí)如果前方有障礙物,由紅外發(fā)射管發(fā)射的紅外信號被反射給紅外接收管,紅外接管將此信號經(jīng)過P3.7傳送入AT89S52中,主芯片通過內(nèi)部的代碼進(jìn)行機(jī)器人的繞障礙物操作,同時(shí)主芯片將P3.7的信號狀態(tài)通過P2.5的LED指示燈顯示出來。機(jī)器人行走時(shí)會通過P3.5與P3.6的紅外接收探頭來進(jìn)行檢測。 當(dāng)走到懸崖處時(shí),P3.5或P3.6將收到一個(gè)電平信號,此電平信號將通過相應(yīng)端口傳送入主芯片中,主

3、芯片通過內(nèi)部代碼完成機(jī)器人的避懸崖操作。同時(shí)P3.5與P3.6的信號狀態(tài)將通過P2.6/P2.7顯示出來。在機(jī)器人的左轉(zhuǎn),右轉(zhuǎn),后退的過程,可以通過觀看以P2.0/P0.7為指示燈的運(yùn)行狀態(tài)。P0.4為機(jī)器人的聲控檢測端口,在運(yùn)行為前進(jìn)狀態(tài)時(shí),可以能過聲控(如拍手聲)來控制它的運(yùn)行與停止。P0.6為機(jī)器人的聲音輸出端。在機(jī)器人遇到障礙物時(shí)。進(jìn)行繞障礙物與避懸崖時(shí)可以通過此端口控制蜂鳴器發(fā)出報(bào)警聲。當(dāng)為白天或黑夜時(shí)可以通過P0.5端口中的光敏電阻來進(jìn)行判斷,以方便完成機(jī)器人夜間自動(dòng)照明等功能。兩個(gè)按鍵以查詢/中斷兩種不同的方式來展現(xiàn)按鍵操作。你可以按下S1鍵來進(jìn)行機(jī)器的停止。再按下S2鍵來進(jìn)行機(jī)

4、器人的運(yùn)行。這個(gè)按鍵的信息分別被P3.2,P3.4接收到。IR1為紅外遙控接收器,這就為機(jī)器人進(jìn)行遠(yuǎn)程遙控創(chuàng)造了可能。這個(gè)紅外遙控接收頭接收到紅外信號時(shí)將信號經(jīng)過P3.3送入到主芯片,主芯片對其進(jìn)行解密后以不同的方式對機(jī)器人進(jìn)行控制。同時(shí)將用戶的按鍵信息通過P2端口上LED數(shù)碼管顯示出來。P3.0、P3.l中COM端口的加入,讓你完全可以用電腦對其進(jìn)行控制。你可以通過對串口發(fā)送數(shù)據(jù),數(shù)據(jù)會被顯示到LED數(shù)碼管中,并讓機(jī)器人執(zhí)行相應(yīng)的功能。電腦的串口軟件要求波特率為9600。8位數(shù)據(jù)位,這時(shí)你就可以快樂的用電腦來對它進(jìn)行你的完全控制了。 EXKJ-ZN02功能的組合多樣,使得學(xué)生可以充分發(fā)揮自主

5、能力,制作出不同的機(jī)器人。它為學(xué)校進(jìn)行機(jī)器人競賽和畢業(yè)項(xiàng)目設(shè)計(jì)建立了實(shí)物平臺,是學(xué)校教師授課變得更輕松有趣。同時(shí)也能改變學(xué)生學(xué)習(xí)模式和激發(fā)學(xué)習(xí)興趣。更是作為驗(yàn)證學(xué)生學(xué)習(xí)效果的有力工具。良好的電路板設(shè)計(jì),讓學(xué)生制作變得方便容易,其大大提高了學(xué)生的制作成功率。提高了學(xué)生對電子電路的興趣,更是教學(xué)過程中不可或缺的教具。 實(shí)驗(yàn)一 程序狀態(tài)指示燈演示一、 實(shí)驗(yàn)簡介:本程序重點(diǎn)演示了一個(gè)最簡程序的基本結(jié)構(gòu),它從順序、判斷、循環(huán)的形式表現(xiàn)程序的基本結(jié)構(gòu),此程序通過閃燈不斷的閃動(dòng),及閃燈閃動(dòng)的快慢來表示程序不不同工作狀態(tài)。它也是常數(shù)字設(shè)備中進(jìn)行狀態(tài)表示的方法之一(例:網(wǎng)卡)。二、 實(shí)驗(yàn)原理圖:三、 實(shí)現(xiàn)代碼:

6、/=/實(shí)驗(yàn)名稱:程序狀態(tài)指示燈演示程序 / 開發(fā)日期: 2021/01/19 / 修改日期: / 程序 guojun 郵箱:GuoGuoExkj / 開發(fā)商:益芯科技技術(shù)部 / 程序備注: 此程序僅為表現(xiàn)本機(jī)功能而演示用,當(dāng)用作實(shí)際工程時(shí)請慎用. / 特別聲明: 此程序可作研究之用,但引用,轉(zhuǎn)載,使用請注明出處. /=/#include <AT89x51.h> /包含頭文件#define LED P1 /宏定義顯示端口號void Delay(unsigned int DelayTime) /定義可變延時(shí)函數(shù) while(DelayTime-); /延時(shí)函數(shù)進(jìn)入倒計(jì)時(shí)void mai

7、n() /程序主函數(shù)碼 unsigned int CountData=0; /定義一個(gè)整形變量,用于閃動(dòng)次數(shù)+ while(1) /主程序循環(huán)體開始 if(CountData<30) /判斷閃動(dòng)次數(shù)是否位于0-30之間 Delay(60000); /用60000作為基數(shù)開始延時(shí)函數(shù) else if(CountData<60) /判斷閃動(dòng)次數(shù)是否位于30-60之間 Delay(30000); /用30000作為基數(shù)開始延時(shí)函數(shù) else if(CountData<90) /判斷閃動(dòng)次數(shù)是否位于60-90之間 Delay(10000); /用10000作為基數(shù)開始延時(shí)函數(shù) els

8、e if(CountData<120) /判斷閃動(dòng)次數(shù)是否位于90-120之間 CountData=0; /僅進(jìn)行一次操作即可退出. CountData=CountData+1; /閃動(dòng)次數(shù)基數(shù)+ LED=LED; /將顯示端口進(jìn)行取反操作 四、 運(yùn)行效果:程序運(yùn)行效果為:開機(jī)后程序以慢速閃動(dòng),一段時(shí)間后速度開始加快,再等待時(shí)間,閃燈的速度達(dá)到最快,之后一段時(shí)間后,閃動(dòng)將回到開始狀態(tài)。實(shí)驗(yàn)二 流水燈演示一、 實(shí)驗(yàn)簡介:本程序全面的表現(xiàn)了子程序的用法,它從對幾個(gè)子程序的操作,顯示不同的流燈技術(shù),流水燈的不同需要不同的表現(xiàn)的形式,而這里主要介紹了移位操作和內(nèi)部數(shù)據(jù)存儲及讀入操作。延時(shí)函數(shù)采用

9、可重入標(biāo)志,可進(jìn)行函數(shù)的遞歸調(diào)用。二、 實(shí)驗(yàn)原理圖:三、 實(shí)現(xiàn)代碼:/=/ 開發(fā)日期: 2021/01/20 / 修改日期: / 程序 guojun 郵箱:GuoGuoExkj / 開發(fā)商:益芯科技技術(shù)部 / 程序備注: 此程序僅為表現(xiàn)本機(jī)功能而演示用,當(dāng)用作實(shí)際工程時(shí)請慎用. / 特別聲明: 此程序可作研究之用,但引用,轉(zhuǎn)載,使用請注明出處. /=/#include <AT89x51.h> /包含頭文件#define Led P1 /定義顯示端口號unsigned int code BToM=0x7E,0x3C,0x18,0x00; /定義由兩邊到中間顯示數(shù)據(jù)unsigned i

10、nt code MToB=0xE7,0xC3,0x81,0x00;/定義由中間到兩邊顯示數(shù)據(jù)void Delay() reentrant /定義可重入的延時(shí)函數(shù) unsigned int DelayTime=10000; /定義延時(shí)時(shí)間基數(shù) while(DelayTime-); /程序開始延時(shí)開始void LeftToRight() /定義從左邊到右邊顯示函數(shù)unsigned char TempCount=0; /定義顯示次數(shù)變量 Led=0xFE; /定義初步顯示數(shù)據(jù) for(TempCount=0;TempCount<8;TempCount+) /通過循環(huán)進(jìn)行數(shù)據(jù)顯示 Delay()

11、; /延時(shí),用在每次移動(dòng)數(shù)據(jù)開始處 Led=Led<<1; /由右邊向左邊移動(dòng)數(shù)據(jù) return; /空返回語句,表明此子程序的結(jié)束.void RightToLeft() /定義從右邊到左邊顯示函數(shù) unsigned char TempCount=0; /定義顯示次數(shù)變量 Led=0x7F; /定義初步顯示數(shù)據(jù) for(TempCount=0;TempCount<8;TempCount+) /通過循環(huán)進(jìn)行數(shù)據(jù)顯示 Delay(); /延時(shí),用在每次移動(dòng)數(shù)據(jù)開始處 Led=Led>>1; /由左邊向右移動(dòng)數(shù)據(jù) return; /空返語句,表明此子程序的結(jié)束.void

12、 BothToMid() /定義由兩邊到中間顯示子程序 unsigned char TempCount=0; /定義臨時(shí)次數(shù)變量 Led=0xFF; for(TempCount=0;TempCount<5;TempCount+) /通過循環(huán)依次進(jìn)行次數(shù)運(yùn)行 Delay(); /延時(shí),在每次運(yùn)行前. Led=BToMTempCount; /讀入當(dāng)次顯示數(shù)據(jù). return; /空返回,表明此子程序的結(jié)束.void MidToBoth() /定義由中間到兩邊子程序unsigned char TempCount=0; /定義臨時(shí)次數(shù)變量 Led=0xFF; for(TempCount=0;Te

13、mpCount<5;TempCount+) /通過循環(huán)進(jìn)行數(shù)據(jù)顯示 Delay(); /延時(shí),在每次數(shù)據(jù)顯示前. Led=MToBTempCount; /讀入當(dāng)次顯示數(shù)據(jù). return; /空返回,表明此次子程序的結(jié)束.void main() /主程序入口處. while(1) /無窮循環(huán)開始. LeftToRight(); /從左到右進(jìn)行顯示 RightToLeft(); /從右到左進(jìn)行顯示 BothToMid(); /由兩邊到中間進(jìn)行顯示 MidToBoth(); /由中間到兩邊進(jìn)行顯示 四、 運(yùn)行效果:程序運(yùn)行效果為:開機(jī)后,指示燈向從左向右依次點(diǎn)亮,從右向左依次點(diǎn)亮,由兩邊向中

14、間依次點(diǎn)亮,由中間向兩邊依次點(diǎn)亮。實(shí)驗(yàn)三 數(shù)碼管演示一、 實(shí)驗(yàn)簡介:本程序通過對端口的置數(shù)操作,展示了數(shù)碼管的應(yīng)用技術(shù),數(shù)碼管是將發(fā)光二極管通過一定的形式封裝在一個(gè)數(shù)字的外殼中,可以通過不同的點(diǎn)亮方式來顯不同的數(shù)字符號。 二、 實(shí)驗(yàn)原理圖:三、 實(shí)現(xiàn)代碼:/=/ 開發(fā)日期: 2021/01/26 / 修改日期: / 程序 guojun 郵箱:GuoGuoExkj/ 開發(fā)商:益芯科技技術(shù)部 / 程序備注: 此程序僅為表現(xiàn)本機(jī)功能而演示用,當(dāng)用作實(shí)際工程時(shí)請慎用. / 特別聲明: 此程序可作研究之用,但引用,轉(zhuǎn)載,使用請注明出處. /=/#include <AT89x51.h> /包含

15、頭文件typedef unsigned int uint; /重命名整數(shù)類型關(guān)鍵字typedef unsigned char uchar; /重命名字符類型關(guān)鍵字uchar code LedShowData=0x9F,0x25,0x0D,0x99,0x49, /定義固定存儲顯示字符 0x41,0x1F,0x01,0x19,0x03;/1,2,3,4,5,6,7,8,9,0void Delay() /定義延時(shí)函數(shù) uint TempTime=2021 0; /定義延時(shí)時(shí)間變量 while(TempTime-); /通過循環(huán)進(jìn)行延時(shí) void main() /主程序開始main() uchar C

16、ountData=0; /定義計(jì)數(shù)變量 while(1) /主程序無限循環(huán)開始 P2=LedShowDataCountData; /P2端口讀入顯示數(shù)據(jù) CountData+; /計(jì)數(shù)變量+(加加) if(CountData>=10) /判斷是否超出計(jì)數(shù)范圍 CountData=0; /重新置零 Delay(); /延時(shí)函數(shù)被調(diào)用 四、 運(yùn)行效果:程序運(yùn)行效果為:程序下載后,數(shù)碼管將從1-9依次顯示,最后將顯示數(shù)字0. 實(shí)驗(yàn)四 數(shù)碼管及跑馬燈演示一、 實(shí)驗(yàn)簡介:本程序主要是將數(shù)碼管及跑馬燈放在一起顯示,它主要說明了,如何將在單系中運(yùn)行多個(gè)看似并行運(yùn)行的子系統(tǒng).本程序在此將跑馬燈子程序放入

17、到一個(gè)頭文件中,對于一個(gè)大的工程這樣將有益于程序文件的管理。二、 實(shí)驗(yàn)原理圖:三、 實(shí)現(xiàn)代碼:/=/ 開發(fā)日期:2021/01/26 / 修改日期: / 程序 guojun 郵箱:GuoGuoExkj / 開發(fā)商:益芯科技技術(shù)部 / 程序備注:此程序僅為表現(xiàn)本機(jī)功能而演示用,當(dāng)用作實(shí)際工程時(shí)請慎用。 / 特別聲明:此程序可作研究之用,但引用、轉(zhuǎn)載、使用請注明出處。 /=/#include <AT89x51.h> /包含端口定義頭文件unsigned char code LedShowData=0x9F,0x25,0x0D,0x99,0x49,/定義數(shù)碼管顯示字符 0x41,0x1F

18、,0x01,0x19,0x03;/1,2,3,4,5,6,7,8,9,0#define Led P1 /定義顯示端口unsigned char CountData=0; /定義數(shù)碼管計(jì)數(shù)器unsigned int code BToM=0x7E,0x3C,0x18,0x00; /定義由兩邊到中間顯示數(shù)據(jù)unsigned int code MToB=0xE7,0xC3,0x81,0x00; /定義由中間到兩邊顯示數(shù)據(jù)void Delay() reentrant /定義可重入延時(shí)函數(shù) unsigned int DelayTime=10000; /定義延時(shí)時(shí)間變量 while(DelayTime-);

19、 /通過循環(huán)進(jìn)行延時(shí) P2=LedShowDataCountData; /置數(shù)碼管顯示數(shù)據(jù)到P2端口 CountData+; /數(shù)碼管地址計(jì)數(shù)器+(加1) if(CountData>=10) /判斷計(jì)數(shù)器累計(jì)數(shù)值 CountData=0; /計(jì)數(shù)器清零 #include <跑馬燈.h> /包含顯示方式頭文件 void main() /主程序入口 while(1) /無窮循環(huán)開始. LeftToRight(); /從左到右進(jìn)行顯示 RightToLeft(); /從右到左進(jìn)行顯示 BothToMid(); /由兩邊到中間進(jìn)行顯示 MidToBoth(); /由中間到兩邊進(jìn)行顯示

20、 /跑馬燈.h/void LeftToRight() /定義從左邊到右邊顯示函數(shù)unsigned char TempCount=0; /定義顯示次數(shù)變量 Led=0xFE; /定義初步顯示數(shù)據(jù) for(TempCount=0;TempCount<8;TempCount+) /通過循環(huán)進(jìn)行數(shù)據(jù)顯示 Delay(); /延時(shí),用在每次移動(dòng)數(shù)據(jù)開始處 Led=Led<<1; /由右邊向左邊移動(dòng)數(shù)據(jù) return; /空返回語句,表明此子程序的結(jié)束.void RightToLeft() /定義從右邊到左邊顯示函數(shù) unsigned char TempCount=0; /定義顯示次數(shù)變

21、量 Led=0x7F; /定義初步顯示數(shù)據(jù) for(TempCount=0;TempCount<8;TempCount+) /通過循環(huán)進(jìn)行數(shù)據(jù)顯示 Delay(); /延時(shí),用在每次移動(dòng)數(shù)據(jù)開始處 Led=Led>>1; /由左邊向右移動(dòng)數(shù)據(jù) return; /空返語句,表明此子程序的結(jié)束.void BothToMid() /定義由兩邊到中間顯示子程序 unsigned char TempCount=0; /定義臨時(shí)次數(shù)變量 Led=0xFF; for(TempCount=0;TempCount<5;TempCount+) /通過循環(huán)依次進(jìn)行次數(shù)運(yùn)行 Delay();

22、/延時(shí),在每次運(yùn)行前. Led=BToMTempCount; /讀入當(dāng)次顯示數(shù)據(jù). return; /空返回,表明此子程序的結(jié)束.void MidToBoth() /定義由中間到兩邊子程序unsigned char TempCount=0; /定義臨時(shí)次數(shù)變量 Led=0xFF; for(TempCount=0;TempCount<5;TempCount+) /通過循環(huán)進(jìn)行數(shù)據(jù)顯示 Delay(); /延時(shí),在每次數(shù)據(jù)顯示前. Led=MToBTempCount; /讀入當(dāng)次顯示數(shù)據(jù). return; /空返回,表明此次子程序的結(jié)束.四、 運(yùn)行效果:本程序運(yùn)行效果:本程序運(yùn)行后,可以看到

23、跑馬燈按,從左到右,從右到左,從兩邊到中間,從中間到兩邊將依次運(yùn)行。并且在運(yùn)行過程中,可以看到數(shù)碼管依次從1-9-0的順序顯示數(shù)字符號。 實(shí)驗(yàn)五 按鍵中斷查詢演示一、 實(shí)驗(yàn)簡介:本程序通過兩個(gè)按鍵對數(shù)碼管進(jìn)行操作,分別向用戶演示了查詢與中斷的操作方式,中斷中應(yīng)用了對按鍵進(jìn)行查詢的方法來判斷按鍵的鍵值,查詢按鍵方法中則采用了鍵盤延遲的方法來消除按鍵重復(fù)輸入。 二、 實(shí)驗(yàn)原理圖:三、 實(shí)現(xiàn)代碼:/=/ 開發(fā)日期: 2021/01/27 編寫按鍵中斷與查詢的最初代碼 / 修改日期: / 程序 guojun 郵箱:GuoGuoExkj/ 開發(fā)商:益芯科技技術(shù)部 / 程序備注: 此程序僅為表現(xiàn)本機(jī)功能而

24、演示用,當(dāng)用作實(shí)際工程時(shí)請慎用. / 特別聲明: 此程序可作研究之用,但引用,轉(zhuǎn)載,使用請注明出處. /=/#include <at89x51.h> /包含S51地址頭文件typedef unsigned char uchar; /重定義無符號字符型typedef unsigned int uint; /重定義無符號整型sbit S1=P32; /定義S1變量sbit S2=P34; /定義S2變量uchar DataCount=0; /定義全局計(jì)數(shù)器uchar code LedShowData=0x9F,0x25,0x0D,0x99,0x49, /定義固定存儲顯示字符 0x41,

25、0x1F,0x01,0x19,0x03;/1,2,3,4,5,6,7,8,9,0void KeyDelay() /定義鍵盤防抖子程序 uint KeyTime=2021 0; /定義防抖時(shí)間變量 while(KeyTime-); /防抖延時(shí)開始 return;void S1_Break() interrupt 0 /定義S1(INT0)外部中斷0while(0=S1); /判斷S1按鍵鍵值DataCount-; /計(jì)數(shù)器數(shù)值減1if(DataCount>9) /判斷計(jì)數(shù)器是否到最小值 DataCount=9; /顯示數(shù)字0return; void main() /主程序開始 ET0=1;

26、 /設(shè)定外部中斷觸發(fā)方式(1->低電平觸發(fā)) EX0=1; /開啟外部中斷0 EA=1; /開記總中斷 while(1) /程序主循環(huán) if(0=S2) /通過查詢判斷鍵值 KeyDelay(); /鍵盤防抖動(dòng)開延時(shí)子程序開始 DataCount+; /計(jì)數(shù)器加1 if(DataCount>9) /判斷當(dāng)前計(jì)數(shù)器 DataCount=0; /將計(jì)數(shù)器置0 P2=LedShowDataDataCount; /通過端口顯示計(jì)數(shù)器數(shù)值 四、 運(yùn)行效果:程序運(yùn)行效果:開機(jī)后數(shù)碼管顯示數(shù)字"1",當(dāng)按S1不放時(shí),數(shù)碼管數(shù)字不變,,松開S1按鍵,數(shù)碼減1;按S2鍵不放時(shí),數(shù)

27、碼管數(shù)字會自動(dòng)加1。并且數(shù)字遵守從0-9循環(huán)操作。 實(shí)驗(yàn)六話筒聲音識別演示一、 實(shí)驗(yàn)簡介:本程序主要通過話筒對聲音信號進(jìn)行識別,由于本電路有效的去除雜波,所以僅能對響度較大的聲音進(jìn)行識別(例:拍手聲)。像正常的說話聲對本電路慮除,不會產(chǎn)生信息的輸入。話筒識別的加入,為我們建立了聲控平臺。二、 實(shí)驗(yàn)原理圖:三、 實(shí)現(xiàn)代碼:/=/ 開發(fā)日期: 2021/01/27 / 修改日期: / 程序 guojun 郵箱:GuoGuoExkj/ 開發(fā)商:益芯科技技術(shù)部 / 程序備注: 此程序僅為表現(xiàn)本機(jī)功能而演示用,當(dāng)用作實(shí)際工程時(shí)請慎用. / 特別聲明: 此程序可作研究之用,但引用,轉(zhuǎn)載,使用請注明出處.

28、/=/#include <at89x51.h> /包含51單片機(jī)相關(guān)頭文件sbit LeftLed=P20; /定義前方左側(cè)指示燈端口sbit RightLed=P07; /定義前方右側(cè)指示燈端口sbit B1=P04; /定義話筒輸入端口void Delay() /定義去除雜音延時(shí)子程序 unsigned int DelayTime=1000; /定義去除雜音變量 while(DelayTime-); /延時(shí)循環(huán)開始 return;void main() /主程序入口 LeftLed=0; /前方左側(cè)指示燈亮 RightLed=0; /前方右側(cè)批示燈亮 while(1) /程序主

29、循環(huán) if(0=B1) /判斷是否有聲音輸入 while(0=B1); /等待聲音信號結(jié)束 Delay(); /去除多余雜音 LeftLed=!LeftLed; /前方左側(cè)指示燈取反 RightLed=!RightLed; /前方右側(cè)指示燈取反 四、 運(yùn)行效果:程序運(yùn)行效果:本程序開機(jī)后,前方兩側(cè)的指示燈點(diǎn)亮,拍一下手后,前方指示燈關(guān)閉。再一次進(jìn)行拍手,指示燈又一次被點(diǎn)亮。實(shí)驗(yàn)七 光敏電阻與蜂鳴器演示一、 實(shí)驗(yàn)簡介:本程序講述了光敏電阻的使用方法。當(dāng)處于光暗時(shí),光敏電阻導(dǎo)通,將信號傳入到單片機(jī),單片機(jī)將控制蜂鳴器按一定的頻率響亮,并且前方的指示燈也開始閃閃亮。通過對光敏電阻信號的接收,從而實(shí)現(xiàn)

30、了夜間自動(dòng)照明的功能。 二、 實(shí)驗(yàn)原理圖:三、 實(shí)現(xiàn)代碼:/=/ 開發(fā)日期: 2021/01/27 編寫光敏電阻與蜂鳴器演示程序最初代碼 / 修改日期: / 程序 guojun 郵箱:GuoGuoExkj/ 開發(fā)商:益芯科技技術(shù)部 / 程序備注: 此程序僅為表現(xiàn)本機(jī)功能而演示用,當(dāng)用作實(shí)際工程時(shí)請慎用. / 特別聲明: 此程序可作研究之用,但引用,轉(zhuǎn)載,使用請注明出處. /=/#include <at89x51.h> /包含51單片機(jī)相關(guān)的頭文件sbit RL1=P05; /定義光敏電阻接收端口sbit SB1=P06; /定義蜂鳴器響鈴端口sbit LeftLed=P20; /定

31、義前方左側(cè)指示燈端口sbit RightLed=P07; /定義前方右側(cè)指示燈端口void Delay() /定義蜂鳴器頻率響亮子程序 unsigned int DelayTime=2021 0; /定義頻率定時(shí)變量 while(DelayTime-); /頻率定時(shí)循環(huán)開時(shí) return;void main() /主程序入口 while(1) /程序主循環(huán) if(1=RL1) /判斷光敏的現(xiàn)在狀態(tài)(有光0,無光1) Delay(); /延時(shí)子程序開時(shí) SB1=!SB1; /蜂鳴器響亮 LeftLed=!LeftLed; /前方左側(cè)指示燈閃亮 RightLed=!RightLed; /前方右側(cè)指示燈閃亮 else SB1=1; /將蜂鳴器關(guān)閉 LeftLed=1; /前方左側(cè)指示燈關(guān)閉 RightLed=1; /前方右側(cè)指示燈關(guān)閉 四、 運(yùn)行效果:程序運(yùn)行效果:打開電源開關(guān),如果本機(jī)在有光照的情況下,將無任何的反應(yīng),這時(shí)將機(jī)子移動(dòng)到較

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論