7段数码管实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

EDA 实验报告

实验名称: 7段数码管控制接口学院:信息工程学院

专业: 11级电子信息工程2班年级、班: 2009级2班

学生姓名:王璐

指导教师:郭华

2014 年 6 月24 日

7段数码管控制接口

一、实验要求。

用设计一个共阴7 段数码管控制接口,要求:在时钟信号的控制下,使 6 位数码管动态刷新显示0—F,其中位选信号为8-3 编码器编码输出。

二、实验内容。

在实验仪器中,8 位7 段数码显示的驱动电路已经做好,并且其位选信(SEL[7..0])为一3-8 译码器的输出,所以我们在设计7 段数码管控制接口时,其位选信号输出必须经8-3编码。

显示控制器的引脚图如图40-1:

图1

图中CP 为时钟输入端,SEGOUT[7..0]为段驱动输出;SELOUT[2..0]为位选信号输出;NUMOUT[3..0]为当前显示的数据输出。

图40-2 7段显示控制器仿真波形图

从图40-2可以看出,6位数码管是轮流点亮的,我们以NUMOUT=1 这段波形为参考:当SELOUT为000时,点亮第一位显示器,显示的数字为1,同时,NUMOUT 输出的数据也为“0001”。同理,当SELOUT 为001 时,点亮第二位显示器,显示数字为1,直到 6 位显示器全都显示完毕,等待进入下一个数字的显示。

同时,还有一个问题不可忽视,位扫描信号的频率至少需要多少以上,才能使显示器不闪烁?简单的说,只要扫描频率超过眼睛的视觉暂留频率24HZ以上就可以达到点亮单个显示,却能享有6个同时显示的视觉效果,而且显示也不闪烁。当我们输入频率为5MHZ时,我们通过加法计数器来产生一个约300HZ 的信号,并且由它来产生位选信号,请参考下面程序段:

PROCESS (CP) -- 计数器计数

Begin

IF CP'Event AND CP='1' then

Q <= Q+1;

END IF;

END PROCESS;

NUM <= Q(24 DOWNTO 21); --about 1 Hz

S <= Q(15 DOWNTO 13); --about 300 Hz

--扫描信号

SEL <= "000" WHEN S=0 ELSE

"001" WHEN S=1 ELSE

"010" WHEN S=2 ELSE

"011" WHEN S=3 ELSE

"100" WHEN S=4 ELSE

"101" WHEN S=5 ELSE

"111111";

由计数器Q 引出到S信号,若时钟信号为5MHZ时,Q13 得到的信号频率约为300HZ,再将它分给扫描信号,最后每个显示器扫描信号频率为:300/6=50HZ>24HZ,所以不会有闪烁情形产生。

实验程序设计如下:

module ledCycle(outData,VGA,CLK);

input CLK;

output [3:0] VGA;

assign VGA[3:0]=4'b0010;

output reg [15:0] outData;

reg [7:0]temp=8'h00;

parameter font0=16'h803F;

parameter font1=16'h8006;

parameter font2=16'h805B;

parameter font3=16'h804F;

parameter font4=16'h8066;

parameter font5=16'h806D;

parameter font6=16'h807D;

parameter font7=16'h8007;

parameter font8=16'h807F;

parameter font9=16'h806F;

parameter fontA=16'h8077;

parameter fontB=16'h807C;

parameter fontC=16'h8039;

parameter fontD=16'h805E;

parameter fontE=16'h8079;

parameter fontF=16'h8071;

always @(posedge CLK)

begin

if(temp>16)

begin

temp=1;

outData=font0;

end

else

begin

case (temp)

0: outData=font0;

1: outData=font1;

2: outData=font2;

3: outData=font3;

4: outData=font4;

5: outData=font5;

6: outData=font6;

7: outData=font7;

8: outData=font8;

9: outData=font9;

10: outData=fontA;

11: outData=fontB;

12: outData=fontC;

13: outData=fontD;

14: outData=fontE;

15: outData=fontF;

default ;

endcase

temp=temp+1;

end

end

endmodule

相关文档
最新文档