多功能小車的設(shè)計

上傳人:jun****875 文檔編號:17807455 上傳時間:2020-12-07 格式:DOC 頁數(shù):11 大?。?52.41KB
收藏 版權(quán)申訴 舉報 下載
多功能小車的設(shè)計_第1頁
第1頁 / 共11頁
多功能小車的設(shè)計_第2頁
第2頁 / 共11頁
多功能小車的設(shè)計_第3頁
第3頁 / 共11頁

下載文檔到電腦,查找使用更方便

9.9 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《多功能小車的設(shè)計》由會員分享,可在線閱讀,更多相關(guān)《多功能小車的設(shè)計(11頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、基于探測用途多功能小車的設(shè)計 摘要: 這是一個基于80C52單片機(jī) 溫度傳感器 超聲波測距模塊的一個智能小車系統(tǒng)。該系統(tǒng)能準(zhǔn)確無誤的測出溫度和距離障礙物的距離,并且可以自動避障,顯示溫度距離。具有方便,實用性價比高的特點,經(jīng)過在實踐中的應(yīng)用,有一定的推廣價值。 關(guān)鍵字: 80C52單片機(jī) 溫度傳感器 超聲波測距模塊 智能小車系統(tǒng) 引言: 隨著電子技術(shù)的飛速發(fā)展,越來越多的單片機(jī)技術(shù)的廣泛使用已經(jīng)應(yīng)用于人們的 社會生產(chǎn)實踐,人類的生活發(fā)生了根本性的改變。由于在現(xiàn)代生產(chǎn)實踐中,從事某些生產(chǎn)作業(yè)的人員會遇到各種各樣的問題以及一些安全隱患,基于此,本設(shè)計初步構(gòu)想,希望通過設(shè)計該小車的設(shè)計,

2、以及通過其所實現(xiàn)的功能能夠在將來的生產(chǎn)實踐中得到有效合理的利用,從而滿足和實現(xiàn)社會的需求。 一、方案的選擇與器件的選用 本設(shè)計是基于STC89C52單片機(jī)進(jìn)行的,多功能小車基于STC89C52并且通過利用超聲波測距模塊用來實現(xiàn)繞開障礙物和通過溫度傳感器模塊用以實現(xiàn)探測環(huán)境溫度的功能,同時以1602液晶顯示屏來達(dá)到探測距離和溫度的精確測量,并且在距離以及溫度在達(dá)到一定的范圍時,還能通過蜂鳴發(fā)生器和指示燈發(fā)出報警信號,提醒我們來避開一些危險,從而有效解決了人們生產(chǎn)實踐中所遇到的各種難題。譬如:在生產(chǎn)作業(yè)的工作中,通過距離的探測,能夠提醒相關(guān)工作人員躲避風(fēng)險,通過溫度的測量,能夠提醒人們何時進(jìn)行

3、相關(guān)操作等。 總而言之,該設(shè)計的廣泛使用能夠指導(dǎo)和解決人們的各種生產(chǎn)實踐所遇到的問題。 一、具體實現(xiàn)的的功能: 利用超聲波探測器來測量距離障礙物的距離,同時并將測得的具體數(shù)值在液晶顯示屏上精確的顯示出來,當(dāng)距離小于10cm時,蜂鳴器會發(fā)聲,且會進(jìn)行自動轉(zhuǎn)向已實現(xiàn)避障。 基于溫度傳感器用以測量周圍環(huán)境的溫度,同時并將測得的具體數(shù)值在液晶顯示屏上精確的顯示出來,當(dāng)環(huán)境溫度高于25?C,LED燈會發(fā)光。 二、主要單元電路的設(shè)計 l 單片機(jī)主控制模塊的設(shè)計 STC89C52單片機(jī)為40引腳雙列直插芯片,有四個I/O口P0,P1,P2,P3,每一條I/O線都能獨立地作輸出或輸入。

4、 單片機(jī)的最小系統(tǒng)如下圖所示,18引腳和19引腳接時鐘電路,XTAL1接外部晶振和微調(diào)電容的一端,在片內(nèi)它是振蕩器倒相放大器的輸入,XTAL2接外部晶振和微調(diào)電容的另一端,在片內(nèi)它是振蕩器倒相放大器的輸出。第9引腳為復(fù)位輸入端,接上電容,電阻夠上電復(fù)位電路,20引腳為接地端,40引腳為電源端。 l 應(yīng)用電路模塊的設(shè)計。 1602顯示模塊的電路圖: 蜂鳴器模塊的電路圖: 溫度顯示器模塊的電路圖: l 應(yīng)用程序的設(shè)計 接線:模塊TRIG接 P2.6 ECH0 接P2.7 [注:AT89x51使用12M或11.0592M晶振,實測使用

5、11.0592M] =============================================================*/ #include //器件配置文件 #include #include "18b20.h" #define RX P2_7 #define TX P2_6 sbit LCD_RS = P2^0; sbit LCD_RW = P2^1; sbit LCD_EN = P2^2; sbit feng=P1^1; sbit deng=P1^0; sbit P36=P3^6;

6、sbit P35=P3^5; sbit P34=P3^4; sbit P33=P3^3; sbit P27=P2^7; #define LCD_Data P0 /****************************************** 函數(shù)功能:測試LCD忙碌狀態(tài) 入口參數(shù): 出口參數(shù):result *******************************************/ bit LCD_Busy() { bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1;

7、 delay_ms(5); //此處延時特別重要 (必不可少) 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)移動(右移) 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ù)功能:顯示一個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; //算出來是CM if((S>=700)||flag==1) //超出測量范圍顯示“-” { flag=0; LCD_Display_Char(0, 1, ASCII[11]); LCD_Dis

18、play_Char(1, 1, ASCII[10]); //顯示點 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]); //顯示點 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、用來計數(shù)器溢出,超過測距范圍 {TL0=0; TH0=0; flag=1; //中斷溢出標(biāo)志 } /********************************************************/ void StartModule() //啟動模塊 { TX=1; //啟動一次模塊 _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對應(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為零時等待 TR0=1; //開啟計數(shù) while(RX); //當(dāng)RX為1計數(shù)并等待 TR0=0; //關(guān)閉計數(shù) Conut(); //計算 Read_Temperature(); j=temp_data[0]; k=temp_data[1]; k=k<<8; //開始計算實際溫度 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è)計一切都是從零開始,從最簡單的畫流程圖起步。在整個過程當(dāng)中,遇到很多困難,由于時間緊迫,起步時間較晚,還有其他一些財力方面的原因,本來打算實現(xiàn)的煙霧探測和小車的尋跡等其他功能未能實現(xiàn),雖然有些遺憾,但是在整個設(shè)計過程中,我們充分發(fā)揮人的主觀能動性,學(xué)會了自主學(xué)習(xí),學(xué)到了許多課本上學(xué)不到的知識。較好的完成了設(shè)計,初步達(dá)到了預(yù)期的目的,部分實現(xiàn)了最初的設(shè)想。我們由此得出:對電路的設(shè)計、布局要先有一個好的構(gòu)思,才顯得電路板美觀、大方。程序編寫中,由于思路不清晰,開始時遇到了很多的問題,經(jīng)過靜下心來思考,和同學(xué)討論,理清了思路,反而得心應(yīng)手。在此次設(shè)計中,知道了凡事要有一顆不畏困難、積極進(jìn)取、勇于探索的精神,不要想著走捷徑,一步一腳印。同時也練就了我們的耐心、細(xì)心、恒心,無論如何,此次課程設(shè)計中學(xué)到了很多很多東西,這才是最重要的??傊?,此次電子設(shè)使我們的能力得到了全方位的提高,使得我的操作能力和專業(yè)技能都有了很大的提高,從而為將來的進(jìn)一步學(xué)習(xí)和工作奠定了良好的基礎(chǔ)。

展開閱讀全文
溫馨提示:
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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔

相關(guān)搜索

關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!