《單片機原理及應用》期末課程設計-智能小汽車.doc
《《單片機原理及應用》期末課程設計-智能小汽車.doc》由會員分享,可在線閱讀,更多相關《《單片機原理及應用》期末課程設計-智能小汽車.doc(41頁珍藏版)》請在裝配圖網(wǎng)上搜索。
數(shù)理與信息工程《單片機原理及應用》期末課程設計——智能小汽車 數(shù)理與信息工程學院 《單片機原理及應用》期末課程設計 題 目: 智能小汽車 專 業(yè): 電子信息工程 目錄 第1節(jié) 引 言………………………………………………………………………..3 1.1 智能小汽車系統(tǒng)概述……………………………………………………….3 1.2 本設計任務和主要內容……………………………………………………3 第2節(jié) 系統(tǒng)主要硬件電路設計……………………………………………………4 2.1 系統(tǒng)方案論證與比較………………………………………………………4 2.2 單片機主機系統(tǒng)電路………………………………………………………5 2.2.1 時鐘電路……………………………………………………………5 2.2.2 復位電路……………………………………………………………6 2.3 電機的選擇與論證…………………………………………………………6 2.4 電機驅動方案與電路………………………………………………………6 2.5 探測障礙物方案與電路……………………………………………………8 2.6 光源檢測方案與電路………………………………………………………9 2.7 顯示部分方案與電路………………………………………………………9 2.8 電源方案與PCB電路…………………………………………………….10 2.9 入庫前后聲音提示方案與電路………………………………………….11 2.10 攔柵控制電路…………………………………………………………….12 2.11 車速檢測模塊電路……………………………………………………….13 第3節(jié) 系統(tǒng)的軟件設計………………………………………………………….14 3.1 系統(tǒng)主程序設計………………………………………………………….14 3.2 小車行使程序…………………………………………………………….32 第4節(jié) 結束語…………………………………………………………………….39 參考文獻…………………………………………………………………………….40 附錄………………………………………………………………………………….41 智能小汽車 第1節(jié) 引 言 (知道段前段后什么要求嗎?) 題目要求設計一智能小汽車,小車能夠準確尋找到光源,并隨著光源的引導,能夠順利地進入車庫,同時在行程過程中能準確地顯示小車的行使路程的總時間。根據(jù)要求本設計用兩個電機來控制小車的轉向,用紅外對管傳感器來檢測障礙物,用光敏電阻來檢測光源,用夜晶來顯示小車的行使時間和車庫攔柵上升的時間、高度以及當前溫度等。與此同時通過語音電路來實現(xiàn)人性化的人機互動。作品可以作為高級智能玩具,也可以作為大學生學習嵌入式控制的強有力的應用實例,該系統(tǒng)將會有更廣闊的開發(fā)前景。 1.1 智能小汽車系統(tǒng)概述 本設計制作了一款具有智能判斷功能的小車,功能強大。小車具有以下幾個功能:自動避障功能(避免撞到車庫的三塊木板);趨光功能(尋找前方的點光源并行駛到位、尋找車庫門);顯示小車行走的總時間以及車庫攔柵上升的時間、高度以及當前溫度,同時在小車準備入庫時和入庫后進行語音提示。在小車行走控制中作品以兩直流電動機為主驅動,通過各類傳感器件來采集各類信息,送入主控單元AT89C51單片機,處理數(shù)據(jù)后完成相應動作,以達到自動控制。在開啟和關閉車庫攔柵時用步進電機來控制,并通過單片機來實現(xiàn)相應動作。直流電機驅動電路采用三極管8550、8050組成的H橋型驅動電路及應用光藕芯片對兩路電源進行分離。步進電機采用L298N和IN5408來驅動,其中避障采用紅外對管收發(fā)來完成;趨光部分通過兩路光敏電阻對光源信號的采集,再將信號送到單片機處理去判別方向,并由控制單元處理數(shù)據(jù)后完成相應動作,實現(xiàn)了無人控制即可完成一系列動作,相當于簡易機器人。 1.2 本設計任務和主要內容(知道段前段后什么要求嗎?) 本論文主要研究單片機控制的智能小汽車系統(tǒng),小車控制技術及系統(tǒng)設備的軟、硬件各個部分進行了研究。 主要內容如下: ① 根據(jù)小車的特點,進行智能小汽車控制系統(tǒng)的整體研究與設計。 ②對其設計進行了深入的研究,重點研究小車入庫控制方式。 ③ LCD顯示小車行走的總時間以及車庫攔柵上升的時間、高度以及當前溫度,同時在小車準備入庫時和入庫后進行語音提示。 第2節(jié) 系統(tǒng)主要硬件電路設計 2.1 系統(tǒng)方案論證與比較(知道段前段后什么要求嗎?) ???? 方案一:采用各類數(shù)字電路來組成小車的控制系統(tǒng),對外圍避障信號,各路趨光信號進行處理,車庫攔柵上升下降控制,溫度顯示等。本方案電路復雜,靈活性高,效率低,不利于小車智能化的擴展,對各路信號處理比較困難。 ??? 方案二:采用AT89C51單片機來作為整機的控制核心單元。紅外線探頭采用市面上通用的發(fā)射管與及接收頭,經(jīng)過單片機調制后發(fā)射。車庫攔柵控制部分用步進機來驅動再將采集到的各類信號送往單片機進行綜合分析處理,實現(xiàn)準確有效的動作,此系統(tǒng)比較靈活,采用軟件方法來解決復雜的硬件電路部分使系統(tǒng)硬件簡潔化,各類功能易于實現(xiàn),能很好地滿足題目的要求,并容易擴展功能。 比較以上兩種方案的優(yōu)缺點,方案二簡潔、靈活、可擴展性好,能達到題目 的設計要求,因此采用方案二來實現(xiàn)。本系統(tǒng)可由圖2-1所示的幾個部分組成。 圖2-1 單片機控制系統(tǒng)原理框圖 其中傳感器原理框圖如圖2-2所示。 圖2-2 傳感器原理框圖 2.2 單片機主機系統(tǒng)電路 AT89C51單片機是51系列單片機的一個成員,是8051單片機的簡化版。內部自帶2K字節(jié)可編程FLASH存儲器的低電壓、高性能COMS八位微處理器,與Intel MCS-51系列單片機的指令和輸出管腳相兼容。由于將多功能八位CPU和閃速存儲器結合在單個芯片中,因此,AT89C51構成的單片機系統(tǒng)是具有結構最簡單、造價最低廉、效率最高的微控制系統(tǒng),省去了外部的RAM、ROM和接口器件,減少了硬件開銷,節(jié)省了成本,提高了系統(tǒng)的性價比。 圖2-3 單片機主機系統(tǒng)圖 2.2.1時鐘電路 單片機的時鐘信號用來提供單片機片內各種微操作的時間基準,時鐘信號通 常用兩種電路形式得到:內部振蕩和外部振蕩。MCS-51單片機內部有一個用于 構成振蕩器的高增益反向放大器,引腳XTALl和XTAL2分別是此放大電器的輸 入端和輸出端,由于采用內部方式時,電路簡單,所得的時鐘信號比較穩(wěn)定,實 際使用中常采用這種方式,如圖2-3所示在其外接晶體振蕩器(簡稱晶振)或陶 瓷諧振器就構成了內部振蕩方式,片內高增益反向放大器與作為反饋元件的片外 石英晶體或陶瓷諧振器一起可構成一個自激振蕩器并產生振蕩時鐘脈沖。 圖2-3中外接晶體以及電容C2和C1構成并聯(lián)諧振電路,它們起穩(wěn)定振蕩頻 率、快速起振的作用,其值均為30P左右,晶振頻率選12MHz。 2.2.2復位電路 為了初始化單片機內部的某些特殊功能寄存器,必須采用復位的方式,復位 后可使CPU及系統(tǒng)各部件處于確定的初始狀態(tài),并從初始狀態(tài)開始正常工作。 單片機的復位是靠外電路來實現(xiàn)的,在正常運行情況下,只要RST引腳上出現(xiàn)兩 個機器周期時間以上的高電平,即可引起系統(tǒng)復位,但如果RST引腳上持續(xù)為 高電平,單片機就處于循環(huán)復位狀態(tài)。復位后系統(tǒng)將輸入/輸出(1/0)端口寄存 器置為FFH,堆棧指針SP置為07H, SBUF內置為不定值,其余的寄存器全部 清0,內部RAM的狀態(tài)不受復位的影響,在系統(tǒng)上電時RAM的內容是不定的。復 位操作有兩種情況,即上電復位和手動(開關)復位。本系統(tǒng)采用上電復位方式。 圖2-3中R9和Cl組成上電復位電路,其值R取為10K, C取為22pF。 2.3 電機的選擇與論證 方案一:采用普通的直流電機。直流電動機具有優(yōu)良的調速特性,調速平滑、方便,調整范圍廣,過載能力強,能承受頻繁的沖擊負載,可實現(xiàn)頻繁的無數(shù)快速啟動、制動和反轉。 方案二:采用步進電機。步進電機的一個顯著特點是具有快速的啟停能力,如果負荷不超過步進電機所能提供的動態(tài)轉矩值,就能夠立即使步進電機啟動或反轉。另一個顯著特點是轉換精度高,正轉反轉控制靈活。 考慮到時間的限制,同時普通的直流電機電路設計相對簡單且容易獲得,所以在設計小車行走過程中采用選擇方案一的現(xiàn)成的直流電機作為動力驅動。在車庫攔柵控制部分,采用方案二的步進電機來進行控制。 2.4 電機驅動方案與電路 方案一:采用繼電器對電動機的開或關進行控制,通過控制開關的切換速度實現(xiàn)對小車的速度進行調整。這個電路的優(yōu)點是電路結構簡單,其缺點是繼電器的響應時間長,易損環(huán),壽命短,可靠性不是很高。 方案二:小車行走電路采用兩對互補型晶體管8550(PNP)型和8050型(NPN)接成橋式電路。用AT89C51軟件編程來控制各晶體管導通,分別對應電機的正轉與反轉,同時為了達到效果我將控制電路電源和電動機電源隔離開來,在橋式電路之前加了光電耦合器(U5B TP521-2),該電路的優(yōu)點是電路簡單,通過單片機的軟件控制互補型晶體管的導通與截止,方便的調整電動機的運動狀態(tài)。缺點是當兩個輸入端都為高電平時,驅動電路的三極管同時導通,容易燒壞晶體管。 方案三:(1)車庫攔柵控制部分采用集成電路L298N和二極管IN5408組成的電路來作為驅動,其原理如同方案二,同樣利用晶體管的導通與截止來驅動電機的轉動。L298N內部包含4通道邏輯驅動電路。是一種二相和四相電機的專用驅動器,即內含二個H橋的高電壓大電流雙全橋式驅動器,接收標準TTL邏輯電平信號,可驅動46V、2A以下的電機。1腳和15腳可單獨引出連接電流采樣電阻器,形成電流傳感,因此對步進機來說,可以非常好的對其驅動。(2)采用驅動步進機專用芯片ULN2003A,該芯片電路簡單,容易控制,但驅動力比較大。 在本次設計中的小車行走電路,由于繼電器對設計中的種種限制,所以采用方案二中的8050和8550組成的橋電路。對車庫攔柵控制部分,因為題目要求電機能夠自如提起放下攔柵(重量比較重),由于沒能找到達林頓管ULN2003A,因此我們采用驅動力比較大的L298N來驅動,因此采用方案三(1)。 圖2-4 電動機PWM驅動電路 該電路的工作原理如下所示:電動機驅動由單片機兩路輸入,可分為四種情況討論: (1)當A端輸入為低電平、B端輸入為高電平時,使Q1、Q4管截止,Q2、Q3管導通,電動機正轉。 (2)當A端、B端輸入都為高電平時,經(jīng)過光電傳輸,使Q1、Q2、Q3、Q4管都截止,電動機不運轉。 (3)當A端輸入為高電平、B端輸入為低電平時,使Q1、Q4管導通、Q2、Q3管截止,電動機反轉。 (4)當A端、B端輸入都為低電平,經(jīng)過光電傳輸,使Q1、Q2、Q3、Q4管都導通,這在電路中是不允許出現(xiàn)的現(xiàn)象. 考慮到電動機的啟動時電流很大,而且電動機波動較大,容易造成電壓不穩(wěn)、等干擾,我運用了P521光耦集成塊,將控制部分與電動機的驅動電路隔離開來,確保安全。 2.5 探測障礙物方案與電路 方案一:采用超聲波測距障礙。超聲波測距模塊利用其測距原理可以可靠地判斷小車前方是否有障礙物,如果傳感器接收到反射回來的超聲波,則通過單片機來控制小車前進路線。但是超聲波受環(huán)境影響較大,電路復雜,而且地面對超聲波的反射,會影響系統(tǒng)對障礙物的判斷。 方案二:采用紅外對管。電路中帶有集成鎖相環(huán)路解碼器LM567或使用LM393 。當紅外發(fā)射管檢測到障礙物時,LM567輸出端輸出低電平,否則輸出高電平,并將信號傳給單片機來控制小車避障和前行的動作。利用單片機來產生信號對紅外線發(fā)射管進行調制發(fā)射,發(fā)射出去的紅外線遇到避障物的時候反射回來,紅外線接收管對反射回來信號進行解調,輸出TTL電平。外界對紅外信號的干擾比較小,且易于實現(xiàn),價格也比較便宜。 通過比較以及材料夠得的容易情況,選擇了方案二中紅外對管電路比較合理。 在此模塊中是使用紅外對管和集成電路LM393,通過紅外發(fā)射管是否檢測到障礙物情況,經(jīng)過LM393輸出端輸出電平的高低,將此信號送給單片機,使之執(zhí)行相應的動作,其電路原理圖如圖2-5所示。 圖2-5 避障檢測的電路原理圖 2.6 光源檢測方案與電路 方案一:利用光敏電阻組成的電路。當光敏電阻檢測到光源時,光敏電阻對是否接受到光源時會產生高低不同的信號脈沖,這樣將信號傳給單片機從而控制小車向光源行使到達車庫。 方案二:利用紅外發(fā)射、接收器組成的電路,具有可大幅度減少外界干擾,靈敏度高,信噪比強等優(yōu)點,但是,電路復雜、調試難度大。另外,電動車進入車庫后,要求小汽車能夠立即停車,通過紅外發(fā)射、接收器檢測車庫障礙物,然后通過單片機動作使電動車立即剎車。但容易車身壓線,不符合題目要求。因此,不采用此方案。 基于上述理論分析,選擇方案一。 設計中,在車頭安裝了兩個光敏電阻,把電動車引到有光源的車庫,原理是這樣的:當左邊的光敏電阻檢測到光源時,小車會往左轉,當左邊的光敏電阻檢測到光源時,小車會往左轉。加上其他傳感器的信息采集,從而讓小車準確如庫,其電路原理圖如圖2-6所示。 圖2-6 光源檢測電路原理圖 2.7 顯示部分方案與電路 方案一:采用LED數(shù)碼管顯示小車行駛的時間和路程以及攔柵上升時間和高度,在本系統(tǒng)中要用到10只LED數(shù)碼管進行動態(tài)顯示即可達到要求。其優(yōu)點是價格便宜,壽命長;缺點是只能顯示0~9的數(shù)字和一些簡單的字符,電路設計繁鎖,且占用空間。 方案二:采用LCD(12864)液晶顯示,其優(yōu)點是能顯示更多的字符,工作電流比LED小,故其功耗低,且可以有良好的人機界面,直觀,顯示效果漂亮,體積小。綜合考慮選擇此方案。 由于12864液晶不僅可以顯示數(shù)字,而且可以顯示漢字和圖象,這樣設計產生的效果非常直觀,具有人性化設計。在本設計中采用12864作為顯示部分,電路原理圖如圖2-7所示: 圖2-7 顯示、單片機最小系統(tǒng)模塊的電路原理圖 2.8 電源方案與PCB電路 方案一:采用雙電源供電。用兩個電源分別給控制系統(tǒng)和電機系統(tǒng)供電,將兩個系統(tǒng)完全隔離,利用光電耦合器傳輸信號,將電動機驅動所造成的干擾徹底消除,這樣就提高了系統(tǒng)的穩(wěn)定性。 方案二:用單電源給電機系統(tǒng)供電,但是控制系統(tǒng)對電流需求量大,因為電機啟動瞬間電流會很大,會造成控制系統(tǒng)電壓不穩(wěn),干擾較大,嚴重時可能造成單片機系統(tǒng)掉電。 綜上所述,采用方案二且用5節(jié)1.5V的干電磁組成7.5V的電源或使用蓄電池給電機系統(tǒng)供電,用1節(jié)9V的干電磁與7805組成輸出恒為5V的電源給控制系統(tǒng)供電。 本設計考慮到小車所能承受的壓力有限,所以采用比較簡單的由7805組成的電源對小車系統(tǒng)進行供電。其電路圖如圖2-8所示。 圖2-8 電源供電模塊PCB圖 2.9 入庫前后聲音提示方案與電路 ???? 方案一:采用74LS04非門組成的普通電路,由單片機產生不同的頻率信號來完成聲音提示,此方案易于實現(xiàn),成本也不高,能完成聲音提示功能,可給人以提示的可懂性比較差。??? 方案二:采用ISD1420可分段錄放音模塊,能夠給人以直觀的提示,但IDS1420錄放音模塊價格比較高,也可以采用此方案來處理,但由于該芯片最大錄音時間為20S,可讀性比較好,具有人性化的操作,對題目設計來說可能達不到要求。 方案三:采用ISD2560 錄放音模塊,同樣能夠給人以直觀的提示,價格也比較高,同時該芯片最大錄音時間為60S,可讀性很好,具有人性化的操作,可以滿足題目要求。 綜上所述:方案一對一般的報警可以達到要求,但在設計中要求做到人性化的要求,因此放棄方案一,對方案二和方案三采用錄音時間長的ISD2560來實現(xiàn),這樣更能保證設計的可靠性和有效性。 此模塊有三部分電路組成,可以獨立地完成各自的功能,語音播放功能可以達到直觀,具有人性化的服務。聲光電路結構簡單,主要用以報警提示。溫度檢測電路利用DS18B20溫度傳感器的特點,可以準確地檢測到周圍環(huán)境的溫度。其原理圖如圖2-9所示。 圖2-9 聲光、語音提示檢測模塊 2.10 攔柵控制電路 電路主要是步進機驅動電路,由于攔柵有一定的重量,所以驅動電動機的驅動力就必須大,因此采用驅動力大的專用芯片L298N來驅動。其原理圖如圖2-10所示。 圖2-10 攔柵控制電路 2.11 車速檢測模塊電路 在車軸上固定安裝一對紅外對管,在車輪圓周上粘貼一段白紙條。當車輪轉動時,遮光條通過紅外對管,使其得到通斷相間的高低電平信號。得到的信號經(jīng)過由LM393組成的過壓比較器,使輸出電壓規(guī)范到兩個標準值,在發(fā)送至單片機分析處理,以實現(xiàn)車速和薄鐵片距離的計算。具體路如圖2-11所示。 設計中,我們將紅外對管安裝在后輪上,因為前輪要完成轉彎的功能,如果將紅外對管安裝在前輪,轉彎的靈活性就變差了,而且測的數(shù)據(jù)不夠準確。 圖2-11 車速檢測的電路原理圖 第3節(jié) 系統(tǒng)的軟件設計 系統(tǒng)軟件設計主要包括:主程序設計,小車驅動子程序設計,顯示子程序。 3.1 系統(tǒng)主程序設計 圖3-1 主程序流程圖 根據(jù)設計要求,可得本系統(tǒng)的程序流程圖如圖3-1所示。本系統(tǒng)的控制器采用常用的AT89C51,因為控制小車比較模塊化,所以使用匯編語言進行軟件編寫。 ;12864(帶字庫漢字顯示演示程序) RS EQU P2.0 RW EQU P2.1 E EQU P2.2 PSB EQU P2.3 DI BIT P2.4 ;DS18B20輸入端 RST EQU P2.5 DIR_RD EQU P3.0 ;----------------------------------------------- COUNT EQU 31H LCD_DATA EQU 36H LCD_DATA1 EQU 37H LCD_DATA2 EQU 38H STORE EQU 39H DAT EQU 2EH ;DS18B20、、液晶數(shù)據(jù)暫存 TEMPH EQU 3AH TEMPL EQU 3BH ;----------------------------------------------- ORG 0000H LJMP START ORG 001BH LJMP TIM1 ORG 0100H ;----------------------------------------------- START: MOV SP,#70H MOV 2AH,#00 ;上升時間用定時器2 MOV 2BH,#00 ;高度 MOV 2CH,#00 MOV 20H,#00 ;儲存上升時間 MOV 21H,#00 MOV 40H,#00 ;儲存上升高度 MOV 41H,#00 MOV 42H,#00 MOV 43H,#00 MOV TEMPH,#00H MOV TEMPL,#00H SETB P2.6 ;片選端 (語音) CLR P2.7 ;復位端 SETB P3.1 ;聲光端 MOV TMOD,#00010000B MOV TH1,#HIGH(65536-50000) MOV TL1,#LOW(65536-50000) MOV IE,#10001000B MOV R5,#20 CLR RS CLR RW CLR E LCALL DS18B20 ;DS18B20先轉換一次 SETB DI CLR TR1 CLR RST ;復位 LCALL DELAY4 SETB RST NOP SETB PSB ;通訊方式為8位數(shù)據(jù)并口 ;********************液晶初始化********************** LGS0: MOV A,#34H ;34H--擴充指令操作 LCALL SEND_I ;;寫指令子程序 MOV A,#30H ;30H--基本指令操作 LCALL SEND_I MOV A,#01H ;清除顯示 LCALL SEND_I MOV A,#06H ;指定在資料寫入或讀取時,光標的移動方向 LCALL SEND_I ;DDRAM 的地址計數(shù)器(AC)加1 MOV A,#0CH ;開顯示,關光標,不閃爍 LCALL SEND_I ;******************************************** ; 顯示字符 ;******************************************** XSZF: MOV DPTR,#TAB1A ;顯示漢字和字符 MOV COUNT,#08H ;地址計數(shù)器設為16。 MOV A,#80H ;第一行起始地址 LCALL SEND_I LCALL QUSHU MOV DPTR,#TAB1B ;顯示漢字和字符 MOV COUNT,#10H ;地址計數(shù)器設為16。 MOV A,#90H ;第二行起始地址 LCALL SEND_I LCALL QUSHU MOV DPTR,#TAB1C ;顯示漢字和字符 MOV COUNT,#08H ;地址計數(shù)器設為16。 MOV A,#88H ;第三行起始地址 LCALL SEND_I LCALL QUSHU MOV DPTR,#TAB1D ;顯示漢字和字符 MOV COUNT,#08H ;地址計數(shù)器設為16。 MOV A,#98H ;第四行起始地址 LCALL SEND_I LCALL QUSHU MOV DPTR,#TAB1E0 ;顯示漢字和字符 MOV COUNT,#2H ;地址計數(shù)器設為16。 MOV A,#9FH ;第四行起始地址 LCALL SEND_I LCALL QUSHU ;溫度 ;***************************************** ; 按鍵操作 ; 升 降 停按鍵 ;****************************************** N0:JB P3.7,N1 SETB TR1 CLR P2.6 CLR P2.7 MOV A,#8DH LCALL SEND_I MOV A,#18H LCALL SEND_D CALL TIM1 JMP SHANGSHENG N1:JB P3.5,N2 CLR TR1 SETB P2.6 SETB P2.7 CALL TIM1 JMP STOP03 N2:JB P3.6,N0 SETB TR1 SETB P2.6 MOV A,#8DH LCALL SEND_I MOV A,#19H LCALL SEND_D CALL TIM1 JMP XIAJIANG ;*********************** ; 上升子程序0 ;*********************** SHANGSHENG :JB P3.5,ST CLR TR1 SETB P2.6 SETB P2.7 CALL TIM1 JMP STOP03 ST:MOV R0,#00H START1:MOV A,R0 MOV DPTR,#TABLE MOVC A,@A+DPTR JZ SHANGSHENG MOV P0,A CALL DELAY1 INC R0 LJMP START1 RET ;*********************** ; 上升子程序1 ;*********************** SHANGSHENG1 :JB P3.6,ST1 MOV 2AH,#00H MOV 2BH,#00H MOV 2CH,#00H SETB TR1 SETB P2.6 MOV A,#8DH LCALL SEND_I MOV A,#19H LCALL SEND_D CALL TIM1 JMP XIAJIANG0 ST1:MOV R0,#00H START11:MOV A,R0 MOV DPTR,#TABLE MOVC A,@A+DPTR JZ SHANGSHENG1 MOV P0,A CALL DELAY1 INC R0 LJMP START11 RET ;********************************************************** ;停止子程序1 (上升下降停止鍵無效 P3.4有效并且進行軟件復位) ;********************************************************** STOP: JB P3.6,STOP00 SETB TR1 SETB P2.6 MOV A,#8DH LCALL SEND_I MOV A,#19H LCALL SEND_D CALL TIM1 JMP XIAJIANG0 STOP00:JB P3.7,STOP0 MOV 2AH,#00H MOV 2BH,#00H MOV 2CH,#00H SETB TR1 CLR P2.6 CLR P2.7 MOV A,#8DH LCALL SEND_I MOV A,#18H LCALL SEND_D CALL TIM1 JMP SHANGSHENG1 STOP0: MOV R0,#00H STOP1: MOV A,R0 MOV DPTR,#TABLF MOVC A,@A+DPTR MOV P0,A CALL DELAY1 INC R0 JZ STOP JMP QQ QQ: RET ;*************************** ; 停止子程序2 下降 ;*************************** STOP2:JB P3.6,STOP02 SETB TR1 SETB P2.6 CALL TIM1 JMP XIAJIANG STOP02: MOV R0,#00H STOP12: MOV A,R0 MOV DPTR,#TABLF MOVC A,@A+DPTR JZ STOP2 MOV P0,A CALL DELAY1 INC R0 RET ;*************************** ; 停止子程序3 上升 ;*************************** STOP3:JB P3.7,STOP03 SETB TR1 CLR P2.6 CLR P2.7 CALL TIM1 JMP SHANGSHENG STOP03: MOV R0,#00H STOP13: MOV A,R0 MOV DPTR,#TABLF MOVC A,@A+DPTR JZ STOP3 MOV P0,A CALL DELAY1 INC R0 RET ;********************** ; 下降子程序0 ;********************** XIAJIANG:JB P3.5,XX CLR TR1 SETB P2.6 CALL TIM1 JMP STOP2 XX: MOV R0,#00H XIAJIANG1:MOV A,R0 MOV DPTR,#TABLG MOVC A,@A+DPTR JZ XIAJIANG MOV P0,A CALL DELAY11 INC R0 LJMP XIAJIANG1 RET ;********************** ; 下降子程序1 ;********************** XIAJIANG0:JB P3.7,XX1 MOV 2AH,#00H MOV 2BH,#00H MOV 2CH,#00H SETB TR1 SETB TR0 CLR P2.6 CLR P2.7 MOV A,#8DH LCALL SEND_I MOV A,#18H LCALL SEND_D CALL TIM1 JMP SHANGSHENG1 XX1: MOV R0,#00H XIAJIANG10:MOV A,R0 MOV DPTR,#TABLG MOVC A,@A+DPTR JZ XIAJIANG0 MOV P0,A CALL DELAY11 INC R0 LJMP XIAJIANG10 RET ;************************************** ; 自動計時1 ;************************************** TIM1: PUSH ACC PUSH PSW MOV TH1,#HIGH(65536-50000) MOV TL1,#LOW(65536-50000) DJNZ R5,X3 MOV R5,#20 CALL CLOCK CALL DISP CALL RTEMP CALL WORK CALL GAODU CALL DISP1 X3: POP PSW POP ACC RETI ;*****************運行時間************* CLOCK: MOV A,2AH ADD A,#01 DA A MOV 2AH,A CJNE A,#05H,X5 MOV 2AH,#00H MOV 2BH,#00H MOV 2CH,#00H CLR TR1 SETB P2.6 CLR P2.7 CLR P3.1 CALL DELAY3 CALL DELAY3 CALL DELAY3 SETB P3.1 CALL DELAY3 CALL DELAY3 CALL DELAY3 CLR P3.1 CALL DELAY3 CALL DELAY3 CALL DELAY3 SETB P3.1 CALL DELAY3 CALL DELAY3 CALL DELAY3 CLR P3.1 CALL DELAY3 CALL DELAY3 CALL DELAY3 SETB P3.1 CALL STOP LJMP N0 X5: RET ;******************************** ; 儲存并顯示運行時間 ;******************************** DISP: MOV R1,#20H MOV A,2AH MOV B,#10H DIV AB MOV @R1,B INC R1 MOV @R1,A MOV A,#86H LCALL SEND_I MOV A,21H ADD A,#30H LCALL SEND_D MOV A,20H ADD A,#30H LCALL SEND_D RET ;******************************** ; 運行高度 ;********************************* GAODU: MOV A,2BH ADD A,#01 DA A MOV 2BH,A CJNE A,#01H,X4 MOV 2BH,#00 MOV A,2CH ADD A,#07 DA A MOV 2CH,A CJNE A,#100H,X4 MOV 2CH,#00 X4: RET ;******************************** ; 儲存高度 ;******************************** DISP1: MOV R1,#40H MOV A,2BH MOV B,#10H DIV AB MOV @R1,B INC R1 MOV @R1,A INC R1 MOV A,2CH MOV B,#10H DIV AB MOV @R1,B INC R1 MOV @R1,A INC R1 MOV A,#8EH LCALL SEND_I MOV A,#20H LCALL SEND_D MOV A,43H ADD A,#30H LCALL SEND_D MOV A,42H ADD A,#30H LCALL SEND_D RET ;********************************* ;DS18B20子程序 ;********************************* DS18B20: LCALL RST18B20 MOV A,#11001100H LCALL WRITE MOV A,#01000100H LCALL WRITE RET ;********************************* ;DS18B20復位子程序 ;********************************* RST18B20:CLR DI MOV R2,#240 DJNZ R2,$ SETB DI MOV R2,#20 DJNZ R2,$ CLR C ORL C,DI JNC S2 MOV R6,#120 S1: CLR C ORL C,DI JNC S2 DJNZ R6,S1 JMP RST18B20 S2: MOV R2,#250 S3: DJNZ R2,S3 SETB DI RET ;***************************** ;DS18B20寫命令子程序 ;***************************** WRITE: MOV R2,#08 W_LOOP1: CLR DI MOV R3,#5 DJNZ R3,$ RRC A MOV DI,C MOV R3,#30 DJNZ R3,$ SETB DI DJNZ R2,W_LOOP1 RET ;***************************** ;DS18B20讀命令子程序 ;***************************** READ: MOV R2,#08 R_LOOP1: CLR DI MOV R3,#5 DJNZ R3,$ SETB DI NOP MOV C,DI RRC A MOV R3,#30 DJNZ R3,$ SETB DI NOP DJNZ R2,R_LOOP1 RET ;***************************** ;讀溫度子程序 ;***************************** RTEMP: LCALL RST18B20 MOV A,#11001100B LCALL WRITE MOV A,#10111110B LCALL WRITE LCALL READ MOV TEMPL,A LCALL READ MOV TEMPH,A LCALL RST18B20 MOV A,#11001100B LCALL WRITE MOV A,#01000100B LCALL WRITE RET ;***************************** ;溫度數(shù)據(jù)處理子程序 ;***************************** WORK: MOV A,#9CH LCALL SEND_I MOV A,TEMPL ANL A,#0F0H SWAP A MOV DAT,A MOV A,TEMPH ANL A,#07H SWAP A ORL A,DAT MOV DAT,A ;溫度整數(shù)值 MOV DPTR,#TABLE3 MOV B,#100 DIV AB MOVC A,@A+DPTR LCALL SEND_D MOV A,B MOV B,#10 DIV AB MOVC A,@A+DPTR LCALL SEND_D MOV A,B MOVC A,@A+DPTR LCALL SEND_D MOV A,#2EH LCALL SEND_D MOV A,TEMPL ;小數(shù)計算與顯示 ANL A,#0FH MOV DAT,A MOV DPTR,#TABLE2 MOVC A,@A+DPTR ADD- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- 單片機原理及應用 單片機 原理 應用 期末 課程設計 智能 小汽車
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學習交流,未經(jīng)上傳用戶書面授權,請勿作他用。
鏈接地址:http://m.jqnhouse.com/p-1645721.html