实验四 七段数码管显示电路一、实验目的实现十六进制计数显示。二、硬件需求EDA/SOPC实验箱一台。三、实验原理七段数码管分共阳极与共阴极两种。共阳极数码管其工作特点是,当笔段电极接低电平,公共阳极接高电平时,相应笔段可以发光。共阴极数码管则与之相反,它是将发光二极管的阴极短接后作为公共阴极,当驱动信号为高电平、公共阴极接低电平时,才能发光。图2-13为共阳极数码管和共阴极数码管的内部结构图。图2-13 共阳极数码管和共阴极数码管的内部结构图用七段数码管除了可以显示0~9的阿拉伯数字外,还可以显示一些英语字母。下表是常见的字母与7段显示关系(共阴极数码管)。
段字母 a b c d e f g
A 0 0 0 1 0 0 0
B 1 1 0 0 0 0 0
C 0 1 1 0 0 0 1
D 1 0 0 0 0 1 0
E 0 1 1 0 0 0 0
F 1 0 0 0 1 1 1
H 0 1 1 0 1 1 1
四、实验内容编写一个0~F轮换显示的电路(注意:选用实验箱中的共阳数码管DP1A,FPGA上P25引脚连接50MHz时钟。实验时为了便于观察,要将50MHz时钟经过分频得到1Hz时钟)。五、实验步骤(1)实验程序LIBRARY IEEE;USE IEEEstd_logic_1164all;USE IEEEstd_logic_unsignedall;ENTITY exp2 ISGENERIC(n:INTEGER :=6);port(clk: IN std_logic;led: OUT std_logic_vector(6 DOWNTO 0));END exp2;ARCHITECTURE example OF exp2 ISSIGNAL sel:INTEGER RANGE 0 TO n-1 :=0;SIGNAL f_out:std_logic;SIGNAL count:INTEGER RANGE 0 TO 15 :=0;
BEGINPROCESS(clk)BEGINIF clk'event and clk='1' THENIF sel>n-2 THEN sel<=0;ELSEIF sel>=n/2 THENf_out<='1';ELSEf_out<='0';END IF;sel<=sel+1;END IF;END IF;END PROCESS;PROCESS(f_out)BEGINIF f_out'event and f_out='1' THENIF count<=15 THENcount<=count+1;ELSEcount<=0;END IF;END IF;END PROCESS;PROCESS(count)BEGINCASE count ISWHEN 0 => led <="0000001";WHEN 1 => led <="1001111";WHEN 2 => led <="0010010";WHEN 3 => led <="0000110";WHEN 4 => led <="1001100";WHEN 5 => led <="0100100";WHEN 6 => led <="0100000";WHEN 7 => led <="0001111";WHEN 8 => led <="0000000";WHEN 9 => led <="0000100";WHEN 10 => led <="1110111";WHEN 11 => led <="0011111";WHEN 12 => led <="1001110";WHEN 13 => led <="0111101";WHEN 14 => led <="1001111";WHEN 15 => led <="0111000";
¥
59
百度文库VIP限时优惠现在开通,立享6亿+VIP内容
立即获取
可编程逻辑器件实验EDA-七段数码管显示电路
实验四 七段数码管显示电路
一、实验目的
实现十六进制计数显示。
二、硬件需求
EDA/SOPC实验箱一台。
三、实验原理
七段数码管分共阳极与共阴极两种。共阳极数码管其工作特点是,当笔段电极接低电平,公共阳极接高电平时,相应笔段可以发光。共阴极数码管则与之相反,它是将发光二极管的阴极短接后作为公共阴极,当驱动信号为高电平、公共阴极接低电平时,才能发光。图2-13为共阳极数码管和共阴极数码管的内部结构图
软件是要硬件支持的 下面有个图参考
程序可能要调试一下 你是 高手这个应该没什么问题吧。。。
LED BIT P37 ;指示灯
TT0 EQU 09H
TT1 EQU 0AH
TT2 EQU 0BH ;位定义
XIAN0 EQU 50H
XIAN1 EQU 51H
XIAN2 EQU 52H
XIAN3 EQU 53H ;显存定义
FEN EQU 54H ;分存定义
SHI EQU 55H ;时存定义
ZHI EQU 57H ;按钮暂存内容定义
FLASH BIT 30H ;闪烁标志位定义
SBIAO BIT 31H ;定时器工作两种状态的标志位
KEY BIT 32H ;正常工作时屏蔽“加键”标志位
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP NIEDS0
ORG 0050H
MAIN:
MOV SP,#60H
MOV ZHI,#00 ;按钮初始值
MOV R7,#10
MOV R6,#2
MOV R5,#10
MOV R4,#2
MOV XIAN0,#0
MOV XIAN1,#0
MOV XIAN2,#0
MOV XIAN3,#0
MOV R0,#FEN
MOV FEN,#0
MOV SHI,#0
MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
SETB FLASH ;开机显示不闪
SETB SBIAO ;开机定时器正常工作
SETB LED
CLR KEY ;初始屏蔽加键
SETB TR0
SETB ET0
SETB EA
NIEXQ:
LCALL DISP
LCALL KEYHAND
LJMP NIEXQ
NIEDS0:
PUSH ACC
PUSH PSW
JNB SBIAO,DSSS ;判断是正常工作还是闪烁标志位取反
DJNZ R5,NIEOUT
MOV R5,#10
CPL LED ;指示灯1S闪烁,因为是取反,所以要500MS取反一次
DJNZ R4,NIEOUT
MOV R4,#2
MOV A,FEN
INC A
MOV FEN,A
CJNE A,#60,NIEOUT
MOV FEN,#0
MOV A,SHI
INC A
MOV SHI,A
CJNE A,#24,NIEOUT
MOV SHI,#0
AJMP NIEOUT
DSSS:
DJNZ R7,NIEOUT
MOV R7,#10
CPL FLASH ;进入调整状态,标志位取反,显示中判断
CPL LED ;指示灯在调整时也闪烁
DJNZ R6,NIEOUT
MOV R6,#2
NIEOUT:
MOV TH0,#3CH
MOV TL0,#0B0H
POP PSW
POP ACC
RETI
DISP:
LCALL PAND ;判断子程序,为了达到调整时闪烁
CLR P33
SETB P32
SETB P31
SETB P30 ;直接对独立指定位CLR/SETB是为了不影响到P37指示灯的闪烁
MOV A,XIAN0
LCALL CHAB ;查段码
CLR P32
SETB P33
SETB P31
SETB P30 ;直接对独立指定位CLR/SETB是为了不影响到P37指示灯的闪烁
MOV A,XIAN1
LCALL CHAB ;查段码
CLR P31
SETB P32
SETB P33
SETB P30 ;直接对独立指定位CLR/SETB是为了不影响到P37指示灯的闪烁
MOV A,XIAN2
LCALL CHAB ;查段码
CLR P30
SETB P31
SETB P32
SETB P33 ;直接对独立指定位CLR/SETB是为了不影响到P37指示灯的闪烁
MOV A,XIAN3
LCALL CHAB ;查段码
RET
CHAB:
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P1,A
LCALL DELAY
MOV P1,#0FFH
RET
PAND: ;判断是否闪烁???
MOV A,R0
CJNE A,#FEN,PPS
JNB FLASH,FFS
LCALL DIVDIV
RET
FFS:
MOV XIAN1,#10
MOV XIAN0,#10
RET
PPS:
JNB FLASH,SSS
LCALL DIVDIV
RET
SSS:
MOV XIAN2,#10
MOV XIAN3,#10
RET
DIVDIV: ;分``时分解
MOV A,FEN
MOV B,#10
DIV AB
MOV XIAN1,A
MOV XIAN0,B
MOV A,SHI
MOV B,#10
DIV AB
MOV XIAN3,A
MOV XIAN2,B
RET
KEYHAND: ;按键扫描子程序
LCALL KAP
JZ NOKEY
PUSH P1 ;暂存P1状态!!
LCALL DISP
POP P1
LCALL KAP
JZ NOKEY
MOV A,P1
JNB ACC0,K1
JNB ACC1,K2
NOKEY:
RET
KAP: ;通用型KAP
MOV A,P1
ORL A,#0FCH
CPL A
RET
DENDAI: ;等待键d起
PUSH P1
LCALL DISP
POP P1
LCALL KAP
JNZ DENDAI
RET
K1:
LCALL DENDAI
MOV A,ZHI
INC A
MOV ZHI,A
CJNE A,#1,KTF
CLR SBIAO ;按第一次时开启定时器中FLASH标志位取反``
SETB KEY ;取消屏蔽
RET
KTF:
CJNE A,#2,KKAI
MOV R0,#SHI ;按第二次属调时
RET
KKAI:
CJNE A,#3,K1OUT
MOV ZHI,#0
MOV R0,#FEN ;恢复初始状态``调分
SETB SBIAO ;开启定时1S工作
SETB FLASH ;判断PAND子程序中用到
CLR KEY ;屏蔽K2键
K1OUT :
RET
K2:
JNB KEY,K2OUT ;是否屏蔽
LCALL DENDAI
MOV A,R0
CJNE A,#FEN,KKS ;是否调分
MOV A,FEN
INC A
MOV FEN,A
CJNE A,#60,K2OUT
MOV FEN,#0
RET
KKS: ;不是调分``一定是调时
MOV A,SHI
INC A
MOV SHI,A
CJNE A,#24,K2OUT
MOV SHI,#0
K2OUT:
RET
DELAY:
MOV TT1,#02
DEE1:
MOV TT2,#0FFH
DJNZ TT2,$
DJNZ TT1,DEE1
RET
TAB:
DB 0FH,1FH,2FH,3FH,4FH,5FH,6FH,7FH,8FH,9FH,0FFH
END
就是用计数器,240hz时,每一个1/240 产生一个时钟上升沿,这是你的基本时钟,用来计数,记到240时就赋值一次,这个值就是1hz的了,其他的同理,只是计数的个数不一样,10hz就计数24次,
16hz就计数15次,如果要得到26元计费控制,则要产生一个26hz的频率,240hz不能直接分频到26的,因为他们不是整数倍关系,要先进行倍频再分频,比如倍频13倍,再分频120倍就得到26hz了
追问
我已经研究到了。260HZ可以满足到。你是唯一一个回复这么准确。分给你
以上就是关于eda实验如何实现60进制计数器七段数码管的显示全部的内容,包括:eda实验如何实现60进制计数器七段数码管的显示、数字时钟kell 程序、eda 怎么产生一个固定频率的时钟信号等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)