多功能小車的設(shè)計(jì)
《多功能小車的設(shè)計(jì)》由會(huì)員分享,可在線閱讀,更多相關(guān)《多功能小車的設(shè)計(jì)(11頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、基于探測(cè)用途多功能小車的設(shè)計(jì) 摘要: 這是一個(gè)基于80C52單片機(jī) 溫度傳感器 超聲波測(cè)距模塊的一個(gè)智能小車系統(tǒng)。該系統(tǒng)能準(zhǔn)確無(wú)誤的測(cè)出溫度和距離障礙物的距離,并且可以自動(dòng)避障,顯示溫度距離。具有方便,實(shí)用性價(jià)比高的特點(diǎn),經(jīng)過(guò)在實(shí)踐中的應(yīng)用,有一定的推廣價(jià)值。 關(guān)鍵字: 80C52單片機(jī) 溫度傳感器 超聲波測(cè)距模塊 智能小車系統(tǒng) 引言: 隨著電子技術(shù)的飛速發(fā)展,越來(lái)越多的單片機(jī)技術(shù)的廣泛使用已經(jīng)應(yīng)用于人們的 社會(huì)生產(chǎn)實(shí)踐,人類的生活發(fā)生了根本性的改變。由于在現(xiàn)代生產(chǎn)實(shí)踐中,從事某些生產(chǎn)作業(yè)的人員會(huì)遇到各種各樣的問(wèn)題以及一些安全隱患,基于此,本設(shè)計(jì)初步構(gòu)想,希望通過(guò)設(shè)計(jì)該小車的設(shè)計(jì),
2、以及通過(guò)其所實(shí)現(xiàn)的功能能夠在將來(lái)的生產(chǎn)實(shí)踐中得到有效合理的利用,從而滿足和實(shí)現(xiàn)社會(huì)的需求。 一、方案的選擇與器件的選用 本設(shè)計(jì)是基于STC89C52單片機(jī)進(jìn)行的,多功能小車基于STC89C52并且通過(guò)利用超聲波測(cè)距模塊用來(lái)實(shí)現(xiàn)繞開障礙物和通過(guò)溫度傳感器模塊用以實(shí)現(xiàn)探測(cè)環(huán)境溫度的功能,同時(shí)以1602液晶顯示屏來(lái)達(dá)到探測(cè)距離和溫度的精確測(cè)量,并且在距離以及溫度在達(dá)到一定的范圍時(shí),還能通過(guò)蜂鳴發(fā)生器和指示燈發(fā)出報(bào)警信號(hào),提醒我們來(lái)避開一些危險(xiǎn),從而有效解決了人們生產(chǎn)實(shí)踐中所遇到的各種難題。譬如:在生產(chǎn)作業(yè)的工作中,通過(guò)距離的探測(cè),能夠提醒相關(guān)工作人員躲避風(fēng)險(xiǎn),通過(guò)溫度的測(cè)量,能夠提醒人們何時(shí)進(jìn)行
3、相關(guān)操作等。 總而言之,該設(shè)計(jì)的廣泛使用能夠指導(dǎo)和解決人們的各種生產(chǎn)實(shí)踐所遇到的問(wèn)題。 一、具體實(shí)現(xiàn)的的功能: 利用超聲波探測(cè)器來(lái)測(cè)量距離障礙物的距離,同時(shí)并將測(cè)得的具體數(shù)值在液晶顯示屏上精確的顯示出來(lái),當(dāng)距離小于10cm時(shí),蜂鳴器會(huì)發(fā)聲,且會(huì)進(jìn)行自動(dòng)轉(zhuǎn)向已實(shí)現(xiàn)避障。 基于溫度傳感器用以測(cè)量周圍環(huán)境的溫度,同時(shí)并將測(cè)得的具體數(shù)值在液晶顯示屏上精確的顯示出來(lái),當(dāng)環(huán)境溫度高于25?C,LED燈會(huì)發(fā)光。 二、主要單元電路的設(shè)計(jì) l 單片機(jī)主控制模塊的設(shè)計(jì) STC89C52單片機(jī)為40引腳雙列直插芯片,有四個(gè)I/O口P0,P1,P2,P3,每一條I/O線都能獨(dú)立地作輸出或輸入。
4、 單片機(jī)的最小系統(tǒng)如下圖所示,18引腳和19引腳接時(shí)鐘電路,XTAL1接外部晶振和微調(diào)電容的一端,在片內(nèi)它是振蕩器倒相放大器的輸入,XTAL2接外部晶振和微調(diào)電容的另一端,在片內(nèi)它是振蕩器倒相放大器的輸出。第9引腳為復(fù)位輸入端,接上電容,電阻夠上電復(fù)位電路,20引腳為接地端,40引腳為電源端。 l 應(yīng)用電路模塊的設(shè)計(jì)。 1602顯示模塊的電路圖: 蜂鳴器模塊的電路圖: 溫度顯示器模塊的電路圖: l 應(yīng)用程序的設(shè)計(jì) 接線:模塊TRIG接 P2.6 ECH0 接P2.7 [注:AT89x51使用12M或11.0592M晶振,實(shí)測(cè)使用
5、11.0592M]
=============================================================*/
#include
6、sbit P35=P3^5; sbit P34=P3^4; sbit P33=P3^3; sbit P27=P2^7; #define LCD_Data P0 /****************************************** 函數(shù)功能:測(cè)試LCD忙碌狀態(tài) 入口參數(shù): 出口參數(shù):result *******************************************/ bit LCD_Busy() { bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1;
7、 delay_ms(5); //此處延時(shí)特別重要 (必不可少) result = (bit)(LCD_Data & 0x80); delay_ms(5); LCD_EN = 0; return result; } /****************************************** 函數(shù)功能:寫指令數(shù)據(jù)到LCD子程序 入口參數(shù):要寫入的指令 出口參數(shù): *******************************************/ void LCD_Write_Command(unsigned char cmd) { whil
8、e(LCD_Busy()); //判斷LCD是否忙碌 LCD_RS = 0; LCD_RW = 0; LCD_EN = 1; LCD_Data = cmd; delay_ms(5); LCD_EN = 0; } /****************************************** 函數(shù)功能:寫入顯示數(shù)據(jù)到LCD子程序 入口參數(shù):要寫入的數(shù)據(jù) 出口參數(shù): *******************************************/ void LCD_Write_Data(unsigned char dat) { w
9、hile(LCD_Busy()); //判斷LCD是否忙碌 LCD_RS = 1; LCD_RW = 0; LCD_EN = 1; LCD_Data = dat; delay_ms(5); LCD_EN = 0; } /****************************************** 函數(shù)功能:設(shè)定顯示位置子程序 入口參數(shù):pos 出口參數(shù): *******************************************/ void LCD_Position(unsigned char pos) { LCD_
10、Write_Command(pos|0x80); } /****************************************** 函數(shù)功能:LCD初始化子程序 入口參數(shù): 出口參數(shù): *******************************************/ void LCD_Init() { delay_ms(15); LCD_Write_Command(0x38); //顯示模式設(shè)置 delay_ms(5); LCD_Write_Command(0x38); //顯示模式設(shè)置 delay_ms(5);
11、 LCD_Write_Command(0x38); //顯示模式設(shè)置 delay_ms(5); LCD_Write_Command(0x0c); //顯示光標(biāo)設(shè)置,開顯示 delay_ms(5); LCD_Write_Command(0x06); //顯示光標(biāo)移動(dòng)(右移) delay_ms(5); LCD_Write_Command(0x01); //清屏 delay_ms(5); } /****************************************** 函數(shù)功能:顯示自定義字符 入
12、口參數(shù):x坐標(biāo)值,y坐標(biāo)值,顯示的字符數(shù)據(jù) 出口參數(shù): *******************************************/ void LCD_Display_Bmp(unsigned char x,unsigned char y,unsigned char *mytab) { unsigned char i=0; LCD_Write_Command(0x40); //寫CGRAM for (i=0;i<8;i++) LCD_Write_Data(mytab[i]); if(y==0) LCD_Position(x)
13、; else LCD_Position(x+0x40);//設(shè)置顯示位置 LCD_Write_Data(0); } /******************************************* 函數(shù)功能:顯示字符串程序 備注1:0<=x<=15 備注2:0<=y<= 1 *******************************************/ void LCD_Display(unsigned char x,unsigned char y,unsigned char *words) { unsigned cha
14、r i=0; if(y==0)LCD_Position(x); //設(shè)置顯示位置 else LCD_Position(x+0x40); while(words[i] != \0) { LCD_Write_Data(words[i]); //顯示字符 i++; } } /******************************************* 函數(shù)功能:顯示一個(gè)ASCII碼程序 備注1:0<=x<=15 備注2:0<=y<= 1 ****************************************
15、***/ void LCD_Display_Char(unsigned char x,unsigned char y,unsigned char word) { unsigned char i=0; if(y==0)LCD_Position(x); //設(shè)置顯示位置 else LCD_Position(x+0x40); LCD_Write_Data(word); //顯示字符 } unsigned char ReadDataLCM(void); unsigned char ReadStatusLCM(void); unsigne
16、d char code mcustudio[] ={"jilin university"}; unsigned char code email[] = {"hhhhhhhh"}; unsigned char code Cls[] = {" "}; unsigned char code ASCII[15] = {0,1,2,3,4,5,6,7,8,9,.,-,M}; static unsigned char DisNum = 0; //顯示用指針 unsigned int time=0; un
17、signed long S=0; bit flag =0; unsigned char disbuff[4] ={ 0,0,0,0,}; void Conut(void) { time=TH0*256+TL0; TH0=0; TL0=0; S=(time*1.7)/100; //算出來(lái)是CM if((S>=700)||flag==1) //超出測(cè)量范圍顯示“-” { flag=0; LCD_Display_Char(0, 1, ASCII[11]); LCD_Dis
18、play_Char(1, 1, ASCII[10]); //顯示點(diǎn) LCD_Display_Char(2, 1, ASCII[11]); LCD_Display_Char(3, 1, ASCII[11]); LCD_Display_Char(4, 1, ASCII[12]); //顯示M } else { disbuff[0]=S%1000/100; disbuff[1]=S%1000%100/10; disbuff[2]=S%1000%10 %10; LCD_Display_Char(0, 1, ASCII[disbu
19、ff[0]]); LCD_Display_Char(1, 1, ASCII[10]); //顯示點(diǎn) LCD_Display_Char(2, 1, ASCII[disbuff[1]]); LCD_Display_Char(3, 1, ASCII[disbuff[2]]); LCD_Display_Char(4, 1, ASCII[12]); //顯示M } } /********************************************************/ void zd0() interrupt 1 //T0中斷
20、用來(lái)計(jì)數(shù)器溢出,超過(guò)測(cè)距范圍 {TL0=0; TH0=0; flag=1; //中斷溢出標(biāo)志 } /********************************************************/ void StartModule() //啟動(dòng)模塊 { TX=1; //啟動(dòng)一次模塊 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
21、 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); TX=0; } void main(void) {unsigned int j,k; LCD_Init(); // 初始化LCD
22、 LCD_Display(0,0,"51090210 Jlu"); LCD_Display_Char(15,1,0x43); //0x43對(duì)應(yīng)ASCII碼為"C" LCD_Display_Bmp(14,1,tab); while(1){ TMOD=0x01; //設(shè)T0為方式1,GATE=1; TH0=0; TL0=0; ET0=1; //允許T0中斷 EA=1; //開啟總中斷 while(1) { StartModule(); whi
23、le(!RX); //當(dāng)RX為零時(shí)等待 TR0=1; //開啟計(jì)數(shù) while(RX); //當(dāng)RX為1計(jì)數(shù)并等待 TR0=0; //關(guān)閉計(jì)數(shù) Conut(); //計(jì)算 Read_Temperature(); j=temp_data[0]; k=temp_data[1]; k=k<<8; //開始計(jì)算實(shí)際溫度 j|=k; j*=0.625; LCD_Display_Char(10,1,j/100 + 0x30);//加上0x30轉(zhuǎn)換為ASCII碼 L
24、CD_Display_Char(11,1,j%100/10 + 0x30); LCD_Display(12,1,"."); LCD_Display_Char(13,1,j%10 + 0x30); if(j>250){deng=0;} else deng=1; if(S<10)feng=0; else feng=1; } } } // P27=1; // P33=0;P34=1; P35=0;P36=1;// while(1){ if(S<=10) {P33=1;P34=0;} else{P33=0;
25、P34=1;} } } 三、總結(jié) 我們制作這次設(shè)計(jì)一切都是從零開始,從最簡(jiǎn)單的畫流程圖起步。在整個(gè)過(guò)程當(dāng)中,遇到很多困難,由于時(shí)間緊迫,起步時(shí)間較晚,還有其他一些財(cái)力方面的原因,本來(lái)打算實(shí)現(xiàn)的煙霧探測(cè)和小車的尋跡等其他功能未能實(shí)現(xiàn),雖然有些遺憾,但是在整個(gè)設(shè)計(jì)過(guò)程中,我們充分發(fā)揮人的主觀能動(dòng)性,學(xué)會(huì)了自主學(xué)習(xí),學(xué)到了許多課本上學(xué)不到的知識(shí)。較好的完成了設(shè)計(jì),初步達(dá)到了預(yù)期的目的,部分實(shí)現(xiàn)了最初的設(shè)想。我們由此得出:對(duì)電路的設(shè)計(jì)、布局要先有一個(gè)好的構(gòu)思,才顯得電路板美觀、大方。程序編寫中,由于思路不清晰,開始時(shí)遇到了很多的問(wèn)題,經(jīng)過(guò)靜下心來(lái)思考,和同學(xué)討論,理清了思路,反而得心應(yīng)手。在此次設(shè)計(jì)中,知道了凡事要有一顆不畏困難、積極進(jìn)取、勇于探索的精神,不要想著走捷徑,一步一腳印。同時(shí)也練就了我們的耐心、細(xì)心、恒心,無(wú)論如何,此次課程設(shè)計(jì)中學(xué)到了很多很多東西,這才是最重要的??傊?,此次電子設(shè)使我們的能力得到了全方位的提高,使得我的操作能力和專業(yè)技能都有了很大的提高,從而為將來(lái)的進(jìn)一步學(xué)習(xí)和工作奠定了良好的基礎(chǔ)。
- 溫馨提示:
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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)6整理和復(fù)習(xí)2圖形與幾何第7課時(shí)圖形的位置練習(xí)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)6整理和復(fù)習(xí)2圖形與幾何第1課時(shí)圖形的認(rèn)識(shí)與測(cè)量1平面圖形的認(rèn)識(shí)練習(xí)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)6整理和復(fù)習(xí)1數(shù)與代數(shù)第10課時(shí)比和比例2作業(yè)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)4比例1比例的意義和基本性質(zhì)第3課時(shí)解比例練習(xí)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)3圓柱與圓錐1圓柱第7課時(shí)圓柱的體積3作業(yè)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)3圓柱與圓錐1圓柱第1節(jié)圓柱的認(rèn)識(shí)作業(yè)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)2百分?jǐn)?shù)(二)第1節(jié)折扣和成數(shù)作業(yè)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)1負(fù)數(shù)第1課時(shí)負(fù)數(shù)的初步認(rèn)識(shí)作業(yè)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)上冊(cè)期末復(fù)習(xí)考前模擬期末模擬訓(xùn)練二作業(yè)課件蘇教版
- 2023年六年級(jí)數(shù)學(xué)上冊(cè)期末豐收?qǐng)@作業(yè)課件蘇教版
- 2023年六年級(jí)數(shù)學(xué)上冊(cè)易錯(cuò)清單十二課件新人教版
- 標(biāo)準(zhǔn)工時(shí)講義
- 2021年一年級(jí)語(yǔ)文上冊(cè)第六單元知識(shí)要點(diǎn)習(xí)題課件新人教版
- 2022春一年級(jí)語(yǔ)文下冊(cè)課文5識(shí)字測(cè)評(píng)習(xí)題課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)6整理和復(fù)習(xí)4數(shù)學(xué)思考第1課時(shí)數(shù)學(xué)思考1練習(xí)課件新人教版