下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、按键消抖用按键控制一个数字,按键每按一次,这个数字加1,并通过数码管将这个数字显示出来(以16进制)。可能是悟性比较低,按键消抖都搞了1天才搞出来,下面这个程序是我经过参考别人的(有些地方没想明白),然后自己领会,写的一个程序,经过在开发板上实验,还是有一点小问题,但是我觉得,按键消抖的原理应该是这样的。希望本文能帮到需要的人,我也是一个初学者,可能程序中也有很多不足,还请能提出来,相互交流。QQ:1664619265module SW_debounce(rst_n,sy_clk,key,HEX0_D);input rst_n;/低电平复位input sy_clk;/系统时钟50Mhzinpu
2、t key; 按键output 6:0HEX0_D;数码管/*/reg key_rst;always(posedge sy_clk or negedge rst_n) beginif(!rst_n)key_rst<=1'b1;else每个时钟周期读一次按键的值key_rst<=key;end 将按键的值存在key_rst中/*/reg key_rst_r;always(posedge sy_clk or negedge rst_n) beginif(!rst_n)key_rst_r<=1'b1;else 每个时钟周期将key_rst中的值存入key_rst_r
3、中。key_rst_r<=key_rst;这样key_rst和key_rst_r中存放的是前后两个时钟周期,按键的值end/*/wire key_en,key_an;重点1:抖动时期的标志量,这两个标志量是用来给后面的计数器清零的assign key_en=key_rst&(key_rst_r);当按键由0变1时,key_en为1assign key_an=key_rst_r&(key_rst);当按键由1变0时,key_an为1;看下面的按键波形,俺觉得,抖动期间,这两个标志量都有可能为1/*/reg18:0 count; 计数,是为了延时10ms左右always(po
4、sedge sy_clk or negedge rst_n) beginif(!rst_n)count<=19'd0;else if(key_en | key_an)count<=19'd0;出现抖动就将count 清零,使其计不满,因为后面是每10ms读一次按键的值else if(count=19'h7ffff)/10mscount<=19'd0;elsecount<=count+1'b1;end/*/reg low_sw;always(posedge sy_clk or negedge rst_n) beginif(!rst_
5、n)low_sw<=1'b1;else if(count=19'h7ffff)low_sw<=key;每10ms读一次按键的值,因为抖动期间,count的值是到不了7ffff的,所以抖动期间是不会读按键的值的,因此能消除抖动。end/*/reg low_sw_r;always(posedge sy_clk or negedge rst_n) beginif(!rst_n)low_sw_r<=1'b1;else low_sw_r<=low_sw;low_sw和low_sw_r存放的是前后10ms,按键的值,这个值中,是按键稳定时的值end/*/wi
6、re ctr;assign ctr=low_sw&(low_sw_r);按键松手时,ctr会出现一个系统周期的高电平/reg3:0control;always(posedge sy_clk or negedge rst_n) beginif(!rst_n)control<=4'b0;else if(ctr) 如何用通过按键产生的这个信号 ctrcontrol<=control+1'b1;enddisplay dis1(control,HEX0_D);endmodulemodule display(d,dis_data);input3:0d;output6:0
7、dis_data;reg6:0dis_data;always(d) begincase(d)4'b0000: dis_data=7'b1000000;/display 04'b0001: dis_data=7'b1111001;/display 14'b0010: dis_data=7'b0100100;/display 24'b0011: dis_data=7'b0110000;/display 34'b0100: dis_data=7'b0011001;/display 44'b0101: dis_da
8、ta=7'b0010010;/display 54'b0110: dis_data=7'b0000010;/display 64'b0111: dis_data=7'b1111000;/display 74'b1000: dis_data=7'b0000000;/display 84'b1001: dis_data=7'b0011000;/display 94'b1010: dis_data=7'b0100011; /display a;4'b1011: dis_data=7'b0000011;/display b;4'b1100: dis_data=7'b1000110;/display c;4'b1101: dis_data=7'b001
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026苏教二上第六单元练习六教案
- 雪天出行注意安全
- 儿童用眼睛健康的
- 感恩教育主题班会课件(动态可修改)
- 2026四上数学同步备课课件
- 教学材料《Pro ENGINEER 简明教程》-第4章
- 《发动机》-学习情境一
- 再生透水混凝土无障碍电梯镜面高度监理细则
- 再生透水混凝土减速垄耐老化氙灯监理细则
- 企业海外知识产权保护专业培训考核大纲
- 2026四川成都市简阳市面向社会招聘新兴领域党建工作专员5人考试备考题库及答案详解
- 2026年新版甘肃辅警考试题库必考题(含答案解析)
- 施工项目检测设备管理制度
- 2026年人教版高一第二学期英语期末阶段知识巩固试卷(附答案可下载)
- 健康体重管理运动干预中国专家共识(2025版)
- (2025年)公路水运检测师水运材料考试真题及答案
- 标准工时管理办法
- 字节研发工作制度
- 2026年公诚管理咨询有限公司华北分公司招聘备考题库及答案详解一套
- 2026年用友项目经理岗位考试题库含答案
- 分布式光伏施工劳务承包合同
评论
0/150
提交评论