七段LED数码管显示译码器设计
包含按鍵輸入并顯示模塊,輸入為四位16進制信號,同步在led數碼管顯示,如果沒有輸入,則自動脈沖計數
module led(comscan,clr,k,kon,kc,o,comscanout);
input clr,kon;
input [3:0]k;
input [3:0]kc;
input comscan;
output ?reg [7:0]o;
reg [31:0]counter;
reg [3:0]show;
reg [7:0]clk0;
reg [15:0]temp;
reg clk;
output reg [2:0]comscanout;
always @(posedge comscan)
?? ?begin
?? ??? ?comscanout[2:0]=comscanout[2:0]+1'b1;
?? ?end
?? ?
?? ?
always @ (posedge clk)
begin
?? ?if (!clr)
?? ??? ?counter[31:0]=counter[31:0]+1'b1;
?? ?else
?? ?counter[31:0]=1'b0;
end?? ?
always @(posedge comscan)
begin?? ??? ?
?? ??? ?case(comscanout[2:0])
?? ??? ??? ?3'b000:begin
?? ??? ??? ??? ?if (!kon) show[3:0]=counter[3:0];
?? ??? ??? ??? ?else?
?? ??? ??? ??? ?if(kc[0]==1)
?? ??? ??? ??? ?begin
?? ??? ??? ??? ?show[3:0]<=k[3:0];
?? ??? ??? ??? ?temp[3:0]<=k[3:0];
?? ??? ??? ??? ?end
?? ??? ??? ??? ?else
?? ??? ??? ??? ?show[3:0]<=temp[3:0];
?? ??? ??? ??? ?end
?? ??? ??? ??? ??? ?
?? ??? ??? ?3'b001:begin
?? ??? ??? ?if (!kon)
?? ??? ??? ?show[3:0]<=counter[7:4];
?? ??? ??? ?else if (kc[1]==1)
?? ??? ??? ?begin
?? ??? ??? ?show[3:0]=k[3:0];
?? ??? ??? ?temp[7:4]=k[3:0];
?? ??? ??? ?end
?? ??? ??? ?else
?? ??? ??? ??? ?show[3:0]=temp[7:4];
?? ??? ??? ?end
?? ??? ??? ??? ??? ?
?? ??? ??? ?3'b010:begin
?? ??? ??? ?if (!kon)
?? ??? ??? ?show[3:0]<=counter[11:8];
?? ??? ??? ?else if (kc[2]==1)
?? ??? ??? ?begin
?? ??? ??? ?show[3:0]=k[3:0];
?? ??? ??? ?temp[11:8]=k[3:0];
?? ??? ??? ?end
?? ??? ??? ?else
?? ??? ??? ??? ?show[3:0]=temp[11:8];
?? ??? ??? ?end?? ?
?? ??? ??? ?
?? ??? ??? ?3'b011:begin
?? ??? ??? ?if (!kon)
?? ??? ??? ?show[3:0]<=counter[15:12];
?? ??? ??? ?else if (kc[3]==1)
?? ??? ??? ?begin
?? ??? ??? ?show[3:0]=k[3:0];
?? ??? ??? ?temp[15:12]=k[3:0];
?? ??? ??? ?end
?? ??? ??? ?else
?? ??? ??? ??? ?show[3:0]=temp[15:12];
?? ??? ??? ?end?? ?
?? ??? ??? ?3'b100:show[3:0]<=counter[19:16];
?? ??? ??? ?3'b101:show[3:0]<=counter[23:20];
?? ??? ??? ?3'b110:show[3:0]<=counter[27:24];
?? ??? ??? ?3'b111:show[3:0]<=counter[31:28];?? ??? ?
?? ?endcase?? ?
?? ?begin
?? ??? ?if (clk0[7:0]==8'b1111_1111)
?? ??? ??? ?begin
?? ??? ??? ?clk=~clk;
?? ??? ??? ?clk0[7:0]=8'b0000_0000;
?? ??? ??? ?end
?? ??? ?else
?? ??? ?clk0[7:0]=clk0[7:0]+1'b1;
?? ?end
end
always @(1)
?? ?begin
?? ??? ?case(show[3:0])
?? ??? ??? ?4'b0000:o[7:0]<=8'h3f;
?? ??? ??? ?4'b0001:o[7:0]<=8'h06;
?? ??? ??? ?4'b0010:o[7:0]<=8'h5b;
?? ??? ??? ?4'b0011:o[7:0]<=8'h4f;
?? ??? ??? ?4'b0100:o[7:0]<=8'h66;
?? ??? ??? ?4'b0101:o[7:0]<=8'h6d;
?? ??? ??? ?4'b0110:o[7:0]<=8'h7d;
?? ??? ??? ?4'b0111:o[7:0]<=8'h07;
?? ??? ??? ?4'b1000:o[7:0]<=8'h7f;
?? ??? ??? ?4'b1001:o[7:0]<=8'h6f;
?? ??? ??? ?4'b1010:o[7:0]<=8'h77;
?? ??? ??? ?4'b1011:o[7:0]<=8'h7c;
?? ??? ??? ?4'b1100:o[7:0]<=8'h39;
?? ??? ??? ?4'b1101:o[7:0]<=8'h5e;
?? ??? ??? ?4'b1110:o[7:0]<=8'h79;
?? ??? ??? ?4'b1111:o[7:0]<=8'h71;
?? ??? ?endcase
?? ?end
endmodule
tance 轉載標明出處
總結
以上是生活随笔為你收集整理的七段LED数码管显示译码器设计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小程序开发合同_小程序开发公司在哪里找?
- 下一篇: 基于OpenLayer的室内地图前端设计