基于某51單片機(jī)地自動往返小車_第1頁
基于某51單片機(jī)地自動往返小車_第2頁
基于某51單片機(jī)地自動往返小車_第3頁
基于某51單片機(jī)地自動往返小車_第4頁
基于某51單片機(jī)地自動往返小車_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、基于單片機(jī)的自動往返小車摘要本設(shè)計以一片單片機(jī) STC89C52 作為核心來控制自動往返小車,加以控 制芯片 L298N 和單片機(jī)聯(lián)合控制小車的前進(jìn)與后退。 路面的黑帶檢測使用反 射式紅外傳感器,通過 STC89C52 對輸入的信號進(jìn)行處理,以動態(tài)顯示的形 式通過一個四位的數(shù)碼管顯示即時里程,另外一個四位數(shù)碼管動態(tài)顯示小車 行駛時間。以紅外傳感器對路面黑線檢測用,行駛距離使用霍爾元件進(jìn)行檢 測。關(guān)鍵詞:光電檢測 霍爾檢測 動態(tài)顯示 L298N 控制電動機(jī)小組成員:亞昊、國翠、成曉斌、丁玉嬌黑帶檢測1. 電機(jī)驅(qū)動調(diào)速模塊采用 L298N 來控制電機(jī)的正轉(zhuǎn)和反轉(zhuǎn)來實現(xiàn)小車的前進(jìn)和后退。加上單片機(jī)

2、的程序 PWM ,實現(xiàn)整車的加速與減速,精確小車的速度。2. 路面黑帶檢測模塊 黑帶檢測的原理是:紅外光線照射到路面并反射,由于黑帶和白紙的系數(shù)不 同,可根據(jù)接的紅外線的強(qiáng)弱判斷是否到達(dá)黑帶。反射式的紅外發(fā)射接收器。由于采用紅外管代替普通可見光管,可以降低 環(huán)境干擾。3. 電源選擇 雙電源供電,將電動機(jī)驅(qū)動電源與單片機(jī)以及周邊電路電源完全隔離,這樣 做雖然不如單電源方便靈活,但可以將電動機(jī)驅(qū)動所造成的干擾徹底消除,提高 了系統(tǒng)的穩(wěn)定性。4. 控制單元模塊 用單片機(jī)控制 用光電檢測不同的信號,并經(jīng)單片機(jī)對其處理,傳送給 L298 信號,使其控制 電機(jī)的正轉(zhuǎn)和反轉(zhuǎn),配合 PWM 程序控制,來實現(xiàn)加

3、速減速和剎車。通過單片機(jī) 部定數(shù)器 /計數(shù)器進(jìn)行定時、計數(shù),在用單片機(jī)串行輸入 /輸出口進(jìn)行顯示控制。此 方案電路成熟、工作穩(wěn)定、容易實現(xiàn)控制。1. 光電檢測部分:我們采用反射式光電檢測電路對跑道上的黑線進(jìn)行檢測,并用兩個遮光套管 套住發(fā)光管和接收管以一定的角度緊貼跑道,這樣可以消除外界光線的干擾,用LM358 電壓比較器輸出高低電平檢測信號。如圖所示:2. STC89C52 單片機(jī)基本系統(tǒng)此系統(tǒng)以 89C52 為核心,每檢測到一個黑帶由光電檢測部分產(chǎn)生一個的脈沖, 使單片機(jī)產(chǎn)生一個外部中斷 1,定義檢測黑帶數(shù)的變量加 1,同時車輪每轉(zhuǎn)一圈, 霍爾元件輸出一個脈沖,是安單片機(jī)產(chǎn)生一個外部中斷0

4、,定義圈數(shù)的變量加 1.通過 P1.0和 P1.1控制 L298來控制電機(jī)的正轉(zhuǎn)與反轉(zhuǎn)及剎車。 當(dāng) P1.0輸出低電平, P1.1輸出高電平時,電機(jī)正轉(zhuǎn),相反則電機(jī)反轉(zhuǎn),當(dāng) P1.0和 P1.1都是低電平時, 使電動機(jī)被短路,提高了剎車效率,基本杜絕了由于制動慣性造成的小車的前沖 現(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ī)輸出的高

5、低電平直接控制。具體電路圖連接如下:4. 電源部分 由于電動機(jī)工作電流大,需要選用阻小,供電電流強(qiáng),質(zhì)量輕,可反復(fù)使用 的經(jīng)濟(jì)型電池,我們選用可充電電池組。為使單片機(jī)工作穩(wěn)定,避免電動機(jī)開關(guān) 機(jī)和其轉(zhuǎn)動時對其電源的影響, 在此用兩個電池組和穩(wěn)壓塊 7805 分別為 89C52和 電動機(jī)驅(qū)動顯示部分分別進(jìn)行供電。保證小車工作和顯示的穩(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)合

6、復(fù)位系統(tǒng)進(jìn)行初始化,單片機(jī)通過P1.0,P1.1輸出脈沖控制電機(jī)正轉(zhuǎn)反轉(zhuǎn)以及剎車,當(dāng) P1.0,P1.1分別輸出 01 是電 動機(jī)正轉(zhuǎn),輸出 10 時電動機(jī)反轉(zhuǎn),輸出 00 時電動機(jī)兩邊短路,小車立即剎車。 流程圖如下:( 1)外部中斷 0 車輪美轉(zhuǎn)一次, 霍爾元件產(chǎn)生一個脈沖 P3.3,通過下降沿觸發(fā)外部中斷 0,并 且在每進(jìn)行一次外部中斷記錄圈數(shù)的變量加 1.( 2)外中斷 1 光電檢測每檢測到一條黑帶就產(chǎn)生一個脈沖輸入 P3.2 口,通過下降沿的方式 觸發(fā)外中斷 1,每中斷一次記錄黑帶的變量加 1,當(dāng)檢測到第六條黑帶時, p1.0=1, p1.1=1,小車的電動機(jī)由于短路剎車, 當(dāng)檢測到

7、第十二條黑帶時, 小車再次剎車同 時關(guān)掉所有中斷退出( 3)定時器中斷 0 使用定時器 T0 產(chǎn)生 5ms定時中斷,每次執(zhí)行該中斷前要先給定時器 0賦初值, 定時器中斷每執(zhí)行一次,變量加 1。當(dāng) i=200 時,即每當(dāng)計時 1 秒時,時間變量 t 加 1 ,速度等于一秒轉(zhuǎn)的圈數(shù)和小車車輪的周長相乘。( 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)顯示時間和路程, 小車停止時顯示小車行駛過程中的時間和路

8、程。6. 安裝與調(diào)試 自動小車為玩具遙控小汽車的改裝品,在改裝的過程中最重要的是考慮設(shè)計 光電檢測管的位置,檢測黑帶的光電管放在車體的中央,用遮光管將其以一定反 射角度壓到跑道上。路程檢測用槽型光耦,放在小車的從動輪上。輪子的周長約 為 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. 附錄元器件及程

9、序如下: 基本元器件列表一個 STC89C52 單片機(jī)2 個四位共陽數(shù)碼管 一個 L298N 芯片 一個霍爾元件和小磁鋼片 一路循跡模塊 晶振( 12M)及 30pf電容 開關(guān)電阻 10k 100歐姆 1k 20k 可調(diào)程序:/段編碼#include#define uint unsigned int #define uchar unsigned char sbit dianji1=P10;sbit dianji2=P11;sbit hdjc=P32; uchar code duma= 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f;uch

10、ar code dianduma= 0xbf,0x86,0xdb,0xcf, 0xe6,0xed,0xfd,0x87, 0xff,0xef;uchar code wema= 0x01,0x02,0x04,0x08, 0x10,0x20,0x40,0x80, 0x00,0xff;uchar num,ge,shi,bai,qian; uint miao,lc,heidai=0;/包含頭文件/宏常量定義/宏常量定義/P1_0 設(shè)置為電機(jī)控制一/P1_1 設(shè)置為電機(jī)控制二/P3_2 設(shè)置為黑帶檢測位/帶小數(shù)點(diǎn)段編碼/位編碼/定義幾個字符型變量/定義幾個整形變量long int qs;void fenw

11、ei(uint);void shuma(uchar,uchar);/定義一個長整形變量用來記錄小車所轉(zhuǎn)的圈數(shù)/聲明一個分位函數(shù)用來把要顯示的數(shù)分位/聲明一個數(shù)碼上顯示函數(shù)用來在數(shù)碼管上顯示數(shù)據(jù)void shumadian(uchar,uchar); 數(shù)據(jù)/聲明另一個數(shù)碼顯示函數(shù)用來顯示帶小數(shù)點(diǎn)的void miaoxianshi(uint);void lcxs(uint);void djkz();void delay(uchar);void delay10s();void fenwei(uint x)/聲明一個顯示時間的函數(shù)/聲明一個顯示路程的函數(shù) /聲明一個電機(jī)控制函數(shù)/聲明一個延時函數(shù) /聲

12、明另一個延時函數(shù)用來延時十秒鐘 /把需要在數(shù)碼管上顯示的數(shù)據(jù)分位ge=x%10;shi=(x%100)/10;bai=(x%1000)/100;qian=x/1000;void shuma(uchar x,uchar y)P0=wema8;P2=dumax;P0=wemay;delay(5);void shumadian(uchar x,uchar y)P0=wema8;P2=diandumax;P0=wemay;delay(5);void miaoxianshi(uint x)f enwei(x);shuma(ge,3);shuma(shi,2);shumadian(bai,1); shum

13、a(qian,0);void lcxs(uint z)f enwei(z);shuma(ge,7);shuma(shi,6);shumadian(bai,5);shuma(qian,4);void djkz()uchar n=20,m=60;switch(heidai)/將需要顯示的數(shù)據(jù)顯示在數(shù)碼管上/將需要顯示的數(shù)據(jù)顯示在數(shù)碼管上/將定時器 0 輸出的時間顯示在數(shù)碼管上/將外部中斷 1 輸出的路程顯示在數(shù)碼/控制電機(jī)運(yùn)轉(zhuǎn)case 0:case 1:case 2:dianji1=1;dianji2=0; miaoxianshi(miao); lcxs(lc);break;case 3:whil

14、e(m-)dianji1=1;dianji2=0; delay(70);dianji1=0;dianji2=0; delay(30); miaoxianshi(miao); lcxs(lc);while(heidai=3)dianji1=1;dianji2=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(

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

16、dianji1=0; dianji2=1; 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 10:dianji1=0;dianji2=1; miaoxianshi(miao); lcxs(lc);break;case 11:dianji1=0;dianji2=1;

17、miaoxianshi(miao); lcxs(lc);case 12: while(n-) dianji1=0; dianji2=1; delay(50); dianji1=0; dianji2=0; delay(50); miaoxianshi(miao); lcxs(lc);dianji1=1;dianji2=1;TR0=0;while(1)miaoxianshi(miao);lcxs(lc);default: break;void delay(uchar x)uchar i,j;f or(i=x;i0;i-)for(j=50;j0;j-);void delay10s()uint i,j;for(i=15;i0;i-) for(j=123;j0;j-) miaoxianshi(miao); lcxs(lc);void ext0() interrupt 0delay(50);i f(hdjc=0)heidai+;void time0() interrupt 1TH0=(65536-500)/256; TL0=(65536-500)%256; num+;i f(num=20)num=0;miao+;void ext1() interrupt 2qs+;lc=(int)(qs*38.5);void main()EA=1;ET0=1;EX0=1;IT0=

溫馨提示

  • 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

提交評論