TA的每日心情 | 奋斗 2017-5-12 23:48 |
---|
签到天数: 214 天 连续签到: 1 天 [LV.7]常住居民III
|
本帖最后由 蒲公英╯ 于 2016-8-28 12:16 编辑
锆石科技的实战项目配备讲解的是三人表决器,因为三人表决器的输入变化少很适合初学,而且有一定代表性,但锆石科技的A4开发板有四个电容按键,三人表决器只用到了三个,这让我感到有点可惜,所以自己在三人表决器的基础上修改成了四人表决器,让电容按键全部得到利用,下面是效果图和修改过的代码
效果动图
四个按键同时按下动态效果图
四个按键同时按下效果
一个按键按下
按个按键按下
代码:
- //---------------------------------------------------------------------------
- module A4_Vote4 //模块名
- (
- //输入端口
- KEY1,KEY2,KEY3,KEY4,
- //输出端口
- LED1,LED2,LED3,LED4,SEG_DATA,SEG_EN
- );
- //---------------------------------------------------------------------------
- //-- 外部端口声明
- //---------------------------------------------------------------------------
- input KEY1,KEY2,KEY3,KEY4; //按键
- output LED1,LED2,LED3,LED4; //LED
- output [5:0] SEG_EN; //数码管使能管脚
- output reg [6:0] SEG_DATA; //数码管数据管脚
-
- //---------------------------------------------------------------------------
- //-- 内部端口声明
- //---------------------------------------------------------------------------
- parameter SEG_NUM0 = 7'h3f, //数字0
- SEG_NUM1 = 7'h06, //数字1
- SEG_NUM2 = 7'h5b, //数字2
- SEG_NUM3 = 7'h4f, //数字3
- SEG_NUM4 = 7'h66; //数字4
- //SEG_NUM4 = 7'h6d; //数字5
- //SEG_NUM4 = 7'h7d; //数字6
- //SEG_NUM4 = 7'h07; //数字7
- //SEG_NUM4 = 7'h7f; //数字8
- //SEG_NUM4 = 7'h6f; //数字9
-
- //---------------------------------------------------------------------------
- //-- 逻辑功能实现
- //---------------------------------------------------------------------------
- always @ (*) //组合电路,实现四人表决器电路(行为描述)
- begin
- case({KEY4,KEY3,KEY2,KEY1}) //检测按键是否按下,按下为1,悬空为0
- 4'b0000 : SEG_DATA = SEG_NUM0; //当有0个按键按下时,数码管就显示数字0
-
- 4'b0001 : SEG_DATA = SEG_NUM1; //当有1个按键按下时,数码管就显示数字1
- 4'b0010 : SEG_DATA = SEG_NUM1; //当有1个按键按下时,数码管就显示数字1
- 4'b0100 : SEG_DATA = SEG_NUM1; //当有1个按键按下时,数码管就显示数字1
- 4'b1000 : SEG_DATA = SEG_NUM1; //当有1个按键按下时,数码管就显示数字1
-
- 4'b1100 : SEG_DATA = SEG_NUM2; //当有2个按键按下时,数码管就显示数字2
- 4'b0110 : SEG_DATA = SEG_NUM2; //当有2个按键按下时,数码管就显示数字2
- 4'b0011 : SEG_DATA = SEG_NUM2; //当有2个按键按下时,数码管就显示数字2
- 4'b1001 : SEG_DATA = SEG_NUM2; //当有2个按键按下时,数码管就显示数字2
- 4'b1010 : SEG_DATA = SEG_NUM2; //当有2个按键按下时,数码管就显示数字2
- 4'b0101 : SEG_DATA = SEG_NUM2; //当有2个按键按下时,数码管就显示数字2
-
- 4'b1101 : SEG_DATA = SEG_NUM3; //当有3个按键按下时,数码管就显示数字3
- 4'b1011 : SEG_DATA = SEG_NUM3; //当有3个按键按下时,数码管就显示数字3
- 4'b1110 : SEG_DATA = SEG_NUM3; //当有3个按键按下时,数码管就显示数字3
- 4'b0111 : SEG_DATA = SEG_NUM3; //当有3个按键按下时,数码管就显示数字3
-
- 4'b1111 : SEG_DATA = SEG_NUM4; //当有4个按键按下时,数码管就显示数字4
- default: SEG_DATA = SEG_NUM0;
- endcase //case语句的结束
- end //begin语句的结束
- assign LED1 = !KEY1; //当触摸按键1按下其对应的D1将会亮起
- assign LED2 = !KEY2; //当触摸按键2按下其对应的D2将会亮起
- assign LED3 = !KEY3; //当触摸按键3按下其对应的D3将会亮起
- assign LED4 = !KEY4; //当触摸按键4按下其对应的D4将会亮起
- assign SEG_EN = 6'b011111; //SEG1-SEG5熄灭,SEG6点亮
-
- endmodule //模块的结束
复制代码
输入完代码后就是关键配置,下面是锆石A4开发板的硬件连接图
电容按键
用到的LED1-LED4做状态指示
数码管做为数目显示
|
|