FPGA控制超聲波模塊測距并通過數(shù)碼管顯示_第1頁
FPGA控制超聲波模塊測距并通過數(shù)碼管顯示_第2頁
FPGA控制超聲波模塊測距并通過數(shù)碼管顯示_第3頁
FPGA控制超聲波模塊測距并通過數(shù)碼管顯示_第4頁
FPGA控制超聲波模塊測距并通過數(shù)碼管顯示_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、/基于FPGA的超聲波模塊控制及數(shù)碼管顯示/作者:湖北工業(yè)大學(xué) 機(jī)械工程學(xué)院 何博/時間:2016年1月3日/HC-RO4超聲波測距模塊,測量角度15度/硬件altera cycloneiv ep4ce6e22c8n/實(shí)際測試可行module ultrasonic_2(input sys_clk,input sys_rst_n,input echo,output reg trig,output reg 3:0data6,output reg 7:0data7 );reg 3:0 data1; /mmreg 3:0 data2; /cmreg 3:0 data3; /dmreg 3:0 data

2、4; /mreg 3:0 data11; /mmreg 3:0 data22; /cmreg 3:0 data33; /dmreg 3:0 data44; /m reg 24:0 cnt;reg 10:0 count_50;reg 10:0 count_294;reg clk_294;reg clk_50;/reg16:0 t;reg 7:0 dis9:0;reg1:0 segled_bit_sel;reg echo_buf;reg echo_rising;reg echo_falling;reg flag1;reg clk_segled;reg 10:0 cnt_segled;initial

3、begindis0 = 8b00000011;dis1 = 8b10011111;dis2 = 8b00100101;dis3 = 8b00001101;dis4 = 8b10011001;dis5 = 8b01001001;dis6 = 8b01000001;dis7 = 8b00011111;dis8 = 8b00000001;dis9 = 8b00001001;endalways(posedge sys_clk or negedge sys_rst_n)beginif(sys_rst_n=1b0)count_50=11b0;else if(count_50=24)count_50=11b

4、0;elsecount_50=count_50+11b1;endalways(posedge sys_clk or negedge sys_rst_n)beginif(sys_rst_n=1b0)clk_50=1b0;else if(count_50=24)clk_50=clk_50;elseclk_50=clk_50;endalways(posedge clk_50 or negedge sys_rst_n)beginif(sys_rst_n=1b0)cnt=25d1000000)cnt=25d0;elsecnt=cnt+25d1;endalways(posedge clk_50 or ne

5、gedge sys_rst_n)beginif(sys_rst_n=1b0)trig=25d100)&(cnt=25d130)trig=1b1;elsetrig=1b0;end/*always(posedge sys_clk or negedge sys_rst_n)beginif(sys_rst_n=1b0)count_294=11b0;else if(count_294=293)count_294=11b0;elsecount_294=count_294+11b1;end*/*always(*)beginif(sys_rst_n=1b0)clk_294=1b0;else if(count_

6、294=293)/clk_294=clk_294;elseclk_294=clk_294;end/*/always(posedge sys_clk or negedge sys_rst_n)begin if(sys_rst_n=1b0) begin echo_buf=1b0; echo_falling=1b0; echo_rising=1b0; endelse beginecho_buf = echo;echo_rising = echo & (echo_buf);echo_falling = (echo) & echo_buf;endendalways(posedge sys_clk or

7、negedge sys_rst_n )beginif(sys_rst_n=1b0)flag1=1b0;else if(echo_rising = 1b1)beginflag1 = 1b1; /echo已經(jīng)變?yōu)楦唠娖絜ndelse if(echo_falling = 1b1)beginflag1 = 1b0; /echo已經(jīng)變?yōu)榈碗娖絜ndelse;end/*always(posedge sys_clk or negedge sys_rst_n)beginif(sys_rst_n=1b0)count_294=11b0;else if(count_294=293)count_294=11b0;el

8、secount_294=count_294+11b1;end*/在flag1 = 1 期間計時,即對時鐘進(jìn)行計數(shù)。(4m的距離會是25ms,1mm是293個時鐘周期)always(posedge sys_clk or negedge sys_rst_n)beginif(sys_rst_n=1b0)count_294=11b0;else if(flag1 = 1b1)begin if(count_294 = 293) /1mm count_294 = 11b0; else count_294 = count_294 + 11b1; endelse if(trig = 1b1) count_294

9、 = 11b0;else ;endalways(posedge sys_clk or negedge sys_rst_n)begin if(sys_rst_n=1b0) data1=4b0;else if(flag1 = 1b1) begin if(count_294 = 293) begin if(data1 = 9) /1cm data1 = 4d0; else data1 = data1 + 4b1; endelse; end else if(trig= 1b1) data1 = 4d0; else ;endalways(posedge sys_clk or negedge sys_rs

10、t_n)begin if(sys_rst_n=1b0) data2=4d0;else if(flag1 = 1b1)begin if(data1 = 9 )& (count_294 = 293) begin if(data2 = 9) /1dm data2 = 4d0; else data2 = data2 + 4b1;endelse;endelse if(trig = 1b1) data2 = 4d0; else;endalways(posedge sys_clk or negedge sys_rst_n)begin if(sys_rst_n=1b0) data3=4d0;else if(f

11、lag1 = 1b1) begin if(data2 = 9) & (data1 = 9) & (count_294 = 293) begin if(data3 = 9) /1m data3 = 4b0; else data3 = data3 + 4b1; end else; endelse if(trig = 1b1)data3 = 4d0;else;endalways(posedge sys_clk or negedge sys_rst_n)begin if(sys_rst_n=1b0) data4=4d0;else if(flag1 = 1b1) begin if(data3 = 9)

12、& (data2 = 9) & (data1 = 9) & (count_294 = 293) begin if(data4 = 9) /說明書上最遠(yuǎn)是測距4m data4 = 4d0; else data4 = data4 + 4d1; endelse; endelse if(trig = 1b1) data4 = 4d0; else;end/產(chǎn)生顯示用的時鐘信號always(posedge sys_clk or negedge sys_rst_n)begin if (sys_rst_n=1b0)begin cnt_segled=11d0; clk_segled=1b0; end else

13、if(cnt_segled =11d1000)/此處由10改為100或者1000后,數(shù)碼管顯示數(shù)據(jù)正確,不然數(shù)據(jù)異常,應(yīng)該是數(shù)碼管位選分選反應(yīng)不過來。 begin clk_segled = clk_segled; cnt_segled = 11d0; endelse cnt_segled = cnt_segled + 11d1;end/00-11為一個周期,每個周期點(diǎn)亮一個數(shù)碼管always(posedge clk_segled or negedge sys_rst_n)begin if(sys_rst_n=1b0) segled_bit_sel=2b00;else if (segled_bi

14、t_sel=2b11) segled_bit_sel=2b00; else segled_bit_sel = segled_bit_sel + 2b01;endalways(posedge sys_clk or negedge sys_rst_n)beginif(sys_rst_n=1b0)begindata11=4d0;data22=4d0;data33=4d0;data44=4d0;endelse if(echo_falling=1b1)/不同于flag1=1b0begindata11=data1;data22=data2;data33=data3;data44=data4;endelse ;/*begindata11=data11;data22=data22;data33=data33;data44=data44;end*/end/我的板上共有4個數(shù)碼管,單位是毫米。always(posedge sys_clk or negedge sys_rst_n)/sys_clk改為clk_segled,運(yùn)行結(jié)果也行beginif(sys_rst_n=1b0)begindata7 = dis0;data6 = 4b0000;endelse /if(flag1 = 1b0)begincase(segled_bit_sel)2b00:begindata7 = disdata11;

溫馨提示

  • 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

提交評論