基于單片機(jī)的電子導(dǎo)盲杖設(shè)計_第1頁
基于單片機(jī)的電子導(dǎo)盲杖設(shè)計_第2頁
基于單片機(jī)的電子導(dǎo)盲杖設(shè)計_第3頁
基于單片機(jī)的電子導(dǎo)盲杖設(shè)計_第4頁
基于單片機(jī)的電子導(dǎo)盲杖設(shè)計_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上智能儀表設(shè)計基礎(chǔ)課程設(shè)計 課題名稱 電子導(dǎo)盲杖 學(xué)生學(xué)號 學(xué)生姓名 所在班級 指導(dǎo)教師 二一二年九月目 錄1.功能要求及性能指標(biāo)1.1 課程設(shè)計的目的和設(shè)計任務(wù)(1)1.2 課程設(shè)計的要求和技術(shù)指標(biāo)(1)2.方案設(shè)計2.1 硬件方案(2) 2.1.1 測距模塊方案選擇(2) 2.1.2 語音模塊方案選擇 (3) 2.1.3 顯示模塊方案選擇 (4) 2.1.4 震動模塊方案選擇(4)2.2 軟件方案 (4)3.硬件設(shè)計 3.1 STC89C52單片機(jī)介紹 (6) 3.1.1 引腳分布及定義(6) 3.1.2 定時器 (8) 3.2 HC-SR04超聲波模塊介紹 (8)

2、 3.2.1 模塊實(shí)物圖及說明 (9) 3.2.2 測距電路設(shè)計 (9) 3.2.3 測距程序設(shè)計 (11)3.3 ISD1420語音芯片介紹 (12) 3.3.1 芯片引腳圖及功能說明 (12) 3.3.2 語音錄放電路的設(shè)計 (13) 3.3.3 語音程序設(shè)計 (14) 3.4 震動模塊及LED燈的控制 (15) 3.5 總原理圖 (16) 3.6 儀器儀表清單 (18)4.軟件設(shè)計 4.1 程序程序設(shè)計 (18) 4.2 程序調(diào)試結(jié)果 (22)5.設(shè)計小結(jié) (23)參考文獻(xiàn)附錄一:課程設(shè)計任務(wù)書附錄二:軟件程序清單專心-專注-專業(yè)1. 功能要求及性能指標(biāo)1.1 課程設(shè)計的目的和設(shè)計任務(wù)世

3、界上視覺障礙者數(shù)量眾多,他們只能用百分之六十的感覺來獲取信息。盲人在獨(dú)自行走時主要依靠導(dǎo)盲裝置,最簡單常用的導(dǎo)盲裝置是普通的拐杖,用它在地面上敲擊,可幫助盲人發(fā)現(xiàn)0.5米以內(nèi)的障礙物。它的主要缺點(diǎn)是不能發(fā)現(xiàn)較遠(yuǎn)一點(diǎn)的障礙物以及懸空的障礙物。隨著社會的發(fā)展,傳統(tǒng)的導(dǎo)盲杖已經(jīng)遠(yuǎn)遠(yuǎn)不能滿足盲人的需要了。超聲波導(dǎo)盲杖是為視覺障礙者提供環(huán)境導(dǎo)引的輔助工具,它通過超聲波傳感器對周圍環(huán)境進(jìn)行探測,將探測的信息反饋給視覺障礙者,幫助他們彌補(bǔ)視覺信息的缺失。1.2課程設(shè)計的要求和技術(shù)指標(biāo)設(shè)計要求:本作品由超聲波測距功能、前方障礙物語音警示功能、震動警示功能、夜間警示路人功能。在盲人走路時,如果前方1米處有障礙物

4、,則盲杖自動語音提示“前方一米處有障礙物,請注意!”,如果前方1米處沒有障礙物,無提示音;如果前方2米處有障礙物,則盲杖自動語音提示“前方二米處有障礙物,請注意!”,如果前方2米處沒有障礙物,無提示音;如果前方3米處有障礙物,則盲杖自動語音提示“前方三米處有障礙物,請注意!”,如果前方3米處沒有障礙物,無提示音。手柄震動警示功能,可以讓盲人在嘈雜的環(huán)境中通過手柄的震動接收到前方障礙物信號,彌補(bǔ)了語音提示在嘈雜環(huán)境中的弊端。夜間警示路人功能,在夜間遇到4米以內(nèi)障礙物時,盲杖上的指示燈亮,可以警示前方路人注意盲人的位置,注意避讓盲人。盲杖具有使用方便,功耗低,實(shí)用性,是盲人出行外出的好助手。技術(shù)指

5、標(biāo):超聲波測距模塊:可提供2cm-400cm的非接觸式距離感測功能,測距精度可達(dá)3mm。ISD1420語音芯片:具有20秒高保真語音錄放功能,通過具有專利技術(shù)的模擬處理存儲方式,使錄放音質(zhì)極佳,沒有常見的的背景噪音,且電路斷電后語音內(nèi)容仍不丟失。2.方案設(shè)計2.1 硬件設(shè)計方案 電子導(dǎo)盲杖的總體框圖如下圖(圖1)所示,它由超聲波模塊、單片機(jī)、語音模塊、震動模塊、警示模塊、校準(zhǔn)模塊 組成。STC89C52單片機(jī)HCSR04 超聲波模塊ISD1420語音模塊震動模塊警示模塊校準(zhǔn)模塊圖1 硬件原理框圖2.1.1 測距模塊方案選擇 方案一:紅外測距利用紅外線測距,測距里程可達(dá)1-5公里。利用紅外線傳播

6、時的不擴(kuò)散原理:因?yàn)榧t外線在穿越其他物質(zhì)時折射率很小,所以長距離測距會考慮紅外線,而紅外線的傳播是需要時間的,當(dāng)紅外線從測距儀發(fā)出,碰到反射物被反射回來被測距儀接受,在根據(jù)從發(fā)射到接受的時間及紅外線的傳播速度就可算出距離。 方案二: 激光測距 利用激光對目標(biāo)的距離進(jìn)行準(zhǔn)確測量,測程可達(dá)40公里。激光測距在工作時向目標(biāo)射出一束很細(xì)的激光,由光電元件接收目標(biāo)反射的激光束,計時器測定激光束從發(fā)射到接收的時間,計算出從觀測者到目標(biāo)的距離。 方案三: 超聲波測距 超聲波測距是根據(jù)超聲波遇到障礙物反射回來的特性進(jìn)行測量的,測控距離為2cm到4m。超聲波發(fā)射器向某一方向發(fā)射超聲波,在發(fā)射的同時開始計時,超聲

7、波在空氣中傳播,途中碰到障礙物會立即返回來,超聲波接收器收到反射波就立即中斷停止計時。通過不斷檢測產(chǎn)生波發(fā)射后遇到障礙物所發(fā)射的回波,從而測出發(fā)射超聲波和接收超聲波的時間差,然后根據(jù)超聲波的速度算出距障礙物的距離。 選擇方案三原因: 方案一的紅外線測距,在距離較短的情況下,從發(fā)射到接收的時間過短,用單片機(jī)很難計算出,因此紅外測距適合較長距離的測量。方案二的激光測距,雖然測量精度較高,但是價格昂貴。因此,在精度要求不是很高的情況下,選擇價格便宜,適合短距離測量的超聲波測距模塊更為合適。 2.1.2 語音模塊選擇 方案一: ZLG1730語音芯片 ZLG1730語音芯片,內(nèi)部采用多層次存儲技術(shù),在

8、單個芯片上提供了自然的,高質(zhì)量的錄放決方案。輸入語音信號直接存儲在環(huán)形Flash存儲器中,且能重現(xiàn)自然的音質(zhì)。芯片帶有兩種操作模式:獨(dú)立按鍵模式,微控制器(SPI)模式。在獨(dú)立按鍵模式下,無需知道消息存儲在存儲器里的準(zhǔn)確位置就可以對消息進(jìn)行錄制、播放、擦除和快進(jìn)操作。在SPI模式下可以通過4條串行接線口來實(shí)現(xiàn)分段錄制和播放等操作,但需要另外購買編程器。 方案二: ISD1820 語音芯片 ISD1820語音芯片是單片8-20秒的單段語音錄放電路,基本結(jié)構(gòu)與ISD1420完全相同,采用CMOS技術(shù),內(nèi)含振蕩器,話筒前置放大,自動增益控制,防混淆濾波器,揚(yáng)聲器驅(qū)動及FLASH陣列。放音模式有三種可

9、選擇,其音質(zhì)比通常的話筒放大器要好很多,而且不會出現(xiàn)喇叭過載的情況。整個電路耗電極低,幾乎為0。錄入的時間越短音質(zhì)越好,錄入的時間越長,音質(zhì)越差。 方案三: ISD1420 語音芯片 ISD1420錄放音質(zhì)極佳,沒有常見的的背景噪音,且電路斷電后語音內(nèi)容仍不丟失。通過A0-A7地址端選擇不同地址進(jìn)行錄音,每位地址代表125毫秒的尋址,160個地址覆蓋20秒的語音范圍,只需要將錄制的時間大致計算出來,除以125,就可以準(zhǔn)確知道每段錄音的播放首地址。在接入單片機(jī)控制后,只需要將對應(yīng)地址賦值,就可以播放不同段的語音信息。錄音及放音功能均從設(shè)定的起始地址開始,錄音結(jié)束由停止鍵操作決定,芯片內(nèi)部自動在該

10、段的結(jié)束位置插入結(jié)束標(biāo)志(EOM);而放音時芯片遇到EOM標(biāo)志即自動停止放音。 選擇方案三原因: 方案一的ZLG1730模塊,雖然可以通過軟件分段錄放音,但是需另外購買下載編程器,價格和其他兩種方案比,較昂貴。方案二的ISD1820模塊只能進(jìn)行單段語音的錄放,不能實(shí)現(xiàn)要求的分段播放功能,因此不宜選擇。方案三的ISD1420模塊就在同等條件下較合適,能直接用單片機(jī)控制分段播放,價格便宜實(shí)惠。綜合考慮,選擇方案三。 2.1.3 顯示模塊方案選擇 方案一:ZLG7290數(shù)碼管顯示 ZLG7290數(shù)碼管,內(nèi)部有顯示RAM,能自動將顯示RAM中的內(nèi)容動態(tài)顯示在相應(yīng)的數(shù)碼管上。內(nèi)部有I2C串行接口,方便與

11、處理器相接。可驅(qū)動8位共陰數(shù)碼管或64只獨(dú)立LED和64個按鍵。它的掃描位數(shù)可控,任一數(shù)碼管閃爍可控,無需外接元件即可直接驅(qū)動LED。 方案二:1602液晶屏顯示 1602液晶模塊采用標(biāo)準(zhǔn)的16腳接口。它是一種專門用來顯示字母、數(shù)字、符號等的型液晶模塊。它由若干個5X7或者5X11等點(diǎn)陣字符位組成,每個點(diǎn)陣字符位都可以顯示一個字符,每位之間有一個點(diǎn)距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用。微功耗、體積小、顯示內(nèi)容豐富、超薄輕巧,常用在袖珍式儀表和低功耗應(yīng)用系統(tǒng)中。 選擇方案一原因: 電子導(dǎo)盲杖中不需要用到專門的顯示部分,而加入顯示只是為了在測距的時候能夠知道測量的距離是否準(zhǔn)確,

12、或者校正時使用。因此,若選擇方案二有點(diǎn)浪費(fèi)單片機(jī)的IO口。從經(jīng)濟(jì)角度考慮,實(shí)驗(yàn)室有集成的ZLG7290模塊,而沒有1602液晶屏,另外購買會造成浪費(fèi)。綜合考慮,選擇方案一。 2.1.4 震動模塊的選擇 方案一:直流電機(jī)加偏振塊 震動是在電機(jī)轉(zhuǎn)動時由于偏振塊的作用而產(chǎn)生的。直流電機(jī)的應(yīng)用廣泛,可直接加上電壓而不會燒壞,但對電流要求較高,價格便宜,方便購買。 方案二: 偏振電機(jī) 偏振電機(jī)在手機(jī)等眾多領(lǐng)域有廣泛應(yīng)用,可直接加很小的電壓就可以驅(qū)動,所需電流相對較小。 選擇方案二原因: 方案一中雖然直流電機(jī)購買方便,但是偏振塊卻難以實(shí)現(xiàn),市場上也沒有單獨(dú)的偏振塊購買,從網(wǎng)上訂貨不方便。而且直流電機(jī)雖然震

13、感強(qiáng)烈,但所需電流一般單片機(jī)難以直接提供。方案二的偏振電機(jī)市場上也幾乎沒有,但可以直接從手機(jī)等廢棄的電子產(chǎn)品上拆下,只需要很小的電流電壓就可以驅(qū)動,無需另外增加驅(qū)動電路。綜合考慮,選擇方案二。2.2軟件設(shè)計方案 本課程設(shè)計的軟件設(shè)計部分主要采用C語言編程,簡單易懂。分別對每個模塊獨(dú)立編程,再將所有整合,即可實(shí)現(xiàn)需要的功能。主程序中,先將各個模塊初始化,定義變量及賦初值。給超聲波一個脈沖觸發(fā)它開始工作,然后開始計時,在收到回波信號后,立即停止計數(shù)。此計數(shù)值就是從發(fā)射到接收的時間,乘以超聲波此時的速度,就可以算出障礙物距超聲波的大致距離,可以將此距離直接顯示。根據(jù)距離的不同,發(fā)出不同的語音提示和震

14、動。下圖(圖2)為軟件設(shè)計框圖:圖2 軟件流程圖3.硬件設(shè)計3.1 STC89C52單片機(jī)介紹 STC89C52是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash 。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。 具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,512字節(jié)RAM, 32 位I/O 口線,內(nèi)置4KB EEPROM,MAX810復(fù)位電路,三個16 位 /計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工。另外 STC89X52 可降至0Hz 靜態(tài)邏輯操作,支持2種可選擇節(jié)電模式??臻e模式

15、下,CPU 停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),一切工作停止,直到下一個中斷或硬件復(fù)位為止。最高運(yùn)作頻率35MHz,6T/12T可選。 3.1.1 引腳分布及定義圖3 STC89C52RC引腳圖STC89C52RC引腳分布如圖三所示,引腳功能說明如下:VCC(40引腳):電源電壓VSS(20引腳):接地P0端口(P0.0P0.7,3932引腳):P0口是一個漏極開路的8位雙向I/O口。作為輸出端口,每個引腳能驅(qū)動8個TTL負(fù)載,對端口P0寫入“1”時,可以作為高阻抗輸入。在訪問外部程序和數(shù)據(jù)存儲器時,P0口也可以提供低8位地

16、址和8位數(shù)據(jù)的復(fù)用總線。此時,P0口內(nèi)部上拉電阻有效。在Flash ROM編程時,P0端口接收指令字節(jié);而在校驗(yàn)程序時,則輸出指令字節(jié)。驗(yàn)證時,要求外接上拉電阻。P1端口(P1.0P1.7,18引腳):P1口是一個帶內(nèi)部上拉電阻的8位雙向I/O口。P1的輸出緩沖器可驅(qū)動(吸收或者輸出電流方式)4個TTL輸入。對端口寫入1時,通過內(nèi)部的上拉電阻把端口拉到高電位,這是可用作輸入口。P1口作輸入口使用時,因?yàn)橛袃?nèi)部上拉電阻,那些被外部拉低的引腳會輸出一個電流。P2端口(P2.0P2.7,2128引腳):P2口是一個帶內(nèi)部上拉電阻的8位雙向I/O端口。P2的輸出緩沖器可以驅(qū)動(吸收或輸出電流方式)4個

17、TTL輸入。對端口寫入1時,通過內(nèi)部的上拉電阻把端口拉到高電平,這時可用作輸入口。P2作為輸入口使用時,因?yàn)橛袃?nèi)部的上拉電阻,那些被外部信號拉低的引腳會輸出一個電流。P3端口(P3.0P3.7,1017引腳):P3是一個帶內(nèi)部上拉電阻的8位雙向I/O端口。P3的輸出緩沖器可驅(qū)動(吸收或輸出電流方式)4個TTL輸入。對端口寫入1時,通過內(nèi)部的上拉電阻把端口拉到高電位,這時可用作輸入口。P3做輸入口使用時,因?yàn)橛袃?nèi)部的上拉電阻,那些被外部信號拉低的引腳會輸入一個電流。P3口除作為一般I/O口外,還有其他一些復(fù)用功能,如下表所示:表1 P3口引腳復(fù)用功能引腳號復(fù)用功能P3.0RXD(串行輸入口)P3

18、.1TXD(串行輸出口)P3.2(外部中斷0)P3.3(外部中斷1)P3.4T0(定時器0的外部輸入)P3.5T1(定時器1的外部輸入)P3.6(外部數(shù)據(jù)存儲器寫選通)P3.7(外部數(shù)據(jù)存儲器讀選通)RST(9引腳):復(fù)位輸入。當(dāng)輸入連續(xù)兩個機(jī)器周期以上高電平時為有效,用來完成單片機(jī)單片機(jī)的復(fù)位初始化操作??撮T狗計時完成后,RST引腳輸出96個晶振周期的高電平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能無效。DISRTO默認(rèn)狀態(tài)下,復(fù)位高電平有效。ALE/(30引腳):地址鎖存控制信號(ALE)是訪問外部程序存儲器時,鎖存低8位地址的輸出脈沖。在Flash編程時,此引腳()

19、也用作編程輸入脈沖。(29引腳):外部程序存儲器選通信號()是外部程序存儲器選通信號。當(dāng)AT89C51RC從外部程序存儲器執(zhí)行外部代碼時,在每個機(jī)器周期被激活兩次,而訪問外部數(shù)據(jù)存儲器時,將不被激活。/VPP(31引腳):訪問外部程序存儲器控制信號。為使能從0000H到FFFFH的外部程序存儲器讀取指令,必須接GND。注意加密方式1時,將內(nèi)部鎖定位RESET。為了執(zhí)行內(nèi)部程序指令,應(yīng)該接VCC。在Flash編程期間,也接收12伏VPP電壓。XTAL1(19引腳):振蕩器反相放大器和內(nèi)部時鐘發(fā)生電路的輸入端。XTAL2(18引腳):振蕩器反相放大器的輸入端。 3.1.2 定時器 STC89C52

20、RC除了有定時器/計數(shù)器0和定時器/計數(shù)器1之外,還增加了一個一個定時器/計數(shù)器2.定時器/計數(shù)器2的控制和狀態(tài)位位于T2CON和T2MOD。 定時器2是一個16位定時/計數(shù)器。通過設(shè)置特殊功能寄存器T2CON中的C/T2位,可將其作為定時器或計數(shù)器。定時器2有3種操作模式:捕獲、自動重新裝載(遞增或遞減計數(shù))和波特率發(fā)生器,這3種模式由T2CON中的位進(jìn)行選擇。表2 特殊功能寄存器T2CON的描述3.2 HC-SR04超聲波模塊介紹 采用 IO 觸發(fā)測距, 控制口發(fā)一個10US 以上的高電平,就可以在接收口等待高電平輸出。一有輸出就可以開定時器計時,當(dāng)此口變?yōu)榈碗娖綍r就可以讀定時器的值,此時

21、就為此次測距的時間,方可算出距離。如此不斷的周期測,就可以達(dá)到移動測量了。 3.2.1 模塊實(shí)物圖及說明 圖3 實(shí)物圖 接口定義: VCC:接+5V電源 GND:接地 Trig:接控制端 Echo:接接收端 3.2.2 測距電路設(shè)計圖4 超聲波測距電路圖通過單片機(jī)的P1.1口給超聲波模塊一個20us的高電平脈沖,觸發(fā)超聲波模塊,使之開始工作,定時器開始計數(shù),于此同時,接收端開始不斷檢測有無回波。一旦接收到有回波信號,則P3.2口立即進(jìn)入中斷,停止定時器計數(shù),把計數(shù)值送入寄存器中計算當(dāng)前距離。公式:uS/58=厘米或者uS/148=英寸;或是:距離=高電平時間*聲速(340M/S)/2。測的距離

22、與實(shí)際距離比較,如下表(表3:表3 測距對比 圖5 測距對比圖6 測距對比折線圖 3.2.3 測距程序設(shè)計圖7 超聲波測距軟件流程圖 具體程序入下: Trig=0; /首先拉低脈沖輸入引腳 EA=1; /打開總中斷0 TMOD=0x10; /定時器1,16位工作方式 while(1) EA=0; /關(guān)總中斷 Trig=1; /超聲波輸入端 delay_20us(); /延時20us Trig=0; /產(chǎn)生一個20us的脈沖 while(Echo=0); /等待Echo回波引腳變高電平 succeed_flag=0; /清測量成功標(biāo)志 EA=1; EX0=1; /打開外部中斷0 TH1=0; /

23、定時器1清零 TL1=0; /定時器1清零 TF1=0; /計數(shù)溢出標(biāo)志 TR1=1; /啟動定時器1 delay(20); /等待測量的結(jié)果 TR1=0; /關(guān)閉定時器1 EX0=0; /關(guān)閉外部中斷0 if(succeed_flag=1) time=timeH*256+timeL; distance=time*0.0172; /厘米 if(succeed_flag=0) distance=0; /沒有回波則清零 display(distance); 3.3 ISD1420語音芯片介紹ISD1420是美國ISD公司出品的新型單片優(yōu)質(zhì)語音錄放電路,較之以往所有的語音電路,具有專利技術(shù)的模擬處理

24、存儲方式,使錄放音質(zhì)極佳,沒有常見的的背景噪音,且電路斷電后語音內(nèi)容仍不丟失。電路內(nèi)部由振蕩器、語音存儲單元、前置放大器、自動增益控制電路、抗干擾濾波器、輸出放大器組成。一個最小的錄放系統(tǒng)僅由一個麥克風(fēng)、一個喇叭、兩個按鈕、一個電源、少數(shù)電阻電容組成。 3.3.1 芯片引腳圖及功能說明右圖(圖8)為ISD1420語音芯片的引腳圖。其引腳功能為下表(表3)所示。其特性為:工作電壓:5V靜態(tài)電流:0.52A工作電流:1530mA重現(xiàn)優(yōu)質(zhì)原聲基本上不耗電信息存儲信息可保存100年,可反復(fù)錄放10萬次選址處理多達(dá)160段信息維持狀態(tài),僅需0.5A電流,具有自動節(jié)電模式 圖8 ISD1420引腳圖表4

25、ISD1420引腳功能說明名 稱管 腳功 能名 稱管 腳功 能A0A516地址Ana Out21模擬輸出A6、A79、10地址(MSB)Ana In20模擬輸入VCCD28數(shù)字電路電源AGC19自動增益控制VCCA16模擬電路電源Mic17麥克風(fēng)輸入VSSD12數(shù)字地Mic Ref18麥克風(fēng)參考輸入VSSA13模擬地24放音,邊沿觸發(fā)SP、14、15喇叭輸出、27錄音XCLK26外接定時器(可選)25發(fā)光二極管接口NC11空腳23放音,電平觸發(fā) 3.3.2 語音錄放電路的設(shè)計語音錄音電路的電路設(shè)計如下圖(圖9)所示:圖9 語音錄音電路 通過地址端口的7個按鍵選擇分段錄音的地址。根據(jù)計算,一段語

26、音信息大概為4秒左右,分3段,首段地址分別為0x00,0x28,0x50。只要將對應(yīng)的八個按鍵根據(jù)這三個地址即可開始錄制,錄音時,按住REC鍵,此時LED燈常亮,表示在錄音狀態(tài)。按PLAYE即可播放當(dāng)前錄的語音信息,放完后遇到EOM標(biāo)志,LED閃一下,表示放音結(jié)束。 3.3.3 語音程序設(shè)計 功能說明:語音提示當(dāng)超聲波探頭距離障礙物不同距離時,播放不同時段的語音信息,同時加入震動,及LED燈提示等功能??驁D如下圖(圖10)所示:圖10 語音程序流程圖3.4 震動模塊及LED燈的控制 震動功能的實(shí)現(xiàn)主要是通過偏振電機(jī)來實(shí)現(xiàn)的,其電路圖如下圖(圖11)所示。圖11 震動模塊電路P1.1口(圖中為Z

27、D)通過三極管放大后直接接在電機(jī)的一端,通過P1.1口輸出電平信號的高低來控制電機(jī)的工作狀態(tài)。LED燈的控制也是直接由P1口輸出的電平信號來控制,其電路圖如下圖(圖12)所示:圖12 LED燈的控制電路三個燈分別接在P1.2,P1.3,P1.4。當(dāng)這三個端口分別輸出低電平時燈亮。因此在程序中,只要在需要燈閃爍時將P1口置低電平即可。3.5 總原理圖圖13 總原理圖 將各個模塊的電路整合起來,就可以得到整個原理圖了。3.6 儀器儀表清單表5 使用的元器件元件名稱數(shù)量STC89C52RC1個HC-SR041個ISD14201個偏振電機(jī)1個揚(yáng)聲器,麥克風(fēng)各一個12MHZ晶振1個按鍵3個LED 燈4個

28、NPN三極管1個串口1個MAX2321個8腳,28腳,40腳芯片底座各一個電阻若干電容若干ZLG單片機(jī)實(shí)驗(yàn)箱一臺杜邦線,排針,導(dǎo)線若干4.軟件設(shè)計 4.1 程序設(shè)計#include <reg52.h>#include <absacc.h>#include "i2c.h"#include "zlg7290.h"#include <stdio.h>#define uchar unsigned char /定義一下方便使用#define uint unsigned int#define ulong unsigned long

29、uint time;uint succeed_flag;uchar timeL;uchar timeH;sbit Trig=P10;sbit Echo=P32;sbit PLAYE=P11;sbit LED1=P12;sbit LED2=P13;sbit ZD=P14;/*/延時子程序void Delay(unsigned int t) /延時(t*1)ms uint dt; for(;t>0;t-) for(dt=0;dt<1000;dt+);void delay_20us() /延時20us uchar a ; for(a=0;a<100;a+); /*/*函數(shù):Syst

30、emInit()功能:系統(tǒng)初始化*/void SystemInit(void)I2C_Init();/TMOD = 0x01;Delay(30);/等待ZLG7290復(fù)位完畢/*/語音播放子程序/* void YUYIN(int a,int b) switch(a) case 0: /距離小于1米則震動報警 ZD=1; LED1=0; LED2=0; Delay(20); break; case 1: /距離在1。5米以下則語音提示加震動警示 if(b<5) P2=0x00; PLAYE=1; PLAYE=0; LED1=0; LED2=0; ZD=1; else P2=0x28;/距離

31、在1.5米到2米則語音提示加震動警示 PLAYE=1; PLAYE=0; LED1=0; LED2=0; ZD=1; Delay(20); break; case 2: /距離在2米到2.5米則語音提示加震動警示 if(b<5) P2=0x28; PLAYE=1; PLAYE=0; LED1=0; LED2=0; ZD=1; else P2=0x50; PLAYE=1; PLAYE=0; LED1=0; LED2=0; ZD=1; Delay(20); break; case 3: /距離在2。5米到3。5米則語音提示加震動警示 if(b<5) P2=0x50; PLAYE=1;

32、PLAYE=0; LED1=0; LED2=0; ZD=1; Delay(20); break; /*/主程序void main(void) long float distance,dat;int a,b,c,d;SystemInit(); Trig=0; /首先拉低脈沖輸入引腳 EA=1; /打開總中斷0 TMOD=0x12; /定時器1,16位工作方式 LED1=1; /指示燈復(fù)位(保持高電平為熄滅態(tài)) LED2=1;ZD=0; while(1) LED1=1; /指示燈復(fù)位(保持高電平為熄滅態(tài)) LED2=1; ZD=0; EA=0; /關(guān)總中斷 Trig=1; /超聲波輸入端 dela

33、y_20us(); /延時20us Trig=0; /產(chǎn)生一個20us的脈沖 while(Echo=0); /等待Echo回波引腳變高電平 succeed_flag=0; /清測量成功標(biāo)志 EA=1; EX0=1; /打開外部中斷0 TH1=0; /定時器1清零 TL1=0; /定時器1清零 TF1=0; /計數(shù)溢出標(biāo)志 TR1=1; /啟動定時器1 Delay(20); /等待測量的結(jié)果 TR1=0; /關(guān)閉定時器1 EX0=0; /關(guān)閉外部中斷0 if(succeed_flag=1) time=timeH*256+timeL; distance=(long float)time/58; /

34、厘米 if(succeed_flag=0) distance=0; /沒有回波則清零 dat=distance*10; /顯示程序,作為導(dǎo)盲杖可不接端口。也可屏蔽a = dat / 1000;ZLG7290_Download(3,0,0,a);b = (dat-a*1000) /100;ZLG7290_Download(2,0,0,b);c = (dat-a*1000-b*100)/10;ZLG7290_Download(1,1,0,c);d = dat-a*1000-b*100-c*10;ZLG7290_Download(0,0,0,d);/DISP(distance);/顯示子程序 YUY

35、IN(a,b); /語音播放 Delay(20);void exter() interrupt 0 / 外部中斷0是0號 EX0=0; /關(guān)閉外部中斷 timeH =TH1; /取出定時器的值 timeL =TL1; /取出定時器的值 succeed_flag=1;/至成功測量的標(biāo)志 /定時器1中斷,用做超聲波測距計時void timer1() interrupt 3 / TH1=0; TL1=0; 4.2 程序調(diào)試結(jié)果圖14 調(diào)試成果圖5.設(shè)計小結(jié) 在課程設(shè)計的過程中,我們一開始找不到方向,感覺像無頭蒼蠅,不知道從哪兒著手。在看過任務(wù)安排后,我們通過抽簽選擇了隊(duì)友,當(dāng)天也確定了我們組的課題電

36、子導(dǎo)盲杖。接下來,就是絞盡腦汁的想到底可以實(shí)現(xiàn)哪些功能。當(dāng)時的我們只想出了三四個簡單的功能,都是自己感覺有哪些就寫上去。經(jīng)過老師指點(diǎn),我才意識到,現(xiàn)在不用淘寶這塊的資源,就是一大浪費(fèi)。當(dāng)天下午,我們就立即回去搜索現(xiàn)有的盲杖的功能。回頭發(fā)現(xiàn),我們的功能只是十年前人家就已經(jīng)實(shí)現(xiàn)了的。重新定義了一番后,我們組三個人開始分工合作,測距部分,提示部分,控制部分,每人一個部分開始找尋方案選擇合適方案。 硬件選擇及設(shè)計部分遇到的困難及解決方法 首先,在選擇器件上,我們采用比較法,選擇幾個相近功能的芯片,再一一比較選擇最合適的那個。在選超聲波模塊時,我們拿了暑假做實(shí)驗(yàn)用的那個模塊,但是怎么做都沒有出現(xiàn)距離的顯

37、示,一開始我以為是程序不對,我將程序仔細(xì)對了一遍,對照框圖檢查程序,在多次檢查編譯后沒有發(fā)現(xiàn)錯誤。然后就檢查超聲波模塊,檢查有無信號輸出和接收。結(jié)果一接電源模塊后面的芯片就發(fā)燙,原來是芯片燒壞了。當(dāng)考慮到要用數(shù)字顯示來觀測測距的準(zhǔn)確性時卻不知道用液晶屏還是周立功顯示。液晶屏顯示測距是已經(jīng)實(shí)現(xiàn)過的,但是現(xiàn)在所用的單片機(jī)不一樣,液晶屏接口相對較多,會浪費(fèi)過多的IO口,所以選擇周立功顯示。但在使用周立功顯示時用我寫的程序開始實(shí)現(xiàn)不了,數(shù)碼管也一直不亮。改用以前單片機(jī)實(shí)驗(yàn)室的程序也不能顯示,我就擔(dān)心周立功是否燒壞,但在其他同學(xué)的電腦上測試他們的顯示程序,依然是可以的,所以不是模塊的問題。再重新接線后居

38、然可以顯示了,原來是接線接反了。選擇語音模塊的時候,由于需要分段錄音,所以選擇起來比較麻煩。選擇實(shí)驗(yàn)箱上的語音模塊時,看了說明書后我可以實(shí)現(xiàn)基本的錄音和放音,但是分段起來較困難,需要下載器,因此我們換了一個芯片,根據(jù)上一屆學(xué)長的指導(dǎo),我們選擇了ISD1420。這個芯片可以自己計算錄音的長度來設(shè)計存放的地址段,來進(jìn)行分段錄音。焊接語音模塊的時候,由于外圍線路較多,焊接比較麻煩,每次焊完后都要用外用表測試下是否短路或虛焊。整個都焊完,花了一上午時間,但下午檢查的時候還是發(fā)現(xiàn)有個接地錯焊到了電源線,幸好提前檢查了一遍,不然芯片可能就毀了。在錄制語音的時候,我計算好每段的首地址,錄進(jìn)去后播放,總能放出

39、。但當(dāng)我錄完第三段,卻放不出第一段和第二段,我一直以為是程序的問題,但是錄音不要用到程序,因此一直在疑惑為什么會出現(xiàn)這種問題,但是在過了一 天后,我又檢查了接線,發(fā)現(xiàn)我一直把低地址和高地址在開關(guān)上接反了,因此,錄音的時候地址選擇不正確,過短的地址不能容納這么長的語音信號,因此放音的時候就成了亂碼。在改過之后,立即變得清晰明確。 在設(shè)計警示燈的時候,我將電阻錯焊了,100歐姆的焊成100千歐姆的。在測試的時候幸好提前檢測了下電阻值,否則,燈將不會亮。在除焊和重焊的過程中,我也學(xué)會了更好的焊接。在做完基本的測距和報警功能后,我們停滯不前,在老師的指導(dǎo)下,我們又加了一個震動功能。但是雖說震動功能想著

40、容易實(shí)現(xiàn),找偏振電機(jī)的時候卻遇上了些困難。在銀河電子城根本找不到偏振電機(jī),只有直流電機(jī),但是直流電機(jī)的驅(qū)動電流比較大,靠單片機(jī)根本驅(qū)動不了,于是想加一個偏振塊,但是在市場上還是沒有偏振塊賣。這可讓我們陷入僵局,不知該從何處下手。我的隊(duì)友這時提出可以用手機(jī)上的震動電機(jī)。他那邊正好有一個不用的舊手機(jī),可以將它拆了取出震動模塊。測試它震動所需的最小電壓和電流,然后將單片機(jī)口的輸出電壓用三極管和電阻轉(zhuǎn)換為合適的電壓和電流輸出,用來驅(qū)動震動電機(jī)。 軟件設(shè)計部分遇到的困難及解決方法 在第二周編寫程序的時候,根據(jù)之前模塊的說明書以及我們畫的框圖來編寫,在測距的程序的基礎(chǔ)上加上顯示,和報警,震動。在最開始的周

41、立功顯示程序上我添加了測距程序,經(jīng)過測試后,可以顯示數(shù)字,但是只能顯示大概的數(shù)字,就是百位的數(shù)字,十位和個位都不能很準(zhǔn)確的顯示,為了能更準(zhǔn)確顯示和報警,我在測得的數(shù)字上又做了進(jìn)一步的調(diào)整,保留小數(shù)點(diǎn)后一位,這樣能減少報警的誤差,增加準(zhǔn)確性。開始我調(diào)用顯示子函數(shù),在子函數(shù)中修改精度,發(fā)現(xiàn)編譯后會出現(xiàn)定義的數(shù)據(jù)類型不一致的問題,后來,我將小數(shù)都改為整數(shù)再進(jìn)行轉(zhuǎn)換就可以實(shí)現(xiàn)1mm的精度了。在放音時我使用的是CASE語句,由于沒有加跳出語句,因此,在第一段放完之后,就播放第二段語音造成混亂。在顯示部分,總是跳來跳去,顯示不穩(wěn)定,不好做比較。在測距是如果距離固定,他顯示的數(shù)字仍是在不斷跳變,后來我在顯示

42、后邊加了一個延時,時間是20us,數(shù)字顯示就穩(wěn)定了些,但卻滯后變化。于是我縮短延時時間,雖然還有跳變,但基本可以看清數(shù)字,跳變的也不是很厲害了。我們做的事電子導(dǎo)盲杖,不需要顯示,但為了能更好的校準(zhǔn),我還是增加了這一部分。 在整個課程設(shè)計中,我學(xué)習(xí)到了一些芯片的用法,也了解了單片機(jī)的實(shí)用功能,更加注意到考慮問題的周全性和仔細(xì)性。這些都是書本上沒有的東西,但在實(shí)踐中,我們就會自己去體驗(yàn)去接觸,因此,這次實(shí)踐對于動手能力是極大地鍛煉和提高,也教導(dǎo)我團(tuán)隊(duì)合作的重要性。我相信,在以后我們一定可以做到更好,為以后工作或?qū)W習(xí)打下扎實(shí)基礎(chǔ)。 參考文獻(xiàn)1 童詩白主編.模擬電子技術(shù)基礎(chǔ)(第三版)·高教出版社.20012 張毅剛主編.單片機(jī)原理及應(yīng)用 (第一版)·高教出版社.20033 程德福、林君主編.智能儀器.(第二版)機(jī)械工業(yè)出版社.20114 張國雄主編.測控電路(第四版)·機(jī)械工業(yè)出版社.20115 揚(yáng)州大學(xué).智能儀表設(shè)計基礎(chǔ)實(shí)驗(yàn)指導(dǎo)書揚(yáng)州大學(xué).20126 張國雄主編.測控電路(第四版)·機(jī)械工業(yè)出版社.20117 電子技術(shù)類雜志、報刊8超聲波模塊說明書,語音芯片說明書,ZLG單片機(jī)開發(fā)實(shí)驗(yàn)箱附錄一:智能儀

溫馨提示

  • 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

提交評論