ZKX's LAB

四个七段数码管 verilog 数字时钟 试用Veriloghdl设计一个七段数码管的显示译码器,要求可以同时兼容共阴共阳数码管

2020-07-25知识11

试用Veriloghdl设计一个七段数码管的显示译码器,要求可以同时兼容共阴共阳数码管 module led8_display(clk,rst,comsel,en,play);input clk;input rst;input comsel;output[7:0]en;output[7:0]play;reg[30:0]count;reg[7:0]en;reg[7:0]play;always@(posedge clk or negedge rst)beginif。rst)beginif(comsel)/共阳译7a64e78988e69d8331333330363866码begincount;en;play;endelsebegincount;en;play;endendelsebegincount;case(count[30:28])3'b000:beginif(consel)beginen;play;endelsebeginen;play;endend3'b001:beginif(comsel)beginen;play;endelsebeginen;play;endend3'b010:beginif(consel)beginen;play;endelsebeginen;play;endend4'b011:beginif(consel)beginen;play;endelsebeginen;play;endendendcaseendendendmodule这个是我刚刚写的4位7段数码管流水灯显示1-4的程序,希望对你有用,按题目要求,你只需把代码中时钟分频器寄存器变量count删去、output reg[7:0]en;改成“output reg en,4位动态case显示改成单数码管静态显示就行了…数字钟数码管显示不全是什么原因? 因为没有具体线路图,只能先猜测。不知道74LS48到数码管之间有没有加驱动,不然输出电流可能有些不足。加之数码管各段一致性问题。可能会导致些显示异常。另外前面也要考虑一些时序问题和线路排布上的干扰问题。可以用逻辑分析仪抓取74LS60的输出波形,74LS48的输入和输出波形进行分析,看数据上(每根线的逻辑)有没有异常。如果没有异常,很可能是后端数码管部分硬件问题(含其驱动部分)。供参考。谁能提供:用Verilog HDl 语言编写:能显示时,分,秒的数字时钟,同时能在6个共阳极管上显示,可实异步清 module display(clk,reset,seg_r,dig_r);input clk;input reset;output[7:0]seg_r;output[7:0]dig_r;reg[25:0]count;reg[15:0]hour;reg sec;reg[4:0]disp_dat;reg[7:0]seg_r;reg[7:0]dig_r;always@(posedge clk)/定义clock上升沿触发begincount=count+1'b1;if(count=26'd24000000)/0.5S到了吗?begincount=25'd0;计数器清零sec=~sec;置位秒标志endendalways@(negedge sec)/计时处理beginif(reset=0)hour[15:0]=0;elsebeginhour[3:0]=hour[3:0]+1'b1;秒加1if(hour[3:0]=4'ha)beginhour[3:0]=4'h0;hour[7:4]=hour[7:4]+1'b1;秒的十位加一if(hour[7:4]=4'h6)beginhour[7:4]=4'h0;hour[11:8]=hour[11:8]+1'b1;分个位加一if(hour[11:8]=4'ha)beginhour[11:8]=4'h0;hour[15:12]=hour[15:12]+1'b1;分十位加一if(hour[15:12]=4'h6)hour[15:12]=4'h0;endendendendendalways@(posedge clk)/count[17:15]大约1ms改变一次begincase(count[17:15])/选择扫描显示数据3'd0:disp_dat=hour[3:0];秒个位3'd1:disp_dat=hour[7:4];秒十位3'd2:disp_dat=4'ha;显示\"-3'd3:disp_dat=hour[11:8];分个位3'd4:disp_dat=hour[15:12];分十位3'd5:disp_dat=4'ha;显示\"-。数字钟原理? 数字钟的基本功能是显示时间,可以通过计数器的级联实现。以4位数码管的数字钟为例,设定前两位为小时,后两位为分钟,数码管的小数点闪烁可以表示秒。首先产生一个1Hz的方波信号,在它的触发下驱动小数点闪烁。在这个1Hz的基础上,可以产生1/60Hz的信号(对1Hz信号计数,每计数30次就将输出反相,得到1/60Hz信号),它就是分钟信号需要的时钟。在这个时钟的触发下分钟位数码管依次加1,直到60时变为0,再重新开始计数。清零的时候要产生一个进位,加到小时上面。其他时间小时位保持不变。51单片机实现数字时钟,用四位数码管实现分计时,显示分和秒,可以任意设置时间。真的不懂啊。设计要求是:用四位数码管实现分计时,显示分和秒,可以任意设置时间。。用VHDL语言编写一数字时钟 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity digital isport(Clk:in std_logic;时钟输入Rst:in std_logic;复位输入S1,S2:in std_logic;时间调节输入led:out std_logic_vector(3 downto 0);整点输报时输出spk:out std_logic;Display:out std_logic_vector(6 downto 0);七段码管显示输出SEG_SEL:buffer std_logic_vector(2 downto 0)-七段码管扫描驱动end digital;architecture behave of digital issignal Disp_Temp:integer range 0 to 15;signal Disp_Decode:std_logic_vector(6 downto 0);signal SEC1,SEC10:integer range 0 to 9;signal MIN1,MIN10:integer range 0 to 9;signal HOUR1,HOUR10:integer range 0 to 9;signal Clk1kHz:std_logic;数码管扫描时钟signal Clk1Hz:std_logic;时钟计时时钟signal led_count:std_logic_vector(2 downto 0);signal led_display:std_logic_vector(3 downto 0);signal spkcout:std_logic;beginPROCESS(clk)-产生1hz信号variable cnt:INTEGER RANGE 0 TO 49999999;产生1Hz时钟的分频计数器BEGINIF clk='1' AND clk'event THENIF cnt=。Verilog HDL的数字秒表和电子时钟设计 在module paobiao中把执行条件srt=1,在module shizhong中把执行条件srt=0;通过按键消抖,当按键按一下是对外部srt=~srt执行一次。其他的计时很容易设计。。如何用vhdl语言编写一个8位七段数码管 实现动态扫描,比如让8位数码管在同一时刻分别显示876543210; PROCESS(HighCLK)-动态数码管控制显示部分BEGINIF HighCLK 'EVENT AND HighCLK='1' THENCASE Q ISWHEN 0=>;Y;VIEW(7 DOWNTO 4);Q;WHEN 1=>;Y;VIEW(3 DOWNTO 0);Q;WHEN 2=>;Y;VIEW(7 DOWNTO 4);Q;WHEN 3=>;Y;VIEW(3 DOWNTO 0);Q;WHEN 4=>;Y;VIEW(7 DOWNTO 4);Q;WHEN 5=>;Y;VIEW(3 DOWNTO 0);Q;WHEN 6=>;Y;VIEW;Q;WHEN 7=>;Y;VIEW;Q;WHEN OTHERS=>;Q;END CASE;ELSE NULL;END IF;END PROCESS;给分吧HighCLK是扫描时钟设一个较高的时钟就行,我一般是设定为2000 HZ,VIEW 接你要显示的信号,Y 控制第几个数码管显示,比如你要第一个数码管显示8就把第一条改成:WHEN 0=>;Y;VIEW;Q;

#电子钟#时钟信号#数码管

随机阅读

qrcode
访问手机版