久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 11522|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

基于51單片機(jī)的聲音定位系統(tǒng)電路與源程序設(shè)計

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:58647 發(fā)表于 2021-7-11 18:49 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
壓縮包包含文檔、程序等全部資料。
設(shè)計一套聲音定位系統(tǒng)。在一塊不大于 1m2 的平板上貼一張 500mm×350mm
的坐標(biāo)紙,在其四角外側(cè)分別固定安裝一個聲音接收模塊,聲音接收模塊通過導(dǎo)
線將聲音信號傳輸?shù)叫畔⑻幚砟K,聲音定位系統(tǒng)根據(jù)聲響模塊通過空氣傳播到 各聲音接收模塊的聲音信號,判定聲響模塊所在的位置坐標(biāo)。系統(tǒng)結(jié)構(gòu)示意圖如 圖 1 所示。



2.1 要求
圖 1 聲音定位系統(tǒng)結(jié)構(gòu)示意圖

(1) 設(shè)計制作一個聲響模塊,含信號產(chǎn)生電路、放大電路和微型揚聲器等, 每按鍵一次發(fā)聲一次,聲音信號持續(xù)時間約為 1s。要求聲響模塊采用 5V 以下電 池供電,功耗不大于 200mW。
(2) 設(shè)計制作四路聲音接收模塊,由麥克風(fēng)、放大電路等組成,并分別與信 息處理模塊相連接,以便將聲音信號傳送至信息處理模塊。
(3) 設(shè)計制作一個信息處理模塊,要求該模塊能根據(jù)從聲音接收模塊傳來的 信號判斷聲響模塊所在位置的 x、y 坐標(biāo),并以數(shù)字形式顯示 x、y 坐標(biāo)值,位置 坐標(biāo)值誤差的絕對值不大于 30mm。
3.1 說明
(1)  注意預(yù)留測量聲響模塊功耗的電流電壓和信號放大電路輸出信號的測試
點。
(2) 采用三個聲音接收模塊即可實現(xiàn)定位,第四個模塊可對定位作進(jìn)一步校 正。
(3) 不允許聲響模塊與其他電路有任何連接,并要求在聲響模塊上做出明顯 標(biāo)記,以便清晰判讀模塊所在坐標(biāo)數(shù)值。
(4) 注意聲音通過其它傳播介質(zhì)帶來的影響。 二、總體設(shè)計與分析


為了實現(xiàn)本次設(shè)計的要求,系統(tǒng)必須具備以下功能:按鍵聲源發(fā)聲且持續(xù)時 間 1s、接收聲音、信號放大濾波、聲源定位等功能。其系統(tǒng)主要可以劃分為:聲 響模塊、聲音接收模塊、控制器和顯示模塊。
在整體的方案上,聲響模塊利用 555 單穩(wěn)態(tài)振蕩電路來達(dá)到每按鍵一次發(fā)聲一次
的功能。另外由于聲響模塊產(chǎn)生的聲音信號傳遞到接收模塊時是十分微弱的,所
以聲音接收模塊必須含有濾波,放大和比較等環(huán)節(jié),以便觸發(fā)控制器進(jìn)行運算和 處理。本次設(shè)計采用了比較器 LM358 結(jié)合放大電路形成的聲音接收模塊。此系 統(tǒng)結(jié)構(gòu)框圖如下所示:



三、方案比較與選擇
3.1 處理器
圖 2.1 系統(tǒng)結(jié)構(gòu)框圖

方案一:采用 TI 公司生產(chǎn)的 MSP430 單片機(jī)。MSP430 系列單片機(jī)含有一種 超高速、低功耗的同時具有精簡指令集(RISC)的 16 位處理器。該系列芯片片內(nèi) 資源豐富,中斷源的數(shù)量較多,足以滿足本次設(shè)計對中斷源的需求。同時 MSP430 系列單片機(jī)運算速度快,片內(nèi)硬件資源豐富,能夠?qū)崿F(xiàn)一些較為復(fù)雜的算法和數(shù) 據(jù)處理。但在短時間內(nèi)掌握 MSP430 的編程與開發(fā)具有一定的難度。
方案二:采用 STC 公司生產(chǎn)的 STC89C52RC 單片機(jī)。STC89C52RC 是 STC 公司 生產(chǎn)的一種高性能 CMOS、低功耗的 8 位微控制器。其片內(nèi)含有五個可屏蔽中斷 源,且容易對其進(jìn)行編程處理,基本可以滿足本次設(shè)計要求。另外 STC89C52RC 單片機(jī)小系統(tǒng)的焊接較為簡單,后期調(diào)試工作也更加方便。 綜上所述,方案一成本較高,并且考慮到短時間內(nèi)不易掌握,經(jīng)過討論采取方案 二。
3.2 聲源裝置 方案一:采用單片機(jī)產(chǎn)生聲音信號,經(jīng)過功率放大電路,驅(qū)動無源蜂鳴器發(fā)
聲,這可以通過程序?qū)崿F(xiàn)。但由于 STC89C52RC 單片機(jī)片內(nèi)資源有限,需要另外 再焊接一個單片機(jī)小系統(tǒng),較為浪費資源。
方案二:采用 555 單穩(wěn)態(tài)振蕩電路產(chǎn)生聲音信號,經(jīng)過三極管放大電路,驅(qū) 動無源蜂鳴器發(fā)聲。其通過內(nèi)部的定時器產(chǎn)生時基電路,外部只需簡單的驅(qū)動電 路便可實現(xiàn)按鍵一次,聲音持續(xù)時間 1s 的功能。該電路結(jié)構(gòu)簡單,可外接 5V 電 源,方便焊接與測試。
綜上所述,經(jīng)討論采取方案二。

3.3 聲音接收裝置 方案一:采用壓電式聲敏傳感器。壓電式聲敏傳感器是利用壓電晶體的壓電
效應(yīng)制成一種能實現(xiàn)聲-電轉(zhuǎn)換器件。但壓電聲敏傳感器不是常用器件,價格較 貴。
方案二:采用電容式駐極體話筒(咪頭)。該元件能將一般的聲音信號轉(zhuǎn)化為 電信號。價格便宜,便于設(shè)計,之后再自行設(shè)計濾波與放大電路,一起構(gòu)成聲音 信號接收模塊。
綜上所述,電容式駐極體話筒對于滿足設(shè)計要求綽綽有余,經(jīng)過討論采取方 案二。
3.4 聲音信號放大電路 方案一:采用聲控開關(guān)。聲控開關(guān)使用簡單,價格便宜,但是反應(yīng)不夠靈敏,
精度較低。 方案二:采用多級放大整波電路,將接收的信號經(jīng)放大、濾波、電壓比較排
除噪聲干擾,精度高。 綜上所述,雖然方案二電路復(fù)雜運用模電知識,但是項目要求精度比較高,
所以采用方案二。3.5 顯示模塊
方案一:LCD1602 液晶顯示屏,是一種工業(yè)字符型液晶,能夠同時顯示 16x02
(16 列 2 行)即 32 個字符。對于本次設(shè)計而言,雖然其能基本完成顯示坐標(biāo)軸
上 X 與 Y 的值,但考慮在調(diào)試過程中,需要顯示時間差值和因中斷觸發(fā)產(chǎn)生的標(biāo)
志值。LCD1602 顯然做不到實時顯示,增加了調(diào)試的難度。
方案二:LCD12864 液晶顯示屏,是一種具有多種接口方式,內(nèi)部簡體中文字
庫的點陣圖形液晶顯示模塊;其顯示分辨率為 128×64, 內(nèi)置 8192 個 16*16 點
漢字,和 128 個 16*8 點 ASCII 字符集。利用該模塊靈活的接口方式和簡單、方
便的操作指令,完全滿足本次設(shè)計中的顯示需求和調(diào)試需求。
綜上所述,經(jīng)討論采取方案二。 四、電路設(shè)計
4.1 按鍵發(fā)聲模塊電路設(shè)計
聲音信號是通過 555 單穩(wěn)態(tài)振蕩電路產(chǎn)生。通過按下開關(guān)按鈕后,下降沿觸
發(fā),555 電路產(chǎn)生持續(xù)時間為 1s 的聲音信號,使三極管電路飽和導(dǎo)通并放大電
流,驅(qū)動無源蜂鳴器發(fā)聲。整個電路由 5V 紐扣電池供電,使用小功率三極管 A42
進(jìn)行放大電流,以實現(xiàn)低功耗。
按鍵發(fā)聲模塊的具體電路如下圖所示:

圖 4.1 按鍵發(fā)聲模塊電路


圖中公有兩個 555 單穩(wěn)態(tài)振蕩電路,其中第一個 555 單穩(wěn)態(tài)振蕩電路對按鍵延 時防抖,產(chǎn)生準(zhǔn)確的負(fù)脈沖。第二個 555 單穩(wěn)態(tài)振蕩電路中則產(chǎn)生持續(xù) 1s 的正 脈沖。可見 555 單穩(wěn)態(tài)振蕩電路中,每來一次負(fù)脈沖,便輸出一個正脈沖,其寬 度 Tw 由 RC 決定,滿足下列公式:
Tw = 1.1 × RC (s)
其中 R 在圖 4.1 中分別為 R22、R28;C 分別為 C17、C18。通過調(diào)節(jié) R28 即 可產(chǎn)生持續(xù) 1s 的高電平信號。
4.2 聲音接收模塊電路設(shè)計 聲音接收模塊采用駐極體話筒作為聲電轉(zhuǎn)換元件。駐極體話筒輸出端是內(nèi)部
場效應(yīng)管的漏極 D 和源極 S,此電路采用源極輸出,漏極接地的連接方式,故在 源極 S 與電源正極之間接入 10K 電阻。通過共基極放大電路放大電流信號,再經(jīng) 過由 LM358 組成的過零比較器電路輸出方波信號。電路中設(shè)置有 1K 的電位器 R18,以便調(diào)節(jié) LM358 比較器端的參考電壓,改變電路的靈敏度,使調(diào)試更為方 便。
聲音接收模塊電路具體如下圖所示:
圖 3.2 聲音接收模塊電路 由圖 3.2 可知,比較器輸入端參考電壓實際為:


本次設(shè)計采用 STC89C52RC 單片機(jī)進(jìn)行運算處理和驅(qū)動 LCD12864 液晶顯示 屏顯示定位結(jié)果,即利用單片機(jī)內(nèi)部定時器 0 計時,由外部中斷 0、外部中斷 1 和定時器 1 觸發(fā),檢測接收信號的下降沿,通過這種方式計算聲音傳播后,不同 模塊接收到信號的時間差,通過時間差計算出聲源信號到接收模塊距離,然后由
單片機(jī)編程計算出聲源的位置坐標(biāo),最終顯示在液晶屏上。
STC89C52RC 單片機(jī)小系統(tǒng)電路和 LCD12864 驅(qū)動電路如下圖所示:



五、算法與程序設(shè)計
5.1 數(shù)據(jù)處理原理:
圖 4.3 STC89C52RC 單片機(jī)模塊

本算法基于時間差算出未知點的坐標(biāo)點。從理論上分析,只需三個已知點就 可以對聲音源進(jìn)行定位,我們首先先將問題簡化為二維平面內(nèi)對聲音源進(jìn)行定位。
如下圖所示,在一個平面內(nèi)分布有三個傳感器 A、B 和 C 坐標(biāo)分別為(0,350)、
(0,0)、(500,0)。當(dāng)平面內(nèi)某處 S(x,y)發(fā)出聲音時,3 個傳感器將先后接收 到信號,設(shè)信號到達(dá) A,B 的時間差為 t1,到達(dá) B,C 的時間差為 t2,則有:

我們只需在單片機(jī)程序中將 x, y 所有可能值都帶入到上式中,檢查有哪些值滿 足條件即可。



5.2 程序流程圖
圖 5.1 聲音定位系統(tǒng)等效平面圖

圖 5.2

5.3 子程序流程圖:


六、測試方案
6.1 主要的測試儀器、儀表
圖 5.3


本次主要使用的測試儀器與儀表有,函數(shù)信號發(fā)生器、示波器與數(shù)字萬用表。
6.2 測試方法 在硬件測試中,按鍵發(fā)聲模塊通過示波器測試電路輸出波形,調(diào)節(jié)電位器改
變電阻值來調(diào)節(jié)觸發(fā)時間,保證發(fā)出的聲響持續(xù)時間為 1s;另外使用數(shù)字萬用表 測量按鍵發(fā)聲模塊的功耗。聲音接收模塊通過數(shù)字萬用表,測量當(dāng)發(fā)聲模塊距接 收模塊不同距離時,比較器輸出電壓,直至調(diào)節(jié)電位器,改變比較器靈敏度使輸
出電壓在要求距離內(nèi)能受到信號,并以下降沿觸發(fā)單片機(jī)。聲響模塊和接收模塊 都可以使用函數(shù)發(fā)生器和示波器來檢測電路的連接是否正常。
在軟件測試中,我們組軟件調(diào)試的中心思想是分模塊調(diào)試。先將程序分為三 個接受模塊,算法模塊,顯示模塊,我們在分塊調(diào)試時,將各個模塊的輸出都顯 示出來以便于觀察各模塊是否正確。運用這種方法,可以將軟件上的錯誤精確定


位到某一個環(huán)節(jié),大大提高了調(diào)試的效率。以下是具體方法:
1、將程序中的標(biāo)志位 signalA,signalB,signalC 通過 LCD 屏幕顯示出來,以方便 觀察是否所有傳感器都收到了信號。
2、將各信號間的時間差通過 LCD 屏幕顯示出來,以方便觀察各傳感器的響
應(yīng)速度以及接受信號的先后順序是否與實際一致。
3、在接入傳感器前,先用另一片單片機(jī)模仿傳感器發(fā)出的信號,并通過程序 設(shè)置時間差等參數(shù),用于檢查算法是否正確。
七、系統(tǒng)調(diào)試
7.1 按鍵發(fā)聲模塊
測試輸出電流(通過測量蜂鳴器串聯(lián)的 1Ω的電阻得到電流值),從圖中可知
為 0.042A:


圖 7.1.1
測試蜂鳴器兩端電壓,從圖中可知為 4.36V:



7.2 聲音接收模塊
圖 7.1.2


當(dāng)聲響模塊離接收模塊距離較近時,接收模塊輸出電壓達(dá)到 3.6V 左右。



圖 7.2.1
當(dāng)聲響模塊離接收模塊較遠(yuǎn)時(但坐標(biāo)仍屬于坐標(biāo)紙的范圍),接收模塊輸出
電壓將會變小。這個時候就需要調(diào)節(jié)電位器,改變電阻值以減小比較器 LM358 輸 入端參考電壓的值。



7.3 LCD 液晶顯示模塊
圖 7.2.1


進(jìn)行測試時,LCD12864 液晶顯示模塊除了顯示坐標(biāo) X 與 Y 的值外,還會顯示 A、B、C 三個聲音接收模塊的中斷觸發(fā)標(biāo)志值(如下圖顯示屏中第一行所顯示的 內(nèi)容,其中顯示值為 0 表示未觸發(fā),為 1 則表示已觸發(fā)),以及 A、B 和 C 三個 聲音接收模塊依次收到信號時的計時時刻(其中從右到左依次為 0us,65us 和 68us, 此時模塊 C 最先收到聲音信號),這樣方便系統(tǒng)調(diào)試。
下圖坐標(biāo) X 與 Y 值在誤差范圍內(nèi),滿足測量要求。





八、數(shù)據(jù)測試與處理
圖 7.3.1


8.1 聲響模塊參數(shù)記錄表與測試數(shù)據(jù) 當(dāng)給聲響模塊供電時聲響模塊測試結(jié)果如下表所示:
測試內(nèi)容
測試結(jié)果
按鍵發(fā)生
聲音信號持續(xù)時間
1 .023s
功耗測試
183.12mW(4.36V,0.042A)
表 8.1
8.2 聲音接收模塊輸出電壓記錄表與測試數(shù)據(jù)
比較電路在不同靈敏度下,距聲源不同距離時聲音接收模塊輸出電壓測試結(jié)
果如下表所示:
表 8.2
從表 8.2 可以看出,當(dāng)電位器阻值較小時即比較器輸入端參考電壓接近 0 時
更易收到信號,但實際上這樣做也更容易受到干擾。接收模塊 C 相較于 A、B 模
塊了,由于焊接工藝的問題,靈敏度較低。合理調(diào)節(jié)電位器阻值之后,三個模塊
最終都能受到信號,滿足設(shè)計要求。
8.3 聲源實測坐標(biāo)記錄表 對處于不同坐標(biāo)的聲源進(jìn)行了實際測量,最終得到了以下的一些實測數(shù)據(jù)如

下表所示:

從表中可以看出,除個別點外,坐標(biāo)紙的四個方向邊緣區(qū)域以及中間區(qū)域共
取了 5 個點,其實測坐標(biāo)基本滿足設(shè)計要求。而個別點的誤差可能是由于接收模 塊放置的位置不準(zhǔn)確或聲源放置地不準(zhǔn)確而產(chǎn)生。
九、總結(jié)
本次設(shè)計以 STC89C52 為核心部件,利用了聲音檢測與辨識技術(shù),利用嚴(yán)密的 數(shù)學(xué)方法實現(xiàn)和確定了聲源的準(zhǔn)確定位。在系統(tǒng)設(shè)計過程中,力求硬件電路簡單, 降低硬件成本,節(jié)約功耗。
在這次設(shè)計中,我們遇到了許多問題,這些問題我們之前從未遇到過, 但最終我們都找到了解決這些問題的辦法,這對我們來說是一次很好的鍛煉。在 程序設(shè)計與軟件調(diào)試的過程之中,由于我們同時使用了 STC89C52 單片機(jī)中的四 個中斷進(jìn)行控制處理,對于單片機(jī)各個中斷的優(yōu)先級與觸發(fā)的考慮更為復(fù)雜,但 只要結(jié)合函數(shù)信號發(fā)生器模擬聲音信號觸發(fā)單片機(jī)得到調(diào)試結(jié)果,并且根據(jù)這些
結(jié)果不斷改正程序,就能得到最優(yōu)的程序設(shè)計。另外在程序設(shè)計過程,由于子程 序中數(shù)據(jù)處理十分重要,我們查閱了許多的資料,對于 C51 中的數(shù)據(jù)類型以及常 用的庫函數(shù)也更加的熟悉。在硬件調(diào)試過程中,出現(xiàn)了聲音接收模塊電路不穩(wěn)定, 易受到干擾,以及放大電路難以調(diào)試的問題。對于接下來設(shè)計之后,我們也 會考慮重新設(shè)計相關(guān)電路,例如采用雙比較器電路進(jìn)行比較放大,來提高電路的性能。
電路原理圖



相關(guān)作品圖片
(1)作品整體圖:

(2)按鍵發(fā)聲模塊


(3)聲音接收模塊
(4)單片機(jī)小系統(tǒng)



單片機(jī)源程序如下:
  1. #include<reg52.h>
  2. #include<stdio.h>
  3. #include "delay.h"
  4. #include "lcd.h"
  5. #include<math.h>
  6. #define uchar unsigned char
  7. #define uint unsigned int
  8. #define BOOL bit
  9. #define BYTE unsigned char
  10. #define WORD unsigned int

  11. uchar signalA,signalB,signalC;
  12. uchar wolsignalA,wolsignalB,wolsignalC;
  13. uchar wolCount,obv;
  14. unsigned int posX,posY;         //坐標(biāo)取值

  15. code unsigned char byValidShow[] = {" V值:           "};
  16. code unsigned char DispX[] = {" X軸:           "};
  17. code unsigned char DispY[] = {" Y軸:           "};

  18. void Init_Show()           //LCD初始化顯示子程序
  19. {
  20.         Delay400Ms();
  21.         LCDInit();
  22.         LCDClear();
  23.         Delay5Ms();
  24.         LCDClear();
  25.         //DisplayListChar(0,1,byValidShow);
  26.         DisplayListChar(0,2,DispX);
  27.         DisplayListChar(0,3,DispY);
  28.         Delay5Ms();
  29. }

  30. void Init_isr()                //中斷初始化設(shè)置子程序
  31. {
  32.         EA = 0;
  33.         TMOD = 0x62;        
  34.         /*外部中斷0*/
  35.         IT0 = 1; EX0 = 1;
  36.         /*外部中斷1*/
  37.         IT1 = 1; EX1 = 1;
  38.         /* 計數(shù)器 0*/
  39.         TH1 = 0xFF; TL1 = 0xFF; TR1 = 1; ET1 = 1;
  40.         /* 定時器 1*/
  41.         TH0 = 246; TL0 = 246; TR0 = 0; ET0 = 0;
  42.         /***********/
  43.         IE0=0;IE1=0;TF1=0;TF0=0;
  44.         EA = 1;
  45. }

  46. void signalchuli(float m,float n)  //坐標(biāo)定位計算程序
  47. {

  48.         BOOL r1=0;
  49.         BOOL r2=0; //方程是否成立變量
  50.         BOOL suc=0; //解題是否成功變量
  51.         float x,y;        
  52.         for(x=10;x<=500;x+=10)
  53.         {
  54.                 for(y=10;y<=350;y+=10)
  55.                 {
  56.                         if(fabs(sqrt(x*x+(350-y)*(350-y))- sqrt(x*x+y*y)-m)<=20.0)
  57.                                 r1=1;
  58.                         //else r1=0;
  59.                         if(fabs(sqrt(x*x+y*y)-sqrt(y*y+(500-x)*(500-x)) -n)<=20.0)
  60.                                 r2=1;
  61.                         //else r2=0;
  62.                         if(r1&&r2)
  63.                                 {
  64.                                         suc=1;
  65.                                         break;
  66.                                 }
  67.                         else
  68.                                 {
  69.                                         r1=0;
  70.                                         r2=0;
  71.                                 }
  72.                 }
  73.                 if(suc)
  74.                         break;
  75.         }
  76.         
  77.         posX=x;
  78.         posY=y;
  79.         
  80. }

  81. void main()
  82. {
  83.         float cha1,cha2;
  84.         uchar cha1_temp,cha2_temp;
  85.         EA=0;
  86.         Init_Show();
  87.         Init_isr();               
  88.         while(1)
  89.         {
  90.                 if( signalA && signalB && signalC)
  91.                 {
  92.                         EA = 0;
  93.                         TR0=0;
  94.                         obv++;
  95.                         cha1_temp = wolsignalA - wolsignalB;
  96.                         cha2_temp = wolsignalB - wolsignalC;
  97.                         if(wolsignalA < wolsignalB)
  98.                         {
  99.                                 cha1_temp = 65536 - cha1_temp;
  100.                                 cha1 = -(3.4*cha1_temp);
  101.                         }
  102.                         else
  103.                         {
  104.                                 cha1 = 3.4*cha1_temp;
  105.                         }
  106.                         if(wolsignalB < wolsignalC)
  107.                         {
  108.                                 cha2_temp = 65536 - cha2_temp;
  109.                                 cha2 = -(3.4*cha2_temp);
  110.                         }
  111.                         else
  112.                         {
  113.                                 cha2 = 3.4*cha2_temp;
  114.                         }
  115.                         signalchuli(cha1,cha2);
  116.                         DisplayADData(4,2,posX);
  117.                         DisplayADData(4,3,posY);  //顯示坐標(biāo)
  118.                         signalA = 0;         
  119.                         signalB = 0;
  120.                         signalC = 0;                        
  121.                         wolCount = 0;
  122.                         Init_isr();
  123.                 }
  124.                 DisplayADData(0,4,wolsignalA);
  125.                 DisplayADData(3,4,wolsignalB);
  126.                 DisplayADData(6,4,wolsignalC);        //顯示時間插值,方便調(diào)試

  127.                 DisplayADData(0,1,signalA);        
  128.                 DisplayADData(3,1,signalB);
  129.                 DisplayADData(6,1,signalC);                //顯示觸發(fā)標(biāo)志位,方便調(diào)試
  130.         }
  131. }

  132. void JsA_isr() interrupt 0         //外部中斷0,下降沿觸發(fā)
  133. {
  134.         EX0 = 0;
  135.         if(wolCount == 0)
  136.         {
  137.                 wolsignalA = 0;
  138.                 TR0 = 1;
  139.                 ET0 = 1;
  140.         }
  141.         else
  142.         {
  143.                 wolsignalA = wolCount;
  144.         }
  145.         signalA = 1;
  146. }

  147. void JsB_isr() interrupt 2          //外部中斷1,下降沿觸發(fā)
  148. {
  149.         
  150.         if(wolCount == 0)
  151.         {
  152.                 wolsignalB = 0;
  153.                 TR0 = 1;
  154.                 ET0 = 1;
  155.         }        
  156.         else
  157.         {
  158.                 wolsignalB = wolCount;
  159.         }
  160.         signalB =1;
  161.         EX1 = 0;
  162. }

  163. void Timer1_isr() interrupt 3        //計數(shù)器1,工作方式2
  164. {
  165.         if(wolCount == 0)
  166.         {
  167.                 wolsignalC = 0;
  168.                 TR0 = 1;
  169.                 ET0 = 1;
  170.         }
  171.         else
  172.         {
  173.                 wolsignalC = wolCount;
  174.         }
  175.         signalC = 1;
  176.         ET1 = 0;        
  177. }                 

  178. void Timer0_isr() interrupt 1  //定時器0,工作方式2 , 10us
  179. {
  180.         wolCount++;        
  181. }
復(fù)制代碼

以上文檔與程序資料51hei下載(初學(xué)作品,如有錯誤請大家多多指導(dǎo)):
基于51的聲音定位系統(tǒng).rar (1.6 MB, 下載次數(shù): 177)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏8 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:1020584 發(fā)表于 2022-4-23 14:08 | 只看該作者
請問您這個定位系統(tǒng)在使用另一個單片機(jī)仿真模擬傳感器信號的時候怎么操作的呀
回復(fù)

使用道具 舉報

板凳
ID:1018456 發(fā)表于 2022-4-24 23:39 | 只看該作者
PSNR 發(fā)表于 2022-4-23 14:08
請問您這個定位系統(tǒng)在使用另一個單片機(jī)仿真模擬傳感器信號的時候怎么操作的呀

protues上可以仿真一下信號
回復(fù)

使用道具 舉報

地板
ID:1020584 發(fā)表于 2022-4-25 12:39 | 只看該作者
783748306 發(fā)表于 2022-4-24 23:39
protues上可以仿真一下信號

我用兩個單片機(jī)實際仿真總是出現(xiàn)問題 顯示的時間差與設(shè)定的不一樣 是因為單片機(jī)引腳輸出信號不穩(wěn)定嗎 求助
回復(fù)

使用道具 舉報

5#
ID:1039802 發(fā)表于 2022-7-17 20:30 | 只看該作者
請問這個程序里面是不是還有一些時間之類的程序代碼需要另外寫啊,我照著寫了一下,結(jié)果出現(xiàn)了bug,求助
回復(fù)

使用道具 舉報

6#
ID:979908 發(fā)表于 2022-11-16 22:13 來自觸屏版 | 只看該作者
783748306 發(fā)表于 2022-4-24 23:39
protues上可以仿真一下信號

用proteus怎么仿真啊,在發(fā)聲模塊會出聲音嗎?在顯示模塊會顯示坐標(biāo)嗎?求助
回復(fù)

使用道具 舉報

7#
ID:979908 發(fā)表于 2022-11-16 22:15 來自觸屏版 | 只看該作者
在proteus怎么仿真啊,發(fā)聲模塊會發(fā)出聲音嗎?顯示模塊會顯示坐標(biāo)嗎?
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产一区精品视频 | 69福利视频 | 国产欧美视频在线观看 | 日韩中文字幕一区二区三区 | 在线看片a| 国产91在线播放 | 一区二区三区不卡视频 | 国产乱淫av| 免费看黄色小视频 | 天堂成人av | 国产视频在线观看视频 | 91成人国产 | 免费一级大片 | 亚洲免费小视频 | 国产日韩欧美一区 | 久久精品福利 | 五月天婷婷视频 | 可以免费看的av | 国产午夜精品久久 | 欧美黄色一区二区 | 一区二区视频在线 | 亚洲影视在线 | 91av免费 | 日韩精品一区二区三区免费视频 | 国产欧美日韩在线视频 | 在线播放亚洲 | 一级黄色小视频 | 亚洲三级小说 | 中文字幕在线观看亚洲 | 毛片aaa| 欧美一区二区三区在线 | av免费看片| 久久黄色录像 | 国产香蕉视频在线观看 | 特级毛片爽www免费版 | 国产一区二区三区 | 中文字幕在线网站 | 激情网站在线观看 | 久色91| 伊人成人在线视频 | 亚洲成人免费在线 |