收藏 分销(赏)

数字电子线路基础:3-3基于FPGA的数码管显示控制与LED点阵控制.docx

上传人:二*** 文档编号:4515750 上传时间:2024-09-26 格式:DOCX 页数:7 大小:147KB
下载 相关 举报
数字电子线路基础:3-3基于FPGA的数码管显示控制与LED点阵控制.docx_第1页
第1页 / 共7页
本文档共7页,全文阅读请下载到手机保存,查看更方便
资源描述
3.3 基于FPGA的数码管显示控制与LED点阵控制 1. 实验目的 (1)通过实验进一步学习Quartus II软件的使用方法。 (2)通过实验学习数码管显示控制的基本原理。 (3)通过实验学习LED点阵显示控制的基本原理。 2. 实验仪器设备 (1)FPGA开发实验箱。 (2)数字万用表。 (3)电脑。 3. 预习 (1)复习FPGA开发有关的流程。 (2)复习Verilog HDL语言语法。 (3)复习实验所用的相关原理。 (4)按要求编写实验中要求的硬件描述语言程序。 4. 实验原理 (1)数码管。数码管是多个LED灯的集合,显示译码器的输入是二进制数,输出是对应的十进制的字符,因此译码器的输出根据十进制数的字符显示效果来定义,显示译码器有配合共阴极和共阳极的区分,必须根据实际选用。 (2)数码管的动态显示。本实验为LED数码管动态显示控制实验。LED动态显示是将所有相同的段码线并接在一个I/O口上,共阴极端或共阳极端分别由相应的I/O口线控制(本实验箱为共阳极)。由于每一位的段选线都在一个I/O口上,所以每送一个段选码,所有的LED数码管都显示同一个字符,这种显示器是不能用的。解决此问题的方法是利用人的视觉滞留,从段选线I/O口上按位次分别送显示字符的段选码,在位选控制口也按相应的次序分别选通相应的显示位(共阴极送低电平,共阳极送高电平),选通位就显示相应字符,并保持几毫秒的延时,未选通位不显示字符(保持熄灭)。这样,对各位显示就是一个循环过程。从计算机的工作来看,在一个瞬时只有一位显示字符,而其它位都是熄灭的,但因为人的视觉滞留,这种动态变化是觉察不到的。从效果上看,各位显示器能连续而稳定地显示不同的字符,这就是动态显示。 (3)LED点阵。LED点阵显示字符的原理和数码管显示原理相似。数码管通过段选和位选来确定那个数码管亮,再通过各个数码管的不断循环点亮,实现动态显示。点阵的显示原理与之相近:点阵通过行选先确定哪一行可以被选通点亮,再通过列选确定所选行的哪几个led可以被点亮,最后在时钟电路的驱动下不断换行显示,从而实现点阵的动态显示。 5. 实验内容 (1)数码管驱动显示。 ①新建工程,调试程序,分配引脚。 ②将程序下载到实验箱,并调试成功。初始代码为数码管依次显示1到8 ③修改实验代码,使数码管能够显示自己学号后8位。 参考的器件引脚图 参考电路图 参考程序: module smg( clk,duan,wei ); input clk; output [6:0]duan;//数码管段选 output [7:0]wei;//数码管位选 reg [6:0]duan; reg [7:0]wei; parameter seg0 = 7'h3f,//参数定义 seg1 = ~7'h06, seg2 = ~7'h5b, seg3 = ~7'h4f, seg4 = ~7'h66, seg5 = ~7'h6d, seg6 = ~7'h7d, seg7 = ~7'h07, seg8 = ~7'h7f, seg9 = ~7'h6f, sega = ~7'h77, segb = ~7'h7c, segc = ~7'h39, segd = ~7'h5e, sege = ~7'h79, segf = ~7'h71; reg [2:0]cnt;//三位计数器 always@(posedge clk) begin //时钟每上升一次,计数器加一 cnt=cnt+1; end always@(posedge clk) begin /*时钟每上升一次,数码管亮一个,且每次亮的数码管和显示 的数字都不同。当时钟频率快到一定程度时,由于人眼的视觉 滞留便出现了多个数码管同时点亮的现象*/ if(cnt==3'b000) begin duan<=seg1;wei<=8'b11111110;end else if(cnt==3'b001) begin duan<=seg2;wei<=8'b11111101;end else if(cnt==3'b010) begin duan<=seg3;wei<=8'b11111011;end else if(cnt==3'b011) begin duan<=seg4;wei<=8'b11110111;end else if(cnt==3'b100) begin duan<=seg5;wei<=8'b11101111;end else if(cnt==3'b101) begin duan<=seg6;wei<=8'b11011111;end else if(cnt==3'b110) begin duan<=seg7;wei<=8'b10111111;end else if(cnt==3'b111) begin duan<=seg8;wei<=8'b01111111;end else ; end endmodule (2)LED点阵控制 ①新建工程,调试程序,分配引脚; ②将程序下载到实验箱,并调试成功。点阵显示“光”字; ③修改参考程序,使点阵显示“电”字。 参考的有关电路连接图 本实验箱中,JX17和JX18的引脚对应H0~H15(即为1~16行),JX19和JX20对应的引脚为L0~L15(即1~16)列。同学们可以自己分配FPGA芯片引脚,建议分配在JP2、JP3、JP4、JP5。 参考程序: module dianzhen( clk,hang,lie ); input clk; //时钟 output [15:0]hang;//16位行选,当为1时选通 output [15:0]lie;//16位列选,当为0时选通 reg [15:0]hang;//16位行寄存器 reg [15:0]lie;//16位列寄存器 reg [3:0]cnt;//4位计数器,可从1~16 always@(posedge clk)//时钟上升沿来临,计数器加一 cnt=cnt+1; always@(posedge clk)//计数器每变化一次,行相应变化一次,使行顺序往下移 if(cnt==4'b0000) begin//选通第一行,由于没有亮点,所以列选全部为1 hang<=16'b0000000000000001; lie<=16'b1111111111111111;end else if(cnt==4'b0001) begin hang<=16'b0000000000000010; lie<=16'b1111111111111111;end else if(cnt==4'b0010) begin hang<=16'b0000000000000100;//选通第三行,从左往右第八个led点亮,故第8位为0 lie<=16'b1111111011111111;end else if(cnt==4'b0011) begin hang<=16'b0000000000001000; lie<=16'b1110111011101111;end else if(cnt==4'b0100) begin hang<=16'b0000000000010000; lie<=16'b1111011011011111;end else if(cnt==4'b0101)begin hang<=16'b0000000000100000; lie<=16'b1111101010111111;end else if(cnt==4'b0110)begin hang<=16'b0000000001000000; lie<=16'b1100000000000111;end else if(cnt==4'b0111)begin hang<=16'b0000000010000000; lie<=16'b1111110101111111;end else if(cnt==4'b1000)begin hang<=16'b0000000100000000; lie<=16'b1111110101111111;end else if(cnt==4'b1001)begin hang<=16'b0000001000000000; lie<=16'b1111110101111111;end else if(cnt==4'b1010)begin hang<=16'b0000010000000000; lie<=16'b1111110101111111;end else if(cnt==4'b1011)begin hang<=16'b0000100000000000; lie<=16'b1111101101110111;end else if(cnt==4'b1100)begin hang<=16'b0001000000000000; lie<=16'b1110011100000111;end else if(cnt==4'b1101)begin hang<=16'b0010000000000000; lie<=16'b1111111111111111;end else if(cnt==4'b1110)begin hang<=16'b0100000000000000; lie<=16'b1111111111111111;end else if(cnt==4'b1111)begin hang<=16'b1000000000000000; lie<=16'b1111111111111111;end else ; endmodule 6.思考题 (1)数码管显示电路控制的核心思路是什么? (2)LED点阵电路控制的核心思路是什么? (3)总结本次实验的心得。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服