機械電子工程專業機電一體化方向專業設計指導書_第1頁
機械電子工程專業機電一體化方向專業設計指導書_第2頁
機械電子工程專業機電一體化方向專業設計指導書_第3頁
機械電子工程專業機電一體化方向專業設計指導書_第4頁
機械電子工程專業機電一體化方向專業設計指導書_第5頁
已閱讀5頁,還剩30頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

(建筑施工;為;米;千米;設計)機械電子工程專業機電一體化方向專業設計指導書機電一體化方向專業設計指導書天津理工大學機械工程學院機電工程系2013-6-24目錄一、實踐目的..............................................................-3-二、實踐目標..............................................................-3-三、實踐學時..............................................................-3-四、實踐地點..............................................................-3-五、實踐要求..............................................................-3-六、組織形式..............................................................-3-七、實踐內容..............................................................-4-八、進度安排..............................................................-4-九、考核依據..............................................................-4-十、實驗設備..............................................................-4-十一、注意事項............................................................-5-附錄一:焊接工具清單......................................................-5-附件二:單片智能機尋跡機器人材料清單......................................-6-附錄三:萬用表的使用......................................................-7-附件四:電烙鐵的使用方法..................................................-8-附件五:智能尋跡機器人介紹................................................-8-附件六:程序狀態指示燈演示驗證程序.......................................-10-附件七:流水燈演示驗證程序...............................................-12-附件八:數碼管演示驗證程序...............................................-14-附件九:數碼管及跑馬燈演示驗證程序.......................................-16-附件十:按鍵中斷查詢演示驗證程序.........................................-19-附件十一:話筒聲音識別演示驗證程序.......................................-21-附件十二:光敏電阻與蜂鳴器演示驗證程序...................................-23-附件十三:紅外反射與直流電機驅動演示驗證程序.............................-24-附件十四:串口通信程序演示驗證程序.......................................-28-實驗十五:綜合功能演示驗證程序...........................................-30-一、實踐目的在學習了電路、模擬電子技術、數字電子技術、微機原理及接口技術、測試技術與信號分析等專業先修課程的基礎上,進一步培養學生機電綜合應用技能,為后續的畢業設計打好基礎。二、實踐目標培養學生綜合應用所學知識來構建微機應用系統和實際動手能力,強化學生實踐能力,激發學生專業課的學習熱情。三、實踐學時3個集中教學周+3個分散教學周四、實踐地點地點:星期上午8:00—12:00下午2:00—4:00一二三四五*實驗室只對機電綜合實踐階段開放,綜合性設計性實驗采取分散式進行。五、實踐要求(1)完成專業設計說明書1份(不少于5000(2)組裝并焊接一個完整的智能尋跡機器人套件;(3)與該系統配套并編譯通過的軟件系統;(4)至少完成該系統的相關功能其中之一的:A.智能尋跡功能(可走黑線或白線)B.實現智能防撞功能C.實現遙控機器人基本動作功能D.實現聲控機器人基本動作功能六、組織形式每兩個人一組七、實踐內容(1)組裝智能尋跡機器人機械結構部分(2)完成單片機AT89S51/AT89S52系統硬件焊接與調試;(3(4)完成專業設計說明書(5)參加專業設計答辯(每組10分鐘陳述,回答問題5分鐘)八、進度安排周次工作內容第1周組裝機器人并熟悉控制過程,集中安排第2周焊接機器人并根據附錄程序進行測試,集中安排第3周實現基本功能設計,集中安排第4周綜合設計和調試階段,分散安排,每周安排一次答疑第5周綜合設計和調試階段,分散安排,每周安排一次答疑第6周撰寫設計說明書并準備答辯,答辯時間另定九、考核依據(1)專業設計說明書完整性、正確性(10%(2)機械結構部分美觀性、合理性(20%)(3)硬件系統,焊接完整、調試通過(20%(4)軟件系統,編譯通過、達到功能要求(20%(5)答辯及回答問題(20%)(6)其它拓展創新功能實現(10%)十、實驗設備(1)智能尋跡機器人電路部分一套(2)紅外遙控器一套(3)智能尋跡機器人實驗指導書一本(4)COM串口通信線一條(5)智能尋跡機器人機械部分一套(6)焊接工具一套(兩個組共用一套,清單見附件一)(7)萬用表及示波器。十一、注意事項(1)上電前測試電路板(萬用表測量電路電源兩端,檢查建筑施工;為;米;千米;否短路);(2)由于系統采用USB口供電,注意USB口使用安全,即USB口要有足夠的驅動力(經測試,一般的臺式機后面板輸出USB口能達到要求);(3)認真閱讀電烙鐵\萬用表等工具的使用注意事項;(4)在手冊中未明確規定的事項,應及時請示指導老師,否則造成儀器損壞要照價賠償,而因操不當引起的事故后果自負。附錄一:焊接工具清單序號名稱1工具箱2掛帶電筆3塑柄小一字改錐4塑柄小十字改錐5鑷子6美工刀76#尖嘴鉗86#偏口鉗9烙鐵架103#一字電工改錐113#電十字工改錐12萬用表(華誼830)13電烙鐵附件二:單片智能機尋跡機器人材料清單位號名稱備注位號名稱備注M1電機1接線座SIU1LED數碼管M2電機2接線座IR1紅外接收頭X1前端探測板接線RX110K排阻座DC電源接線座Z111.0592晶振

R115KIC1AT89S51

R2220IC2MAX232CPE

R3150KIC3L9110集成電路

R41MIC4L9110集成電路

R547KC110μF/16V

R64.7KC2104R7560C3104R8560C4104R9560C510μF/16V

R10560C610μF/16V

R11560C730PF

R12560C830PF

R13560C9104R14220C1010μF/16V

R1510KC1110μF/16V

R16560C1210μF/16V

R1710KC1310μF/16V

R18560D1~D8紅色發光二極管

R19560D9綠色發光二極管

R20560S1按鍵開關

R21560S2按鍵開關

R21560S3開關R22560COM19針串行端口R23560D1~D2LED紅色發光二極管前板用

R2410KV1紅外發射頭前板用

R25560V2紅外接收頭前板用

RL1光敏電阻V3紅外發射頭前板用

SB1蜂鳴器V4紅外接收頭前板用

B1話筒V5紅外接收頭前板用

R1220前板用V6紅外發射頭前板用

R2220前板用R3560前板用

R415K前板用R515K前板用

R6220前板用R7560前板用

R815K前板用COM數據線一條

M50462紅外遙控發射器一個V1~V28550V38050附錄三:萬用表的使用(1)測量電阻:先將表筆搭在一起短路,如果指針偏離零點,隨即調整“Ω”調零旋鈕,使指針恰好指到0。然后將兩根表筆分別接觸被測電阻(或電路)兩端,讀出指針在歐姆刻度線(第一條線)上的讀數,再乘以該擋標的數字.就建筑施工;為;米;千米;所測電阻的阻值。例如用R×100擋測量電阻,指針指在80,則所測得的電阻值為80×100=8K。由于”Ω”刻度線左部讀數較密,難于看準,所以測量時應選擇適當的歐姆擋。使指針在刻度線的中部或右部(即指針指示在量程的1/3~2/3擋,都應重新將兩根表筆短接,重新調整指針到零位,才能測準。(2)測量直流電壓:首先估計一下被測電壓的大小,然后將轉換開關撥至適當的V量程,將紅表筆接被測電壓“+”端,黑表筆接被測量電壓”-”端。然后根據該擋量程數字與標直流符號“DC-”刻度線(第二條線)上的指針所指數字,來讀出被測電壓的大小。如用V30伏擋測量,可以直接讀0V~300V的指示數值。如用V30伏擋測量,只須將刻度線上300這個數字去掉一個“0”,看成建筑施工;為;米;千米;30,再依次200、100等數字看成建筑施工;為;米;千米;20、10既可直接讀出指針指示數值。例如用V6伏擋測量直流電壓,指針指在15,則所測得電壓為1.5伏。(3)測量直流電流:先估計一下被測電流的大小,然后將轉換開關撥至合適的mA量程.再把萬用表串接在電路中,同時觀察標有直流符號“DC”的刻度線.如電流量程選在3mA擋,這時,應把表面刻度線上300的數字,去掉兩個“0”,看成3,又依次把200、100看成建筑施工;為;米;千米;2、1,這樣就可以讀出被測電流數值。例如用直流3mA擋測量直流電流,指針在100,則電流為1mA。(4)測量交流電壓:測交流電壓的方法與測量直流電壓相似,所不同的建筑施工;為;米;千米;因交流電沒有正、負之分,所以測量交流時,表筆也就不需分正、負。讀數方法與上述的測量直流電壓的讀法一樣,只建筑施工;為;米;千米;數字應看標有交流符號”AC”的刻度線上的指針位置。萬用表使用的注意事項:(1)在使用萬用表之前,應先進行“機械調零”,即在沒有被測電量時,使萬用表指針指在零電壓或零電流的位置上。(2)在使用萬用表過程中,不能用手去接觸表筆的金屬部分,這樣一方面可以保證測量的準確,另一方面也可以保證人身安全。(3)在測量某一電量時,不能在測量的同時換檔,尤其建筑施工;為;米;千米;在測量高電壓或大電流時,更應注意。否則,會使萬用表毀壞。如需換擋,應先斷開表筆,換擋后再去測量。(4)萬用表在使用時,必須水平放置,以免造成誤差。同時,還要注意到避免外界磁場對萬用表的影響。(5)萬用表使用完畢,應將轉換開關置于交流電壓的最大擋。如果長期不使用,還應將萬用表內部的電池取出來,以免電池腐蝕表內其它器件。附件四:電烙鐵的使用方法1、預熱:烙鐵頭成45度角,頂住焊盤和元件腳。預先給元件腳和焊盤加熱。烙鐵頭的尖部不可頂住PCB板無銅皮位置,這樣可能將板燒成一條痕跡,烙鐵頭最好順線路方向,烙鐵頭不可塞住過孔,預熱時間為1~2秒。2、上錫:將錫線從元件腳和烙鐵接觸面處引入;錫線熔化時,掌握熔化速度;當錫散滿整個焊盤時,拿開錫線;錫線不可直接靠在烙鐵頭上,以防止助焊劑燒黑;整個上錫時間大概為1~2秒。3、拿開烙鐵:當焊錫有輕微煙霧冒出時候,即可順著元件腳方向移開烙鐵,焊點凝固。電烙鐵使用的注意事項:1、電烙鐵使用前應檢查使用電壓建筑施工;為;米;千米;否與電烙鐵標稱電壓相符。2、電烙鐵應該接地。3、電烙鐵通電后不能任意敲擊、拆卸及安裝其電熱部分零件。4、電烙鐵應保持干燥,不宜在過分潮濕或淋雨環境使用。5、拆烙鐵頭時,要關掉電源。6、關電源后,利用余熱在烙鐵頭上上一層錫,以保護烙鐵頭。7、當烙鐵頭上有黑色氧化層時候,可用砂布擦去,然后通電,并立即上錫。附件五:智能尋跡機器人介紹單片機益智系列——智能尋跡機器人建筑施工;為;米;千米;由益芯科技有限公司

為科教方便而研發設計。根據現代學校對嵌入式系統開發的需求。依據提高學生實際動手

操作能力和思考能力,以加強學生對現實生活中嵌入式系統的應用為參照。智能尋跡機器

人全新的設計模式,良好的電路設計,一體化的機電組合,智趣的系統開發,更建筑施

工;為;米;千米;成為加強學生學習興趣的總動源。智能尋跡機器人采用現在較為流行的8位單片機作為系統大腦。以8051系列家族中的

AT89S51/AT89S52為主芯片。40腳的DIP封裝使它擁有32個完全IO(GPIO—通用輸入輸出)

端口,通過對這些端口加以信號輸入電路,控制電路,執行電路共同完成尋跡機器

人。P0.0,P0.1,P0.2,P0.3分別通過LG9110電機驅動來驅動電機1和電機2。由電機的

正轉與反轉來完成機器人的前進,后退,左轉,右轉,遇障礙物繞行,避懸崖等基本動

作。在機器人前進時如果前方有障礙物,由紅外發射管發射的紅外信號被反射給紅外接收

管,紅外接管將此信號經過P3.7傳送入AT89S52中,主芯片通過內部的代碼進行機器人的

繞障礙物操作,同時主芯片將P3.7的信號狀態通過P2.5的LED指示燈顯示出來。機器人

行走時會通過P3.5與P3.6的紅外接收探頭來進行檢測。當走到懸崖處時,P3.5或P3.6

將收到一個電平信號,此電平信號將通過相應端口傳送入主芯片中,主芯片通過內部代碼

完成機器人的避懸崖操作。同時P3.5與P3.6的信號狀態將通過P2.6/P2.7顯示出來。在

機器人的左轉,右轉,后退的過程,可以通過觀看以P2.0/P0.7為指示燈的運行狀

態。P0.4為機器人的聲控檢測端口,在運行為前進狀態時,可以能過聲控(如拍手聲)來控

制它的運行與停止。P0.6為機器人的聲音輸出端。在機器人遇到障礙物時。進行繞障礙物

與避懸崖時可以通過此端口控制蜂鳴器發出報警聲。當為白天或黑夜時可以通過P0.5端口

中的光敏電阻來進行判斷,以方便完成機器人夜間自動照明等功能。兩個按鍵以查詢/中斷

兩種不同的方式來展現按鍵操作。你可以按下S1鍵來進行機器的停止。再按下S2鍵來進

行機器人的運行。這個按鍵的信息分別被P3.2,P3.4接收到。IR1為紅外遙控接收器,這

就為機器人進行遠程遙控創造了可能。這個紅外遙控接收頭接收到紅外信號時將信號經過

P3.3送入到主芯片,主芯片對其進行解密后以不同的方式對機器人進行控制。同時將用戶

的按鍵信息通過P2端口上LED數碼管顯示出來。P3.0、P3.l中COM端口的加入,讓你完全

可以用電腦對其進行控制。你可以通過對串口發送數據,數據會被顯示到LED數碼管中,

并讓機器人執行相應的功能。電腦的串口軟件要求波特率為9600。8位數據位,這時你就可以快樂的用電腦來對它進行你的完全控制了。EXKJ-ZN02功能的組合多樣,使得學生可以充分發揮自主能力,制作出不同的機器人。它為學校進行機器人競賽和畢業項目設計建立了實物平臺,建筑施工;為;米;千米;學校教師授課變得更輕松有趣。同時也能改變學生學習模式和激發學習興趣。更建筑施工;為;米;千米;作為驗證學生學習效果的有力工具。良好的電路板設計,讓學生制作變得方便容易,其大大提高了學生的制作成功率。提高了學生對電子電路的興趣,更建筑施工;為;米;千米;教學過程中不可或缺的教具。附件六:程序狀態指示燈演示驗證程序一、實驗簡介:本程序重點演示了一個最簡程序的基本結構,它從順序、判斷、循環的形式表現程序的基本結構,此程序通過閃燈不斷的閃動,及閃燈閃動的快慢來表示程序不不同工作狀態。它也建筑施工;為;米;千米;常數字設備中進行狀態表示的方法之一(例:網卡)。二、實驗原理圖:三、實現代碼:#include<AT89x51.h>//包含頭文件#defineLEDP1//宏定義顯示端口號voidDelay(unsignedintDelayTime)//定義可變延時函數{while(DelayTime--);//延時函數進入倒計時}voidmain()//程序主函數碼{unsignedintCountData=0;//定義一個整形變量,用于閃動次數++while(1)//主程序循環體開始{if(CountData<30)//判斷閃動次數建筑施工;為;米;千米;否位于0-30之間{Delay(60000);//用60000作為基數開始延時函數}elseif(CountData<60)//判斷閃動次數建筑施工;為;米;千米;否位于30-60之間{Delay(30000);//用30000作為基數開始延時函數}elseif(CountData<90)//判斷閃動次數建筑施工;為;米;千米;否位于60-90之間{Delay(10000);//用10000作為基數開始延時函數}elseif(CountData<120)//判斷閃動次數建筑施工;為;米;千米;否位于90-120之間{CountData=0;//僅進行一次操作即可退出.}CountData=CountData+1;//閃動次數基數++LED=~LED;//將顯示端口進行取反操作}}四、運行效果:程序運行效果為:開機后程序以慢速閃動,一段時間后速度開始加快,再等待時間,閃燈的速度達到最快,之后一段時間后,閃動將回到開始狀態。附件七:流水燈演示驗證程序一、實驗簡介:本程序全面的表現了子程序的用法,它從對幾個子程序的操作,顯示不同的流燈技術,流水燈的不同需要不同的表現的形式,而這里主要介紹了移位操作和內部數據存儲及讀入操作。延時函數采用可重入標志,可進行函數的遞歸調用。二、實驗原理圖:三、實現代碼:#include<AT89x51.h>//包含頭文件#defineLedP1//定義顯示端口號unsignedintcodeBToM[]={0x7E,0x3C,0x18,0x00};//定義由兩邊到中間顯示數據unsignedintcodeMToB[]={0xE7,0xC3,0x81,0x00};//定義由中間到兩邊顯示數據voidDelay()reentrant//定義可重入的延時函數{unsignedintDelayTime=10000;//定義延時時間基數while(DelayTime--);//程序開始延時開始}voidLeftToRight()//定義從左邊到右邊顯示函數{unsignedcharTempCount=0;//定義顯示次數變量Led=0xFE;//定義初步顯示數據for(TempCount=0;TempCount<8;TempCount++)//通過循環進行數據顯示{Delay();//延時,用在每次移動數據開始處Led=Led<<1;//由右邊向左邊移動數據}return;//空返回語句,表明此子程序的結束.}voidRightToLeft()//定義從右邊到左邊顯示函數{unsignedcharTempCount=0;//定義顯示次數變量Led=0x7F;//定義初步顯示數據for(TempCount=0;TempCount<8;TempCount++)//通過循環進行數據顯示{Delay();//延時,用在每次移動數據開始處Led=Led>>1;//由左邊向右移動數據}return;//空返語句,表明此子程序的結束.}voidBothToMid()//定義由兩邊到中間顯示子程序{unsignedcharTempCount=0;//定義臨時次數變量Led=0xFF;for(TempCount=0;TempCount<5;TempCount++)//通過循環依次進行次數運行{Delay();//延時,在每次運行前.Led=BToM[TempCount];//讀入當次顯示數據.}return;//空返回,表明此子程序的結束.}voidMidToBoth()//定義由中間到兩邊子程序{unsignedcharTempCount=0;//定義臨時次數變量Led=0xFF;for(TempCount=0;TempCount<5;TempCount++)//通過循環進行數據顯示{Delay();//延時,在每次數據顯示前.Led=MToB[TempCount];//讀入當次顯示數據.}return;//空返回,表明此次子程序的結束.}voidmain()//主程序入口處.{while(1)//無窮循環開始.{LeftToRight();//從左到右進行顯示RightToLeft();//從右到左進行顯示BothToMid();//由兩邊到中間進行顯示MidToBoth();//由中間到兩邊進行顯示}}四、運行效果:程序運行效果為:開機后,指示燈向從左向右依次點亮,從右向左依次點亮,由兩邊向中間依次點亮,由中間向兩邊依次點亮。附件八:數碼管演示驗證程序一、實驗簡介:本程序通過對端口的置數操作,展示了數碼管的應用技術,數碼管建筑施工;為;米;千米;將發光二極管通過一定的形式封裝在一個數字的外殼中,可以通過不同的點亮方式來顯不同的數字符號。二、實驗原理圖:三、實現代碼:#include<AT89x51.h>//包含頭文件typedefunsignedintuint;//重命名整數類型關鍵字typedefunsignedcharuchar;//重命名字符類型關鍵字ucharcodeLedShowData[]={0x9F,0x25,0x0D,0x99,0x49,//定義固定存儲顯示字符0x41,0x1F,0x01,0x19,0x03};//1,2,3,4,5,6,7,8,9,0voidDelay()//定義延時函數{uintTempTime=20000;//定義延時時間變量while(TempTime--);//通過循環進行延時}voidmain()//主程序開始main(){ucharCountData=0;//定義計數變量while(1)//主程序無限循環開始{P2=LedShowData[CountData];//P2端口讀入顯示數據CountData++;//計數變量++(加加)if(CountData>=10)//判斷建筑施工;為;米;千米;否超出計數范圍{CountData=0;//重新置零}Delay();//延時函數被調用}}四、運行效果:程序運行效果為:程序下載后,數碼管將從1-9依次顯示,最后將顯示數字0.附件九:數碼管及跑馬燈演示驗證程序一、實驗簡介:本程序主要建筑施工;為;米;千米;將數碼管及跑馬燈放在一起顯示,它主要說明了,如何將在單系中運行多個看似并行運行的子系統.本程序在此將跑馬燈子程序放入到一個頭文件中,對于一個大的工程這樣將有益于程序文件的管理。二、實驗原理圖:三、實現代碼:#include<AT89x51.h>//包含端口定義頭文件unsignedcharcodeLedShowData[]={0x9F,0x25,0x0D,0x99,0x49,//定義數碼管顯示字符0x41,0x1F,0x01,0x19,0x03};//1,2,3,4,5,6,7,8,9,0#defineLedP1//定義顯示端口unsignedcharCountData=0;//定義數碼管計數器unsignedintcodeBToM[]={0x7E,0x3C,0x18,0x00};//定義由兩邊到中間顯示數據unsignedintcodeMToB[]={0xE7,0xC3,0x81,0x00};//定義由中間到兩邊顯示數據voidDelay()reentrant//定義可重入延時函數{unsignedintDelayTime=10000;//定義延時時間變量while(DelayTime--);//通過循環進行延時P2=LedShowData[CountData];//置數碼管顯示數據到P2端口CountData++;//數碼管地址計數器++(加1)if(CountData>=10)//判斷計數器累計數值{CountData=0;//計數器清零}}#include<跑馬燈.h>//包含顯示方式頭文件voidmain()//主程序入口{while(1)//無窮循環開始.{LeftToRight();//從左到右進行顯示RightToLeft();//從右到左進行顯示BothToMid();//由兩邊到中間進行顯示MidToBoth();//由中間到兩邊進行顯示}}////////////////////////////////////////////////跑馬燈.h/////////////////////////////////////////////////////voidLeftToRight()//定義從左邊到右邊顯示函數{unsignedcharTempCount=0;//定義顯示次數變量Led=0xFE;//定義初步顯示數據for(TempCount=0;TempCount<8;TempCount++)//通過循環進行數據顯示{Delay();//延時,用在每次移動數據開始處Led=Led<<1;//由右邊向左邊移動數據}return;//空返回語句,表明此子程序的結束.}voidRightToLeft()//定義從右邊到左邊顯示函數{unsignedcharTempCount=0;//定義顯示次數變量Led=0x7F;//定義初步顯示數據for(TempCount=0;TempCount<8;TempCount++)//通過循環進行數據顯示{Delay();//延時,用在每次移動數據開始處Led=Led>>1;//由左邊向右移動數據}return;//空返語句,表明此子程序的結束.}voidBothToMid()//定義由兩邊到中間顯示子程序{unsignedcharTempCount=0;//定義臨時次數變量Led=0xFF;for(TempCount=0;TempCount<5;TempCount++)//通過循環依次進行次數運行{Delay();//延時,在每次運行前.Led=BToM[TempCount];//讀入當次顯示數據.}return;//空返回,表明此子程序的結束.}voidMidToBoth()//定義由中間到兩邊子程序{unsignedcharTempCount=0;//定義臨時次數變量Led=0xFF;for(TempCount=0;TempCount<5;TempCount++)//通過循環進行數據顯示{Delay();//延時,在每次數據顯示前.Led=MToB[TempCount];//讀入當次顯示數據.}return;//空返回,表明此次子程序的結束.}四、運行效果:本程序運行效果:本程序運行后,可以看到跑馬燈按,從左到右,從右到左,從兩邊到中間,從中間到兩邊將依次運行。并且在運行過程中,可以看到數碼管依次從1-9-0的順序顯示數字符號。附件十:按鍵中斷查詢演示驗證程序一、實驗簡介:本程序通過兩個按鍵對數碼管進行操作,分別向用戶演示了查詢與中斷的操作方式,中斷中應用了對按鍵進行查詢的方法來判斷按鍵的鍵值,查詢按鍵方法中則采用了鍵盤延遲的方法來消除按鍵重復輸入。二、實驗原理圖:三、實現代碼:#include<at89x51.h>//包含S51地址頭文件typedefunsignedcharuchar;//重定義無符號字符型typedefunsignedintuint;//重定義無符號整型sbitS1=P3^2;//定義S1變量sbitS2=P3^4;//定義S2變量ucharDataCount=0;//定義全局計數器ucharcodeLedShowData[]={0x9F,0x25,0x0D,0x99,0x49,//定義固定存儲顯示字符0x41,0x1F,0x01,0x19,0x03};//1,2,3,4,5,6,7,8,9,0voidKeyDelay()//定義鍵盤防抖子程序{uintKeyTime=20000;//定義防抖時間變量while(KeyTime--);//防抖延時開始return;}voidS1_Break()interrupt0//定義S1(INT0)外部中斷0{while(0==S1);//判斷S1按鍵鍵值DataCount--;//計數器數值減1if(DataCount>9)//判斷計數器建筑施工;為;米;千米;否到最小值{DataCount=9;//顯示數字0}return;}voidmain()//主程序開始{ET0=1;//設定外部中斷觸發方式(1->低電平觸發)EX0=1;//開啟外部中斷0EA=1;//開記總中斷while(1)//程序主循環{if(0==S2)//通過查詢判斷鍵值{KeyDelay();//鍵盤防抖動開延時子程序開始DataCount++;//計數器加1}if(DataCount>9)//判斷當前計數器{DataCount=0;//將計數器置0}P2=LedShowData[DataCount];//通過端口顯示計數器數值}}四、運行效果:程序運行效果:開機后數碼管顯示數字"1",當按S1不放時,數碼管數字不變,,松開S1按鍵,數碼減1;按S2鍵不放時,數碼管數字會自動加1。并且數字遵守從0-9循環操作。附件十一:話筒聲音識別演示驗證程序一、實驗簡介:本程序主要通過話筒對聲音信號進行識別,由于本電路有效的去除雜波,所以僅能對響度較大的聲音進行識別(例:拍手聲)。像正常的說話聲對本電路慮除,不會產生信息的輸入。話筒識別的加入,為我們建立了聲控平臺。二、實驗原理圖:三、實現代碼:#include<at89x51.h>//包含51單片機相關頭文件sbitLeftLed=P2^0;//定義前方左側指示燈端口sbitRightLed=P0^7;//定義前方右側指示燈端口sbitB1=P0^4;//定義話筒輸入端口voidDelay()//定義去除雜音延時子程序{unsignedintDelayTime=1000;//定義去除雜音變量while(DelayTime--);//延時循環開始return;}voidmain()//主程序入口{LeftLed=0;//前方左側指示燈亮RightLed=0;//前方右側批示燈亮while(1)//程序主循環{if(0==B1)//判斷建筑施工;為;米;千米;否有聲音輸入{while(0==B1);//等待聲音信號結束Delay();//去除多余雜音LeftLed=!LeftLed;//前方左側指示燈取反RightLed=!RightLed;//前方右側指示燈取反}}四、運行效果:程序運行效果:本程序開機后,前方兩側的指示燈點亮,拍一下手后,前方指示燈關閉。再一次進行拍手,指示燈又一次被點亮。附件十二:光敏電阻與蜂鳴器演示驗證程序一、實驗簡介:本程序講述了光敏電阻的使用方法。當處于光暗時,光敏電阻導通,將信號傳入到單片機,單片機將控制蜂鳴器按一定的頻率響亮,并且前方的指示燈也開始閃閃亮。通過對光敏電阻信號的接收,從而實現了夜間自動照明的功能。二、實驗原理圖:三、實現代碼:#include<at89x51.h>//包含51單片機相關的頭文件sbitRL1=P0^5;//定義光敏電阻接收端口sbitSB1=P0^6;//定義蜂鳴器響鈴端口sbitLeftLed=P2^0;//定義前方左側指示燈端口sbitRightLed=P0^7;//定義前方右側指示燈端口voidDelay()//定義蜂鳴器頻率響亮子程序{unsignedintDelayTime=20000;//定義頻率定時變量while(DelayTime--);//頻率定時循環開時return;}voidmain()//主程序入口{while(1)//程序主循環{if(1==RL1)//判斷光敏的現在狀態(有光0,無光1){Delay();//延時子程序開時SB1=!SB1;//蜂鳴器響亮LeftLed=!LeftLed;//前方左側指示燈閃亮RightLed=!RightLed;//前方右側指示燈閃亮}else{SB1=1;//將蜂鳴器關閉LeftLed=1;//前方左側指示燈關閉RightLed=1;//前方右側指示燈關閉}}}四、運行效果:程序運行效果:打開電源開關,如果本機在有光照的情況下,將無任何的反應,這時將機子移動到較黑暗的地方,將會看到前方指示燈閃亮和蜂鳴器響亮。附件十三:紅外反射與直流電機驅動演示驗證程序一、實驗簡介:本程序通過前端,底端的紅外發射頭和接收頭來判斷小車的運行軌跡,當前與底端發生信號輸入時,信號將被單片機接收,單片機來控制機器按照寫好的程序開始運行。同時為達到好的效果,加入聲音識別與蜂鳴器輸入輸出設備。.使得此機器人的運動變得更加有趣。二、實驗原理圖:三、實現代碼:#include<at89x51.h>//包含51單片機相關的頭文件sbitLeftLed=P2^0;//定義前方左側指示燈端口sbitRightLed=P0^7;//定義前方右側指示燈端口sbitLeftIR=P3^5;//定義前方左側紅外探頭端口sbitRightIR=P3^6;//定義前方右側紅外探頭端口sbitFontIR=P3^7;//定義前方正前方紅外探頭端口sbitM1A=P0^0;//定義左側電機驅動A端sbitM1B=P0^1;//定義左側電機驅動B端sbitM2A=P0^2;//定義右側電機驅動A端sbitM2B=P0^3;//定義右側電機驅動B端sbitB1=P0^4;//定義語音識識別傳感器端口sbitSB1=P0^6;//定義蜂鳴器端口#defineRunShowP1//定義數據顯示端口voidDelay()//定義機器人調轉子時間子程序{unsignedintDelayTime=50000;//定義機器人轉彎時間變量while(DelayTime--);//機器人轉彎循環SB1=!SB1;//蜂鳴器閃響return;}voidControlCar(unsignedcharConType)//定義電機控制子程序{M1A=0;//將M1電機A端初始化為0M1B=0;//將M1電機B端初始化為0M2A=0;//將M2電機A端初始化為0M2B=0;//將M2電機B端初始化為0switch(ConType)//判斷用戶設定電機形式{case1://前進//判斷用戶建筑施工;為;米;千米;否選擇形式1{M1A=1;//M1電機正轉M2A=1;//M2電機正轉break;}case2://后退//判斷用戶建筑施工;為;米;千米;否選擇形式2{M1B=1;//M1電機反轉M2B=1;//M2電機反轉break;}case3://左轉//判斷用戶建筑施工;為;米;千米;否選擇形式3{M1B=1;//M1電機反轉M2A=1;//M2電機正轉break;}case4://右轉//判斷用戶建筑施工;為;米;千米;否選擇形式4{M1A=1;//M1電機正轉M2B=1;//M2電機反轉break;}case8://停止//判斷用戶建筑施工;為;米;千米;否選擇形式8{break;//退出當前選擇}}}voidmain()//主程序入口{bitRunFlag=0;//定義小車運行標志位RunShow=0;//初始化顯示狀態ControlCar(1);//初始化小車運行狀態while(1)//程序主循環{LeftLed=LeftIR;//前方左側指示燈指示出前方左側紅外探頭狀態RightLed=RightIR;//前方右側指示燈指示出前方右側紅外探頭狀態RunShow=FontIR;//數據顯示窗口,指示前方紅外探頭狀態if(FontIR==0||LeftIR==1||//判斷前方,左側,右側建筑施工;為;米;千米;否有信號輸入RightIR==1){ControlCar(2);//讓小車后退Delay();//開始小車后退延時子程序Delay();//決定了小車后退的步數Delay();//改變它可以改小車后退的距離Delay();//這里只建筑施工;為;米;千米;一個延時ControlCar(3);//改變小車為左轉方向Delay();//開始小車左轉延時子程序Delay();//改變它可以改變小車旋轉的角度Delay();//同上Delay();//同上ControlCar(1);//改變小車為前進運行狀態SB1=1;//這個多一步將蜂鳴器關閉}if(B1==0)//判斷建筑施工;為;米;千米;否有聲音信號輸入{while(B1==0);//去除聲音多余的雜波if(RunFlag==0)//判斷小車當前的運行狀態標志{RunFlag=1;//改變小車當前的運行狀態標志ControlCar(8);//停止小車的運行}else//否則執行的代碼如下{RunFlag=0;//判斷小車的運行狀態標志ControlCar(1);//改變小車為前進的運行狀態}}}}四、運行效果:程序效果:打開本機電源開關,機器人開始向前運行(這要看當時的條件),在運動的過程中,如果前方有障礙物,機器人則開始向后后退一段時間后,向左運動,在向左運行一段時間后。再開始向前運行。在整個調向的過程中,蜂鳴器閃響。并且在機器人前進的過程中,你可以通過拍手來控制機器人的停止和運行。附件十四:串口通信程序演示驗證程序一、實驗簡介:本程序通過數碼管,LED指示燈的閃亮來表示當前串口通信的結果,串口通信使單片機與電腦之間通信的橋梁,通過對它的學習,可以很好的用電腦來進行單片機的控制,及對單片機數據的采集。因此串口通信被廣泛的用于工業控制中。二、實驗原理圖:三、實現代碼:#include<at89x51.h>//包含51單片機相關頭文件#defineRunLedP1//定義運行指示燈顯示端口#defineShowPortP2//定義數碼管顯示端口unsignedcharcodeLedShowData[]=//定義數碼管顯示數據變量{0x03,0x9F,0x25,0x0D,0x99,0x49,//定義固定存儲顯示字符0x41,0x1F,0x01,0x19};//1,2,3,4,5,6,7,8,9,0voidComBreak()interrupt4//定義串口通信子程序{unsignedcharRecvData;//定義串口數據接收變量if(RI==1)//判斷建筑施工;為;米;千米;否接收數據{RecvData=SBUF;//將接收到的數據放入暫時變量if(RecvData<10)//判斷接收到的數據建筑施工;為;米;千米;否小于10{ShowPort=LedShowData[RecvData];//將接收到的數據通過數碼管顯示出來}SBUF=RecvData;//向電腦返回當前接收到的數據RI=0;//清除接收中斷標志位}if(TI==1)//判斷建筑施工;為;米;千米;否建筑施工;為;米;千米;發送中斷{TI=0;//清除發送中斷標志位}}voidmain()//主程序入口{unsignedintFlashTime=8000;//程序運行指示燈延時變量SCON=80;//設置串口模式為8位數據TMOD=32;//設置定時/計數器模式TH1=0xFD;//給定時器1高八位初始化初值TL1=0xFD;//給定時器1低八位初始化初值TR1=1;//開啟定時器1ES=1;//開啟串口通信功能REN=1;//開啟接收中斷標志EA=1;//總中斷開啟while(1)//程序主循環{while(FlashTime--);//延時子循環,用于運行閃燈效果FlashTime=8000;//對指示燈延時初始化RunLed=~RunLed;//將指示燈顯示端口取反}}四、運行效果:程序運行效果:打開本機電源開關后,可以看到P1端LED指示燈在不停的閃耀,我們使用“串口調試助手”或其它軟件向單片機發送數據,可以看到相應的數據顯示在數碼管上,并且發送的數據又返回到電腦中。(只顯示0-9數字)實驗十五:綜合功能演示驗證程序一、實驗簡介:本程序通過將以前所編寫的分立程序通過有機結合,編制成一個大的應用系統。小車在完成自動防撞,防懸崖等動作外,還可以通過紅外遙控器進行遠程遙控。如果你對電腦編程很有趣興的話,當然也可以通過電腦對串口進行編程。以方便通過電腦來進行對小車控制。在正常的運特過程中,還可以通過聲控(拍手聲)來對小車進行控制,每一種控制小車都會完成相應的功能。為了更清晰的看到小車運行過程狀態,特將P1端口中的8個指示燈作為運行狀態指示燈。以用來觀察小車運行中的每一步。二、實驗原理圖三、實現代碼:#include<at89x51.h>//包含51相關的頭文件typedefunsignedcharuchar;//重定義char數據類型typedefunsignedintuint;//重定義int數據類型#defineShowPortP2//定義數碼管顯示端口ucharcodeLedShowData[]={0x03,0x9F,0x25,0x0D,0x99,//定義數碼管顯示數據0x49,0x41,0x1F,0x01,0x19};//0,1,2,3,4,5,6,7,8,9staticunsignedintRecvData;//定義接收紅外數據變量staticunsignedcharCountData;//定義紅外個數計數變量staticunsignedcharAddData;//定義自增變量staticunsignedintLedFlash;//定義閃動頻率計數變量unsignedcharHeardData;//定義接收到數據的高位變量bitRunFlag=0;//定義運行標志位/***********完成基本數據變量定義**************/sbitS1State=P1^0;//定義S1狀態標志位sbitS2State=P1^1;//定義S2狀態標志位sbitB1State=P1^2;//定義B1狀態標志位sbitIRState=P1^3;//定義IR狀態標志位sbitRunStopState=P1^4;//定義運行停止標志位sbitFontIRState=P1^5;//定義FontIR狀態標志位sbitLeftIRState=P1^6;//定義LeftIR狀態標志位sbitRightIRState=P1^7;//定義RightIRState狀態標志位/*************完成狀態指示燈定義*************/sbitS1=P3^2;//定義S1按鍵端口sbitS2=P3^4;//定義S2按鍵端口/*************完成按鍵端口的定義*************/sbitLeftLed=P2^0;//定義前方左側指示燈端口sbitRightLed=P0^7;//定義前方右側指示燈端口/*************完成前方指示燈端口定義*********/sbitLeftIR=P3^5;//定義前方左側紅外探頭sbitRightIR=P3^6;//定義前主右側紅外探頭sbitFontIR=P3^7;//定義正前方紅外探頭/*************完成紅外探頭端口定義***********/sbitM1A=P0^0;//定義電機1正向端口sbitM1B=P0^1;//定義電機1反向端口sbitM2A=P0^2;//定義電機2正向端口sbitM2B=P0^3;//定義電機2反向端口/*************完成電機端口定義***************/sbitB1=P0^4;//定義話筒傳感器端口sbitRL1=P0^5;//定義光敏電阻端口sbitSB1=P0^6;//定義蜂鳴端口/*********完成話筒,光敏電阻,蜂鳴器.端口定義**/sbitIR1=P3^3;//定義紅外接收端口/*********完成紅外接收端口的定義*************/voidDelay()//定義延時子程序{uintDelayTime=30000;//定義延時時間變量while(DelayTime--);//開始進行延時循環return;//子程序返回}voidControlCar(ucharCarType)//定義小車控制子程序{M1A=0;//將電機1正向電平置低M1B=0;//將電機1反向電平置低M2A=0;//將電機2正向電平置低M2B=0;//將電機2反向電平置低LeftLed=1;//關閉前方左側指示燈RightLed=1;//關閉前方右側指示燈Delay();//將此狀態延時一段時間switch(CarType)//判斷小車控制指令類型{case1://前進//判斷建筑施工;為;米;千米;否建筑施工;為;米;千米;前進{M1A=1;//將電機1正向端口置高M2A=1;//將電機2正向端口置高break;//退出判斷}case2://后退//判斷建筑施工;為;米;千米;否建筑施工;為;米;千米;后退{M1B=1;//將電機1反向端口置高M2B=1;//將電機2反向端口置高LeftLed=0;//將前方左側指示燈置低(亮)RightLed=0;//將前方右側指示燈置低(亮)break;//退出判斷}case3://左轉//判斷建筑施工;為;米;千米;否建筑施工;為;米;千米;左轉{M1B=1;//將電機1反向端口置高M2A=1;//將電機2正向端口置高LeftLed=0;//將前方左側指示燈置低(亮)break;//退出判斷}case4://右轉//判斷建筑施工;為;米;千米;否建筑施工;為;米;千米;右轉{M1A=1;//將電機1正向端口置高M2B=1;//將電機2反向端口置高RightLed=0;//將前方右側指示燈置低(亮)break;//退出判斷}default://默認情況下的判斷{break;//直接退出判斷}}}voidTimer0_IR1()interrupt1using3//定義紅外定時器子程序{TH0=0xFF;//向定時器定時間寄存器填入高八位值TL0=0x19;//向定時器定時間寄存器填入低八位值AddData++;//自增變量加1}voidInt1_IR1()interrupt2//定義紅外接收中斷子程序{TR1=0;//將定時/計數器1關閉IRState=!IRState;//將紅外接收指示燈狀態取反if(4==AddData)//0//判斷接收到的數據建筑施工;為;米;千米;0{RecvData=RecvData|0;//判斷到0就將當前位寫0RecvData=RecvData<<1;//將當前位向左移動1位}elseif(8==AddData)//1//判斷接收到的數據建筑施工;為;米;千米;1{RecvData=RecvData|1;//將當前位寫1RecvData=RecvData<<1;//將當前位向左移動1位}CountData++;//將紅外接收位計數器加1if(CountData==8)//判斷建筑施工;為;米;千米;否接收到8位數據{HeardData=RecvData;//建筑施工;為;米;千米;8位數據時,則將數據暫存到高位變量中}elseif(CountData==16)//判斷建筑施工;為;米;千米;否接收到16位數據{ET0=0;//關閉紅外定時器0EX1=0;//關閉紅外外部中斷1TR1=1;//打開定時/計數器1AddData=0;//定時時間間隔變量清零if(HeardData==226||HeardData==112)//判斷用戶碼建筑施工;為;米;千米;否正確{HeardData=RecvData;//取出接收到的低八位數據switch(HeardData)//判斷低八位數據的值下列那一位{case32://電源//說明按下了電源鍵{//在這里填寫你自己的代碼//根據你的功能自己寫ControlCar(8);//將小車停止RunFlag==1;//將運行標志位置1break;//返回}case46://TV/AV//說明按下了TV/AV鍵{//在這里填寫你自己的代碼//根據你的功能自己寫break;//返回}case0://1//說明按下數字1鍵{ShowPort=LedShowData[1];//數碼管顯示數字1ControlCar(1);//將小車置于前進狀態break;//返回}case8://2//說明按下了數字2鍵{ShowPort=LedShowData[2];//數碼管顯示數字2ControlCar(2);//將小車置于后退狀態break;//返回}case4://3//說明按下了數字3鍵{ShowPort=LedShowData[3];//數碼管顯示數字3ControlCar(3);//將小車置于左轉狀態break;//返回}case12://4//說明按下了數字4鍵{ShowPort=LedShowData[4];//數碼管顯示數字4ControlCar(4);//將小車置于右轉狀態break;//返回}case2://5//說明按下了數字5鍵{ShowPort=LedShowData[5];//數碼管顯示數字5break;//返回}case10://6//說明按下了數字6鍵{ShowPort=LedShowData[6];//數碼管顯示數字6break;//返回}case6://7//說明按下了數字7鍵{ShowPort=LedShowData[7];//數碼管顯示數字7break;//返回}case14://8//說明按下了數字8鍵{ShowPort=LedShowData[8];//數碼管顯示數字8break;//返回}case64://9//說明按下了數字9鍵{ShowPort=LedShowData[9];//數碼管顯示數字9break;//返回}case72://0/30//說明按下0/30鍵{ShowPort=LedShowData[0];//數碼管顯示數字0break;//返回}case68://10+//說明按下10+鍵{//在這里填寫你自己的代碼//根據你的功能寫代碼break;//返回}case76://20+//說明按下了20+鍵{//在這里填寫你自己的代碼//根據你的功能寫代碼break;//返回}case36://CH-//說明按下了CH-鍵{//在這里填寫你自己的代碼//根據你的功能寫代碼break;//返回}case40://CH+//說明按下了CH+鍵{//在這里填寫你自己的代碼//根據你的功能寫代碼break;//返回}}}RecvData=0;//將接收到的數據清零CountData=0;//將接收計數器清零HeardData=0;//將接收高低數據變量清零return;//返回}AddData=0;//將定時器計數器清零ET0=1;//打開定時器中斷}voidComBreak()interrupt4//定義串口通信子程序{unsignedcharRecvData;//定義串口數據接收變量if(RI==1)//判斷建筑施工;為;米;千米;否接收數據{RecvData=SBUF;//將接收到的數據放入暫時變量if(RecvData<10)//判斷接收到的數據建筑施工;為;米;千米;否小于10{ShowPort=LedShowData[RecvData];//將接收到的數據通過數碼管顯示出來ControlCar(RecvData);//將串口數據置于小于狀態}SBUF=RecvData;//向電腦返回當前接收到的數據RI=0;//清

溫馨提示

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

評論

0/150

提交評論