下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
outputoutputtrig,hummer;output[5:0]data6;output[7:0]data7;regtrig;reg[7:0]cnt;reg[13:0]cnt1;//无cnt2和data5reg[7:0]cnt3;reg[7:0]dis[9:0];reg[3:0]data1,data2,data3,data4;reg[5:0]data6;reg[7:0]data7;reg[1:0]cnt4;//基于FPGA的超声波模块控制及数码管显示//作者:燕山大学信息科学与工程学院&&无线电爱好者协会25界徐月〃时间:2013年9月6日//HC-RO4超声波测距模块,测量角度15度//抛开代码风格,咱们只讲知识modulewireless(iclk,trig,echo,data6,data7,hummer);inputiclk, 〃时钟是50ns,即20MHzecho; 〃回响信号输出〃超声波模块触发信号输入〃我的开发板上的蜂鸣器〃数码管位选〃数码管段选〃计数器,计250个50ns,12.5us,为echo提供时序〃计数器,计8000个12.5us,100ms〃计数124个时钟周期是1mm〃数码管显示的数字〃数码管需要显示的数字〃个位,mm〃十位,cm〃百位,dm〃千位,m〃数码管位选寄存器〃数码管段选寄存器〃控制数码管依次闪亮的计数器regecho_buf, //echo的上一个时钟的状态echo_rising, 〃捕捉echo的上升沿echo_falling, 〃捕捉echo的下降沿flag1; //echo为高电平时flag1会是1,低电平时会是0regclk; 〃数码管显示所需的时钟reg[3:0]cnt5; 〃用于产生数码管显示用的时钟的分频器assignhummer=1'b1; 〃让我的开发板上的蜂鸣器关闭,否则它会一直响〃显示存储器初始化initialbegindis[0]=8'hc0;dis[1]=8'hf9;dis[2]=8'ha4;dis[3]=8'hb0;dis[4]=8'h99;dis[5]=8'h92;dis[6]=8'h82;dis[7]=8'hf8;dis[8]=8'h80;dis[9]=8'h90;end〃产生echo控制信号250*8000*50ns,echo高电平持续12.5us,即250个时钟周期always@(posedgeiclk)beginif(cnt==249)cnt<=1'b0;elsecnt<=cnt+1;endalways@(posedgeiclk)beginif(cnt==249)if(cnt1==7999)begintrig<=1'b1;cnt1<=1'b0;endelsebegintrig<=1'b0;cnt1<=cnt1+1'b1;endend//捕捉trig上升沿与下降沿,并产生标志位always@(posedgeiclk)beginecho_buf<=echo;echo_rising<=echo&(~echo_buf);echo_falling<=(~echo)&echo_buf;endalways@(posedgeiclk)beginif(echo_rising==1'b1)beginflag1=1'b1; //echo已经变为高电平endelseif(echo_falling==1'b1)beginflag1=1'b0; //echo已经变为低电平endend//在flag1=1期间计时,即对时钟进行计数。(4m的距离会是25ms,1mm是125个时钟周期)always@(posedgeiclk)beginif(flag1==1'b1)beginif(cnt3==124) //1mmcnt3<=1'b0;elsecnt3<=cnt3+1'b1;endelseif(echo_rising==1'b1)always@(posedgeiclk)beginif(flag1==1'b1)beginif(cnt3==124)if(data1==9) //1cmdata1<=4'd0;elsedata1<=data1+1'b1;endelseif(echo_rising==1'b1)data1<=1'b0;endalways@(posedgeiclk)beginif(flag1==1'b1)beginif(data1==9&&cnt3==124)if(data2==9) //1dmdata2<=1'b0;elsedata2<=data2+1'b1;endelseif(echo_rising==1'b1)data2<=1'b0;endalways@(posedgeiclk)beginif(flag1==1'b1)beginif(data2==9&&data1==9&&cnt3==124)if(data3==9) //1mdata3<=1'b0;elsedata3<=data3+1'b1;endelseif(echo_rising==1'b1)data3<=1'b0;endalways@(posedgeiclk)beginif(flag1==1'b1)beginif(data3==9&&data2==9&&data1==9&&cnt3==124)if(data4==9) 〃说明书上最远是测距4mdata4<=1'b0;elsedata4<=data4+1'b1;endelseif(echo_rising==1'b1)〃产生显示用的时钟信号always@(posedgeiclk)beginif(cnt5==5)beginclk=~clk;cnt5=1'b0;endelsecnt5=cnt5+1'b1;end//00-11为一个周期,每个周期点亮一个数码管always@(posedgeclk)begincnt4=cnt4+1'b1;end//我的板上共有6个数码管,让其中4个数码管显示四位数字,单位是毫米。always@(posedgeclk)beginif(flag1==1'b0)case(cnt4)2'b00:begindata7=dis[data1];data6=6'b111110;end2'b01:begindata7=dis[data2];data6=6'b111101;end2'b10:begindata7=dis[d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 五年级下学期班主任工作计划参考
- 初中数学教学措施5篇
- 4月疫情防控工作总结范文
- 2024年度高级人才招聘猎头合作协议版B版
- 2024-2025学年上学期12月质量监测九年化学试卷
- 心灵航标:带你感悟延安精神(延安职业技术学院)知到智慧树答案
- DB31-T 1324-2021 基于用户感知的5G网络质量测试方法
- 关于销售-张开嘴迈开腿
- 项目管理-合格供方名单
- XX系统验收计划-Vx.y
- 【写作】叙事要有波澜-【中职专用】高一语文同步课件(高教版2023·基础模块上册)
- 幼儿园买年货教案
- 袁记云饺创业计划书
- 2024年安徽新华书店有限公司招聘笔试参考题库含答案解析
- 缺铁性贫血护理查房课件
- 洪水与汛期监测和预警系统
- 2023年汽车sqe工程师年度总结及下年规划
- 废品回收免责协议
- 养猪场用地转让协议书
- 安徽省六安市汇文中学2023-2024学年八年级上学期期中物理试卷
- 20以内进位加法100题(精心整理6套-可打印A4)
评论
0/150
提交评论