超聲波發(fā)送接收論文_第1頁
超聲波發(fā)送接收論文_第2頁
超聲波發(fā)送接收論文_第3頁
超聲波發(fā)送接收論文_第4頁
超聲波發(fā)送接收論文_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

電子綜合設(shè)計實驗報告PAGE2電子綜合設(shè)計實驗報告課程:電子綜合設(shè)計實驗項目:超聲波測距學(xué)期:2011~2012第二學(xué)期學(xué)院:電子信息與自動化學(xué)院專業(yè):電子信息工程班級:109070201班姓名:學(xué)號:指導(dǎo)教師:電工電子技術(shù)實驗中心目錄一、摘要3TOC\o"1-2"\h\z\u二、設(shè)計任務(wù)和性能指標(biāo) 42.1設(shè)計任務(wù) 42.2性能指標(biāo) 4三、設(shè)計方案 5四、系統(tǒng)硬件設(shè)計 74.1超聲波發(fā)射電路 74.2超聲波檢測接收電路 84.3單片機(jī)最小系統(tǒng) 94.4顯示電路 104.4+5v電源電路 10五.系統(tǒng)軟件設(shè)計 11六.調(diào)試及誤差分析 116.1調(diào)試步驟 136.2誤差分析 14七.心得體會 16參考文獻(xiàn) 16附錄1程序清單 17附錄2仿真圖、原理圖及PCB制版圖 17附錄3CX20106A中文資料21三、設(shè)計方案3.1設(shè)計方案一采用鎖相環(huán)頻率合成技術(shù),也可以實現(xiàn)我們所需要的超聲波測距儀。具體方案如下:首先通過頻率合成技術(shù)產(chǎn)生超聲波所需要的頻率,在通過信號線將采用鎖頻率相合成技術(shù)得到的頻率引到超聲波的發(fā)射頭上,這樣就可以實現(xiàn)超聲波測距。它的優(yōu)點就是工作頻率可調(diào),也可以達(dá)到很高的頻率分辨率;缺點是要求使用的濾波器通帶可變,實現(xiàn)很困難。它的原理如圖3.3所示:圖3.3超聲波原理圖綜上所述,因此選擇第一種設(shè)計方案。按照系統(tǒng)設(shè)計的功能的要求,初步確定設(shè)計系統(tǒng)由單片機(jī)主控模塊、超聲波發(fā)射模塊,超聲波接收模塊、顯示模塊共4個模塊組成。主控芯片使用51系列STC89C52單片機(jī),該單片機(jī)工作性能穩(wěn)定,同時也是在單片機(jī)課程設(shè)計中經(jīng)常使用到的控制芯片。本設(shè)計在接受模塊采用了由索尼公司生產(chǎn)的CX2016A紅外接收芯片來實現(xiàn)超聲波的接收。CX2016A是一款紅外線檢波接收的專用芯片,常用于電視機(jī)紅外遙控接收器。考慮到紅外遙控常用的載波頻率38KHz與測距超聲波頻率40KHz較為接近,可以利用它作為超聲波檢測電路。實驗證明其具有很高的靈敏度和較強(qiáng)的抗干擾能力。同時通過改變部分參數(shù)來改變接受電路的靈敏度和抗干擾能力,所以我們采用該芯片作為接收模塊主要組成部分。發(fā)射電路主要采用差分放大電路來實現(xiàn)的,由反相器74LS04和超聲波發(fā)射換能器T構(gòu)成,輸出的40kHz的方波信號一路經(jīng)一級反向器后送到超聲波換能器的一個電極,另一路經(jīng)兩級反向器后送到超聲波換能器的另一個電極,用這種推挽形式將方波信號加到超聲波換能器的兩端。之所以采用該方案是因為通過差分放大電路可以提高超聲波的發(fā)射強(qiáng)度,進(jìn)而增加了發(fā)送距離,最終擴(kuò)大了設(shè)備的測量范圍。3.2設(shè)計方案二采用單片機(jī)來控制的超聲波測距儀是先由單片機(jī)產(chǎn)生一個信號,經(jīng)過信號線,把信號引入到與超聲波發(fā)射器相連的信號引腳上,再由超聲波發(fā)射器向某一方向發(fā)射超聲波,在發(fā)射時刻的同時開始計時,超聲波在空氣中傳播,途中碰到障礙物就立即返回來,超聲波接收器收到反射波就立即停止計時。超聲波在空氣中的傳播速度為340m/s,根據(jù)計時器記錄的時間t,就可以計算出發(fā)射點距障礙物的距離(s),即: …………………(3.1)原理框圖如3-1所示: 單片機(jī)主控模塊單片機(jī)主控模塊(STC89C52)超聲波發(fā)射模塊超聲波接收模塊超聲波發(fā)射模塊超聲波接收模塊顯示模塊 顯示模塊圖3.1采用單片機(jī)來控制的超聲波測距儀3.3方案設(shè)計三采用CPLD來控制的超聲波測距儀,主要是在軟件上運用VHDL(VeryHighSpeedIntegratedCircuitHardwareDescriptionLanguage)編寫程序使用MAX+plusII軟件進(jìn)行軟硬件設(shè)計的仿真和調(diào)試,最終實現(xiàn)測距功能。使用本方案的優(yōu)點在于在超聲波測距儀設(shè)計中采用的是MAX7000s系列中的EPM7128SLC84-15的CPLD器件,其最高頻率可達(dá)175.4MHz,可用于組合邏輯電路、時序邏輯電路、算法、雙端口RAM等的設(shè)計。充分利用了其多達(dá)128個宏單元、68pin可編程I/O口,使該器件可以將分頻功能、計數(shù)功能、顯示編碼功能、振蕩功能全部集于一體。又因其延時平均的特點,保證了測距結(jié)果精度高、響應(yīng)速度快。缺點是方案中需要一塊FPGA,一塊雙口RAM,還需要一塊用來存儲波形數(shù)據(jù)的EEPROM,那么設(shè)計的成本較高。同時在FPGA中還要用硬件描述語言(VHDL語言)編寫程序來實現(xiàn)硬件電路功能。由于EPM7128SLC84-15的算法復(fù)雜,所以在軟件實現(xiàn)起來編程也復(fù)雜。所以,經(jīng)過對照比較,選擇方案二來實現(xiàn)。四、系統(tǒng)硬件設(shè)計硬件電路的設(shè)計主要包括單片機(jī)系統(tǒng)及顯示電路、溫度補(bǔ)償電路,超聲波發(fā)射電路和超聲波檢測接收電路四部分。單片機(jī)采用AT89C52或其兼容系列。采用12MHz高精度的晶振,以獲得較穩(wěn)定時鐘頻率,減小測量誤差。單片機(jī)用P3.3端口輸出超聲波換能器所需的40kHz的方波信號,利用外中斷0來監(jiān)測超聲波接收電路輸出的返回信號。顯示電路采用LCD1602液晶實現(xiàn)。4.1超聲波發(fā)射電路超聲波發(fā)射電路原理圖如圖2-2所示。發(fā)射電路主要由反相器74LS04和超聲波發(fā)射換能器LS1構(gòu)成,單片機(jī)P3.3端口輸出的40kHz的方波信號一路經(jīng)一級反向器后送到超聲波換能器的一個電極,另一路經(jīng)兩級反向器后送到超聲波換能器的另一個電極,用這種推換形式將方波信號加到超聲波換能器的兩端,可以提高超聲波的發(fā)射強(qiáng)度。輸出端采兩個反向器并聯(lián),用以提高驅(qū)動能力。上位電阻R1O、R11一方面可以提高反向器74LS04輸出高電平的驅(qū)動能力,另一方面可以增加超聲波換能器的阻尼效果,縮短其自由振蕩時間。如圖4-1。圖4-1超聲波發(fā)射電路原理圖圖4-1超聲波發(fā)射電路原理圖壓電式超聲波換能器是利用壓電晶體的諧振來工作的,超聲波換能器內(nèi)部有兩個壓電晶片和一個換能板。當(dāng)它的兩極外加脈沖信號,其頻率等于壓電晶片的固有振蕩頻率時,壓電晶片會發(fā)生共振,并帶動共振板振動產(chǎn)生超聲波,這時它就是一個超聲波發(fā)生器;反之,如果兩電極問未外加電壓,當(dāng)共振板接收到超聲波時,將壓迫壓電晶片作振動,將機(jī)械能轉(zhuǎn)換為電信號,這時它就成為超聲波接收換能器。超聲波發(fā)射換能器與接收換能器在結(jié)構(gòu)上稍有不同,使用時應(yīng)分清器件上的標(biāo)志。4.2超聲波檢測接收電路集成電路CX20106A是一款紅外線檢波接收的專用芯片,常用于電視機(jī)紅外遙控接收器??紤]到紅外遙控常用的載波頻率38kHz與測距的超聲波頻率40kHz較為接近,可以利用它制作超聲波檢測接收電路(如圖2-3)。實驗證明用CX20106A接收超聲波(無信號時輸出高電平),具有很好的靈敏度和較強(qiáng)的抗干擾能力。適當(dāng)更改電容C4的大小,可以改變接收電路的靈敏度和抗干擾能力。如圖4-2.圖4-2超聲波接收電路原理圖圖4-2超聲波接收電路原理圖4.3單片機(jī)最小系統(tǒng)5l系列單片機(jī)中典型芯片(AT89C51)采用40引腳雙列直插封裝(DIP)形式,內(nèi)部由CPU,4kB的ROM,256B的RAM,2個16b的定時/計數(shù)器TO和T1,4個8位的全雙工IO端P0,P1,P2,P3,一個全雙功串行通信口等組成。特別是該系列單片機(jī)片內(nèi)的Flash可編程、可擦除只讀存儲器(E~PROM),使其在實際中有著十分廣泛的用途,在便攜式、省電及特殊信息保存的儀器和系統(tǒng)中更為有用。該系列單片機(jī)所組成的最小系統(tǒng)如圖4-3所示。圖4-3單片機(jī)最小系統(tǒng)原理圖圖4-3單片機(jī)最小系統(tǒng)原理圖4.4顯示電路本設(shè)計顯示部分采用字符型TC1602液晶顯示所測距離值。TC1602顯示的容量為2行16個字。液晶顯示屏有微功耗、體積小、顯示內(nèi)容豐富、超薄輕巧、使用方便等諸多優(yōu)點,與數(shù)碼管相比,顯得更專業(yè)、美觀。使用時,可將P0與LCD的數(shù)據(jù)線相連,P3口與LCD的控制線相連,硬件電路圖如圖4-4所示:圖4-4LCD1602顯示電路原理圖圖4-4LCD1602顯示電路原理圖4.5+5V電源電路:220V經(jīng)7.5V變壓器降壓后,再經(jīng)D1~D4橋式整流和7805穩(wěn)壓后給得到+5v電壓給電路各部分供電。硬件電路圖如圖4-5所示.圖4-5+5v電源原理圖圖4-5+5v電源原理圖五、系統(tǒng)軟件設(shè)計系統(tǒng)軟件設(shè)計采用模塊化設(shè)計,主要包括主程序設(shè)計(如圖a)、中斷服務(wù)子程序(如圖b)、INT0外部中斷服務(wù)子程序(如圖c)、距離計算子程序、顯示子程序、延時子程序等。系統(tǒng)軟件編制時應(yīng)考慮相關(guān)硬件的連線,同時還要進(jìn)行存儲空間、寄存器以及定時器和外部中斷引腳的分配和使用。本設(shè)計中P3.0引腳連接到74LS04反向放大電路再連接到超聲波發(fā)射傳感器,P3.0引腳輸出的將是軟件方式產(chǎn)生的40kHz方波,而P3·1(INT0)則被用來接收回波。定時器T1,T0均工作在工作方式1,為16位計數(shù),T1定時器被用來開啟一次測距過程以它的溢出為標(biāo)志開始一個發(fā)射測量循環(huán),T0定時器是用來計算脈沖往返時間,它們的初值均設(shè)為0。系統(tǒng)初始化后就啟動定時器T1從0開始計數(shù),此時主程序進(jìn)入等待,當(dāng)?shù)竭_(dá)65ms時T1溢出進(jìn)入T1中斷服務(wù)子程序;在T1中斷服務(wù)子程序中將啟動一次新的超聲波發(fā)射,此時將在P3.0引腳上開始產(chǎn)生40kHz的方波,同時開啟定時器T0計時,為了避免直射波的繞射,需要延遲1ms后再開INT0中斷允許;INT0中斷允許打開后,若此時P3·1(INT0)引腳出現(xiàn)低電平則代表收到回波信號,將提出中斷請求進(jìn)入INT0中斷服務(wù)子程序,在INT0中斷服務(wù)子程序中將停止定時器T0計時,讀取定時器T0時間值到相應(yīng)的存儲區(qū),同時設(shè)置接收成功標(biāo)志;主程序一旦檢測到接收成功標(biāo)志,單片機(jī)再調(diào)用距離計算子程序進(jìn)行計算,計算出傳感器到目標(biāo)物體之間的距離此外,還有幾點需要說明的是:(1)定時器T1之所以是65ms溢出是因為它是16位定時/計數(shù)器(65535)。在使用12MHz的晶振時,由于周期T=1/f=1/[(12×106)/12]=1μs,則一個機(jī)器周期是1μs,計數(shù)器每65ms計數(shù)器溢出。(2)本設(shè)計中40kHz方波的產(chǎn)生采用軟件方式實現(xiàn):控制P3.0口輸出12μs的高電平,再輸出13μs的低電平,這樣得到一個周期的40kHz的脈沖,再循環(huán)發(fā)送3次。(3)在CPU停止發(fā)送脈沖群后,由于電阻尼,換能器不能立即停止發(fā)送超聲波,在一段時間內(nèi)仍然會發(fā)送,故這段時間內(nèi)不可立即開啟INT0接收回波,要等待一段后以避免發(fā)送端的部分直射波未經(jīng)被測物就直接繞射到接收端,這段被稱為“虛假反射波”。從發(fā)射開始一直到“虛假反射波”結(jié)束這段時間,不開放INT0中斷申請,可有效躲避干擾,但也會造成測試的“盲區(qū)”。(4)最大測試距離將取決于:兩次脈沖群發(fā)送之間的最小時間間隔和脈沖的能量。一般來說,發(fā)射端脈沖個數(shù)越多,能量越大,所能測的距離也越遠(yuǎn)但也不是無限制的。系統(tǒng)軟件設(shè)計如圖5-1所示 開始定時中斷入口外部中斷入口開始定時中斷入口外部中斷入口關(guān)外部中斷單片機(jī)初始化關(guān)外部中斷單片機(jī)初始化定時器初始化定時器初始化讀取時間值讀取時間值定時中斷子程序定時中斷子程序發(fā)射超聲波發(fā)射超聲波計算距離N發(fā)射完否有回波計算距離N發(fā)射完否有回波LCD液晶顯示YNYLCD液晶顯示YNY開外部中斷停止發(fā)射外部中斷子程序開外部中斷停止發(fā)射外部中斷子程序返回返回(a)主程序流程圖返回返回(a)主程序流程圖(c)外部中斷和顯示子程序(b)定時中斷服務(wù)子程序(c)外部中斷和顯示子程序(b)定時中斷服務(wù)子程序圖5-1超聲波系統(tǒng)軟件設(shè)計圖5-1超聲波系統(tǒng)軟件設(shè)計六.調(diào)試及誤差分析6.1調(diào)試步驟 通過先焊接各個模塊,焊接完每個模塊以后,再進(jìn)行模塊的單獨測試,以確保在整個系統(tǒng)焊接完能正常的工作,首先是單片機(jī)最小系統(tǒng)的測試,焊接完以后發(fā)現(xiàn)系統(tǒng)沒有問題,程序可以正常下載,然后是超聲波發(fā)送模塊的焊接,焊接完以后,編寫一個專門的發(fā)射超聲波的程序,然后用示波器測試通過,最后測試數(shù)碼管能否正常工作,接下來是軟件的調(diào)試過程。當(dāng)所有的板子都沒有問題,就把各個單元電路整合到一塊PCB板上,并完成最后的調(diào)試過程。6.2誤差分析基本上實現(xiàn)了設(shè)計要求,但存在一定的誤差。6.2.1超聲波回波聲強(qiáng)的影響回波的聲強(qiáng)與障礙物距離的遠(yuǎn)近有直接關(guān)系,實際測量時,不一定是第一個回波的過零點觸發(fā),其原理如圖6-1所示。這種誤差不能從根本上消除,但是可以通過根據(jù)障礙物的距離調(diào)整脈沖群的脈沖個數(shù)以及動態(tài)調(diào)整比較電壓來減小這種誤差。另一方面將求距離公式后加一個補(bǔ)償系數(shù)來補(bǔ)償計時誤差,(a與距離、脈沖個數(shù)相關(guān))。圖6-1脈沖個數(shù)與回波聲強(qiáng)對計時影響示意圖6.2.2超聲波波束入射角的影響如果系統(tǒng)是用來測量面與點的距離,則被測物、換能器及換能器所在測量參考平面三者之間存在一個幾何角度,即反射波入射到換能器的角度,當(dāng)這角度不是90°時,系統(tǒng)測量到的距離是障礙物與換能器之間的距離而不是和量參考平面之間的距離,這就會造成測量誤差,如圖6-2所示。圖6-2超聲波回波入射角影響分析圖當(dāng)障礙物的距離較小時,這個誤差就會成為近距離時的主要誤差來源??梢杂枚鄠€換能器同時測量,利用幾何關(guān)系來計算得出實際距離,消除這種誤差?!?.1)………………(6.2)式中換能器a、b到被測物的距離換能器a、b之間的距離被測物到測量的距離6.2.3超聲波傳播速度的影響穩(wěn)定準(zhǔn)確的聲波傳播速度是保證測量精度的必要條件,傳播介質(zhì)的溫度、壓力及密度對聲速都產(chǎn)生直接影響。對于在大氣中傳播的聲波而言,引起聲速變化的主要原因是溫度的變化。采用聲速預(yù)置和傳播介質(zhì)溫度測量結(jié)合的方法對聲速進(jìn)行修正,可有效地降低溫度變化產(chǎn)生的誤差。在對距離的精確度要求不高的應(yīng)用中可以不進(jìn)行溫度補(bǔ)償,選擇室溫20℃左右時的聲速340m/s作為固定參數(shù),當(dāng)溫度在-10~40℃之間變化時聲速誤差在±5%之間。如果在室外測量,對于季節(jié)溫差大的地區(qū),還可以采用預(yù)置該地區(qū)12個月的統(tǒng)計溫度,用以對溫度進(jìn)行補(bǔ)償,既可提高精度,又不增加成本。影響測量誤差的因素8很多,包括現(xiàn)場環(huán)境干擾、時基脈沖頻率等。在實際應(yīng)用中可以根據(jù)系統(tǒng)測量精度要求,采用合理的補(bǔ)償手段。6.2.4實測比較實測值測量值0.43m0.41m0.60m0.58m0.84m0.82m1.25m1.23m1.31m1.29m1.37m1.35m1.49m1.47m1.98m1.96m由表格數(shù)據(jù)得出,實測數(shù)據(jù)和測量值相比較,均偏大,基本上能夠較為準(zhǔn)確的反應(yīng)出實際距離。七、心得體會在陳老師的指導(dǎo)下,通過兩個月斷斷續(xù)續(xù)的努力,終于在前幾天把它成功的制作出來了,很感謝陳古波老師,以及論壇,百度,周圍同學(xué)的幫助。開始制作的時候連PCB板子都畫不來,現(xiàn)在已經(jīng)基本上可以熟練的操作。當(dāng)初對單片機(jī),PCB基本上沒啥概念,通過慢慢的摸索,將超聲波分為最小系統(tǒng),接收發(fā)送,數(shù)碼管顯示3個模塊,每個模塊都分開做,這樣簡單,容易發(fā)現(xiàn)問題。然而理論和實際總是有差距的,在調(diào)試過程中會出現(xiàn)各種各樣的問題,當(dāng)然首先排查的是硬件電路的問題,檢測數(shù)碼管顯示模塊是否正確,可以將其與開發(fā)板連接,燒寫入一個數(shù)碼管顯示程序,觀察能否實現(xiàn)功能;檢查最小系統(tǒng),可以將數(shù)碼管與其相連,燒寫進(jìn)數(shù)碼管顯示程序,觀測數(shù)碼管是否能實現(xiàn)功能;檢測接收發(fā)送模塊,用示波器觀測超聲波發(fā)射接口端是否有差分放大的40khz的方波輸出,然后用示波器觀測CX20106A第7腳是否產(chǎn)生低電平,改變被測物體距離,觀測波形是否有變化。當(dāng)所有的模塊都能實現(xiàn)工作,再將它們連接起來,接下來的工作就是調(diào)試程序,直至實現(xiàn)測距顯示,由于連線的問題,所以顯示不是很穩(wěn)定,有時會出現(xiàn)較大的跳動。我不斷做了很多塊板子都不成功,當(dāng)然從中我也收獲了不少的經(jīng)驗和知識。讓我明白從理論到實踐有多不容易的,只有通過更多的付出才會有回報,也許這是給自己的一個警鐘,要腳踏實地學(xué)習(xí)專業(yè)知識才是硬道理,很感謝這次電子制作,激發(fā)了我學(xué)習(xí)的興趣和熱情。參考文獻(xiàn)[1]徐維祥、劉旭敏.單片微型機(jī)原理及應(yīng)用.大連:大連理工大學(xué)出版社,1996[2]李光飛、樓然苗、胡佳文、謝象佐.單片機(jī)課程設(shè)計與實例指導(dǎo).北京:北京航空航天大學(xué)出版社,2004[3]余永權(quán).89系列FLASH單片機(jī)原理及應(yīng)用.北京:電子工業(yè)出版社,2002[4]李群芳,黃建.單片機(jī)微型計算機(jī)與接口技術(shù).北京:電子工業(yè)出版社,2001[5]樓然苗、李光飛.51系列單片機(jī)設(shè)計實例.北京:北京航空航天大學(xué)出版社,2003[6]王守中51單片機(jī)開發(fā)入門與典型實例.北京:人民郵電出版社,2009[7]王巧芝51單片機(jī)開發(fā)應(yīng)用.中國鐵道出版社附錄1程序清單/*超聲測距器單片機(jī)程序#include<AT89x51.H> //器件配置文件#include<intrins.h>#defineRXP3_0#defineTXP3_1#defineLCM_RWP1_6//定義LCD引腳#defineLCM_RSP1_7#defineLCM_EP2_4#defineLCM_DataP0#defineKey_DataP3_4//定義Keyboard引腳#defineKey_CLKP3_3#defineBusy0x80//用于檢測LCM狀態(tài)字中的Busy標(biāo)識voidLCMInit(void);voidDisplayOneChar(unsignedcharX,unsignedcharY,unsignedcharDData);voidDisplayListChar(unsignedcharX,unsignedcharY,unsignedcharcode*DData);voidDelay5Ms(void);voidDelay400Ms(void);voidDecode(unsignedcharScanCode);voidWriteDataLCM(unsignedcharWDLCM);voidWriteCommandLCM(unsignedcharWCLCM,BuysC);unsignedcharReadDataLCM(void);unsignedcharReadStatusLCM(void);unsignedcharcodemcustudio[]={"chaoshengbo"};unsignedcharcodeemail[]={"cuqt"};unsignedcharcodeCls[]={""};unsignedcharcodeASCII[15]={'0','1','2','3','4','5','6','7','8','9','.','-','M'};staticunsignedcharDisNum=0;//顯示用指針 unsignedinttime=0,i; unsignedlongS=0; bitflag=0; unsignedchardisbuff[4] ={0,0,0,0,};//寫數(shù)據(jù)voidWriteDataLCM(unsignedcharWDLCM){ ReadStatusLCM();//檢測忙 LCM_Data=WDLCM; LCM_RS=1; LCM_RW=0; LCM_E=0;//若晶振速度太高可以在這后加小的延時 LCM_E=0;//延時 LCM_E=1;}//寫指令voidWriteCommandLCM(unsignedcharWCLCM,BuysC)//BuysC為0時忽略忙檢測{ if(BuysC)ReadStatusLCM();//根據(jù)需要檢測忙 LCM_Data=WCLCM; LCM_RS=0; LCM_RW=0; LCM_E=0; LCM_E=0; LCM_E=1; }//讀數(shù)據(jù)unsignedcharReadDataLCM(void){ LCM_RS=1; LCM_RW=1; LCM_E=0; LCM_E=0; LCM_E=1; return(LCM_Data);}//讀狀態(tài)unsignedcharReadStatusLCM(void){ LCM_Data=0xFF; LCM_RS=0; LCM_RW=1; LCM_E=0; LCM_E=0; LCM_E=1; while(LCM_Data&Busy);//檢測忙信號 return(LCM_Data);}voidLCMInit(void)//LCM初始化{ LCM_Data=0; WriteCommandLCM(0x38,0);//三次顯示模式設(shè)置,不檢測忙信號 Delay5Ms(); WriteCommandLCM(0x38,0); Delay5Ms(); WriteCommandLCM(0x38,0); Delay5Ms(); WriteCommandLCM(0x38,1);//顯示模式設(shè)置,開始要求每次檢測忙信號 WriteCommandLCM(0x08,1);//關(guān)閉顯示 WriteCommandLCM(0x01,1);//顯示清屏 WriteCommandLCM(0x06,1);//顯示光標(biāo)移動設(shè)置 WriteCommandLCM(0x0F,1);//顯示開及光標(biāo)設(shè)置}//按指定位置顯示一個字符voidDisplayOneChar(unsignedcharX,unsignedcharY,unsignedcharDData){ Y&=0x1; X&=0xF;//限制X不能大于15,Y不能大于1 if(Y)X|=0x40;//當(dāng)要顯示第二行時地址碼+0x40; X|=0x80;//算出指令碼 WriteCommandLCM(X,1);//發(fā)命令字 WriteDataLCM(DData);//發(fā)數(shù)據(jù)}//按指定位置顯示一串字符voidDisplayListChar(unsignedcharX,unsignedcharY,unsignedcharcode*DData){ unsignedcharListLength;ListLength=0; Y&=0x1; X&=0xF;//限制X不能大于15,Y不能大于1 while(DData[ListLength]>0x19)//若到達(dá)字串尾則退出 { if(X<=0xF)//X坐標(biāo)應(yīng)小于0xF { DisplayOneChar(X,Y,DData[ListLength]);//顯示單個字符 ListLength++; X++; } }}//5ms延時voidDelay5Ms(void){ unsignedintTempCyc=5552; while(TempCyc--);}//400ms延時voidDelay400Ms(void){ unsignedcharTempCycA=5; unsignedintTempCycB; while(TempCycA--) { TempCycB=7269; while(TempCycB--); };}/********************************************************/voidConut(void) { time=TH0*256+TL0; TH0=0; TL0=0; S=(time*1.7)/100;//算出來是CM if((S>=700)||flag==1)//超出測量范圍顯示“-” { flag=0; DisplayOneChar(0,1,ASCII[11]); DisplayOneChar(1,1,ASCII[10]); //顯示點 DisplayOneChar(2,1,ASCII[11]); DisplayOneChar(3,1,ASCII[11]); DisplayOneChar(4,1,ASCII[12]); //顯示M } else { disbuff[0]=S%1000/100; disbuff[1]=S%1000%100/10; disbuff[2]=S%1000%10%10; DisplayOneChar(0,1,ASCII[disbuff[0]]); DisplayOneChar(1,1,ASCII[10]); //顯示點 DisplayOneChar(2,1,ASCII[disbuff[1]]); DisplayOneChar(3,1,ASCII[disbuff[2]]); DisplayOneChar(4,1,ASCII[12]); //顯示M } }/********************************************************/voidzd0()interrupt1 //T0中斷用來計數(shù)器溢出,超過測距范圍{flag=1; //中斷溢出標(biāo)志}/********************************************************/voidStartModule() //啟動模塊{ TX=1; //啟動一次模塊 for(i=0;i<6;i++) { _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); } TX=0;}/********************************************************/voiddelayms(unsignedintms){ unsignedchari=100,j; for(;ms;ms--) { while(--i) { j=10; while(--j); } }}/*********************************************************/voidmain(void){ unsignedcharTempCyc; Delay400Ms();//啟動等待,等LCM講入工作狀態(tài) LCMInit();//LCM初始化 Delay5Ms();//延時片刻(可不要) DisplayListChar(0,0,mcustudio); DisplayListChar(0,1,email); ReadDataLCM();//測試用句無意義 for(TempCyc=0;TempCyc<10;TempCyc++) Delay400Ms();//延時 DisplayListChar(0,1,Cls); while(1) { TMOD=0x01; //設(shè)T0為方式1,GATE=1; TH0=0; TL0=0; ET0=1;//允許T0中斷 EA=1; //開啟總中斷 while(1

溫馨提示

  • 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

提交評論