数字抢答器的设计 (1)具有4个抢答按键; (2)10秒内有效抢答,并倒计时显示,若10秒内无人抢答,进行声光报警。 (3)在有效时间内,将第一个按下按键的组员的编号进行锁存、并显示其编号,其他的组员再按无效。 (4)具有主持人复位按键,当复位键后,才可抢答并启动倒计时。
部分代码(Verilog):(已实现上述功能,且测试无误) module digital_answer(a,b,c,d,reset,clk,beep,led,seg,deg);
/********** ********** **a,b,c,d是四个抢答按键。(低电平抢答有效) **reset是主持人复位键(也是开始) **beep是声音报警 **led是光报警 **Nixie_tube[0]Nixie_tube[1]是数码管倒计时显示Nixie_tube[2]显示空白 **Nixie_tube[3]是抢答者编号显示数码管 **clk是时钟 **seg数码管段选 **deg数码管位选 **clk选择48M(clock1) ********** ***********/ input a,b,c,d,reset,clk; output beep; output [3:0] led; output [7:0] seg; output [7:0] deg; reg beep; reg [3:0] led; reg [3:0] Nixie_tube; reg [7:0] seg; reg [7:0] deg; reg [3:0] data; //显示选手编号a,b,c,d reg input_flag,count_flag; reg [14:0] count1; //2400分频(产生1khz),作用与数码管动态显示 reg [8:0] count2; //500分频(每0.5s翻转一次产生1hz信号计数) reg div_1khz,div_1hz; reg [3:0] count_one,count_ten; reg [3:0] led_n; reg [2:0] cnt; //reg [3:0] dat; /****1Khz信号产生****/ always @(posedge clk) begin if(count1=='d24000) begin div_1khz<=~div_1khz;count1<=0;end else begin count1<=count1+1'b1;end end /****1hz信号产生****/ always @(posedge div_1khz) begin if(count2=='d500) begin div_1hz<=~div_1hz;count2<=0;end else begin count2<=count2+1'b1;end
end
全部代码51hei下载地址:
digital_answer.zip
(1.42 KB, 下载次数: 65)
|