新聞中心

EEPW首頁(yè) > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)設(shè)計(jì)經(jīng)驗(yàn)技巧精華集錦(五)

單片機(jī)設(shè)計(jì)經(jīng)驗(yàn)技巧精華集錦(五)

作者: 時(shí)間:2013-05-27 來(lái)源:網(wǎng)絡(luò) 收藏
C 語(yǔ)音識(shí)別

  用AVR的高速AD檢測(cè)功能能實(shí)現(xiàn)簡(jiǎn)單的語(yǔ)音識(shí)別。聲音信號(hào)被駐極體電容話筒接收后送至LM386音頻功放芯片放大和過(guò)濾后送至AD轉(zhuǎn)換口,對(duì)音頻信號(hào)幅值采樣轉(zhuǎn)化為一組數(shù)字,然后對(duì)這組進(jìn)行取方差運(yùn)算,得出一個(gè)特征值,該特征值可以用于簡(jiǎn)單的語(yǔ)音識(shí)別。比如你發(fā)一個(gè)“e”,方差應(yīng)該比較小,如果你發(fā)“p”爆破音,方差應(yīng)該較大。當(dāng)然,如果你用更復(fù)雜的數(shù)據(jù)處理,會(huì)得到更好的識(shí)別效果。本設(shè)計(jì)使用了2路聲音信號(hào),目的是讓單片機(jī)判斷出聲源的大體方位。

  D 超聲波測(cè)距

  用AVR的1個(gè)IO口輸出40KHz信號(hào)送至超聲波發(fā)射電路,當(dāng)超聲波遇到障礙物返回后,被超聲波接收頭接收,信號(hào)經(jīng)CX20106A解碼芯片處理,得到一個(gè)低電平脈沖,用該脈沖引發(fā)AVR單片機(jī)中斷,AVR通過(guò)檢查發(fā)波和收到回波之間的時(shí)間差即可算出障礙物距離。

  E 電機(jī)驅(qū)動(dòng)

  本設(shè)計(jì)采用2片LG9110電機(jī)驅(qū)動(dòng)芯片驅(qū)動(dòng)兩臺(tái)直流減速電機(jī)。LG9110輸出最大電流為800mA,僅需要2條控制線與單片機(jī)IO口直接相連即可控制一臺(tái)電機(jī)正反轉(zhuǎn)或者停止。LG9110僅有8個(gè)引腳,使用非常方便。

  F 讓機(jī)器生命更聰明

  我的這個(gè)機(jī)器生命設(shè)計(jì)方案能實(shí)現(xiàn)最酷的效果是:白天,陽(yáng)光明媚,機(jī)器生命跑到陽(yáng)光底下曬太陽(yáng),太陽(yáng)光會(huì)隨著時(shí)間變化,機(jī)器生命能自動(dòng)跑到最合適的位置享受日光浴。到了晚上,機(jī)器生命會(huì)找個(gè)安靜的地方閉目養(yǎng)神,等待明天太陽(yáng)升起。你可以訓(xùn)練機(jī)器生命,讓它知道自己的名字叫什么。比如你叫著它的名字,同時(shí)站在它面前用強(qiáng)光照射它的太陽(yáng)能電池板,如此反復(fù)訓(xùn)練,會(huì)使機(jī)器生命聽(tīng)到自己名字后向聲源方向跑去,在距離聲源一定遠(yuǎn)處停止,因?yàn)橐酝@樣做它都能享受強(qiáng)光照射并充電。這就如同真正的寵物狗,你叫它名字它就跑到你跟前希望能獲得食物。這一切都是完全能夠?qū)崿F(xiàn)的,關(guān)鍵就在于編程序?qū)崿F(xiàn)它。

  G 想象無(wú)極限,你的機(jī)器寵物將無(wú)所不能

  以上方案中,ATmega16的功能被發(fā)揮到極致,以至于沒(méi)有空閑的IO口,系統(tǒng)不能再擴(kuò)展了。如果你用ATmega128單片機(jī)做,那么它擁有53個(gè)IO口,30多個(gè)中斷,128Kb的程序存儲(chǔ)器,4Kb的RAM,使得你能編寫(xiě)更復(fù)雜的程序、儲(chǔ)存更多的動(dòng)態(tài)數(shù)據(jù)、連接更多的外設(shè),你的機(jī)器生命將變得非常有生命力。比如加入三軸加速度傳感器、地磁傳感器、GPS定位、雨水傳感器甚至攝像頭、無(wú)線通信模塊等,重新設(shè)計(jì)一個(gè)堅(jiān)固和強(qiáng)勁的底盤(pán),你的機(jī)器生命就可以在室外自由探索了。

  以上芯片外設(shè)來(lái)源說(shuō)明:在淘寶上購(gòu)買(mǎi)很容易

  底盤(pán):340元的高級(jí)履帶式1:16電動(dòng)坦克模型

  加速度傳感器、地磁傳感器:美國(guó)AD公司的40元ADXL330加速度傳感器

  GPS定位:幾十元的車(chē)載外置GPS天線

  最后,我想說(shuō),機(jī)器人是非常好玩的,只要你有想象力,有毅力,努力研究實(shí)踐就能創(chuàng)造奇跡。

  二、工程師分享的單片機(jī)學(xué)習(xí)步驟

  有了單片機(jī)學(xué)習(xí)板之后你就要多練習(xí),把學(xué)習(xí)板和電腦連好,打開(kāi)調(diào)試軟件坐在電腦前,先學(xué)會(huì)怎么用調(diào)試軟件,然后從最簡(jiǎn)單的流水燈實(shí)驗(yàn)做起,等你能讓那八個(gè)流水燈按照你的意愿隨意流動(dòng)時(shí)你已經(jīng)入門(mén)了,你會(huì)發(fā)現(xiàn)單片機(jī)是多么迷人的東西啊,太好玩了,這不是在學(xué)習(xí)知識(shí),而是在玩,當(dāng)你編寫(xiě)的程序按你的意愿實(shí)現(xiàn)時(shí)你比做什么事都開(kāi)心,你會(huì)上癮的,真的。做電子類(lèi)的人真的會(huì)上癮。然后讓數(shù)碼管亮起來(lái),這兩項(xiàng)會(huì)了后,你已經(jīng)不能自拔了,你已經(jīng)開(kāi)始考慮你這輩子要走哪一行了。就是要這樣練習(xí),在寫(xiě)程序的時(shí)候你肯定會(huì)遇到很多問(wèn)題,而這時(shí)你再去翻書(shū)找,或是問(wèn)別人,當(dāng)?shù)玫浇獯鸷竽銜?huì)記住一輩子的,知識(shí)必須用于現(xiàn)實(shí)生活中,解決實(shí)際問(wèn)題,這樣才能發(fā)揮它的作用。另外我再說(shuō)說(shuō)用匯編和C語(yǔ)言編程的問(wèn)題。很多同學(xué)大一二就開(kāi)設(shè)了C語(yǔ)言的課 ,我也上過(guò),我知道那時(shí)天天就是幾乘幾,幾加幾啊,求個(gè)階乘啊。學(xué)完了有什么用?讓你用C語(yǔ)言編單片機(jī)的程序你是不是就傻了?書(shū)上的東西我們必須要會(huì)運(yùn)用。單片機(jī)編程用C語(yǔ)言或匯編語(yǔ)言都可以,但是我建議用C語(yǔ)言比較好,如果原來(lái)有C語(yǔ)言的基礎(chǔ)那學(xué)起來(lái)會(huì)更好,如果沒(méi)有,也可以邊學(xué)單片機(jī)邊學(xué)C語(yǔ)言,C 語(yǔ)言也挺簡(jiǎn)單,只是一門(mén)工具而已,我勸你最好學(xué)會(huì),將來(lái)肯定用得著,要不你以后也得學(xué),你一點(diǎn)匯編都不會(huì)根本無(wú)所謂,但你一點(diǎn)C語(yǔ)言都不會(huì)那你將來(lái)會(huì)吃苦頭。匯編寫(xiě)程序代碼效率高,但相對(duì)難度較大,而且很羅嗦,尤其是遇到算法方面的問(wèn)題時(shí),根本是麻煩的不得了,現(xiàn)在單片機(jī)的主頻在不斷的提高,我們完全不需要那么高效率的代碼,因?yàn)橛懈哳l率的時(shí)鐘,單片機(jī)的ROM也在不斷的提高,足夠裝得下你用C語(yǔ)言寫(xiě)的任何代碼,C語(yǔ)言的資料又多又好找,將來(lái)可移植性非常好,只需要變一個(gè)IO口寫(xiě)個(gè)溫度傳感器的程序在哪里都能用,所以我勸大家用C語(yǔ)言??偨Y(jié)上面,只要你有信心,做事能堅(jiān)持到底,有不成功不放棄的強(qiáng)烈意志,那學(xué)個(gè)單片機(jī)來(lái)說(shuō)就是件非常容 易的事。

  步驟:

  1.找本書(shū)大概了解一下單片機(jī)結(jié)構(gòu),大概了解就行。不用都看懂的。

  2.找學(xué)習(xí)板練習(xí)編寫(xiě)程序,學(xué)單片機(jī)就是練編程序,遇到不會(huì)的再問(wèn)人或查書(shū)。

  3.自己網(wǎng)上找些小電路類(lèi)的資料練習(xí)設(shè)計(jì)外圍電路。焊好后自己調(diào)試,熟悉過(guò)程。

  4.自己完全設(shè)計(jì)具有個(gè)人風(fēng)格的電路,產(chǎn)品,。。。你已經(jīng)是高手了

  ^_^。 。。。。

  學(xué)習(xí)單片機(jī)的八大步驟

  學(xué)習(xí)使用單片機(jī)就是理解單片機(jī)硬件結(jié)構(gòu),以及內(nèi)部資源的應(yīng)用,在匯編或C語(yǔ)言中學(xué)會(huì)各種功能的初始化設(shè)置,以及實(shí)現(xiàn)各種功能的程序編制。

  第一步:數(shù)字I/O的使用

  使用按鈕輸入信號(hào),發(fā)光二極管顯示輸出電平,就可以學(xué)習(xí)引腳的數(shù)字I/O功能,在按下某個(gè)按鈕后,某發(fā)光二極管發(fā)亮,這就是數(shù)字電路中組合邏輯的功能,雖然很簡(jiǎn)單,但是可以學(xué)習(xí)一般的單片機(jī)編程思想,例如,必須設(shè)置很多寄存器對(duì)引腳進(jìn)行初始化處理,才能使引腳具備有數(shù)字輸入和輸出輸出功能。每使用單片機(jī)的一個(gè)功能,就要對(duì)控制該功能的寄存器進(jìn)行設(shè)置,這就是單片機(jī)編程的特點(diǎn),千萬(wàn)不要怕麻煩,所有的單片機(jī)都是這樣。

  第二步:定時(shí)器的使用

  學(xué)會(huì)定時(shí)器的使用,就可以用單片機(jī)實(shí)現(xiàn)時(shí)序電路,時(shí)序電路的功能是強(qiáng)大的,在工業(yè)、家用電氣設(shè)備的控制中有很多應(yīng)用,例如,可以用單片機(jī)實(shí)現(xiàn)一個(gè)具有一個(gè)按鈕的樓道燈開(kāi)關(guān),該開(kāi)關(guān)在按鈕按下一次后,燈亮3分鐘后自動(dòng)滅,當(dāng)按鈕連續(xù)按下兩次后,燈常亮不滅,當(dāng)按鈕按下時(shí)間超過(guò)2s,則燈滅。數(shù)字集成電路可以實(shí)現(xiàn)時(shí)序電路,可編程邏輯器件(PLD)可以實(shí)現(xiàn)時(shí)序電路,可編程控制器(PLC)也可以實(shí)現(xiàn)時(shí)序電路,但是只有單片機(jī)實(shí)現(xiàn)起來(lái)最簡(jiǎn)單,成本最低。定時(shí)器的使用是非常重要的,邏輯加時(shí)間控制是單片機(jī)使用的基礎(chǔ)。

  第三步:中斷

  單片機(jī)的特點(diǎn)是一段程序反復(fù)執(zhí)行,程序中的每個(gè)指令的執(zhí)行都需要一定的執(zhí)行時(shí)間,如果程序沒(méi)有執(zhí)行到某指令,則該指令的動(dòng)作就不會(huì)發(fā)生,這樣就會(huì)耽誤很多快速發(fā)生的事情,例如,按鈕按下時(shí)的下降沿。要使單片機(jī)在程序正常運(yùn)行過(guò)程中,對(duì)快速動(dòng)作做出反應(yīng),就必須使用單片機(jī)的中斷功能,該功能就是在快速動(dòng)作發(fā)生后,單片機(jī)中斷正常運(yùn)行的程序,處理快速發(fā)生的動(dòng)作,處理完成后,在返回執(zhí)行正常的程序。中斷功能使用中的困難是需要精確地知道什么時(shí)候不允許中斷發(fā)生(屏蔽中斷)、什么時(shí)候允許中斷發(fā)生(開(kāi)中斷),需要設(shè)置哪些寄存器才能使某種中斷起作用,中斷開(kāi)始時(shí),程序應(yīng)該干什么,中斷完成后,程序應(yīng)該干什么等等 。

  中斷學(xué)會(huì)后,就可以編制更復(fù)雜結(jié)構(gòu)的程序,這樣的程序可以干著一件事,監(jiān)視著一件事,一旦監(jiān)視的事情發(fā)生,就中斷正在干的事情,處理監(jiān)視的事情,當(dāng)然也可以監(jiān)視多個(gè)事情,形象的比喻,中斷功能使單片機(jī)具有吃著碗里的,看著鍋里的功能。 以上三步學(xué)會(huì),就相當(dāng)于降龍十八掌武功,會(huì)了三掌了,可以勉強(qiáng)護(hù)身。

  第四步:與PC機(jī)進(jìn)行RS232通信

  單片機(jī)都有USART接口,特別是MSP430系列中很多型號(hào),都具有兩個(gè)USART接口。USART接口不能直接與PC機(jī)的RS232接口連接,它們之間的邏輯電平不同,需要使用一個(gè)MAX3232芯片進(jìn)行電平轉(zhuǎn)換。

  USART接口的使用是非常重要的,通過(guò)該接口,可以使單片機(jī)與PC機(jī)之間交換信息,雖然RS232通信并不先進(jìn),但是對(duì)于接口的學(xué)習(xí)是非常重要的。正確使用USART接口,需要學(xué)習(xí)通信協(xié)議,PC機(jī)的RS232接口編程等等知識(shí)。試想,單片機(jī)實(shí)驗(yàn)板


上一頁(yè) 1 2 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉