![智能快遞柜資料_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/18/13694157-cd3b-4e32-b80f-fd988cef4a74/13694157-cd3b-4e32-b80f-fd988cef4a741.gif)
![智能快遞柜資料_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/18/13694157-cd3b-4e32-b80f-fd988cef4a74/13694157-cd3b-4e32-b80f-fd988cef4a742.gif)
![智能快遞柜資料_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/18/13694157-cd3b-4e32-b80f-fd988cef4a74/13694157-cd3b-4e32-b80f-fd988cef4a743.gif)
![智能快遞柜資料_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/18/13694157-cd3b-4e32-b80f-fd988cef4a74/13694157-cd3b-4e32-b80f-fd988cef4a744.gif)
![智能快遞柜資料_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/18/13694157-cd3b-4e32-b80f-fd988cef4a74/13694157-cd3b-4e32-b80f-fd988cef4a745.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、這一章講了單片機(jī)在現(xiàn)在生活中的發(fā)張趨勢(shì)和應(yīng)用范圍,并對(duì)本課題的背景及意義,闡述了其發(fā)展?fàn)顩r。簡(jiǎn)要說(shuō)明了本文所介紹的內(nèi)容。1.1 單片機(jī)的發(fā)展史單片單片微型計(jì)算機(jī)簡(jiǎn)稱單片機(jī),是典型的嵌入式微控制器(Microcontroller Unit),常用英文字母的縮寫(xiě)MCU表示單片機(jī),它最早 是被用在工業(yè)控制領(lǐng)域。由于單片機(jī)在工業(yè)控制領(lǐng)域的廣泛應(yīng)用,為使更多的業(yè)內(nèi)人士、學(xué)生、愛(ài)好者,產(chǎn)品開(kāi)發(fā)人員掌握單片機(jī)這門(mén)技術(shù),于是產(chǎn)生單片機(jī)開(kāi)發(fā)板,比較有名的例如電子人DZR-01A單片機(jī)開(kāi)發(fā)板。單片機(jī)由芯片內(nèi)僅有CPU的專用處理器發(fā)展而來(lái)。最早的設(shè)計(jì)理念是通過(guò)將大量外圍設(shè)備和CPU集成在一個(gè)芯片中,使計(jì)算機(jī)系統(tǒng)更小
2、,更容易集成進(jìn)復(fù)雜的而對(duì)體積要求嚴(yán)格的控制設(shè)備當(dāng)中。INTEL的Z80是最早按照這種思想設(shè)計(jì)出的處理器,從此以后,單片機(jī)和專用處理器的發(fā)展便分道揚(yáng)鑣。單片機(jī)(Microcontrollers)誕生于1971年,經(jīng)歷了SCM、MCU、SoC三大階段,早期的SCM單片機(jī)都是8位或4位的。其中最成功的是INTEL的8051,此后在8051上發(fā)展出了MCS51系列MCU系統(tǒng)?;谶@一系統(tǒng)的單片機(jī)系統(tǒng)直到現(xiàn)在還在廣泛使用。隨著工業(yè)控制領(lǐng)域要求的提高,開(kāi)始出現(xiàn)了16位單片機(jī),但因?yàn)樾詢r(jià)比不理想并未得到很廣泛的應(yīng)用。90年代后隨著消費(fèi)電子產(chǎn)品大發(fā)展,單片機(jī)技術(shù)得到了巨大提高。隨著INTEL i960系列特別
3、是后來(lái)的ARM系列的廣泛應(yīng)用,32位單片機(jī)迅速取代16位單片機(jī)的高端地位,并且進(jìn)入主流市場(chǎng)。單片機(jī)比專用處理器更適合應(yīng)用于嵌入式系統(tǒng),因此它得到了最多的應(yīng)用。事實(shí)上單片機(jī)是世界上數(shù)量最多的計(jì)算機(jī)?,F(xiàn)代人類生活中所用的幾乎每件電子和機(jī)械產(chǎn)品中都會(huì)集成有單片機(jī)。手機(jī)、電話、計(jì)算器、家用電器、電子玩具、掌上電腦以及鼠標(biāo)等電腦配件中都配有1-2部單片機(jī)。單片機(jī)又稱單片微控制器,它不是完成某一個(gè)邏輯功能的芯片,而是把一個(gè)計(jì)算機(jī)系統(tǒng)集成到一個(gè)芯片上。相當(dāng)于一個(gè)微型的計(jì)算機(jī),和計(jì)算機(jī)相比,單片機(jī)只缺少了I/O設(shè)備。概括的講:一塊芯片就成了一臺(tái)計(jì)算機(jī)。它的體積小、質(zhì)量輕、價(jià)格便宜、為學(xué)習(xí)、應(yīng)用和開(kāi)發(fā)提供了便利
4、條件。同時(shí),學(xué)習(xí)使用單片機(jī)是了解計(jì)算機(jī)原理與結(jié)構(gòu)的最佳選擇。1.2 智能快遞柜的發(fā)展趨勢(shì)近年來(lái),隨著電子商務(wù)的迅猛發(fā)展,快遞業(yè)務(wù)呈高速增長(zhǎng)趨勢(shì),但快遞末端“最后一公里”投遞問(wèn)題卻成為快遞發(fā)展的瓶頸。智能快遞投遞箱將快件暫時(shí)保存在投遞箱內(nèi),并將投遞信息通過(guò)短信等方式發(fā)送用戶,為用戶提供24小時(shí)自助取件服務(wù),這種服務(wù)模式較好地滿足了用戶隨時(shí)取件的需要,受到快遞企業(yè)和用戶的歡迎,為解決快件“最后一公里”問(wèn)題提供了有效的解決方案。國(guó)家郵政局領(lǐng)導(dǎo)高度關(guān)注智能快遞投遞箱的發(fā)展,指示要盡快開(kāi)展智能快遞投遞箱相關(guān)標(biāo)準(zhǔn)研究工作,以期在發(fā)展初期就對(duì)智能快遞投遞箱的使用與管理問(wèn)題進(jìn)行研究和規(guī)范,以推動(dòng)這種服務(wù)模式規(guī)
5、范化、健康化發(fā)展。自2003年以來(lái),隨著電子商務(wù)的快速發(fā)展,物流面臨著嚴(yán)峻的考驗(yàn)。眾所周知,淘寶搞的雙十一活動(dòng),掀起了一股網(wǎng)購(gòu)大風(fēng)。不僅如此,快遞包裹也跟著席卷開(kāi)來(lái)。各地的物流倉(cāng)庫(kù)都出現(xiàn)了快遞包裹爆倉(cāng),出倉(cāng)的速度遠(yuǎn)遠(yuǎn)跟不上進(jìn)倉(cāng)的速度。這種現(xiàn)象的出現(xiàn)與快遞配送的“最后一公里”不無(wú)關(guān)系。各行各業(yè)試圖解決這快遞“最后一公里”的問(wèn)題,包括增加配送人員,包裹代收,設(shè)立共同配送點(diǎn)等等,不過(guò)還是改變不了人等人的局面。最終,智能快遞終端被引用進(jìn)來(lái)。在國(guó)外,24小時(shí)自助快遞站已經(jīng)有10多年的發(fā)展歷史,日本每棟樓宇都有一個(gè)標(biāo)準(zhǔn)的配置用來(lái)收發(fā)快遞,操作十分簡(jiǎn)單,只有像信用卡等貴重或者重要物品一定要送達(dá)本人簽字,德國(guó)
6、、俄羅斯、法國(guó)、愛(ài)沙尼亞等歐洲國(guó)都在使用。2012年2月至6月,DHL國(guó)際快遞對(duì)瑞士3個(gè)不同地點(diǎn)的3臺(tái)全天候自助包裹終端機(jī)進(jìn)行了測(cè)試。第一臺(tái)自助包裹終端機(jī)于2月安裝在蘇黎世的一家加油站,已經(jīng)投入運(yùn)營(yíng),另外兩臺(tái)將安裝到瑞士西部地區(qū)。在國(guó)內(nèi),智能快遞終端還處于剛剛起步狀態(tài)。不少高新科技公司紛紛推出了各種快遞終端。小部分地區(qū)已經(jīng)出現(xiàn)了智能快遞終端的身影,它們分布在大中專院校、企事業(yè)單位、社區(qū)、寫(xiě)字樓、工廠等地。給收件用戶提供了一個(gè)自由便捷的快遞服務(wù)。也許智能快遞終端不能完美地解決物流的“最后一公里”,但是,可以肯定的是它將會(huì)給人們的生活帶來(lái)極大的便利。1.3 設(shè)計(jì)研究的要求及能實(shí)現(xiàn)的主要內(nèi)容智能快遞
7、投遞箱系統(tǒng)物聯(lián)網(wǎng)這一核心技術(shù),包括前臺(tái)站點(diǎn)快件存取和后臺(tái)中心數(shù)據(jù)處理兩部分。物聯(lián)網(wǎng)就是通過(guò)紅外感應(yīng)、藍(lán)牙等信息傳感設(shè)備,按約定的協(xié)議,把任何物品與互聯(lián)網(wǎng)相連接,進(jìn)行信息交換和通信,以實(shí)現(xiàn)對(duì)物品的智能化識(shí)別、定位、跟蹤、監(jiān)控和管理的一種網(wǎng)絡(luò)。有了“物物相連”的網(wǎng)絡(luò)后還需要依靠先進(jìn)的信息處理技術(shù)。第2章 設(shè)計(jì)過(guò)程及方案2.1 設(shè)計(jì)方案系統(tǒng)采用STC89C52單片機(jī)板,使用紅外線感應(yīng)模塊,按鈕矩陣模塊,藍(lán)牙模塊控制驅(qū)動(dòng)器控制電機(jī)轉(zhuǎn)動(dòng)的不同角度,將齒輪和齒輪條與異步電機(jī)練接。就可以實(shí)現(xiàn)齒輪條的轉(zhuǎn)動(dòng)來(lái)控制機(jī)械臂的定位。我們?cè)诓煌娜齻€(gè)按鈕上設(shè)施了不同的使異步電機(jī)旋轉(zhuǎn)的角度。有60度,120度,360度。
8、當(dāng)操作不同的按鈕時(shí)三個(gè)異步電機(jī)就會(huì)轉(zhuǎn)動(dòng)不同角度,機(jī)械臂移動(dòng)到不同位置尋找物品。2.2 設(shè)計(jì)原理使用STC89C52單片機(jī),在STC89C52單片機(jī)的P1.0-P1.3接步進(jìn)電機(jī)一,P1.4-P1.7接步進(jìn)電機(jī)二,在單片機(jī)P0.0-P0.3接步進(jìn)電機(jī)三。在P2口接矩陣按鍵,在P3.2接紅外遙控,在單片機(jī)的P3.1接藍(lán)牙模塊的RXD,在步進(jìn)電機(jī)的P3.2口接TXD。其他引腳接VCC和GND。第3章 硬件電路設(shè)計(jì)3.1 最小系統(tǒng)設(shè)計(jì) 1)2)3)4)5)6) 在步進(jìn)電機(jī)的P3.2口接TXD。其他引腳接VCC和GND3.2 重要元器件介紹3.2.1 單片機(jī)介紹單片機(jī)(Microcontrollers)
9、是一種集成電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU、隨機(jī)存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM、多種I/O口和中斷系統(tǒng)、定時(shí)器/計(jì)數(shù)器等功能集成到一塊硅片上構(gòu)成的一個(gè)小而完善的微型計(jì)算機(jī)系統(tǒng),在工業(yè)控制領(lǐng)域廣泛應(yīng)用。該單片機(jī)具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,512字節(jié)RAM, 32 位I/O 口線,看門(mén)狗定時(shí)器,內(nèi)置4KB EEPROM,MAX810復(fù)位電路,3個(gè)16 位定時(shí)器/計(jì)數(shù)器,4個(gè)外部中斷,一個(gè)7向量4級(jí)中斷結(jié)構(gòu)(兼容傳統(tǒng)51的5向量2級(jí)中斷結(jié)構(gòu)),全雙工串行口。另外 STC89C52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,
10、CPU 停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。最高運(yùn)作頻率35MHz,6T/12T可選。3.2.2 紅外線介紹紅外遙控的發(fā)射電路是采用紅外發(fā)光二極管來(lái)發(fā)出經(jīng)過(guò)調(diào)制的紅外光波;紅外接收電路由紅外接收二極管、三極管或硅光電池組成,它們將紅外發(fā)射器發(fā)射的紅外光轉(zhuǎn)換為相應(yīng)的電信號(hào),再送后置放大器。發(fā)射機(jī)一般由指令鍵、調(diào)制電路、驅(qū)動(dòng)電路、發(fā)射電路等幾部分組成。當(dāng)按下指令鍵或推動(dòng)操作桿時(shí),指令編碼電路產(chǎn)生所需的指令編碼信號(hào),指令編碼信號(hào)對(duì)載波進(jìn)行調(diào)制,再由驅(qū)動(dòng)電路進(jìn)行功率放大后由發(fā)射電路向
11、外發(fā)射經(jīng)調(diào)制定的指令編碼信號(hào)。3.2.3 藍(lán)牙介紹藍(lán)牙( Bluetooth®2.485GHz的ISM波段的UHF無(wú)線電波)。3.2.4 步進(jìn)電機(jī)步進(jìn)電機(jī)是將電脈沖信號(hào)轉(zhuǎn)變?yōu)榻俏灰苹蚓€位移的開(kāi)環(huán)控制元步進(jìn)電機(jī)件。在非超載的情況下,電機(jī)的轉(zhuǎn)速、停止的位置只取決于脈沖信號(hào)的頻率和脈沖數(shù),而不受負(fù)載變化的影響,當(dāng)步進(jìn)驅(qū)動(dòng)器接收到一個(gè)脈沖信號(hào),它就驅(qū)動(dòng)步進(jìn)電機(jī)按設(shè)定的方向轉(zhuǎn)動(dòng)一個(gè)固定的角度,稱為“步距角”,它的旋轉(zhuǎn)是以固定的角度一步一步運(yùn)行的。可以通過(guò)控制脈沖個(gè)數(shù)來(lái)控制角位移量,從而達(dá)到準(zhǔn)確定位的目的;同時(shí)可以通過(guò)控制脈沖頻率來(lái)控制電機(jī)轉(zhuǎn)動(dòng)的速度和加速度,從而達(dá)到調(diào)速的目的。步進(jìn)電機(jī)是一種感
12、應(yīng)電機(jī),它的工作原理是利用電子電路,將直流電變成分時(shí)供電的,多相時(shí)序控制電流,用這種電流為步進(jìn)電機(jī)供電,步進(jìn)電機(jī)才能正常工作,驅(qū)動(dòng)器就是為步進(jìn)電機(jī)分時(shí)供電的,多相時(shí)序控制器。雖然步進(jìn)電機(jī)已被廣泛地應(yīng)用,但步進(jìn)電機(jī)并不能像普通的直流電機(jī),交流電機(jī)在常規(guī)下使用。它必須由雙環(huán)形脈沖信號(hào)、功率驅(qū)動(dòng)電路等組成控制系統(tǒng)方可使用。因此用好步進(jìn)電機(jī)卻非易事,它涉及到機(jī)械、電機(jī)、電子及計(jì)算機(jī)等許多專業(yè)知識(shí)。步進(jìn)電機(jī)作為執(zhí)行元件,是機(jī)電一體化的關(guān)鍵產(chǎn)品之一,廣泛應(yīng)用在各種自動(dòng)化控制系統(tǒng)中。隨著微電子和計(jì)算機(jī)技術(shù)的發(fā)展,步進(jìn)電機(jī)的需求量與日俱增,在各個(gè)國(guó)民經(jīng)濟(jì)領(lǐng)域都有應(yīng)用。3.2.5 步進(jìn)電機(jī)驅(qū)動(dòng)器步進(jìn)電機(jī)驅(qū)動(dòng)器是
13、一種將電脈沖轉(zhuǎn)化為角位移的執(zhí)行機(jī)構(gòu)。當(dāng)步進(jìn)驅(qū)動(dòng)器接收到一個(gè)脈沖信號(hào),它就驅(qū)動(dòng)步進(jìn)電機(jī)按設(shè)定的方向轉(zhuǎn)動(dòng)一個(gè)固定的角度(稱為“步距角”),它的旋轉(zhuǎn)是以固定的角度一步一步運(yùn)行的??梢酝ㄟ^(guò)控制脈沖個(gè)數(shù)來(lái)控制角位移量,從而達(dá)到準(zhǔn)確定位的目的;同時(shí)可以通過(guò)控制脈沖頻率來(lái)控制電機(jī)轉(zhuǎn)動(dòng)的速度和加速度,從而達(dá)到調(diào)速和定位的目的。3.2.6 矩陣按鍵在鍵盤(pán)中按鍵數(shù)量較多時(shí),為了減少I/O口的占用,通常將按鍵排列成矩陣形式。在矩陣式鍵盤(pán)中,每條水平線和垂直線在交叉處不直接連通,而是通過(guò)一個(gè)按鍵加以連接。這樣,一個(gè)端口(如P1口)就可以構(gòu)成4*4=16個(gè)按鍵,比之直接將端口線用于鍵盤(pán)多出了一倍,而且線數(shù)越多,區(qū)別越明
14、顯,比如再多加一條線就可以構(gòu)成20鍵的鍵盤(pán),而直接用端口線則只能多出一鍵(9鍵)。由此可見(jiàn),在需要的鍵數(shù)比較多時(shí),采用矩陣法來(lái)做鍵盤(pán)是合理的。第4章 軟件設(shè)計(jì)軟件設(shè)計(jì)是從軟件需求規(guī)格說(shuō)明書(shū)出發(fā),根據(jù)需求分析階段確定的功能設(shè)計(jì)軟件系統(tǒng)的整體結(jié)構(gòu)、劃分功能模塊、確定每個(gè)模塊的實(shí)現(xiàn)算法以及編寫(xiě)具體的代碼,形成軟件的具體設(shè)計(jì)方案。軟件設(shè)計(jì)是把許多事物和問(wèn)題抽象起來(lái),并且抽象它們不同的層次和角度。將問(wèn)題或事物分解并模塊化使得解決問(wèn)題變得容易,分解的越細(xì)模塊數(shù)量也就越多,它的副作用就是使得設(shè)計(jì)者考慮更多的模塊之間耦合度的情況。軟件程序: #include "reg51.h"#inclu
15、de <math.h>#define GPIO_KEY P2#define const_interrupt_time 792 /840us定時(shí)值sfr AUXR=0x8e; sbit IR_sr=P32; /外部中斷口,數(shù)據(jù)接收口void delay();void KeyDown(void);void TrunLeftMotor1(unsigned long angle);void TrunRightMotor1(unsigned long angle);void TrunLeftMotor2(unsigned long angle);void TrunRightMotor2(un
16、signed long angle);void TrunLeftMotor3(unsigned long angle);void TrunRightMotor3(unsigned long angle);void initial();/初始化外圍void Int0(); /外部中斷函數(shù)void detector_IR();long unsigned int NumKey=0;unsigned char ucMotorStep=0; /被觸發(fā)的電機(jī)動(dòng)作編號(hào) unsigned char ucdata; /從遙控器中接受的編碼unsigned char busy=0;unsigned char d=
17、0;/* 函 數(shù) 名 : main* 函數(shù)功能 : 主函數(shù)* 輸 入 : 無(wú)* 輸 出 : 無(wú)*/void main(void) SCON=0X50; AUXR=0x00; TMOD=0X21; TL1=0XFd; TH1=0XFd; ES=1; EA=1; TR1=1; initial(); while(1) KeyDown(); detector_IR(); if(NumKey=1) TrunLeftMotor1(60*1);delay();TrunLeftMotor2(60*1);delay();TrunLeftMotor3(360*1);delay();TrunRightMotor3(
18、360*1);delay();TrunRightMotor2(60*1);delay();TrunRightMotor1(60*1);NumKey=0; if(NumKey=2) TrunLeftMotor1(60*2);delay();TrunLeftMotor2(60*2);delay();TrunLeftMotor3(360*1);delay();TrunRightMotor3(360*1);delay();TrunRightMotor2(60*2);delay();TrunRightMotor1(60*2);NumKey=0; if(NumKey=3) TrunLeftMotor1(6
19、0*3);delay();TrunLeftMotor2(60*3);delay();TrunLeftMotor3(360*1);delay();TrunRightMotor3(360*1);delay();TrunRightMotor2(60*3);delay();TrunRightMotor1(60*3);NumKey=0; if(ucMotorStep=1) TrunLeftMotor1(60*1);delay();TrunLeftMotor2(60*1);delay();TrunLeftMotor3(360*1);delay();TrunRightMotor3(360*1);delay(
20、);TrunRightMotor2(60*1);delay();TrunRightMotor1(60*1);ucdata=0x74; if(ucMotorStep=2) TrunLeftMotor1(60*2);delay();TrunLeftMotor2(60*2);delay();TrunLeftMotor3(360*1);delay();TrunRightMotor3(360*1);delay();TrunRightMotor2(60*2);delay();TrunRightMotor1(60*2);ucdata=0x74; if(ucMotorStep=3) TrunLeftMotor
21、1(60*3);delay();TrunLeftMotor2(60*3);delay();TrunLeftMotor3(360*1);delay();TrunRightMotor3(360*1);delay();TrunRightMotor2(60*3);delay();TrunRightMotor1(60*3);ucdata=0x74; if(d=1) TrunLeftMotor1(60*1);delay();TrunLeftMotor2(60*1);delay();TrunLeftMotor3(360*1);delay();TrunRightMotor3(360*1);delay();Tr
22、unRightMotor2(60*1);delay();TrunRightMotor1(60*1); d=0; if(d=2) TrunLeftMotor1(60*2);delay();TrunLeftMotor2(60*2);delay();TrunLeftMotor3(360*1);delay();TrunRightMotor3(360*1);delay();TrunRightMotor2(60*2);delay();TrunRightMotor1(60*2); d=0; if(d=3) TrunLeftMotor1(60*3);delay();TrunLeftMotor2(60*3);d
23、elay();TrunLeftMotor3(360*1);delay();TrunRightMotor3(360*1);delay();TrunRightMotor2(60*3);delay();TrunRightMotor1(60*3); d=0; void KeyDown(void)char a=0;GPIO_KEY=0x0f;if(GPIO_KEY!=0x0f)/讀取按鍵是否按下delay();if(GPIO_KEY!=0x0f)/再次檢測(cè)鍵盤(pán)是否按下GPIO_KEY=0X7F;switch(GPIO_KEY)case(0X77):NumKey=0; break;case(0X7b):N
24、umKey=1; break;case(0X7d): NumKey=2; break;case(0X7e):NumKey=3; break;GPIO_KEY=0XBF;switch(GPIO_KEY)case(0Xb7):NumKey=4; break;case(0Xbb):NumKey=5; break;case(0Xbd): NumKey=6; break;case(0Xbe):NumKey=7; break;GPIO_KEY=0XDF;switch(GPIO_KEY)case(0Xd7):NumKey=8 ; break;case(0Xdb):NumKey=9 ; break;case(
25、0Xdd): NumKey=10; break; case(0Xde):NumKey=11; break; GPIO_KEY=0XEF;switch(GPIO_KEY)case(0XE7):NumKey=12; break;case(0XEb):NumKey=13; break;case(0XEd): NumKey=14; break; case(0XEe):NumKey=15; break;while(a<50)&&(GPIO_KEY!=0xf0) /檢測(cè)按鍵松手檢測(cè) delay();a+;void delay()unsigned int i = 200;while(i
26、-);void TrunLeftMotor1(unsigned long angle)unsigned char tmp;unsigned char index = 0;unsigned long beats = 0;unsigned char code BeatCodeLeft8 = 0x0E, 0x0C, 0x0D, 0x09, 0x0B, 0x03, 0x07, 0x06;beats = (angle*4076)/360;while(beats-)tmp = P1;tmp = tmp & 0xF0;tmp = tmp | BeatCodeLeftindex; P1 = tmp;i
27、ndex+;index = index & 0x07;delay();void TrunRightMotor1(unsigned long angle)unsigned char tmp;unsigned char index = 0;unsigned long beats = 0;unsigned char code BeatCodeRight8 = 0x06, 0x07, 0x03, 0x0B, 0x09, 0x0D, 0x0C, 0x0E;beats = (angle*4076)/360;while(beats-)tmp = P1;tmp = tmp & 0xF0;tmp
28、 = tmp | BeatCodeRightindex; P1 = tmp;index+;index = index & 0x07;delay();void TrunLeftMotor2(unsigned long angle)unsigned char tmp;unsigned char index = 0;unsigned long beats = 0;unsigned char code BeatCode8 = 0xE0, 0xC0, 0xD0, 0x90, 0xB0, 0x30, 0x70, 0x60;beats = (angle*4076)/360;while(beats-)
29、tmp = P1;tmp = tmp & 0x0F;tmp = tmp | BeatCodeindex; P1 = tmp;index+;index = index & 0x07;delay();void TrunRightMotor2(unsigned long angle)unsigned char tmp;unsigned char index = 0;unsigned long beats = 0;unsigned char code BeatCode8 = 0x60, 0x70, 0x30, 0xB0, 0x90, 0xD0, 0xC0, 0xE0;beats = (
30、angle*4076)/360;while(beats-)tmp = P1;tmp = tmp & 0x0F;tmp = tmp | BeatCodeindex; P1 = tmp;index+;index = index & 0x07;delay();void TrunLeftMotor3(unsigned long angle)unsigned char tmp;unsigned char index = 0;unsigned long beats = 0;unsigned char code BeatCodeLeft8 = 0x0E, 0x0C, 0x0D, 0x09,
31、0x0B, 0x03, 0x07, 0x06;beats = (angle*4076)/360;while(beats-)tmp = P0;tmp = tmp & 0xF0;tmp = tmp | BeatCodeLeftindex; P0 = tmp;index+;index = index & 0x07;delay();void TrunRightMotor3(unsigned long angle)unsigned char tmp;unsigned char index = 0;unsigned long beats = 0;unsigned char code Bea
32、tCodeRight8 = 0x06, 0x07, 0x03, 0x0B, 0x09, 0x0D, 0x0C, 0x0E;beats = (angle*4076)/360;while(beats-)tmp = P0;tmp = tmp & 0xF0;tmp = tmp | BeatCodeRightindex; P0 = tmp;index+;index = index & 0x07;delay();void Int0() interrupt 0 unsigned char i,j; EX0=0; / 關(guān)閉外部中斷0 i=10; while(i-) TH0=(65535-con
33、st_interrupt_time)/256; TL0=(65535-const_interrupt_time)%256; TR0=1; while(!TF0); TF0=0; TR0=0; while(IR_sr) EX0=1; return; /每840us檢測(cè)一次P3.2口是否出現(xiàn)高電平,共檢測(cè)10次,出現(xiàn)高電平則重新進(jìn)入中斷 while(!IR_sr);/ 等待低電平過(guò)去 j=5; while(j-) TH0=(65535-const_interrupt_time)/256; TL0=(65535-const_interrupt_time)%256; TR0=1; while(!TF0
34、); TF0=0; TR0=0; while(!IR_sr) EX0=1; return; /每840us檢測(cè)一次P3.2口是否出現(xiàn)低電平,共檢測(cè)5次,出現(xiàn)低電平則重新進(jìn)入中斷 while(IR_sr); / 等待高電平過(guò)去 for(i=0;i<4;i+) for(j=0;j<8;j+) while(!IR_sr);/ 等待低電平過(guò)去 TH0=(65535-const_interrupt_time)/256; TL0=(65535-const_interrupt_time)%256; TR0=1; while(!TF0); TF0=0; TR0=0; /延時(shí)840us if(IR_
35、sr) /判斷是否是高電平 ucdata|=0x80; /最高位置“1” while(IR_sr); / 等待高電平過(guò)去 ucdata>>=1; /如果是低電平則右移一位 EX0=1; / 開(kāi)中斷 return;void initial() /初始化外圍 ET0=1; /允許定時(shí)中斷 IT0=1; /下降沿觸發(fā) EX0=1; /允許外部中斷 EA=1; /開(kāi)總中斷void detector_IR() if(ucdata=0x79) ucMotorStep=1; /按下1 else if(ucdata=0x73) ucMotorStep=2; /按下2 else if(ucdata=0x50) ucMotorStep=3; /按下3 else if(ucdata=0x7b) ucMotorStep=4; /按下4 else if(ucdata=0x71) ucMotorStep=5; /按下5 else if(ucdata=0x52) ucMotorStep=6; /按下6 else if(ucdata=0x5E) ucMotorStep=7; /按下7
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中介服務(wù)協(xié)議合同
- 物流貨運(yùn)服務(wù)合同
- 2025年上海道路客貨運(yùn)輸從業(yè)資格證b2考試題庫(kù)
- 2025年廣西貨運(yùn)從業(yè)資格證500道題目和答案大全
- 2025年山西貨運(yùn)從業(yè)資格證模擬考試0題答案解析
- 電力供應(yīng)保障合同(2篇)
- 2024-2025學(xué)年高中英語(yǔ)Unit16Stories模擬高考強(qiáng)化練含解析北師大版選修6
- 教師個(gè)人培訓(xùn)總結(jié)報(bào)告
- 物業(yè)公司安全隱患排查大總結(jié)
- 品質(zhì)部年度工作計(jì)劃
- 【大學(xué)課件】機(jī)電設(shè)備管理技術(shù)概論
- (2024)甘肅省公務(wù)員考試《行測(cè)》真題及答案解析
- 《STP營(yíng)銷戰(zhàn)略概述》課件
- 急性胸痛患者的急救護(hù)理
- 企業(yè)資產(chǎn)管理培訓(xùn)
- 自然辯證法學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 2024年4月27日浙江省事業(yè)單位招聘《職業(yè)能力傾向測(cè)驗(yàn)》試題
- 物業(yè)管理服務(wù)應(yīng)急響應(yīng)方案
- 風(fēng)車的原理小班課件
- 物業(yè)保潔員勞動(dòng)競(jìng)賽理論知識(shí)考試題庫(kù)500題(含答案)
- 國(guó)家職業(yè)技術(shù)技能標(biāo)準(zhǔn) 4-07-07-01 洗衣師 勞社廳發(fā)20081號(hào)
評(píng)論
0/150
提交評(píng)論