基于stc單片機(jī)的智能語音控制小車_第1頁
基于stc單片機(jī)的智能語音控制小車_第2頁
基于stc單片機(jī)的智能語音控制小車_第3頁
基于stc單片機(jī)的智能語音控制小車_第4頁
基于stc單片機(jī)的智能語音控制小車_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、基于 STC單片機(jī)的智能語音控制小車、實(shí)驗(yàn)?zāi)康?. 隨著科技的進(jìn)步和社會(huì)的發(fā)展, 汽車技術(shù)的發(fā)展越來越智能化。 本次接口實(shí)驗(yàn) 設(shè)計(jì)就是基于簡單智能化的基礎(chǔ)上, 采用 LD3320語音單元和 STC單片機(jī)和 L298N 電機(jī)驅(qū)動(dòng), 開發(fā)出基于語音無線控制與智能避障的小車, 實(shí)現(xiàn)非特定人聲語音控 制小車,以及小車超聲波自動(dòng)避障行駛的功能, 同時(shí)液晶顯示出超聲波前方障礙 物的距離。2掌握用 Altium Designer10 軟件繪制原理圖和 PCB電路,以及電路板的制作 過程(包括轉(zhuǎn)印、腐蝕,焊接,下載與調(diào)試) ,熟練 Keil uVision4 環(huán)境以及單 片機(jī) C代碼的編寫、調(diào)試和 hex 文

2、件的生成并下載到單片機(jī)芯片內(nèi), 掌握軟硬聯(lián) 調(diào)技巧與方法。3掌握 基于 LD3320的語音單元的編程、語音處理及與單片機(jī)間的通信。系統(tǒng)總體方案36本次設(shè)計(jì)的小車采用 STC89C52單片機(jī)作為主控芯片, 通過 LD3320語音單元 接單片機(jī)控制小車行駛狀態(tài)(包括前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)及停車) ;小車行駛 過程中遇到障礙物, 如果沒有接收到語音信號(hào)而超聲波檢測模塊檢測周圍障礙物 小于安全距離 40cm,小車自動(dòng)轉(zhuǎn)向,距離通過 LCD1602液晶顯示出來;采用 L298 作為電機(jī)驅(qū)動(dòng)芯片驅(qū)動(dòng)小車行駛。系統(tǒng)總體框圖如圖 2.1 :LCD1602液晶顯示揚(yáng)聲器HC-SR04 超聲波模塊LD3320 語

3、音單元STC89C52 單片機(jī)L298N 電機(jī)驅(qū)動(dòng)圖 2.1 系統(tǒng)總體框圖三、硬件設(shè)計(jì)3.1 主控系統(tǒng)的一種低功耗、高性能本次設(shè)計(jì)采用 STC89C52單片機(jī)作為控制芯片, STC89C52R是C STC公司生產(chǎn)CMOS位8 微控制器,具有 8K 字節(jié)系統(tǒng)可編程 Flash 存儲(chǔ)器。單片機(jī)系統(tǒng)電路圖 2:圖 3.1 單片機(jī)最小系統(tǒng)原理圖復(fù)位電路:手動(dòng)復(fù)位,按下復(fù)位按鈕,復(fù)位腳得到 VCC的高電平,單片機(jī)復(fù)位, 按鈕松開后,單片機(jī)開始工作。如圖 3.2 (1):時(shí)鐘電路:在 52 單片機(jī)片內(nèi)有一個(gè)高增益的反相放大器,反相放大器的輸 入端為 XTAL1,輸出端為 XTAL2,由該放大器構(gòu)成的振蕩電

4、路和時(shí)鐘電路一 起構(gòu)成了單片機(jī)的內(nèi)部時(shí)鐘方式。如圖 3.2 (2):1)復(fù)位電路:圖 3.2 ( 1)復(fù)位電路 ( 2)時(shí)鐘電路3.2 超聲波模塊超聲波模塊( HC-SR04)是小車測距和避障的重要模塊。該模塊可提供 2cm-400cm的非接觸式距離感測功能,測距精度可達(dá)高到 3mm;模塊包括超聲波 發(fā)射器、接收器與控制電路?;竟ぷ髟恚?1) 采用 IO 口 TRIG觸發(fā)測距,給至少 10us 的高電平信號(hào);(2) 模塊自動(dòng)發(fā)送 8個(gè) 40khz 的方波,自動(dòng)檢測是否有信號(hào)返回;(3) 有信號(hào)返回,通過 IO 口 ECHO輸出一個(gè)高電平,高電平持續(xù)的時(shí)間就是超聲 波從發(fā)射到返回的時(shí)間。測試

5、距離 =(高電平時(shí)間 * 聲速(340M/S)/2 ; 超聲波時(shí)序圖 3.3 :圖 3.3 超聲波時(shí)序圖由時(shí)序圖表明你只需要提供一個(gè) 10uS 以上脈沖觸發(fā)信號(hào),該模塊內(nèi)部將發(fā) 出 8 個(gè) 40kHz 周期電平并檢測回波。 一旦檢測到有回波信號(hào)則輸出回響信號(hào)。 回 響信號(hào)的脈沖寬度與所測的距離成正比。 由此通過發(fā)射信號(hào)到收到的回響信號(hào)時(shí) 間間隔可以計(jì)算得到距離。公式: uS/58= 厘米或者 uS/148=英寸;或是:距離 = 高電平時(shí)間 *聲速(340M/S)/2 ;建議測量周期為 60ms以上,以防止發(fā)射信號(hào)對(duì) 回響信號(hào)的影響。超聲波電路如圖 3.4 :圖 3.4 超聲波電路3.3 LD3

6、320 語音識(shí)別單元語音識(shí)別作為信息技術(shù)中一種人機(jī)接口的關(guān)鍵技術(shù), 具有重要的研究意義和 廣泛的應(yīng)用價(jià)值。 語音識(shí)別技術(shù)的應(yīng)用范圍極為廣泛, 不僅涉及到日常生活的方 方面面,在軍事領(lǐng)域也發(fā)揮著極其重要的作用。 它是信息社會(huì)朝著智能化和自動(dòng) 化發(fā)展的關(guān)鍵技術(shù), 使人們對(duì)信息的處理和獲取更加便捷, 從而提高人們的工作 效率。語音識(shí)別是將人類的聲音信號(hào)轉(zhuǎn)化為文字或者指令的過程。語音識(shí)別以語音 為研究對(duì)象,它是語音信號(hào)處理的一個(gè)重要研究方向,是模式識(shí)別的一個(gè)分支。 根據(jù)在不同限制條件下的研究任務(wù), 產(chǎn)生了不同的研究領(lǐng)域。 這些領(lǐng)域包括: 根 據(jù)對(duì)說話人說話方式的要求,可分為孤立字 ( 詞) 、連接詞和

7、連續(xù)語音識(shí)別系統(tǒng); 根據(jù)對(duì)說話人的依賴程度, 可分為特定人和非特定人語音識(shí)別系統(tǒng); 根據(jù)詞匯量 的大小,可分為小詞匯量、 中等詞匯量、大詞匯量以及無限詞匯量語音識(shí)別系統(tǒng)。從語音識(shí)別模型的角度講, 主流的語音識(shí)別系統(tǒng)理論是建立在統(tǒng)計(jì)模式識(shí)別 基礎(chǔ)之上的。 語音識(shí)別系統(tǒng)本質(zhì)上是一種多維模式識(shí)別系統(tǒng), 對(duì)于不同的語音識(shí) 別系統(tǒng),人們所采用的具體識(shí)別方法及技術(shù)不同, 但其基本原理都是相同的, 即 將采集到的語音信號(hào)送到特征提取模塊處理, 將所得到的語音特征參數(shù)送入模型 庫模塊,由聲音模式匹配模塊根據(jù)模型庫對(duì)該段語音進(jìn)行識(shí)別, 最后得出識(shí)別結(jié) 果。語音識(shí)別系統(tǒng)基本原理框圖如圖 3.5 所示,其中:預(yù)處理

8、模塊濾除原始語音 信號(hào)中的次要信息及背景噪音等,包括抗混疊濾波、預(yù)加重、模數(shù)轉(zhuǎn)換、自動(dòng) 增益控制等處理過程, 將語音信號(hào)數(shù)字化; 特征提取模塊對(duì)語音的聲學(xué)參數(shù)進(jìn)行分析后提取出語音特征參數(shù),形成特征矢量序列輸入預(yù)處理語音特征提取識(shí)別相似性度量后處理識(shí)別結(jié)果訓(xùn)練參考模式庫圖 3.5 語音識(shí)別系統(tǒng)框圖3.4 電機(jī)驅(qū)動(dòng)小車輪子驅(qū)動(dòng)采用直流減速電機(jī),驅(qū)動(dòng)芯片使用恒壓恒流橋式2A 驅(qū)動(dòng)芯片L298N。L298是 ST公司的產(chǎn)品,比較常見的是 15 腳 Multiwatt 封裝的 L298N, 內(nèi)部同樣包含 4 通道邏輯驅(qū)動(dòng)電路。 可以方便的驅(qū)動(dòng)兩個(gè)直流電機(jī), 或一個(gè)兩相 步進(jìn)電機(jī)。 L298N芯片可以驅(qū)動(dòng)

9、兩個(gè)二相電機(jī),也可以驅(qū)動(dòng)一個(gè)四相電機(jī),輸出 電壓最高可達(dá) 50V,可以直接通過電源來調(diào)節(jié)輸出電壓; 可以直接用單片機(jī)的 IO 口提供信號(hào);而且電路簡單,使用比較方便。L298N可接受標(biāo)準(zhǔn) TTL邏輯電平信號(hào) VSS,VSS可接 4.57 V電壓。4 腳 VS接電源電壓, VS電壓范圍 VIH 為2.5 46 V。輸出電流可達(dá) 2.5 A,可驅(qū) 動(dòng)電感性負(fù)載。 L298驅(qū)動(dòng)電路如圖 3.6 :圖 3.6 電機(jī)驅(qū)動(dòng)電路L298N電機(jī)驅(qū)動(dòng)邏輯控制表 1:ENAIN1IN2運(yùn)轉(zhuǎn)狀態(tài)0XX停止110正轉(zhuǎn)101反轉(zhuǎn)111停止100停止表 1 L298N 電機(jī)驅(qū)動(dòng)邏輯控制根據(jù)電機(jī)驅(qū)動(dòng)邏輯功能表,通過改變單片

10、機(jī) IO 口高低電平變化,可以方便 實(shí)現(xiàn)小車前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、停止。3.5 LCD1602液晶顯示LCD1602是工業(yè)字符型液晶,能夠同時(shí)顯示 16x02 即 32 個(gè)字符。(16 列 2 行)1602 液晶也叫 1602字符型液晶它是一種專門用來顯示字母、數(shù)字、符號(hào)等 的點(diǎn)陣型液晶模塊它有若干個(gè) 5X7 或者 5X11等點(diǎn)陣字符位組成,每個(gè)點(diǎn)陣字符 位都可以顯示一個(gè)字符。 每位之間有一個(gè)點(diǎn)距的間隔每行之間也有間隔起到了字 符間距和行間距的作用,正因?yàn)槿绱怂运荒茱@示圖形。其中 RS為寄存器選擇端,高位時(shí)是數(shù)據(jù)寄存器,低位時(shí)是指令寄存器; RW時(shí)讀 寫信號(hào)線,高位時(shí)是讀,低位時(shí)是寫;

11、E 為使能控制端。超聲波避障的距離顯示采用 LCD1602液晶實(shí)現(xiàn)。當(dāng)超聲波檢測到前方障礙 物在安全距離內(nèi)( 40cm),單片機(jī)驅(qū)使小車自動(dòng)轉(zhuǎn)彎,并將超聲波測得的障礙物 的距離送到液晶并顯示出來。液晶與單片機(jī)的電路圖如圖 3.7 :圖 3.7 液晶電路圖3.6 電源與穩(wěn)壓電路由于小車電機(jī)的驅(qū)動(dòng)電壓一般選擇 8V,單片機(jī)的電壓為 5V,要實(shí)現(xiàn)小車供 電和續(xù)航,采用 18650 大容量可充電鋰電池,鋰電池可提供 12V供電, 為了不 影響驅(qū)動(dòng)電機(jī)的供電電源和單片機(jī)供電電源產(chǎn)生信號(hào)干擾, 設(shè)計(jì)中加入了可調(diào)降 壓模塊,使 12V18650鋰電池電壓調(diào)至 8V 后供給直流減速電機(jī),使 12V18650鋰

12、 電池經(jīng) 7805 穩(wěn)壓至 5V后供給 STC單片機(jī)、 L298N電機(jī)驅(qū)動(dòng)芯片、基于 LD3320 的語音單元和超聲波等使用, L7805的穩(wěn)壓和電源電路如圖 3.8 :圖 3.8 L7805 穩(wěn)壓和電源電路3.7 系統(tǒng)整體原理圖與 PCB主控圖系統(tǒng)整體原理圖與 PCB主控圖如圖 3.9:1) 系統(tǒng)整體原理圖2)PCB主控圖圖 3.9 ( 1)系統(tǒng)整體原理圖 (2)PCB主控圖四、軟件設(shè)計(jì)4.1 系統(tǒng)總體軟件設(shè)計(jì)軟件設(shè)計(jì)部分分為兩大類,一類是語音芯片應(yīng)用程序的開發(fā)設(shè)計(jì),另一類 是單片機(jī)下位機(jī)的程序編寫。小車操作流程是: 1,按下開關(guān)給單片機(jī)和驅(qū)動(dòng)電 路供電,系統(tǒng)初始化,語音啟動(dòng)小車; 3,通過

13、語音控制小車前進(jìn)、左轉(zhuǎn)、右轉(zhuǎn)、 后退、停止; 4,行駛過程如遇障礙物,小車自動(dòng)轉(zhuǎn)彎避障,同時(shí)實(shí)時(shí)顯示障礙 物與車的距離。小車操作流程如下圖 4.1 :開始圖 4.1 小車操作流程圖4.2 語音識(shí)別開發(fā)圖 4.2 語音編程界面語音單元測試 語音單元測試主要是語音識(shí)別參數(shù)進(jìn)行測試,測試參數(shù)有麥克風(fēng)靈敏度設(shè) 置,語音端點(diǎn)檢測,語音信號(hào)起始確認(rèn)時(shí)間,語音信號(hào)結(jié)束時(shí)間,語音信號(hào)最長 持續(xù)時(shí)間。 參數(shù)測試主要是麥克風(fēng)靈敏度和語音端點(diǎn)檢測。 通過控制變量法, 在 保持麥克風(fēng)靈敏度一定的前提下, 調(diào)節(jié)端點(diǎn)檢測, 來觀察揚(yáng)聲器音頻輸出的準(zhǔn)確 性,反之,保持端點(diǎn)檢測值至一定的前提下,調(diào)節(jié)麥克風(fēng)靈敏度,以此來找到使

14、 語音準(zhǔn)確輸出的最優(yōu)麥克風(fēng)靈敏度參數(shù)和語音端點(diǎn)檢測值, 以保證語音輸出的準(zhǔn) 確性。誤差分析:本次作品的相對(duì)誤差如表 2,造成相對(duì)誤差可從以下幾方面分析。其中,環(huán) 境噪聲是造成誤差最重要的因素, 在做系統(tǒng)測試時(shí), 并沒有做到在低分貝理想環(huán) 境下進(jìn)行測試。其次,本次作品是使用了麥克風(fēng),所以,麥克風(fēng)的靈敏度不高也 會(huì)造成誤差。在語音識(shí)別模塊,語音斷點(diǎn)檢測和語音信息相似度也會(huì)造成誤差。 本次作品電源設(shè)計(jì)設(shè)置的語音信息相差太近, 會(huì)對(duì)識(shí)別造成難度。 最后,說話距 離的遠(yuǎn)近也會(huì)造成誤差, 做測試時(shí)并不是每一次都在最佳距離范圍內(nèi)測試, 所以 會(huì)有誤差。語速慢速中速較快聲音(dB)60120601206012

15、0距離( m)3.852.653.152.252.751.95測試次數(shù)40正確識(shí)別 次數(shù)373535312927正確率92.5%87.5%87.5%77.5%72.5%67.5%表 2 語音模塊誤差測試4.3 單片機(jī)下位機(jī)軟件設(shè)計(jì) 單片機(jī)下位機(jī)軟件設(shè)計(jì)采用模塊化結(jié)構(gòu), 由主程序定時(shí)子程序、 定時(shí)器中 斷子程序、 電機(jī)驅(qū)動(dòng)子程序串口中斷子程序、 顯示子程序超聲波避障子程序 算法子程序構(gòu)成。 其中:避障中斷服務(wù)子程序完成對(duì)超聲波探測器產(chǎn)生的外部 中斷進(jìn)行處理, 如果超出預(yù)定的危險(xiǎn)距離就進(jìn)行避障。 遙控中斷服務(wù)子程序完成 對(duì)遙控信號(hào)產(chǎn)生的串口中斷進(jìn)行處理,對(duì)不同的遙控信號(hào)產(chǎn)生相應(yīng)的控制信號(hào)。 超聲波

16、程序設(shè)計(jì)流程圖 4.3 :避障開始圖 4.3 超聲波程序流程圖語音串口通信:由于語音單元和單片機(jī)通信的方式是串口, 為了小車能迅速響應(yīng)語音單元發(fā) 送來的信號(hào), 單片機(jī)使用串口中斷的方式, 在中斷函數(shù)里面主要就是處理中斷接 收到的數(shù)據(jù),并控制電機(jī)的轉(zhuǎn)向,處理函數(shù)見附錄二。五、個(gè)人總結(jié)本次設(shè)計(jì)是智能語音控制小車兼有避障功能,主控制芯片采用STC89C52單片機(jī),開發(fā) LD3320 語音芯片,成功實(shí)現(xiàn)了語音控制小車和小車的自動(dòng)避障的功 能。設(shè)計(jì)內(nèi)容包括小車硬件、軟件、 LD3320語音單元編程、調(diào)試等。在此期間主要完成的工作包括以下幾個(gè)方面:(1)設(shè)計(jì)初期收集電機(jī)驅(qū)動(dòng)、單片機(jī)等相關(guān)資料,對(duì)智能小車的

17、實(shí)現(xiàn)原理有比 較清晰的了解。( 2)確定系統(tǒng)框圖,對(duì)電源模塊、單片機(jī)最小系統(tǒng)模塊、 LD3320 語音單元和電 機(jī)及其驅(qū)動(dòng)電路模塊等的實(shí)施方案進(jìn)行比較, 確定最終的智能小車控制的設(shè)計(jì)方 案。( 3)根據(jù)智能小車控制的設(shè)計(jì)方案畫原理圖、 PCB圖,轉(zhuǎn)印 PCB圖,手工制作 PCB板。(4)根據(jù)設(shè)計(jì)電路,購買元器件,焊接電路,完成硬件組裝和調(diào)試。(5)根據(jù)系統(tǒng)要實(shí)現(xiàn)前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、停車、避障等功能編寫出小車 端的軟件程序。(6)軟硬件分別調(diào)試通過后進(jìn)行整體聯(lián)合調(diào)試,并查找該系統(tǒng)存在的缺陷,并 逐步完善。(8)最終小車能夠?qū)崿F(xiàn)前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、避障等功能,達(dá)到設(shè)計(jì)的基 本要求。通過此次

18、實(shí)驗(yàn)設(shè)計(jì),使我對(duì)單片機(jī)編程和設(shè)計(jì)都有了進(jìn)一步的了解,對(duì)軟 硬件的應(yīng)用更加熟悉, 在電路設(shè)計(jì)、 PCB制板等方面都有所加強(qiáng)。 軟件設(shè)計(jì)方面, 語音單元的可視化編程, 在可視化編程設(shè)計(jì)方面也還有許多問題需要解決, 這些 都是自己以后要努力學(xué)習(xí)的地方。小車雖然基本功能實(shí)現(xiàn),但仍存在一些問題, 避障的穩(wěn)定性并不高,仍需要不斷完善。六、致謝首先要感謝 XX老師給了我們這樣一個(gè)動(dòng)手實(shí)踐的機(jī)會(huì),讓我們有機(jī)會(huì)可以 針對(duì)自己的興趣進(jìn)行一些自主課外動(dòng)手實(shí)踐。 本實(shí)驗(yàn)設(shè)計(jì)是在 XX老師的指導(dǎo)下和 XXXX同學(xué)的幫助下修改完成的。 在設(shè)計(jì)過程中, XX老師給予了悉心的指導(dǎo), 最重 要的是給我們提供了解決問題的思路和方

19、法, 在此,我對(duì) XX老師的細(xì)心幫助和指 導(dǎo)表示最真摯的感謝!同時(shí)感謝所有幫助過我的老師和同學(xué)們!參考文獻(xiàn):郭天祥,新概念 單片機(jī) 語言教程 北京:電子工程出版社, :2 符強(qiáng),任風(fēng)華 .基于手機(jī)藍(lán)牙的遙控小車的設(shè)計(jì) J.廣西桂林電子科技大學(xué)信 息與通信學(xué)院;廣西桂林電子科技大學(xué)電子工程與自動(dòng)化學(xué)院, 2010.3 譚思良等。 VisualC+串口通信工程開發(fā)實(shí)例導(dǎo)航 M. 人民郵電出版社 .2034 宋戈,黃鶴松,員玉良,蔣海峰 . 51 單片機(jī)應(yīng)用開發(fā)范例大全 . 北京:人民 郵電出版社, 20105 池保忠. 基于單片機(jī)的電動(dòng)車控制系統(tǒng)設(shè)計(jì) J.機(jī)械與電子 ,2011,(4):51-53

20、.6 王曉侃 蘇全衛(wèi) 基于單片機(jī)控制的多功能電動(dòng)車自行車智能保護(hù)儀的設(shè) 計(jì)與實(shí)現(xiàn) 電子設(shè)計(jì)工程 2005,7,107-110.7 王立欣 ,靳 剛,程樹康 .混合電動(dòng)車用 PWM整流器控制方法的研究 J.電機(jī)與控制學(xué)報(bào) , 2005, 9(2): 199-202.8 尹洪波 基于單片機(jī)的電動(dòng)車控制系統(tǒng)設(shè)計(jì) J.中國新技術(shù)新產(chǎn)品, 2013,3 (上):21-22附錄:附錄一主控板和小車整體實(shí)物圖:附錄二 單片機(jī)程序:#include "reg52.h"#include <intrins.h>宏定義*/#define uchar unsigned char/ 宏定

21、義無符號(hào)字符型#define uint unsigned int/ 宏定義無符號(hào)整型#define LCD_Data P0#define Busy 0x80/ 檢測 LCD狀態(tài)字中的 Busy標(biāo)識(shí)*IO引腳定義sbit LCD_E =P27;sbit LCD_RW=P26;sbit LCD_RS=P25;/ 定義引腳sbit RX =P16;/ 模塊超聲波模塊 ECH0 接 P13 sbit TX =P17;/ 超聲波模塊 Trig 接 P14sbit IN1=P10;sbit IN2=P11;sbit IN3=P12;sbit IN4=P13;sbit EN1=P14;sbit EN2=P1

22、5;unsigned char code net = " ZTAI JLCM "unsigned char code forward = " ford "unsigned char code back = " back " unsigned char code left = " left "unsigned char code right = " righ " unsigned char code stop = " stop " unsigned char code Clef

23、 = " Clef "unsigned int time=0;unsigned long S=0;bit flag =0,flagg=0;unsigned char l_disbuff4= 0,0,0,0,;/ 顯示緩沖uchar date;uchar rec,startmove=0;uchar x,speed=100,speed2;uchar ii;uchar sudu;uint mm,mmm;void delayms(unsigned int timer)/ 毫秒延時(shí)int x,y;/ 若晶振速度太高可以在這后加LCD_E = 0;/ 延時(shí)for(x=timer;x&g

24、t;0;x-) for(y=120;y>0;y-);小的延時(shí)讀狀態(tài) */LCD_E = 1; unsigned char ReadStatusLCD(void) LCD_Data = 0xFF;LCD_RS = 0;LCD_RW = 1;LCD_E = 0;LCD_E = 0;LCD_E = 1;while (LCD_Data & Busy);/ 檢測忙信號(hào)return(LCD_Data);寫指令寫數(shù)據(jù)*/void WriteCommandLCD(unsigned char WCLCD,BuysC)/BuysC為 0時(shí)忽略忙檢測if (BuysC) ReadStatusLCD()

25、;/ 根據(jù)需要檢測忙LCD_Data = WCLCD;LCD_RS = 0;LCD_RW = 0;LCD_E = 0;LCD_E = 0;LCD_E = 1;void WriteDataLCD(unsigned char初始化 */WDLCD)ReadStatusLCD(); / 檢測忙LCD_Data = WDLCD;LCD_RS = 1;LCD_RW = 0;LCD_E = 0;void LCDInit(void)LCD_Data = 0; WriteCommandLCD(0x38,0);/ 三次模式設(shè)置,不檢測忙信號(hào) delayms(5);WriteCommandLCD(0x38,0);

26、 delayms(5);WriteCommandLCD(0x38,0); delayms(5);WriteCommandLCD(0x38,1);/ 顯示模式設(shè)置 ,開始要求每次檢 測忙信號(hào)WriteCommandLCD(0x08,1);/ 關(guān)閉顯示W(wǎng)riteCommandLCD(0x01,1);/ 顯示清屏WriteCommandLCD(0x06,1);/ 顯示光標(biāo)移動(dòng)設(shè)置WriteCommandLCD(0x0C,1);/ 顯示開及光標(biāo)設(shè)置/* 按指定位置顯示一個(gè)字符 */void DisplayOneChar(unsignedc har X, unsigned char Y, unsigne

27、d char DData)Y &= 0x1;X &= 0xF;/限制X不能大于 15,Y不能大于 1if (Y)X |= 0x40;/ 當(dāng)要顯示第二行時(shí)地址碼 +0x40;X |= 0x80;/ 算出指令碼WriteCommandLCD(X, 0);/ 這里不檢測忙信號(hào),發(fā)送地址碼WriteDataLCD(DData);/* 按指定位置顯示一串字符 */void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData) unsigned char ListLength;ListLen

28、gth = 0;Y &= 0x1;X &= 0xF;/限制X不大于 15,Y不大于 1 while (DDataListLength>=0x20) / 若到達(dá)字串尾則退出if (X <= 0xF)/X 坐標(biāo)應(yīng)小于 0xFDisplayOneChar(X, Y, DDataListLength); / 顯示單個(gè)字符ListLength+;X+;1,l_disbuff1);void Conut(void)time=TH0*256+TL0;TH0=0;TL0=0;S=(time*1.7)/100;/ 算出來是 CM if(S>=100)|flag=1)/ 超出測量范

29、圍顯示“ -”flag=0;DisplayOneChar(7, 1,'-');DisplayOneChar(8, 1,'.');DisplayOneChar(9, 1,'-');DisplayOneChar(10, 1,'-');DisplayOneChar(11, 1,'m');elsel_disbuff0=S%1000/100+0x30;/ 加上 0X30是將數(shù)字轉(zhuǎn)為 ASCII碼 l_disbuff1=S%1000%100/10+0x30; l_disbuff2=S%1000%10 %10+0x30; Dis

30、playOneChar(7, 1,l_disbuff0);DisplayOneChar(8, 1,'.');DisplayOneChar(9,DisplayOneChar(10,1,l_disbuff2);DisplayOneChar(11, 1,'m');if(S<40|flag=1)&(startmove=1| |startmove=2)IN1=1; IN2=0;IN3=1; IN4=0;delayms(5);EN1=1;EN2=1;delayms(50);IN1=0;IN2=0;IN3=0;IN4=1;delayms(10);EN1=1;EN

31、2=1;DisplayListChar(1, 1,Clef) delayms(800); IN1=0;IN2=1;IN3=0;IN4=1;delayms(10); EN1=1; EN2=1;void StartModule() / 啟動(dòng)模塊 TX=1; / 啟動(dòng)一次模塊_nop_();_nop_();_nop_();nop();_nop_();_nop_();_nop_();nop();_nop_();nop();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();TX=

32、0;void main()delayms(400);/ 啟動(dòng)等待,等 LCD講入工作狀態(tài)LCDInit(); / 初始化 delayms(5); / /延時(shí)片刻 (DisplayListChar(0, 0,net);TMOD=0x21;/ 設(shè) T0為方式 1 11.0592M 晶振 TH1=0xfd;TL1=0xfd;SCON=0x50;/ 串口的工作方式,設(shè)置為方式 1TR1=1;/ 打開定時(shí)器ES=1;/ 打開串口中斷TH0=0;TL0=0;ET0=1; / 允許 T0 中斷EA=1;/ 開啟總中斷while(1)StartModule();while(!RX); / 當(dāng) RX 為零 時(shí)等

33、待TR0=1; / 開啟計(jì)數(shù) while(RX); / 當(dāng) RX 為 1 計(jì)數(shù)并等待TR0=0; / 關(guān)閉計(jì)數(shù) Conut(); / 計(jì)算delayms(200);EN1=1;void zd0() interrupt 1/T0 中斷來計(jì)數(shù)器溢出 ,超過測距范圍flagg=1; / 中斷溢出標(biāo)志/* 中斷服務(wù)子函數(shù) */void com_isr(void) interrupt 4if(RI)rec=SBUF;/ 從串口緩沖區(qū)取得數(shù)據(jù)flag=1;RI=0;/ 清除串行接受標(biāo)志位/* 根據(jù)串口指令電機(jī)運(yùn)轉(zhuǎn)函數(shù) */ delayms(10);if(rec=0x01) / 正轉(zhuǎn)(前進(jìn)) startmo

34、ve=1;DisplayListChar(1, 1,forward);IN1=0; IN2=1;IN3=0; IN4=1; delayms(100);EN2=1; flag=0; if(rec=0x02)/反轉(zhuǎn)(后退) startmove=2;IN1=1;IN2=0;IN3=1;IN4=0;DisplayListChar(1, 1,back); delayms(100); EN1=1;EN2=1; flag=0;if(rec=0x03) / 左轉(zhuǎn)IN1=0;IN2=0;IN3=0;IN4=1;delayms(10); EN1=1;EN2=1;DisplayListChar(1, 1,left)

35、; delayms(800);IN1=0;IN2=1;IN3=0;N4=1;delayms(10);EN1=1;EN2=1;flag=0;if(rec=0x04) / 右轉(zhuǎn)IN1=0;IN2=1;IN3=0;IN4=0;delayms(10);EN1=1;EN2=1;DisplayListChar(1, 1,right); delayms(800);IN1=0;IN2=1;IN3=0;IN4=1;delayms(10); EN1=1;EN2=1;flag=0;if(rec=0x05) / 停車startmove=0;DisplayListChar(1, 1,stop)IN1=0;IN2=1;IN3=0;IN4=0;delayms(10); EN1=0;EN2=0;fla

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論