智能小車設(shè)計報告智能小車設(shè)計報告
《智能小車設(shè)計報告智能小車設(shè)計報告》由會員分享,可在線閱讀,更多相關(guān)《智能小車設(shè)計報告智能小車設(shè)計報告(37頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 電子設(shè)計大賽設(shè)計報告 題目名稱_____智能搬運小車 __ 學(xué)生學(xué)院___物理與光電工程學(xué)院 _ 隊員 莊偉林 林鑒杰 陳奕利 2009年 5月 1日 裝配圖(正面) 智能搬運小車設(shè)計報告 一、 總體框架 (1)、本搬動小車通過單片機AT89S52,用三個373分時輸入外部信號,通過分析處理,再用一個573芯片輸出步進電機驅(qū)動信號,成功地實現(xiàn)了取放黑鐵,尋找右光源和左光源的功能。 (2)、電路方框圖。 步進電機運轉(zhuǎn) 直流電機驅(qū)動取放鐵片 普
2、通光敏電阻控測光源 光敏對管PRP控測黑鐵片 輸出聲光信號 (3)系統(tǒng)總框圖。 四相六線步進電機 LM2003 主控芯片AT89S52 系統(tǒng)總框圖 二、硬件實現(xiàn)及單元電路設(shè)計。 1、主控芯片AT89S52。 AT89S52 主要性能; 與MCS-51單片機產(chǎn)品兼容 、8K字節(jié)在系統(tǒng)可編程Flash存儲器、 1000次擦寫周期、 全靜態(tài)操作:0Hz~33Hz 、 三級加密程序存儲器 、 32個可編程I/O口線 、三個16位定時器/計數(shù)器 八個中斷源 、全雙工UART串行通道、 低功耗空閑和掉電模式 、掉電后中斷可喚醒
3、 、看門狗定時器 、雙數(shù)據(jù)指針 、掉電標(biāo)識符 。 功能特性描述 At89s52 是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash 存儲器。使用Atmel 公司高密度非 易失性存儲器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完 全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于 常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng) 可編程Flash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提 供高靈活、超有效的解決方案。 AT89S52具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,256字節(jié)RAM, 32 位I/O 口線,看門狗定時器,2 個數(shù)據(jù)指針,
4、三個16 位 定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口, 片內(nèi)晶振及時鐘電路。另外,AT89S52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式。空閑模式下,CPU 停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工 作。掉電保護方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié), 單片機一切工作停止,直到下一個中斷或硬件復(fù)位為止。8 位微控制器 8K 字節(jié)在系統(tǒng)可編程 Flash AT89S52。 2、直流電機驅(qū)動取放鐵片。 考慮到電磁鐵耗電很大,所以我們選擇用直流電機機械方式實現(xiàn)鐵片的取放。 通過L298芯片驅(qū)動,用直流電機實現(xiàn)磁鐵的磁鐵上升(放下鐵塊)
5、或下降(吸上鐵片)。 我們考慮了幾種方案實現(xiàn)直流電機的驅(qū)動; L298電路圖如下。 直流電機驅(qū)動電路圖 L298電路圖 升上磁鐵,放下鐵片 天然磁鐵 平衡臂 步進電機 直流電機 鐵片 萬向輪 放下鐵片 放鐵片原理圖 直流電機 天然磁鐵 平衡臂 步進電機 放下磁鐵,吸上鐵片 鐵片 萬向輪 取鐵片原理圖
6、 3、 探測黑白鐵片與邊界。 以下為我們考慮的方案; 我們使用PRP光電對管實現(xiàn)對黑白鐵以及邊界的探測。 光電對管實物圖 電壓比較器TL084 信號處理實物圖 PRP光電一體化對管原理圖 R2 1M 光電對管檢測電路圖 4、 步進電機與驅(qū)動。 方案選擇;由于本系統(tǒng)為智能電動車,其驅(qū)動輪的驅(qū)動電機的選擇就顯得十分重要。由于小車要實現(xiàn)對路徑的準(zhǔn)確定位和精確測量,我們綜合考慮了一下兩種方案: 方案1;采用步進電機作為該系統(tǒng)的驅(qū)動電機。由于其轉(zhuǎn)過的角度可以精確地定位,可以實現(xiàn)小車前進路程和位置的
7、精確確定位。 方案2:采用直流減速電機。直流減速電機轉(zhuǎn)動力矩大,體積小,重量輕,裝配方便,但是不能做到很好的定位。 權(quán)衡利弊,我們選擇了第一方案。 小車驅(qū)動部份我們選擇用二相六線步進電機。因為步進電機可以很好地實現(xiàn)同步與精確控制功能,但是缺點是耗電大,震動大。但權(quán)衡利弊,與直流電機相雙,步進電機驅(qū)動力強大,所以我們選擇用步進電機。 步進電機作為執(zhí)行元件,是機電一體化的關(guān)鍵產(chǎn)品之一, 廣泛應(yīng)用在各種自動化控制系統(tǒng)中。隨著微電子和計算機技術(shù)的發(fā)展,步進電機的需求量與日俱增,在各個國民經(jīng)濟領(lǐng)域都有應(yīng)用。 步進電機是一種將電脈沖轉(zhuǎn)化為角位移的執(zhí)行機構(gòu)。當(dāng)步進驅(qū)動器接收到一個脈沖信號,它就驅(qū)動
8、步進電機按設(shè)定的方向轉(zhuǎn)動一個固定的角度(稱為“步距角”),它的旋轉(zhuǎn)是以固定的角度一步一步運行的??梢酝ㄟ^控制脈沖個數(shù)來控制角位移量,從而達到準(zhǔn)確定位的目的;同時可以通過控制脈沖頻率來控制電機轉(zhuǎn)動的速度和加速度,從而達到調(diào)速的目的。步進電機可以作為一種控制用的特種電機,利用其沒有積累誤差(精度為100%)的特點,廣泛應(yīng)用于各種開環(huán)控制。 現(xiàn)在比較常用的步進電機包括反應(yīng)式步進電機(vr)、永磁式步進電機(pm)、混合式步進電機(hb)和單相式步進電機等。 永磁式步進電機一般為兩相,轉(zhuǎn)矩和體積較小,步進角一般為7.5度 或15度; 反應(yīng)式步進電機一般為三相,可實現(xiàn)大轉(zhuǎn)矩輸出,步進角一般為1.5
9、度,但噪聲和振動都很大。反應(yīng)式步進電機的轉(zhuǎn)子磁路由軟磁材料制成,定子上有多相勵磁繞組,利用磁導(dǎo)的變化產(chǎn)生轉(zhuǎn)矩。 混合式步進電機是指混合了永磁式和反應(yīng)式的優(yōu)點。它又分為兩相和五相:兩相步進角一般為1.8度而五相步進角一般為 0.72度。這種步進電機的應(yīng)用最為廣泛,也是本次細(xì)分驅(qū)動方案所選用的步進電機。 我們的步進電機使用的驅(qū)動芯片是lm2003。 步進電機驅(qū)動芯片LM2003實物圖 LM2003芯片原理圖 步進電機實物圖 LM2003 步進電機驅(qū)動相圖 二相六線步進電機接線圖
10、 5、 尋找光源。 當(dāng)光敏二極管正對光源時,電阻變小,經(jīng)過電壓比較器向單片機輸入信號。 尋找光源用的光敏對管,為了防止干擾,用筆筒套上光敏電阻。 6、 電路板。 我們通過Protel dxp繪制電路圖后,采用熱轉(zhuǎn)印方法制成PCB雙面板。 蜂鳴器與發(fā)光二極管,輸出聲光信號 74hc373作為光電對管信號輸入鎖存器,PO分時讀取外部鎖存器,實現(xiàn)單片機的輸出口和輸入口擴展 主控電路AT89S52 輸出鎖存器74hc573,作為單片
11、機分時存出的輸出口。 主板穩(wěn)壓電路 1602lcd插口 主電路板實物圖(正面) 主電路板實物圖(反面) 主電路板pcb圖 主電路板各部分原理圖如下: 6智能小車程序框圖。 初始化 前進 定時器T2定時中斷,中斷子程序輸入光電對管信號,判斷是否遇到黑色信號或白色信號。 白鐵 黑鐵 判斷遇到黑鐵或白鐵或邊界 尋找左光源
12、,返回A停車區(qū)。
尋找右光源,返回B停車區(qū)。
否
向前對齊,繼續(xù)掃描
是否取完3塊鐵片
返回停車區(qū),結(jié)束。
7、 智能小車源程序。
#include
13、; unsigned char idata recordminute2=0,recordsecond2=0,recordsum2=0; unsigned char bdata status=0; unsigned char bdata status1=0; unsigned char bdata status2=0; unsigned char bdata prpflagd; unsigned char bdata prpflage; unsigned int idata time0=0; unsigned long int idata time2=0; unsigned l
14、ong int idata time2_1; unsigned int idata time2_2; unsigned char data motor=0; unsigned char bdata d=0; unsigned char bdata e=0; unsigned char bdata d1=0; unsigned char bdata e1=0; unsigned char lightcount=0; unsigned char v0; unsigned char vb; sbit prp5_0=d1^6; sbit prp5_1=d1^7; s
15、bit prp1_0=d1^4; sbit prp1_1=d1^5; sbit prp6_0=d1^2; sbit prp6_1=d1^3; sbit prp2_0=d1^0; sbit prp2_1=d1^1; sbit prp7_0=e1^6; sbit prp7_1=e1^7; sbit prp3_0=e1^4; sbit prp3_1=e1^5; sbit prp8_0=e1^2; sbit prp8_1=e1^3; sbit prp4_0=e1^0; sbit prp4_1=e1^1; sbit prp5_000=prpflagd^6; sbit p
16、rp5_001=prpflagd^7; sbit prp1_000=prpflagd^4; sbit prp1_001=prpflagd^5; sbit prp6_000=prpflagd^2; sbit prp6_001=prpflagd^3; sbit prp2_000=prpflagd^0; sbit prp2_001=prpflagd^1; sbit prp7_000=prpflage^6; sbit prp7_001=prpflage^7; sbit prp3_000=prpflage^4; sbit prp3_001=prpflage^5; sbit prp8
17、_000=prpflage^2; sbit prp8_001=prpflage^3; sbit prp4_000=prpflage^0; sbit prp4_001=prpflage^1; sbit prp5_00=d^6; sbit prp5_01=d^7; sbit prp1_00=d^4; sbit prp1_01=d^5; sbit prp6_00=d^2; sbit prp6_01=d^3; sbit prp2_00=d^0; sbit prp2_01=d^1; sbit prp7_00=e^6; sbit prp7_01=e^7; sbit pr
18、p3_00=e^4; sbit prp3_01=e^5; sbit prp8_00=e^2; sbit prp8_01=e^3; sbit prp4_00=e^0; sbit prp4_01=e^1; sbit forward=status^0; sbit backward=status^1; sbit turnleft=status^3; sbit turnright=status^2; sbit rightforward=status^5; sbit rightbackward=status^4; sbit leftforward=status^6; sbit
19、 leftbackward=status^7; sbit flag=status1^5; sbit whiteiron=status1^6; sbit blackiron=status2^0; sbit searchiron=status1^0; sbit searchrightlight=status1^1; sbit seachleftlight=status1^2; unsigned char interfere; unsigned char uninterfere; sbit rightorleft=status1^4; sbit unflag=status2
20、^3; sbit foundblack=status2^4; sbit foundwhite=status2^5; sbit foundboundary=status2^6; unsigned char whiteironcount=0; unsigned char blackironcount=0; unsigned char ironcount=0; void timer0initializtion(); void timer2initializtion(); void turnright90degree(); void turnleft90degree()
21、; void putdown(); void goforwardaccelerat(); void gobackwardaccelerat(); void putup(); void foundblackiron(); void foundwhiteiron(); void turnright180degree(); void backwardalign(); void forwardalign(); void estimate(); void boundaryturnright90degree(); void boundaryturnright180degree();
22、 void boundaryturnleft180degree(); void searchlightblackiron(); void oneturnleft80degree(); void oneturnright80degree(); void oneturnright180degree(); void oneturnleft80degree(); void searchlightwhiteiron(); void searchlightwhiteiron(); void scan(); void main() { timer0initia
23、liztion(); timer2initializtion(); time2=0; while(time2<=50); rightorleft=0; status=0; goforwardaccelerat(); flag=0; while(flag==0); estimate(); if(foundboundary==1) { boundaryturnright90degree(); scan(); estimate(); if(foundwhite==1) { putdown(); searchlightwhiteiron(); } els
24、e { putdown(); searchlightblackiron(); } scan(); estimate(); if(foundwhite==1) { putdown(); searchlightwhiteiron(); } else { putdown(); searchlightblackiron(); } scan(); estimate(); if(foundwhite==1) { putdown(); searchlightwhiteiron(); } else { putdown(); searchlightb
25、lackiron(); } scan(); estimate(); if(foundwhite==1) { putdown(); searchlightwhiteiron(); } else { putdown(); searchlightblackiron(); } goto end0200; } else { if(foundblack==1) { putdown(); searchlightblackiron(); scan(); estimate(); if(foundwhite==1) { put
26、down(); searchlightwhiteiron(); } else { putdown(); searchlightblackiron(); } scan(); estimate(); if(foundwhite==1) { putdown(); searchlightwhiteiron(); } else { putdown(); searchlightblackiron(); } scan(); estimate(); if(foundwhite==1) { putdown(); searchlightwhite
27、iron(); } else { putdown(); searchlightblackiron(); } goto end0200; } else { if(foundwhite==1) { putdown(); searchlightwhiteiron(); scan(); estimate(); if(foundwhite==1) { putdown(); searchlightwhiteiron(); } else { putdown(); searchlightblackiron(); }
28、scan(); estimate(); if(foundwhite==1) { putdown(); searchlightwhiteiron(); } else { putdown(); searchlightblackiron(); } scan(); estimate(); if(foundwhite==1) { putdown(); searchlightwhiteiron(); } else { putdown(); searchlightblackiron(); } } }
29、 } end0200:while(1); } void goforwardaccelerat() { status=0; forward=1; vb=5; time2=0; while(time2<=8); vb=4; time2=0; while(time2<=8); vb=3; time2=0; while(time2<=8); vb=2; time2=0; while(time2<=8); vb=1; } void gobackwardaccelerat() { status=0; backwa
30、rd=1; vb=5; time2=0; while(time2<=8); vb=4; time2=0; while(time2<=8); vb=3; time2=0; while(time2<=8); vb=2; time2=0; while(time2<=8); vb=1; } void scan() { status=0; while((foundblack!=1)&&(foundwhite!=1)) { goforwardaccelerat(); flag=0; while(flag==0); sta
31、tus=0; estimate(); if(foundboundary==1) { foundboundary=0; if(rightorleft==1) { rightorleft=0; boundaryturnleft180degree(); time2=0; while(time2<=8); status=0; } else { rightorleft=1; boundaryturnright180degree(); time2=0; while(time2<=8); status=0; } } } }
32、 void searchlightblackiron() { unsigned long int lightdalign; rightorleft=0; vb=4; turnright=1; while(prp8_01==1); status=0; time2=0; while(time2<=20); turnright=1; time2=0; while(time2<=30); time2=0; while(prp8_01==1); status=0; if(time2<=180) goto b0173;
33、 status=0; turnright=1; time2=0; while(time2<=20); while(prp8_01==1); time2=0; while(time2<=10); status=0; time2=0; while(time2<=20); b0173: time2_1=0; goforwardaccelerat(); time2=0; while(time2<=40); flag=0; while(flag==0); time2=0; while(time2<=40); status=0; putup(); time2=0;
34、 while(time2<=8); turnright180degree(); goforwardaccelerat(); time2=0; while(time2<=90); b0294: status=0; forward=1; flag=0; while(flag==0); estimate(); if(foundboundary==0) goto b0294; status=0; time2=0; while(time2<=8); gobackwardaccelerat(); forwardalign(); status=0; vb=
35、4; turnright=1; time2=0; while(prp8_01==1); status=0; lightdalign=time2; if(lightdalign<=150) { turnleft=1; time2=0; while(time2<=lightdalign); status=0; turnleft90degree(); turnleft=1; time2=0; while(time2<=20); status=0; time2=0; while(time2<=8); b0621: vb=1; forward=1; fla
36、g=0; while(flag==0); status=0; estimate(); if(foundboundary==1) { forwardalign(); boundaryturnright90degree(); } else goto b0621; } else { time2=0; while(time2<=8); turnleft=1; time2=0; while(time2<=lightdalign); status=0; forwardalign(); boundaryturnright90degree(); } }
37、 void searchlightwhiteiron() { unsigned long int lightdalign; rightorleft=0; vb=4; turnleft=1; while(prp8_01==1); status=0; time2=0; while(time2<=20); turnleft=1; time2=0; while(time2<=30); time2=0; while(prp8_01==1); status=0; if(time2<=180) goto b0374; status=
38、0; turnleft=1; time2=0; while(time2<=20); while(prp8_01==1); time2=0; while(time2<=10); status=0; time2=0; while(time2<=20); b0374: time2_1=0; goforwardaccelerat(); time2=0; while(time2<=40); flag=0; while(flag==0); time2=0; while(time2<=40); status=0; putup(); time2=0; while(t
39、ime2<=8); turnright180degree(); goforwardaccelerat(); time2=0; while(time2<=90); b0410:forward=1; flag=0; while(flag==0); estimate(); if(foundboundary==0) goto b0410; status=0; time2=0; while(time2<=8); gobackwardaccelerat(); forwardalign(); status=0; vb=4; turnleft=1; tim
40、e2=0; while(prp8_01==1); status=0; lightdalign=time2; if(lightdalign<=150) { turnright=1; time2=0; while(time2<=lightdalign); status=0; turnright90degree(); turnright=1; time2=0; while(time2<=20); status=0; time2=0; while(time2<=8); b0431: vb=1; forward=1; flag=0; while(flag==
41、0); status=0; estimate(); if(foundboundary==1) { forwardalign(); boundaryturnright90degree(); } else goto b0431; } else { time2=0; while(time2<=8); turnright=1; time2=0; while(time2<=lightdalign); status=0; forwardalign(); boundaryturnright90degree(); } } void boundary
42、turnright90degree() { status=0; vb=3; backward=1; time2=0; while(time2<=30); vb=4; status=0; turnright=1; time2=0; while(time2<=122); status=0; time2=0; while(time2<=10); } void oneturnright80degree() { status=0; vb=5; leftforward=1; time2=0; while(time2<=215); status=
43、0; time2=0; while(time2<=8); } void oneturnleft180degree() { status=0; vb=5; rightforward=1; time2=0; while(time2<=505); status=0; time2=0; while(time2<=8); } void oneturnright180degree() { status=0; vb=5; leftforward=1; time2=0; while(time2<=505); status=0;
44、time2=0; while(time2<=8); } void oneturnleft80degree() { status=0; vb=5; rightforward=1; time2=0; while(time2<=225); status=0; time2=0; while(time2<=8); } void boundaryturnleft180degree() { status=0; forwardalign(); vb=3; status=0; backward=1;
45、 time2=0; while(time2<=68); status=0; oneturnleft180degree(); time2=0; while(time2<=10); backwardalign(); time2=0; while(time2<=8); } void boundaryturnright180degree() { status=0; forwardalign(); vb=3; status=0; backward=1; time2=0; while(time2<=68); status=0; oneturnrigh
46、t180degree(); time2=0; while(time2<=10); backwardalign(); time2=0; while(time2<=8); } void forwardalign() { vb=4; status=0; backward=1; time2=0; while(time2<=15); unflag=0; while(unflag==0) { time2=0; if(time2>=50) break; } status=0; time2=0; while(time2<=10); forward=
47、1; while(prp4_000==0); status=0; time2=0; while(time2<=10); if((prp7_000==1)&&(prp1_000==0)) { status=0; turnright=1; while(prp1_000==0); status=0; time2=0; while(time2<=10); if(prp7_000==1) { rightbackward=1; while(prp7_000==1); } else { rightforward=1; while(prp7_000==0); }
48、 } else if((prp7_000==0)&&(prp1_000==1)) { status=0; turnleft=1; while(prp7_000==0); status=0; time2=0; while(time2<=10); if(prp1_000==1) { leftbackward=1; while(prp1_000==1); } else { leftforward=1; while(prp1_000==0); } } status=0; time2=0; while(time2<=18); }
49、 void backwardalign() { unsigned char backwardaligncount=0; b0353:backwardaligncount++; status=0; vb=4; forward=1; time2=0; while(time2<=15); unflag=0; while(unflag==0) { time2=0; if(time2>=50) break; } status=0; time2=0; while(time2<=10); backward=1; while(prp4_000==0
50、); status=0; time2=0; while(time2<=10); if((prp6_000==1)&&(prp1_000==0)) { turnleft=1; while(prp1_000==0); status=0; time2=0; while(time2<=10); if(prp6_000==1) { rightforward=1; while(prp6_000==1); } else { rightbackward=1; while(prp6_000==0); } } else if((prp6_000==0)&&
51、(prp1_000==1)) { turnright=1; while(prp6_000==0); status=0; time2=0; while(time2<=10); if(prp1_000==1) { leftforward=1; while(prp6_000==1); } else { leftbackward=1; while(prp6_000==0); } } status=0; time2=0; while(time2<=18); if(backwardaligncount<=3) goto b0353; status=
52、0; } void turnleft90degree() { vb=4; status=0; turnleft=1; time2=0; while(time2<=110); status=0; time2=0; while(time2<=10); } void turnright90degree() { vb=4; status=0; turnright=1; time2=0; while(time2<=115); status=0; time2=0; while(time2<=10); }
53、 void turnright180degree() { vb=4; status=0; turnright=1; time2=0; while(time2<=230); turnright=0; time2=0; while(time2<=15); vb=3; } void putup() { status=0; time2=0; while(time2<=80) { status=0; P1=0x05; } P1=0xff; time2=0; while(time2<=30); time2=0; while(t
54、ime2<=80) { status=0; P1=0x05; } P1=0xff; time2=0; while(time2<=30); time2=0; while(time2<=80) { status=0; P1=0x05; } P1=0xff; } void putdown() { status=0; forward=1; time2=0; while(time2<=3); status=0; time2=0; while(time2<=150) { P1=0x03; } P1=0xff; ti
55、me2=0; while(time2<=8); vb=3; status=0; forward=1; time2=0; while(time2<=16); status=0; time2=0; while(time2<=8); vb=3; status=0; backward=1; time2=0; while(time2<=32); status=0; time2=0; while(time2<=8); forward=1; time2=0; while(time2<=16); status=0; time2=0; while(time2<=
56、8); } void estimate() { unsigned char bj1=0; unsigned char bj2=0; unsigned char bj3=0; unsigned char bj4=0; unsigned char bj5=0; foundblack=0; foundboundary=0; foundwhite=0; e1=e; d1=d; vb=2; forward=1; time2=0; while(time2<=50) { if(prp1_000==1) bj1=1; if(prp3_000=
57、=1) bj2=1; if(prp5_000==1) bj5=1; if(prp7_000==1) bj4=1; if((prp1_001==0)||(prp2_001==0)||(prp3_001==0)||(prp4_001==0)||(prp5_001==0)||(prp6_001==0)||(prp7_001==0)) bj3=1; } status=0; backward=1; time2=0; while(time2<=50); status=0; if(((bj5==1)&&(bj1==1))||((bj2==1)&&(bj4==1))) { fo
58、undboundary=1; } else { if(bj3==1) { foundwhite=1; WR=0; time2=0; while(time2<=18); WR=1; } else { foundblack=1; WR=0; time2=0; while(time2<=18); WR=1; time2=0; while(time2<=18); WR=0; time2=0; while(time2<=18); WR=1; time2=0; while(time2<=18); WR=0; time2=0; while(time2
59、<=18); WR=1; time2=0; while(time2<=18); } } } void timer0initializtion() { TMOD=0X01; TH0=0xd8; TL0=0xef; EA=1; ET0=1; PT0=0; TR0=1; } void timer2initializtion() //50MS { ET2=1; TCLK=0; RCLK=0; CP_RL2=0; T2MOD=0x0; C_T2=0; RCAP2H=0x3c; RCAP2L=0xb0; PT2=1; TR2=1
60、; } void T2interrupt() interrupt 5 { unsigned char idata i; time2++; time2_1++; time2_2++; sum=sum+1; sum1=sum1+1; if(sum==20) { sum=0; second=second+1; if(second==60) { second=0; minute=minute+1; if(minute==60) minute=0; } } if(sum1
61、==20) { sum1=0; second1=second1+1; if(second1==60) { second1=0; minute1=minute1+1; } } RD=0; P2=0x8c; P0=0xff; for(i=0;i<=2;i++); d=P0; d=P0; P2=0x84; P0=0xff; for(i=0;i<=2;i++); e=P0; e=P0; RD=1; P2=0xff; if((d!=0xaa)||((e&0xf3)!=0xa2)) { if(interfere<
62、=2) interfere++; if(interfere==3) { flag=1; prpflagd=d; prpflage=e; interfere=0; } } else interfere=0; if((d==0xaa)&&((e&0xf3)==0xa2)) { if(uninterfere<=3) uninterfere++; if(uninterfere==4) { unflag=1; flag=0; prpflagd=d; prpflage=e; uninterfere=0; } } else uninterf
63、ere=0; TF2=0; } void tO() interrupt 1 //V=9cm/s interrupt time=13ms { TH0=0xcd; TL0=0x38; time0++; v0++; P2=0x9c; if(status==0x01) //V=9cm/s { if(v0>=vb) { v0=0; if(motor==0x18) motor=0x42; else { if(motor==0x42) motor=0x24; else
64、 { if(motor==0x24) motor=0x81; else { if(motor==0x81) motor=0x18; else motor=0x18; } } } } } if(status==0x02) // V=9cm/s { if(v0>=vb) { v0=0; if(motor==0x81) motor=0x24; else { if(motor==0x24) motor=0x42;
65、 else { if(motor==0x42) motor=0x18; else { if(motor==0x18) motor=0x81; else motor=0x18; } } } } } if(status==0x04) { if(v0>=vb) { v0=0; time0=0; if(motor==0x11) motor=0x44; else { if(motor==0x4
66、4) motor=0x22; else { if(motor==0x22) motor=0x88; else { if(motor==0x88) motor=0x11; else motor=0x11; } } } } } if(status==0x08) { if(v0>=vb) { v0=0; time0=0; if(motor==0x88) motor=0x22; else { if(motor==0x22) motor=0x44; else { if(motor==0x44) motor=0x11; else { if(motor==0x11) motor=0x88; else motor=0x11; } }
- 溫馨提示:
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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑施工重大危險源安全管理制度
- 安全培訓(xùn)資料:典型建筑火災(zāi)的防治基本原則與救援技術(shù)
- 企業(yè)雙重預(yù)防體系應(yīng)知應(yīng)會知識問答
- 8 各種煤礦安全考試試題
- 9 危險化學(xué)品經(jīng)營單位安全生產(chǎn)管理人員模擬考試題庫試卷附答案
- 加壓過濾機司機技術(shù)操作規(guī)程
- 樹脂砂混砂工藝知識總結(jié)
- XXXXX現(xiàn)場安全應(yīng)急處置預(yù)案
- 某公司消防安全檢查制度總結(jié)
- 1 煤礦安全檢查工(中級)職業(yè)技能理論知識考核試題含答案
- 4.燃?xì)獍踩a(chǎn)企業(yè)主要負(fù)責(zé)人模擬考試題庫試卷含答案
- 工段(班組)級安全檢查表
- D 氯化工藝作業(yè)模擬考試題庫試卷含答案-4
- 建筑起重司索信號工安全操作要點
- 實驗室計量常見的30個問問答題含解析