芯片解密|单片机解密|IC解密|芯片破解|芯片复制| PCB抄板|软件开发

飞芯科技-芯片解密|单片机解密|IC解密|芯片破解|芯片复制| PCB抄板|软件开发

单片机解密FPGA三人抢答器核心代码

单片机解密module Top_Qiangdaqi(
        input clk,//主频信号,50MHZ
        input rst_n,//低电平复位
        //input [2:0]kint,//按键输入
        input PLA_A,PLA_B,PLA_C,//按键输入
        //input key_ctrl,//主持人按键
        output led_d0=0,led_d1,led_d2,led_d3,
        output buzzer,//蜂鸣器
        output [5:0]seg_sel,
        output [7:0]seg_data
        );
       
        /*-----------------------按键信号锁存,消抖,LED显示-----------------------*/
        /*--------记录按键状态--------*/
        reg key_rst;
        always @(posedge clk or negedge rst_n)begin
                if(!rst_n)key_rst <= 1'b1;//低电平复位,key_rst信号为1
                else key_rst <= PLA_C&PLA_B&PLA_A;//按键按下时,key_rst信号为0
        end
       
        reg key_rst_r;
        always @(posedge clk or negedge rst_n)begin
                if(!rst_n)key_rst_r <= 1'b1;
                else key_rst_r <= key_rst;//上升沿将key_rst信号锁存到key_rst_r里
        end
       
        /*--------添加20MS消抖--------*/
        wire key_clr=key_rst_r &(~key_rst);//key_rst由1变为0时,key_clr 的值变为高,维持一个时钟周期,模拟按键情况
        reg [19:0]c;//1KHZ---[15:0]clk_1k+[3:0]counter_delay
        always @(posedge clk or negedge rst_n)begin
                if(!rst_n) c <= 20'd0;
                else if(key_clr) c <= 20'd0;
                else c <= c+1'b1;
        end
       
        reg [2:0] reg_key;
        always @(posedge clk or negedge rst_n)begin
        if(!rst_n) reg_key <= 3'b111;//低电平复位,三个按键全部赋高电平
                else if(c==20'hffffff)//满20ms,将按键值锁存到reg_key,20'hffffff=1111_1111_1111_1111_1111
                        reg_key <= {PLA_C,PLA_B,PLA_A};
        end
       
        //时钟上升沿时将reg_key的信号锁存到reg_key_r里
        reg [2:0]reg_key_r;
        always @(posedge clk or negedge rst_n)begin
                if(!rst_n) reg_key_r <= 3'b111;
                else reg_key_r <= reg_key;
        end
       
        /*--------控制LED显示--------*/
        wire [2:0] led_swt=reg_key_r[2:0]&(~reg_key[2:0]);
        reg d0;reg d1;reg d2;reg d3;
        always @(posedge clk or negedge rst_n)begin
                if(!rst_n)begin//全亮
                        d0 <= 1'b0;
                        d1 <= 1'b0;
                        d2 <= 1'b0;
                        d3 <= 1'b0;
                end
                单片机解密else begin//按键控制LED翻转
                        if(led_swt[1]&led_swt[2])d0 <= ~d0;//倒计时触发灯
                        //两个按键同时按下也不会因为if语句对LED有干扰
                        if(led_swt[0]&(!led_swt[1])&(!led_swt[2])&led_d2==1'b0&led_d3==1'b0)d1 <= ~d1;
                        if(led_swt[1]&(!led_swt[0])&(!led_swt[2])&led_d1==1'b0&led_d3==1'b0)d2 <= ~d2;
                        if(led_swt[2]&(!led_swt[0])&(!led_swt[1])&led_d1==1'b0&led_d2==1'b0)d3 <= ~d3;
//                        if(led_swt[0]&led_d2==1'b0&led_d3==1'b0)d1 <= ~d1;
//                        if(led_swt[1]&led_d1==1'b0&led_d3==1'b0)d2 <= ~d2;
//                        if(led_swt[2]&led_d1==1'b0&led_d2==1'b0)d3 <= ~d3;
                end
        end


联系方式

地址:石家庄市新华区民族路77号华强广场D座2009
电话:0311-88816616/87087811
手机:13315190088
传真:0311-67901001
联系人:张工
网址:www.feixindz.com
邮箱:feixindz@163.com
微信:xinpianjiemi
QQ:527263666/568069805

在线客服
热线电话

企业微信