查看: 219|回复: 3

[原创] 【试用之旅】投票神器之四人表决器

[复制链接]

10

主题

1

好友

1279

积分

进士

Rank: 5Rank: 5

  • TA的每日心情
    奋斗
    2016-11-24 09:15
  • 签到天数: 211 天

    [LV.7]常住居民III

    发表于 2016-8-28 09:53:40 |显示全部楼层
    本帖最后由 蒲公英╯ 于 2016-8-28 12:16 编辑

    锆石科技的实战项目配备讲解的是三人表决器,因为三人表决器的输入变化少很适合初学,而且有一定代表性,但锆石科技的A4开发板有四个电容按键,三人表决器只用到了三个,这让我感到有点可惜,所以自己在三人表决器的基础上修改成了四人表决器,让电容按键全部得到利用,下面是效果图和修改过的代码
    P60828-093733.gif

    效果动图
    P60828-093755.gif

    四个按键同时按下动态效果图
    P60828-094015.jpg

    四个按键同时按下效果
    P60828-094026.jpg

    一个按键按下
    P60828-094022.jpg

    按个按键按下
    代码:


    1. //---------------------------------------------------------------------------
    2. module A4_Vote4                                 //模块名
    3. (
    4.         //输入端口
    5.         KEY1,KEY2,KEY3,KEY4,
    6.         //输出端口
    7.         LED1,LED2,LED3,LED4,SEG_DATA,SEG_EN                 
    8. );

    9. //---------------------------------------------------------------------------
    10. //--        外部端口声明
    11. //---------------------------------------------------------------------------
    12. input                       KEY1,KEY2,KEY3,KEY4;        //按键
    13. output                      LED1,LED2,LED3,LED4;        //LED
    14. output      [5:0] SEG_EN;           //数码管使能管脚
    15. output reg  [6:0] SEG_DATA;         //数码管数据管脚

    16. //---------------------------------------------------------------------------
    17. //--        内部端口声明
    18. //---------------------------------------------------------------------------
    19. parameter        SEG_NUM0 = 7'h3f,       //数字0
    20.                                 SEG_NUM1 = 7'h06,       //数字1
    21.                                 SEG_NUM2 = 7'h5b,       //数字2
    22.                                 SEG_NUM3 = 7'h4f,       //数字3
    23.                                 SEG_NUM4 = 7'h66;       //数字4
    24.                                 //SEG_NUM4 = 7'h6d;     //数字5
    25.                                 //SEG_NUM4 = 7'h7d;     //数字6
    26.                                 //SEG_NUM4 = 7'h07;       //数字7
    27.                                 //SEG_NUM4 = 7'h7f;         //数字8
    28.                                 //SEG_NUM4 = 7'h6f;          //数字9
    29.                                 

    30. //---------------------------------------------------------------------------
    31. //--        逻辑功能实现        
    32. //---------------------------------------------------------------------------
    33. always @ (*)                      //组合电路,实现四人表决器电路(行为描述)
    34. begin                  
    35.         case({KEY4,KEY3,KEY2,KEY1})                        //检测按键是否按下,按下为1,悬空为0
    36.                 4'b0000 : SEG_DATA = SEG_NUM0;        //当有0个按键按下时,数码管就显示数字0
    37.                
    38.                 4'b0001 : SEG_DATA = SEG_NUM1;        //当有1个按键按下时,数码管就显示数字1
    39.                 4'b0010 : SEG_DATA = SEG_NUM1;        //当有1个按键按下时,数码管就显示数字1
    40.                 4'b0100 : SEG_DATA = SEG_NUM1;        //当有1个按键按下时,数码管就显示数字1
    41.                 4'b1000 : SEG_DATA = SEG_NUM1;        //当有1个按键按下时,数码管就显示数字1
    42.                
    43.                 4'b1100 : SEG_DATA = SEG_NUM2;        //当有2个按键按下时,数码管就显示数字2
    44.                 4'b0110 : SEG_DATA = SEG_NUM2;        //当有2个按键按下时,数码管就显示数字2
    45.                 4'b0011 : SEG_DATA = SEG_NUM2;        //当有2个按键按下时,数码管就显示数字2
    46.                 4'b1001 : SEG_DATA = SEG_NUM2;        //当有2个按键按下时,数码管就显示数字2
    47.                 4'b1010 : SEG_DATA = SEG_NUM2;        //当有2个按键按下时,数码管就显示数字2
    48.                 4'b0101 : SEG_DATA = SEG_NUM2;        //当有2个按键按下时,数码管就显示数字2
    49.                
    50.                 4'b1101 : SEG_DATA = SEG_NUM3;        //当有3个按键按下时,数码管就显示数字3
    51.                 4'b1011 : SEG_DATA = SEG_NUM3;        //当有3个按键按下时,数码管就显示数字3
    52.                 4'b1110 : SEG_DATA = SEG_NUM3;        //当有3个按键按下时,数码管就显示数字3
    53.                 4'b0111 : SEG_DATA = SEG_NUM3;        //当有3个按键按下时,数码管就显示数字3
    54.                
    55.                 4'b1111 : SEG_DATA = SEG_NUM4;        //当有4个按键按下时,数码管就显示数字4
    56.                 default: SEG_DATA = SEG_NUM0;
    57.         endcase                                                        //case语句的结束
    58. end                                                                      //begin语句的结束

    59. assign LED1 = !KEY1;                //当触摸按键1按下其对应的D1将会亮起
    60. assign LED2 = !KEY2;                //当触摸按键2按下其对应的D2将会亮起
    61. assign LED3 = !KEY3;                //当触摸按键3按下其对应的D3将会亮起
    62. assign LED4 = !KEY4;                //当触摸按键4按下其对应的D4将会亮起
    63. assign SEG_EN = 6'b011111;          //SEG1-SEG5熄灭,SEG6点亮
    64.   
    65. endmodule                                                                        //模块的结束
    复制代码

    输入完代码后就是关键配置,下面是锆石A4开发板的硬件连接图
    1.png

    电容按键
    2.png

    用到的LED1-LED4做状态指示
    4.png

    数码管做为数目显示
    我只是我,展示自我。
    回复

    使用道具 举报

    无效楼层,该帖已经被删除

    49

    主题

    1

    好友

    1108

    积分

    进士

    Rank: 5Rank: 5

  • TA的每日心情
    开心
    3 天前
  • 签到天数: 117 天

    [LV.6]常住居民II

    发表于 2016-8-28 21:22:07 |显示全部楼层
    学以致用
    回复

    使用道具 举报

    60

    主题

    15

    好友

    2465

    积分

    版主

    Rank: 7Rank: 7Rank: 7

  • TA的每日心情
    奋斗
    2016-11-14 15:09
  • 签到天数: 171 天

    [LV.7]常住居民III

    论坛版主职务勋章 爱板会员勋章 活跃会员勋章 发帖机器勋章

    发表于 2016-8-28 23:41:01 |显示全部楼层
    来个无线的话比较好啊!
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /5 下一条


    手机版|爱板网 |网站地图  

    GMT+8, 2016-12-10 17:03 , Processed in 0.204987 second(s), 14 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部