数码管动态显示程序

合集下载

02实验二:数码管动态显示程序设计25页PPT

02实验二:数码管动态显示程序设计25页PPT
(P195 表10-2)
八段LED段码表
10.1.2 LED显示器工作原理
1、LED静态显示方式
LED显示器工作于静态显示方式时,各位的共阴 极(或共阳极)连接在一起,每位的段码线分别与1 个8位的锁存器输出相连。之所以称为静态显示,是 因为各个LED的显示字符一经确定,相应锁存器锁存 的段码输出将维持不变,直到送入另一个字符的段码 为止。正因为如此,静态显示的亮度都较高。
dp g f …… a 低电平点亮
dp g f e d c b a
f
a g
b
高电平点亮 dp g f …… a
ed
c dp
公共阴极
接地
思考:如果要在8段显示器上显示P. ,那么共阳极 和共阴极段码分别是什么?
共阳极段码是:0CH ;共阴极段码是:F3H
字符 字形
共阳 共阴
理论上,八段可以 显示128种不同的字符, 扣除其中没有意义的组 合状态后,八段LED显示 器可以显示的字符如表 所示。
动态显示:
各显示器在显示过程中轮流得到送显信号,与各显示器接口 的I/O口线是共用的。
静态显示特点:
无闪烁,无须扫描,节省CPU时间,编程简单,用元器件多, 占I/O线多。
动态显示特点:
用元器件少,占I/O线少,有闪烁,必须扫描,花费CPU时间, 编程复杂。(有多个LED时尤为突出)
动态显示中延时时间的选择
各显示器在显示过程中轮流得到送显信号与各显示器接口动态显示中延时时间的选择动态显示中延时时间的选择在动态显示方式中各led显示器轮流工作为了防止产生闪烁现象每个led数码管刷新频率必须大于25hz即相邻两次点亮的时间间隔要小于40msled显示器的位数越多每一位的显示时间越短在驱动电流一定的情况下亮度越低正因如此在动态led显示电路中要适当增大驱动电流一般取20ma35ma正常情况下的工作电流一般在1020ma之间以抵消因显示时间短造成亮度下降

数码管动态延时程序设计

数码管动态延时程序设计

数码管动态延时程序设计摘要:一、数码管动态显示原理二、延时程序的作用1.保持显示时间2.稳定显示效果3.形成视觉暂留三、延时时间对显示效果的影响1.延时太短2.延时太长四、如何选择合适的延时时间五、总结正文:一、数码管动态显示原理数码管动态显示是通过逐个点亮数码管来实现数字的显示。

在动态显示过程中,为了保证显示效果,需要对每个数码管的导通时间进行控制。

延时程序在这里起到了关键作用,它能够确保数码管在一定时间内保持导通,从而实现稳定显示。

二、延时程序的作用1.保持显示时间:延时程序可以控制数码管的导通时间,使得显示内容在屏幕上保持足够的时间,便于观众观察。

2.稳定显示效果:延时程序可以确保数码管在显示过程中不受外界干扰,如电磁波、温度等因素的影响,从而提高显示的稳定性。

3.形成视觉暂留:延时程序使得数码管在一次扫描过程中保持显示,从而形成视觉暂留效果。

视觉暂留是指人眼在观察运动物体时,物体消失后仍在短时间内保留其影像的现象。

通过延时程序,可以让观众在数码管熄灭后依然能看到显示内容,提高显示效果的吸引力。

三、延时时间对显示效果的影响1.延时太短:当延时时间过短时,数码管导通时间变短,显示亮度降低。

在PROTUES仿真中,这种情况下数码管会直接熄灭,无法显示。

2.延时太长:延时时间过长时,人眼能够分辨出数码管的闪烁,从而影响显示效果。

此外,延时过长还会导致整个动态显示过程的速度变慢,影响观众的观看体验。

四、如何选择合适的延时时间为了达到较好的显示效果,延时时间应适当大于2毫秒,同时所有数码管一次扫描完成总时间不能大于40毫秒。

这是因为人眼视觉暂留的极限大约为40毫秒,超过这个时间人眼就无法形成视觉暂留效果。

因此,在设计延时程序时,需要根据实际情况和显示要求来调整延时时间。

五、总结数码管动态延时程序设计是实现动态显示效果的关键环节。

通过合理设置延时时间,可以保证数码管显示的稳定性和视觉效果。

实验三 数码管动态显示程序设计1综述

实验三 数码管动态显示程序设计1综述

实验三数码管动态显示程序设计实验目的1、理解数码管动态显示原理2、理解数码管动态显示电路的设计方法3、掌握数码管动态显示程序的设计方法实验仪器单片机开发板、万利仿真机、稳压电源、计算机实验内容1、动态扫描显示程序2、特征位小数点控制显示程序实验电路图实验步骤及调试信息1、新建实验项目2、输入实验程序并补充完整;------------------------------------------------------;数码管动态显示程序;包含小数点显示;位选码输出有两种方式:; DispSelection1: 一次一位; DispSelection2: 一次一字节;; 2009-08-20;-------------------------------------------------------LEDCLK bit P3.4LEDDIN bit P2.3LEDDATA data P0dseg at 30hdispbuf: ds 8 ;显示缓冲区8字节disppoint: ds 1 ;小数点控制数据maincode SEGMENT CODECSEG at 0LJMP StartRSEG maincodeStart: CLR E Amov sp,#0c0hmov dispbuf ,#08hmov dispbuf+1, #04hmov dispbuf+2, #00hmov dispbuf+3, #08hmov dispbuf+4, #02hmov dispbuf+5, #00hmov dispbuf+6, #02hmov dispbuf+7, #07hmov disppoint,#02h ;第2位小数点亮LCALL dispSJMP $-3;------------------------------------------------------;数码管动态显示程序;包含小数点显示;位选码输出有两种方式:; DispSelection1: 一次一位; DispSelection2: 一次一字节;; 2009-08-20;-------------------------------------------------------Disp: MOV R7,#8MOV R0,#dispbufCLR LEDCLKSETB L EDDINDisp1: MOV A,@R0MOV DPTR,#DispTabMOVC A,@A+DPTRcpl a; LCALL Dispdot ;显示小数点程序MOV LEDDA TA,A ;在输出之前加入显示小数点程序LCALL DispSelection1 ;输出位选择信号,DispSelection2是第二种; lcall dispsel3LCALL Delay1msmov p2,#0ffhINC R0DJNZ R7,Disp1mov p2,#0ffhRET;-------------------------------------------------;位选码以一次一位方式输出;-------------------------------------------------dispsel3:mov dptr,#DispSTabmov a,r7movc a,@a+dptrcpl a; swap amov p2,aretDispSelection1:CJNE R7,#8,DispSelection11CLR L EDDINDispSelection11:SETB LEDCLKNOPCLR L EDCLKSETB LEDDINRET;-------------------------------------------------;位选码以一次一字节方式输出;-------------------------------------------------DispSelection2:MOV B,#8MOV DPTR,#DispSTabMOV A,R7MOVC A,@A+DPTRCPL ADispSelection21:RLC AMOV LEDDIN,CSETB LEDCLKNOPCLR L EDCLKDJNZ B,DispSelection21RETDispSTab: DB 00H,80H,20H,40H,10H,08H,04H,02H,01H;位选码数据表dispa equ 80h ;数码管各段数据定义dispb equ 40hdispc equ 20hdispd equ 10hdispe equ 08hdispf equ 04hdispg equ 02hdisph equ 01hdisp8 equ 0ffh-disphDispTab: db disp8-dispg,dispb+dispc,dispa+dispb+dispg+dispd+dispe ;0,1,2 db disp8-dispe-dispf,disp8-dispa-dispd-dispe,disp8-dispb-dispe;3,4,5db disp8-dispb,dispa+dispb+dispc,disp8,disp8-dispe ;6,7,8,9db disp8-dispd,disp8-dispa-dispb,disp8-dispb-dispc-dispg ;a,b,cdb disp8-dispa-dispf,disp8-dispb-dispc,disp8-dispb-dispc-dispd;d,e,fdb disp8-dispb-dispc,0ffh,00h,dispg ;H,全亮,全暗,-;--------------------------------------------------------------------;特征位小数点控制显示程序;把小数点显示程序加到显示码输出之前;输入:A : 显示译码值; R7:当前正在显示的LED编号;输出:无;--------------------------------------------------------------------Dispdot:MOV B,AMOV A,R7MOV DPTR,#DispSTabMOVC A,@A+DPTRANL A,disppointSETB C ;本行及以下4行可改成MOV C,PJZ Dispdot1CLR C;点亮小数点Dispdot1:CPL C ;本行根据情况增减MOV A,BCPL AMOV ACC.7,C ;小数点由D7控制; MOV LEDDA TA,A ;本行可以删除RETDelayNms:LCALL Delay1msDJNZ R7, $-3RETDelay1ms:PUSH 07MOV R7,#250 ;1msNOPNOPDJNZ R7, $-2POP 07RETEND3、编译下载实验程序,并修改错误(按附录说明)4、全速运行程序,查看实验现象。

数码管显示程序(汇编语言)

数码管显示程序(汇编语言)

实验三数码显示一、实验目的了解LED数码管动态显示的工作原理及编程方法。

二、实验内容编制程序,使数码管显示“DJ--88”字样。

三、实验程序框图四、实验步骤联机模式:(1)在PC机和实验系统联机状态下,运行该实验程序,可用鼠标左键单击菜单栏“文件”或工具栏“打开图标”,弹出“打开文件”的对话框,然后打开598K8ASM文件夹,点击S6.ASM文件,单击“确定”即可装入源文件,再单击工具栏中编译装载,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。

(2)数码管显示“DJ--88”字样。

脱机模式:1、在P.态下,按SCAL键,输入2DF0,按EXEC键。

2、数码管显示“DJ--88”字样。

五、实验程序清单CODE SEGMENT ;S6.ASM display "DJ--88"ASSUME CS:CODEORG 2DF0HSTART: JMP START0PA EQU 0FF20H ;字位口PB EQU 0FF21H ;字形口PC EQU 0FF22H ;键入口BUF DB ?,?,?,?,?,?data1:db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1hdb 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH,0F0H START0: CALL BUF1CON1: CALL DISPJMP CON1DISP: MOV AL,0FFH ;00HMOV DX,PAOUT DX,ALMOV CL,0DFH ;显示子程序 ,5msMOV BX,OFFSET BUFDIS1: MOV AL,[BX]MOV AH,00HPUSH BXMOV BX,OFFSET DATA1ADD BX,AXMOV AL,[BX]POP BXMOV DX,PBOUT DX,ALMOV AL,CLMOV DX,PAOUT DX,ALPUSH CXDIS2: MOV CX,00A0HLOOP $POP CXCMP CL,0FEH ;01HJZ LX1MOV AL,0FFH ;00HMOV DX,PAOUT DX,ALINC BXROR CL,1 ;SHR CL,1JMP DIS1LX1: MOV AL,0FFHMOV DX,PBOUT DX,ALRETBUF1: MOV BUF,0DHMOV BUF+1,19HMOV BUF+2,17HMOV BUF+3,17HMOV BUF+4,08HMOV BUF+5,08HRETCODE ENDSEND START。

数码管动态延时程序设计

数码管动态延时程序设计

数码管动态延时程序设计【原创版】目录一、引言二、数码管动态显示原理1.动态显示概念2.数码管显示原理三、延时程序设计1.延时程序作用2.延时时间长短对显示效果的影响四、51 单片机控制数码管动态实现 00 到 231.程序包含头文件2.定义符号和变量3.延时函数 t0isr()4.动态显示数码管函数5.主函数五、定时器控制数码管动态显示实例1.程序包含头文件2.定义符号和变量3.延时函数4.动态显示数码管函数5.主函数六、结论正文一、引言数码管动态显示程序设计是单片机应用领域的一个重要课题。

在很多场合,我们需要对数码管进行动态显示,以实时反映数据的变化。

为了实现这一功能,我们需要编写相应的程序,并通过延时程序控制数码管的显示效果。

本文将详细介绍数码管动态显示的原理及程序设计方法。

二、数码管动态显示原理1.动态显示概念动态显示是指在数码管上逐个显示数字或字符,以形成视觉暂留效果。

与静态显示相比,动态显示能够实时反映数据的变化,更具有实用性。

2.数码管显示原理数码管是一种常用的显示器件,其工作原理是通过驱动管的导通与截止来显示数字或字符。

在动态显示中,我们需要逐个驱动数码管的各个段码,以形成视觉暂留效果。

三、延时程序设计1.延时程序作用在数码管动态显示中,延时程序的作用是保持当前显示数码管足够时间,同时稳定显示效果,以形成视觉暂留。

这样可以使得数码管上的数字或字符能够被清晰地看到。

2.延时时间长短对显示效果的影响延时时间的长短会影响数码管的显示效果。

一般来说,延时时间需要大于 2 毫秒,以保证视觉暂留效果。

同时,所有数码管一次扫描完成的总时间不能大于 40 毫秒,因为 40 毫秒基本上是人眼视觉暂留的极限。

数码管动态显示电路接法动态驱动多位数码管

数码管动态显示电路接法动态驱动多位数码管

动态驱动多位数码管
3
2 数码管动态显示分析
动态驱动多位数码管
4
3 数码管动态显示电路接法
采用共阴显示器的四位动态显示器
四位共阴显示器相 应笔划的阳极连在 一起,笔划锁存器 的输出通过一个由 三极管构成的反相 驱动器与共阴显示 器的阳极相连。每 一位显示器的阴极 由位锁存器的输出 经反相驱动器控制。
动态驱动多位数码管
1
1 动态驱动的原理 2 数码管动态显示分析 3 数码管动态显示电路接法 4 显示过程与时间关系 5 动态显示程序流程
动态驱动多位数码管
2
1 动态驱动的原理
所谓动态扫描显示即轮流向各位数码管送出字形 码和相应的位选,利用发光管的余辉和人眼视觉 暂留作用,使人的感觉好像各位数码管同时都在 显示。动态显示的亮度比静态显示要差一些,所 以在选择限流电阻时应略小于静态显示电路中的。
动态驱动多位数码管
5
4 显示过程与时间关系
显示过程的时间关系
先使所有的位控信号为低 电平,这时,所有的显示 器都不亮,然后送出第一 位的笔划编码,再送出第 一位控制信号为“1”, 其余的为“0”。
动态驱动多试动态显示程序时,应注意防止程 序在显示某一位时发生死循环的情况, 或是当程序在显示某一位时将其中止, 使某一位显示器长时间地点亮。由于此 时流过显示器的电流较大,容易损坏器 件,碰到这类情况应迅速采取措施关闭 显示器。

七段数码管的动态显示

七段数码管的动态显示

七段数码管的动态显示1、实验内容:数码管的动态显示利用实验板上的某四位数码管依次显示16 进制的0000~FFFF。

为实现功能重用的目的,我们仍然将系统划分为几个部分:(1)时钟分频模块:将开发板上的50MHz 高速时钟进行分频产生一个5Hz 的时钟用于计数。

(2)计数模块:实现从0000~FFFF 的计数功能。

用4位十六进制数来实现,其中15‐12 位表示十六进制数的最高位,11‐8 位表示次高位,7‐4 位表示次低位,3‐0位表示最低位(3)数码管动态显示模块:将计数模块的输出作为显示字符的输入值,分时送出相应段码,实现数码管的动态显示效果。

2、参考程序:module SegDynamicDisp(CLK,rst_n,SEG0,SEG1,SEG2,SEG3);//数码管动态显示模块? input CLK;input rst_n;output [7:0]SEG0;//定义输出数码管0的段码带output [7:0]SEG1;//定义输出数码管1的段码带output [7:0]SEG2;//定义输出数码管2的段码带output [7:0]SEG3;//定义输出数码管3的段码带//..............................................................reg [7:0]SEG0;//定义输出数码管0的段码带reg [7:0]SEG1;//定义输出数码管1的段码带reg [7:0]SEG2;//定义输出数码管2的段码带reg [7:0]SEG3;//定义输出数码管3的段码带//..................................................................parameter seg0=8'hC0,seg1=8'hF9,seg2=8'hA4,seg3=8'hB0,seg4=8'h99,seg5=8'h92,seg6=8'h82,seg7=8'hF8,seg8=8'h80,seg9=8'h90,sega=8'h88,segb=8'h83,segc=8'hC6,segd=8'hA1,sege=8'h86,segf=8'h8E;//....................................................................reg[23:0] cnt;//定义计数寄存器,用来实现定时的功能reg [15:0]counter;//定义计数寄存器,用于实现显示的数值always @(posedge CLK or negedge rst_n)//计数过程,记录当前显示的位选序号if(!rst_n)begincnt<=24'D0;//复位时cnt初始化为0counter<=2'b00;//复位时counter初始化为0endelsebegincnt<=cnt+1'b1;//实现计数的功能if(cnt==24'D1*******)begincnt<=0;//当达到计数值以后回复初始值counter<=counter+1;//当达到计时时间以后显示的数值也相应的+1endend//....................................................always @(posedge CLK or negedge rst_n)if(!rst_n)beginSEG0<=0;SEG1<=0;SEG2<=0;SEG3<=0;endelsealways @(counter)begincase(counter[3:0])4'h0: sm_dbr <= seg0;4'h1: sm_dbr <= seg1;4'h2: sm_dbr <= seg2;4'h4: sm_dbr <= seg4;4'h5: sm_dbr <= seg5;4'h6: sm_dbr <= seg6;4'h7: sm_dbr <= seg7;4'h8: sm_dbr <= seg8;4'h9: sm_dbr <= seg9; 4'ha: sm_dbr <= sega;4'hb: sm_dbr <= segb;4'hc: sm_dbr <= segc;4'hd: sm_dbr <= segd;4'he: sm_dbr <= sege;4'hf: sm_dbr <= segf;default: ;endcasecase(counter[7:4])4'h0: sm_dbr <= seg0;4'h1: sm_dbr <= seg1;4'h2: sm_dbr <= seg2;4'h3: sm_dbr <= seg3;4'h4: sm_dbr <= seg4;4'h5: sm_dbr <= seg5;4'h6: sm_dbr <= seg6;4'h7: sm_dbr <= seg7;4'h8: sm_dbr <= seg8;4'h9: sm_dbr <= seg9;4'ha: sm_dbr <= sega;4'hb: sm_dbr <= segb;4'hc: sm_dbr <= segc;4'hd: sm_dbr <= segd;4'he: sm_dbr <= sege;4'hf: sm_dbr <= segf;default: ;endcasecase(counter[11:8])4'h0: sm_dbr <= seg0;4'h1: sm_dbr <= seg1;4'h2: sm_dbr <= seg2;4'h3: sm_dbr <= seg3;4'h4: sm_dbr <= seg4;4'h6: sm_dbr <= seg6; 4'h7: sm_dbr <= seg7; 4'h8: sm_dbr <= seg8; 4'h9: sm_dbr <= seg9; 4'ha: sm_dbr <= sega; 4'hb: sm_dbr <= segb; 4'hc: sm_dbr <= segc; 4'hd: sm_dbr <= segd; 4'he: sm_dbr <= sege; 4'hf: sm_dbr <= segf; default: ;endcasecase(counter[15:12])4'h0: sm_dbr <= seg0; 4'h1: sm_dbr <= seg1; 4'h2: sm_dbr <= seg2; 4'h3: sm_dbr <= seg3; 4'h4: sm_dbr <= seg4; 4'h5: sm_dbr <= seg5; 4'h6: sm_dbr <= seg6; 4'h7: sm_dbr <= seg7; 4'h8: sm_dbr <= seg8; 4'h9: sm_dbr <= seg9; 4'ha: sm_dbr <= sega; 4'hb: sm_dbr <= segb; 4'hc: sm_dbr <= segc; 4'hd: sm_dbr <= segd; 4'he: sm_dbr <= sege; 4'hf: sm_dbr <= segf; default: ;endcaseendendmodule3、接口:clk--PIN_N2rst_n--PIN_N25SEG0[0]--PIN_AF10SEG0[1]--PIN_AB12SEG0[2]--PIN_AC12SEG0[3]--PIN_AD11SEG0[4]--PIN_AE11SEG0[5]--PIN_V14SEG0[6]--PIN_V13SEG1[0]--PIN_V20SEG1[1]--PIN_V21SEG1[2]--PIN_W21SEG1[3]--PIN_Y22SEG1[4]--PIN_AA24SEG1[5]--PIN_AA23SEG1[6]--PIN_AB24SEG2[0]--PIN_AB23SEG2[1]--PIN_V22SEG2[2]--PIN_AC25SEG2[3]--PIN_AC26SEG2[4]--PIN_AB26SEG2[5]--PIN_AB25SEG2[6]--PIN_Y24SEG3[0]--PIN_Y23SEG3[1]--PIN_AA25SEG3[2]--PIN_AA26SEG3[3]--PIN_Y26SEG3[4]--PIN_Y25SEG3[5]--PIN_U22SEG3[6]--PIN_W244、上机程序module SegDynamicDisp(CLK,rst_n,SEG0,SEG1,SEG2,SEG3); input CLK;input rst_n;output [6:0]SEG0;output [6:0]SEG1;output [6:0]SEG2;output [6:0]SEG3;reg [6:0]SEG0;reg [6:0]SEG1;reg [6:0]SEG2;reg [6:0]SEG3;//........以上是定义的一些输入输出接口.......................... parameter seg0=7'hC0,seg1=7'hF9,seg2=7'hA4,seg3=7'hB0,seg4=7'h99,seg5=7'h92,seg6=7'h82,seg7=7'hF8,seg8=7'h80,seg9=7'h90,sega=7'h88,segb=7'h83,segc=7'hC6,segd=7'hA1,sege=7'h86,segf=7'h8E;//..............以上是定义的参数,用来标记段代码................... reg[23:0] cnt;reg [15:0]counter;always @(posedge CLK or negedge rst_n)if(!rst_n)begincnt<=24'D0;counter<=2'b00;endelsebegincnt<=cnt+1'b1;if(cnt==24'D1*******)begincnt<=0;counter<=counter+1;endend//..........用来实现计数功能和控制数字递增的速度.................... always @(counter)begincase(counter[3:0])4'h0: SEG0 <= seg0; 4'h1: SEG0 <= seg1; 4'h2: SEG0 <= seg2; 4'h3: SEG0 <= seg3; 4'h4: SEG0 <= seg4; 4'h5: SEG0 <= seg5; 4'h6: SEG0 <= seg6; 4'h7: SEG0 <= seg7; 4'h8: SEG0 <= seg8; 4'h9: SEG0 <= seg9; 4'ha: SEG0 <= sega; 4'hb: SEG0 <= segb; 4'hc: SEG0 <= segc; 4'hd: SEG0 <= segd; 4'he: SEG0 <= sege; 4'hf: SEG0 <= segf; default: ;endcasecase(counter[7:4])4'h0: SEG1 <= seg0; 4'h1: SEG1 <= seg1; 4'h2: SEG1 <= seg2; 4'h3: SEG1 <= seg3; 4'h4: SEG1 <= seg4; 4'h5: SEG1 <= seg5; 4'h6: SEG1 <= seg6; 4'h7: SEG1 <= seg7; 4'h8: SEG1 <= seg8; 4'h9: SEG1 <= seg9; 4'ha: SEG1 <= sega; 4'hb: SEG1 <= segb; 4'hc: SEG1 <= segc; 4'hd: SEG1 <= segd; 4'he: SEG1 <= sege; 4'hf: SEG1 <= segf; default: ;endcasecase(counter[11:8])4'h0: SEG2 <= seg0; 4'h1: SEG2 <= seg1; 4'h2: SEG2 <= seg2; 4'h3: SEG2 <= seg3;4'h4: SEG2 <= seg4;4'h5: SEG2 <= seg5;4'h6: SEG2 <= seg6;4'h7: SEG2 <= seg7;4'h8: SEG2 <= seg8;4'h9: SEG2 <= seg9;4'ha: SEG2 <= sega;4'hb: SEG2 <= segb;4'hc: SEG2 <= segc;4'hd: SEG2 <= segd;4'he: SEG2 <= sege;4'hf: SEG2 <= segf;default: ;endcasecase(counter[15:12])4'h0: SEG3 <= seg0;4'h1: SEG3 <= seg1;4'h2: SEG3 <= seg2;4'h3: SEG3 <= seg3;4'h4: SEG3 <= seg4;4'h5: SEG3 <= seg5;4'h6: SEG3 <= seg6;4'h7: SEG3 <= seg7;4'h8: SEG3 <= seg8;4'h9: SEG3 <= seg9;4'ha: SEG3 <= sega;4'hb: SEG3 <= segb;4'hc: SEG3 <= segc;4'hd: SEG3 <= segd;4'he: SEG3 <= sege;4'hf: SEG3 <= segf;default: ;endcaseend//...................用来实现显示功能..................... endmodule5、实验结果复位按键为0时:HEX3HEX2 HEX1 HEX0 显示的为0000;复位按键为1时:HEX3 HEX2 HEX1 HEX0 显示的依次为:0000——FFFF。

动态显示程序

动态显示程序

七段数码管动态显示一、实验目的熟悉数码管动态显示的原理,掌握编程实现动态显示的方法。

二、实验平台微机一台(Windows XP 系统、安装QuartusⅡ等相关软件)、CPLD 学习板一块、5V 电源线一个、下载线一条。

三、设计要求利用动态显示方式,在8 个数码管上依次显示 1~8。

四、设计方案动态显示原理:利用人眼的视觉暂留效应,依次点亮各个数码管,当速度达到一定程度后,人眼看到的效果就是8 个数码管同时显示的效果。

具体显示过程是:将第一个数码管显示的段码输出,同时点亮第一个数码管,熄灭其余数码管;将第二个数码管显示的段码输出,同时点亮第二个数码管,熄灭其余数码管…将第八个数码管显示的段码输出,同时点亮第八个数码管,熄灭其余数码管。

循环进行上述步骤,调节扫描时钟的频率,就可利用人眼的视觉暂留效应,达到八个数码管同时显示的效果。

五.实验内容:程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity sweep isport(clk,clr: in std_logic;light: out std_logic_vector(7 downto 0);led: out std_logic_vector(7 downto 0));end sweep;architecture behave of sweep issignal q: std_logic_vector(3 downto 0);beginprocess(clk)beginif (clr='1')then led <="11111100" ;light <="00000000";q <="0000"; elseif (clk' event and clk='1') thenif q <="0111" then q <=q+1;else q <="0001";end if;end if;end if;case q iswhen "0001"=> led <= "01100000" ;light <="10000000";when "0010"=> led <= "11011010" ;light <="01000000";when "0011"=> led <= "11110010" ;light <="00100000";when "0100"=> led <= "01100110" ;light <="00010000";when "0101"=> led <= "10110110" ;light <="00001000";when "0110"=> led <= "10111110" ;light <="00000100";when "0111"=> led <= "11100000" ;light <="00000010";when "1000"=> led <= "11111110" ;light <="00000001";when others=> led <= "11111100" ;light <="00000000";end case;end process;end behave;六,实验结果仿真波形:仿真结果分析:当clr置1时清零,led为“00000000”,light为“00000000”;当clr置0时,开始显示,随着时钟,led依次为“10000000”,“01000000”~“00000001”,而数码管也依次显示1,2~8。

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