基于ST89C52單片機(jī)的自動往返小車(含程序)_畢業(yè)設(shè)計(論文) .doc_第1頁
基于ST89C52單片機(jī)的自動往返小車(含程序)_畢業(yè)設(shè)計(論文) .doc_第2頁
基于ST89C52單片機(jī)的自動往返小車(含程序)_畢業(yè)設(shè)計(論文) .doc_第3頁
基于ST89C52單片機(jī)的自動往返小車(含程序)_畢業(yè)設(shè)計(論文) .doc_第4頁
基于ST89C52單片機(jī)的自動往返小車(含程序)_畢業(yè)設(shè)計(論文) .doc_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、.基本原理:單片機(jī)黑帶檢測路程和時間顯示LED顯示路程,時間L298N電機(jī)驅(qū)動模塊1.電機(jī)驅(qū)動調(diào)速模塊方案一:采用電阻網(wǎng)絡(luò)或數(shù)字電位器調(diào)整電動機(jī)的分壓,從而達(dá)到調(diào)速的目的。但是電阻絡(luò)只能實(shí)現(xiàn)有級調(diào)速,而數(shù)字電阻的元器件價格昂貴。更主要的問題在于一般電動機(jī)的電阻較小,但電流很大;分壓不僅會降低效率,而且很難實(shí)現(xiàn)。方案二:采用繼電器對電動機(jī)的開或關(guān)進(jìn)行控制,通過開關(guān)的切換對小車的速度進(jìn)行調(diào)整。方案的優(yōu)點(diǎn)是電路較為簡單,缺點(diǎn)是繼電器的響應(yīng)時間慢,機(jī)械結(jié)構(gòu)易損壞,壽命較短,可靠性不高。方案三:采用達(dá)林頓管TIP4組成的PWM電路。用單片機(jī)控制達(dá)林頓管使之工作在占空比可調(diào)的狀態(tài),精確調(diào)整電機(jī)轉(zhuǎn)速。方案四

2、:采用L298N來控制電機(jī)的正轉(zhuǎn)和反轉(zhuǎn)來實(shí)現(xiàn)小車的前進(jìn)和后退。加上單片機(jī)的程序PWM,實(shí)現(xiàn)整車的加速與減速,精確小車的速度?;谏鲜隼碚摲治觯瑪M選擇方案四。2.路面黑帶檢測模塊黑帶檢測的原理是:紅外光線照射到路面并反射,由于黑帶和白紙的系數(shù)不同,可根據(jù)接的紅外線的強(qiáng)弱判斷是否到達(dá)黑帶。方案一:可見光發(fā)光二極管與光敏二極管組成的發(fā)射接收電路。這種方案的缺點(diǎn)在于其他環(huán)境光源會對光敏二極管的工作產(chǎn)生很大的干擾,一旦外界光亮條件改變,很可能造成誤判和漏判;雖然產(chǎn)生超高亮發(fā)光二極管可以降低一定的干擾,但這又將增加額外的功率損耗。方案二:反射式的紅外發(fā)射接收器。由于采用紅外管代替普通可見光管,可以降低環(huán)境

3、干擾。 基于上述理論分析,擬選擇方案二。3. 電源選擇方案一:所有器件采用電源供電,這樣供電電路比較簡單;但是由于電動機(jī)啟動瞬時電流很大,會造成電壓不穩(wěn),干擾嚴(yán)重,缺點(diǎn)十分明顯。方案二:雙電源供電,將電動機(jī)驅(qū)動電源與單片機(jī)以及周邊電路電源完全隔離,這樣做雖然不如單電源方便靈活,但可以將電動機(jī)驅(qū)動所造成的干擾徹底消除,提高了系統(tǒng)的穩(wěn)定性。基于上述理論分析,擬選擇方案二。4. 控制單元模塊方案一:采用純數(shù)字電路該方案外部檢測采用光電轉(zhuǎn)換,系統(tǒng)控制部分采用數(shù)字電路譯碼對小車電動機(jī)兩端電壓調(diào)整,來控制小車的運(yùn)行。時間和行程用加法器進(jìn)行計數(shù)。此系統(tǒng)的設(shè)計將會使電路過于復(fù)雜,調(diào)試時需要改變硬件電路,機(jī)動性

4、差。方案二:用單片機(jī)控制用光電檢測不同的信號,并經(jīng)單片機(jī)對其處理,傳送給L298信號,使其控制電機(jī)的正轉(zhuǎn)和反轉(zhuǎn),配合PWM程序控制,來實(shí)現(xiàn)加速減速和剎車。通過單片機(jī)內(nèi)部定數(shù)器/計數(shù)器進(jìn)行定時、計數(shù),在用單片機(jī)串行輸入/輸出口進(jìn)行顯示控制。此方案電路成熟、工作穩(wěn)定、容易實(shí)現(xiàn)控制。為能更好的實(shí)現(xiàn)題目的各種設(shè)計要求,所以我們選用第二種方案。用單片機(jī)進(jìn)行控制。其工作框圖如下:光電檢測小車正反轉(zhuǎn)控制中心STC89C52開 始行駛時間顯示霍爾檢測二 電路設(shè)計行駛里程顯示1. 光電檢測部分:我們采用反射式光電檢測電路對跑道上的黑線進(jìn)行檢測,并用兩個遮光套管套住發(fā)光管和接收管以一定的角度緊貼跑道,這樣可以消除

5、外界光線的干擾。為了加強(qiáng)可靠性采用槽型光耦檢測輪子轉(zhuǎn)動的行程。用LM358電壓比較器輸出高低電平檢測信號。如圖所示:2. STC89C52單片機(jī)基本系統(tǒng)此系統(tǒng)以89C52為核心,每檢測到一個黑帶由光電檢測部分產(chǎn)生一個的脈沖,使單片機(jī)產(chǎn)生一個外部中斷1,定義檢測黑帶數(shù)的變量加1,同時車輪每轉(zhuǎn)一圈,霍爾元件輸出一個脈沖,是安單片機(jī)產(chǎn)生一個外部中斷0,定義圈數(shù)的變量加1.通過P3.0和P3.1控制L298來控制電機(jī)的正轉(zhuǎn)與反轉(zhuǎn)及剎車。當(dāng)P3.0輸出低電平,P3.1輸出高電平時,電機(jī)正轉(zhuǎn),相反則電機(jī)反轉(zhuǎn),當(dāng)P3.0和P3.1都是低電平時,使電動機(jī)被短路,提高了剎車效率,基本杜絕了由于制動慣性造成的小車

6、的前沖現(xiàn)象。通過P0口進(jìn)行兩個數(shù)碼管的位選,P2口進(jìn)行段碼輸出,其中一個數(shù)碼管顯示行駛時間,另外一個數(shù)碼管顯示行駛路程。 如圖所示:3. L298N電動機(jī)驅(qū)動模塊部分該電路采用電動機(jī)驅(qū)動芯片L298來控制電動機(jī)的正轉(zhuǎn)與反轉(zhuǎn),加以第二路電機(jī)電源保證了電動機(jī)啟動時有足夠的電流。在試驗中控制電壓為單片機(jī)輸出的高低電平直接控制。具體電路圖連接如下:4. 電源部分由于電動機(jī)工作電流大,需要選用內(nèi)阻小,供電電流強(qiáng),質(zhì)量輕,可反復(fù)使用的經(jīng)濟(jì)型電池,我們選用鎳鉻可充電電池組。為使單片機(jī)工作穩(wěn)定,避免電動機(jī)開關(guān)機(jī)和其轉(zhuǎn)動時對其電源的影響,在此用兩個電池組和穩(wěn)壓塊7805分別為89C52和電動機(jī)驅(qū)動顯示部分分別進(jìn)

7、行供電。保證小車工作和顯示的穩(wěn)定性。5.軟件設(shè)計部分單片機(jī)控制電路主要由一片STC89C52組成,通過P3口控制小車正轉(zhuǎn)與反轉(zhuǎn),剎車,加速減速,通過兩個四聯(lián)數(shù)碼管控制顯示時間和里程以及小車行駛的時間。其中P0口進(jìn)行位選,P2口進(jìn)行顯示段碼輸出。該系統(tǒng)采用上電復(fù)位加上手動復(fù)位聯(lián)合復(fù)位系統(tǒng)進(jìn)行初始化,單片機(jī)通過P3.0,P3.1輸出脈沖控制電機(jī)正轉(zhuǎn)反轉(zhuǎn)以及剎車,當(dāng)P3.0,P3.1分別輸出01是電動機(jī)正轉(zhuǎn),輸出10時電動機(jī)反轉(zhuǎn),輸出00時電動機(jī)兩邊短路,小車立即剎車。流程圖如下:(1)外部中斷0車輪美轉(zhuǎn)一次,霍爾元件產(chǎn)生一個脈沖P3.14,通過下降沿觸發(fā)外部中斷0,并且在每進(jìn)行一次外部中斷記錄圈數(shù)

8、的變量加1.車輪每轉(zhuǎn)一圈霍爾元件產(chǎn)生一個脈沖圈數(shù)quanshu+開始外部中斷INT0(2)外中斷1光電檢測每檢測到一條黑帶就產(chǎn)生一個脈沖輸入P3.2口,通過下降沿的方式觸發(fā)外中斷1,每中斷一次記錄黑帶的變量加1,當(dāng)檢測到第五條黑帶時,p1.0=1,p1.1=1,小車的電動機(jī)由于短路剎車,當(dāng)檢測到第九條黑帶時,小車再次剎車同時關(guān)掉所有中斷。開始黑帶數(shù)heidai+退出EA=0,剎車P3.0=1,P3.1=1heidai=5YYheidai=9(3)定時器中斷0使用定時器T0產(chǎn)生5ms定時中斷,每次執(zhí)行該中斷前要先給定時器0賦初值,定時器中斷每執(zhí)行一次,變量加1。當(dāng)i=200時,即每當(dāng)計時1秒時,

9、時間變量t加1,速度等于一秒轉(zhuǎn)的圈數(shù)和小車車輪的周長相乘。定時中斷0開始產(chǎn)生5ms中斷控制一秒定時,i+一秒定時是否到共轉(zhuǎn)的圈數(shù)q路程=周長*圈數(shù)q(4)定時器中斷1主要用來產(chǎn)生不同的占空比的波型進(jìn)行高低速控制,每次執(zhí)行時,定時器1要賦初值(5) 主程序主程序主要用來控制兩個四聯(lián)數(shù)碼管的顯示,通過循環(huán)語句不斷的調(diào)用顯示程序,使兩個四聯(lián)數(shù)碼管按位不斷循環(huán)亮點(diǎn),當(dāng)小車行駛時動態(tài)顯示時間和路程,小車停止時顯示小車行駛過程中的時間和路程。6.安裝與調(diào)試自動小車為玩具遙控小汽車的改裝品,在改裝的過程中最重要的是考慮設(shè)計光電檢測管的位置,檢測黑帶的光電管放在車體的中央,用遮光管將其以一定反射角度壓到跑道上

10、。路程檢測用槽型光耦,放在小車的從動輪上。輪子的周長約為21.6厘米,在輪子上用了一個霍爾元件,每轉(zhuǎn)一圈一個脈沖。在組裝前對每一個單元電路進(jìn)行測試,以保證外部硬件電路的無誤,有利于最后的統(tǒng)調(diào)。調(diào)整是以點(diǎn)到線,最后到整體調(diào)試的方法。在調(diào)整的過程中我們發(fā)現(xiàn)了許多問題,如響應(yīng)中斷的次數(shù)的調(diào)整等。并且為了小車碰到墻壁不至于停車,我們在小車的四角上都加上了導(dǎo)向輪,導(dǎo)向輪用隨身聽的壓帶輪制作即可。7.附錄元器件及程序如下:基本元器件列表一個STC89C52單片機(jī)2個四位共陽數(shù)碼管一個L298N芯片一個LM358 一個霍爾元件和小磁鋼片光點(diǎn)接收管一對晶振(12M)及30pf電容開關(guān)電阻 10k 100歐姆

11、1k 20k可調(diào)附錄程序:#include<reg52.h> /包含頭文件#define uint unsigned int /宏常量定義#define uchar unsigned char /宏常量定義sbit dianji1=P10; /P1_0設(shè)置為電機(jī)控制一sbit dianji2=P11; /P1_1設(shè)置為電機(jī)控制二sbit hdjc=P32; /P3_2設(shè)置為黑帶檢測位uchar code duma=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff; /段編碼uchar code dianduma=0x40,

12、0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10; /帶小數(shù)點(diǎn)段編碼uchar code wema=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0xff; /位編碼uchar num,ge,shi,bai,qian; /定義幾個字符型變量uint miao,lc,heidai=0; /定義幾個整形變量long int qs; /定義一個長整形變量用來記錄小車所轉(zhuǎn)的圈數(shù)void fenwei(uint); /聲明一個分位函數(shù)用來把要顯示的數(shù)分位void shuma(uchar,uchar); /聲明一個數(shù)碼上顯

13、示函數(shù)用來在數(shù)碼管上顯示數(shù)據(jù)void shumadian(uchar,uchar); /聲明另一個數(shù)碼顯示函數(shù)用來顯示帶小數(shù)點(diǎn)的數(shù)據(jù)void miaoxianshi(uint); /聲明一個顯示時間的函數(shù)void lcxs(uint); /聲明一個顯示路程的函數(shù)void djkz(); /聲明一個電機(jī)控制函數(shù)void delay(uchar); /聲明一個延時函數(shù)void delay10s(); /聲明另一個延時函數(shù)用來延時十秒鐘/*主函數(shù)*/void main() EA=1; /打開總中斷ET0=1; /打開定時器中斷0EX0=1; /打開外部中斷1IT0=1; /外部中斷0設(shè)置為跳變沿觸發(fā)

14、方式EX1=1; /打開外部中斷1IT1=1; /外部中斷1設(shè)置為跳變沿觸發(fā)方式TMOD=0x01; /設(shè)置定時器0為方式1TH0=(65536-500)/256; /定時器0高八位裝初值TL0=(65536-500)%256; /定時器0低八位裝初值TR0=1; /打開定時器0while(1) /進(jìn)入主循環(huán) djkz(); /進(jìn)入電機(jī)控制函數(shù)/*顯示分位*/函數(shù)功能: 把需要在數(shù)碼管上顯示的數(shù)據(jù)分位,/ 即把數(shù)據(jù)的個、十、百、千位分別分/ 離出來/函數(shù)入口參數(shù):整形x,儲存需要分位的數(shù)據(jù)/函數(shù)返回值: 無void fenwei(uint x) ge=x%10; shi=(x%100)/10;

15、 bai=(x%1000)/100; qian=x/1000; /*數(shù)碼顯示*/函數(shù)功能: 將需要顯示的數(shù)據(jù)顯示在數(shù)碼管上/函數(shù)入口參數(shù):字符型x,儲存顯示數(shù)據(jù)/ 字符型y,儲存要顯示的位置/函數(shù)返回值: 無void shuma(uchar x,uchar y) P0=wema8;P2=dumax;P0=wemay;delay(5);/*帶小數(shù)點(diǎn)數(shù)碼顯示*/函數(shù)功能: 將需要顯示的數(shù)據(jù)顯示在數(shù)碼管上/函數(shù)入口參數(shù):字符型x,儲存顯示數(shù)據(jù)/ 字符型y,儲存要顯示的位置/函數(shù)返回值: 無void shumadian(uchar x,uchar y) P0=wema8;P2=diandumax;P0

16、=wemay;delay(5);/*時間顯示*/函數(shù)功能: 將定時器0輸出的時間顯示在數(shù)碼管上/函數(shù)入口參數(shù):整型x,要顯示的時間/函數(shù)返回值: 無void miaoxianshi(uint x) fenwei(x);shuma(ge,3);shuma(shi,2);shumadian(bai,1);shuma(qian,0);/*路程顯示*/函數(shù)功能: 將外部中斷1輸出的路程顯示在數(shù)碼/ 管上/函數(shù)入口參數(shù):整形z:要顯示的路程/函數(shù)返回值: 無void lcxs(uint z) fenwei(z);shuma(ge,7);shuma(shi,6);shumadian(bai,5);shum

17、a(qian,4);/*電機(jī)控制*/函數(shù)功能: 控制電機(jī)運(yùn)轉(zhuǎn)/函數(shù)入口參數(shù):無/函數(shù)返回值: 無 void djkz() uchar n=20,m=60;switch(heidai)case 0:case 1:case 2:dianji1=1;dianji2=0;miaoxianshi(miao);lcxs(lc);break;case 3:while(m-)dianji1=0;dianji2=1;delay(70);dianji1=0;dianji2=0;delay(30);miaoxianshi(miao);lcxs(lc);while(heidai=3)dianji1=1;dianji2

18、=0;delay(13);dianji1=0;dianji2=0;delay(1);miaoxianshi(miao);lcxs(lc);break;case 4:while(heidai=4)dianji1=1;dianji2=0;delay(25);dianji1=0;dianji2=0;delay(1);miaoxianshi(miao);lcxs(lc);break;case 5:while(n-)dianji1=0;dianji2=1;delay(50);dianji1=0;dianji2=0;delay(50);miaoxianshi(miao);lcxs(lc);dianji1=

19、1;dianji2=1;delay10s();while(heidai=5)dianji1=0;dianji2=1;break;case 6: dianji1=0;dianji2=1;miaoxianshi(miao);lcxs(lc);break;case 7:while(n-)dianji1=1;dianji2=0;delay(50);dianji1=0;dianji2=0;delay(50);miaoxianshi(miao);lcxs(lc);while(heidai=7)dianji1=0;dianji2=1;delay(90);dianji1=0;dianji2=0;delay(1);miaoxianshi(miao);lcxs(lc);break;case 8:dianji1=0;dianji2=1;miaoxianshi(miao);lcxs(lc);break;case 9:while(n-)dianji1=1;dianji2=0;delay(50);dianji1=0;dianji2=0;delay(50);miaoxianshi(miao);lcxs(lc);dianji1=1

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論