LED数码管驱动电路设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
深圳职业技术学院
Shenzhen Polytechnic
实训(验)报告
Training Item
实训2 LED 数码管驱动电路设计与实现
一、实训设备、工具与要求
1.实训设备、工具
PC 电脑、FPGA 开发系统、Quartus II 应用软件。 2.实训要求
⑴ 每位学生独立完成项目的制作并撰写实训报告;
⑵ 项目制作完成后由制作者按“验收标准”测试功能与参数,指导教师验收并登记成绩;
⑶ 项目经指导教师验收后,由学生将全部实验设备整理后交指导教师验收并登记; ⑷ 实训结束后1周内交实训报告。 二、实训涉及的基本知识 1.请画出七段LED 数码管显示电路的输入输出结构
2.列表描述共阴七段数码显示电路的输入输出关系和显示结果?
三、实训综合电路(七段译码器电路框图)
四、实训步骤
1. 阅读Altera CyclongII 开发系统用户手册,画出七段数码管的电路图和连接引脚。
module qiduan(data_in,data_out);
input [3:0] data_in;
output [6:0] data_out;
reg [6:0] data_out;
always@(data_in)
begin
case(cnt)
4'b0000:data_out<=7'b0111111;
4'b0001:data_out<=7'b0000110;
4'b0010:data_out<=7'b1011011;
4'b0011:data_out<=7'b1001111;
4'b0100:data_out<=7'b1100110;
4'b0101:data_out<=7'b1101101;
4'b0110:data_out<=7'b1111100;
4'b0111:data_out<=7'b0000111;
4'b1000:data_out<=7'b1111111;
4'b1001:data_out<=7'b1100111;
default:data_out<=7'b0000000;
endcase
end
endmodule
3. 设计应用工程,四个数码管依次静态显示“1”、“2”、“3”、“4”;
module ledjt(rst,scan,led);
input rst;
output [3:0] scan;
output[6:0] led;
reg [3:0] scan;reg[6:0] led;
reg state;
always@(rst)
begin
if(rst==1'b0)
state<=2'b00;
else
state<=state+1;
end
always@(state)
begin
case(state)
2'b00:scan=4'b0001;
2'b01:scan=4'b0010;
2'b10:scan=4'b0100;
2'b11:scan=4'b1000;
endcase
end
always@(scan)
begin
case(scan)
4'b0001:led=7'b0000110;
4'b0010:led=7'b1011011;
4'b0100:led=7'b1001111;
4'b1000:led=7'b1100110;
default:led=7'b0111111;
endcase
end
endmodule
4. 设计应用工程,单个数码管显示从模10计数功能;程序设计:
1、分频器模块
module div(clk,rst,clk_1hz);
input clk,rst;
output clk_1hz;
reg clk_1hz;
reg [24:0] cnt;
always@(posedge clk or negedge rst)
begin
if(rst==1'b0)begin
cnt<=0;
clk_1hz<=1'b0;
end
else if(cnt==25'd2*******)begin
cnt<=0;
clk_1hz<=~clk_1hz;
end
else
cnt<=cnt+1'b1;
end
endmodule
2、计数器模块
module cnt10(clk_1hz,cnt,rst);
input clk_1hz,rst;
output [3:0] cnt;
reg [3:0] cnt;
always@(posedge clk_1hz or negedge rst)
begin
if(rst==1'b0)
cnt<=4'b0000;
else if(cnt==9)
cnt<=4'b0000;
else cnt<=cnt+1'b1;
end
endmodule
功能仿真图
3、LED译码器模块
module qiduan(cnt,data_out);
input [3:0] cnt;
output [10:0] data_out;
reg [10:0] data_out;
always@(cnt)
begin
case(cnt)
4'b0000:data_out<=11'b00010111111;
4'b0001:data_out<=11'b00010000110;
4'b0010:data_out<=11'b00011011011;
4'b0011:data_out<=11'b00011001111;
4'b0100:data_out<=11'b00011100110;
4'b0101:data_out<=11'b00011101101;
4'b0110:data_out<=11'b00011111100;
4'b0111:data_out<=11'b00010000111;
4'b1000:data_out<=11'b00011111111;
4'b1001:data_out<=11'b00011100111;
default:data_out<=11'b00000000000;
endcase
end
endmodule
4、顶层模块
module led_1(rst,clk,led);
input rst,clk;
output [10:0]led;
wire [10:0]led;
wire clk_1hz;
wire [3:0] cnt;
div u0(.clk(clk),.rst(rst),.clk_1hz(clk_1hz));
cnt10 u1(.clk_1hz(clk_1hz),.cnt(cnt),.rst(rst));
qiduan u2(.cnt(cnt),.data_out(led));
endmodule
5. 设计应用工程,LED数码管动态显示1、2、3、4V erilog HDL设计;