求一个数字钟vhdl程序: 设计一个能显示1/10秒、秒、分、时的12小时数字钟

作者&投稿:钟齐 (若有异议请与网页底部的电邮联系)
求一个数字钟VHDL程序: 设计一个能显示1/10秒、秒、分、时的12小时数字钟 邮箱1176258253@qq.com~

一、数字钟的组成与基本原理
一、课程名称:数字电子钟的设计。
二、内容:设计并制作一台数字电子钟,完成设计说明书。
三、设计内容及要求:
设计内容:要求由所学的数字电子知识以及查阅有关资料设计并制作出一台数字电子钟。而且要完成电路的装配和调试。设计基本框图如下:
.......
四、要求:1>.采用位数码管,显示范围0分00秒——23时59分59秒。
2>.提出至少两种设计实现方案,并优选方案进行设计。
3>.详细说明设计方案,并计算元件参数。包括选择的依据和原理,参数确定的根据。
4>当电路发生走时误差时,要求电路具有校时功能。3、要求电路具有整点报时功能,报时声响为四低一高,最后一响正好为整点。
五、数字钟的基本原理
数字电子钟的原理方框图如图1所示。干电路系统由秒信号发生器,"时、分、秒计数器、译码器及显示器、校时电路、整点报时电路组成。秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器加分频器来实现。将标准秒信号送入"秒计数器","秒计数器"采用60进制计数器,每累计60秒发一个"分脉冲"信号,该信号将作为"分计数器"的时钟脉冲。"分计数器"也采用60进制计数器,每累计60分钟,发出一个"时脉冲"信号,该信号将被送到"时计数器"。"时计数器"采用24进制计时器,可实现对一天24小时的累计。译码显示电路将"时"、"分"、"秒"计数器的输出状态菁七段显示译码器译码,通过六位LED七段显示器显示出来。整点报时电路时根据计时系统的输出状态产生一脉冲信号,然后去触发一音频发生器实现报时。校时电路时用来对"时"、"分"、"秒"显示数字进行校对调整的希望可以帮到你.!

自己做的,带年月日的
P1口接8个按键
P2低四位接74ls48P2.4接数码管dp高三位接74ls138
#include //头文件//
#define uchar unsigned char
#define uint unsigned int
#define ulint unsigned long int
#define tn0h 0x70
#define tn0l 0x00
#define tn1h 0x70
#define tn1l 0x01
uchar signtime[8]={0x00,0x06,0x0f,0x03,0x00,0x0f,0x00,0x00};
uchar signdate[8]={0x00,0x08,0x0f,0x00,0x04,0x0f,0x02,0x03};
uchar tcount,tflag=0;
uchar flag=1;
//***********10ms延时*************//
void delay10ms(void)
{uchar i=255;
uchar j=255;
while(i>0)
{j=255;
while(j>0)
j--;
i--;
}
}
//***********延时*************//
void delay(uchar s)
{uchar l;
for(l=0;l<=s;l++);
}
//***********键盘扫描 时间修改*************//
void keyscan()
{uchar key=0;
if(P1!=0xff)
{delay10ms();
if(P1==0x7f)flag++;
if(flag>1)flag=0;
if(flag==1)
{if(P1==0xfe)signtime[0]++;
if(P1==0xfd)signtime[1]++;
if(P1==0xfb)signtime[3]++;
if(P1==0xf7)signtime[4]++;
if(P1==0xef)signtime[6]++;
if(P1==0xdf)signtime[7]++;
if(signtime[0]>2)
signtime[0]=0;
if(signtime[1]>9)
signtime[1]=0;
if(signtime[3]>5)
signtime[3]=0;
if(signtime[4]>9)
signtime[4]=0;
if(signtime[6]>5)
signtime[6]=0;
if(signtime[7]>9)
signtime[7]=0;
if(signtime[0]==2&&signtime[1]==4)
{signtime[0]=0;
signtime[1]=0;} }

if(flag==0)
{if(P1==0xfe)signdate[0]++;
if(P1==0xfd)signdate[1]++;
if(P1==0xfb)signdate[3]++;
if(P1==0xf7)signdate[4]++;
if(P1==0xef)signdate[6]++;
if(P1==0xdf)signdate[7]++;
if(signdate[0]>9)
signdate[0]=0;
if(signdate[1]>9)
signdate[1]=0;
if(signdate[3]>1)
signdate[3]=0;
if(signdate[4]>9)
signdate[4]=0;
if(signdate[6]>3)
signdate[6]=0;
if(signdate[7]>9)
signdate[7]=0;
if(signdate[3]==1&&signdate[4]==3)
{signdate[3]=0;
signdate[4]=1;}
if(signdate[6]==3&&signdate[7]==2)
{signdate[6]=0;
signdate[7]=1;} }
}
}
//***********时间刷新*************//
void timechange()
{signtime[7]+=1;
if(signtime[7]==10)//秒
{signtime[7]=0;
signtime[6]+=1;}
if(signtime[6]==6)//秒
{signtime[6]=0;
signtime[4]+=1;}
if(signtime[4]==10)//分
{signtime[4]=0;
signtime[3]+=1;}
if(signtime[3]==6)//分
{signtime[3]=0;
signtime[1]+=1;}
if(signtime[1]==10)//时
{signtime[1]=0;
signtime[0]+=1;}
if(signtime[0]==2&&signtime[1]==4)//时
{signtime[0]=0;
signtime[1]=0;
signdate[7]++;}
//大月31天
if((signdate[3]==0&&signdate[4]==1)||(signdate[3]==0&&signdate[4]==3)||(signdate[3]==0&&signdate[4]==5)||(signdate[3]==0&&signdate[4]==7)||(signdate[3]==0&&signdate[4]==8)||(signdate[3]==1&&signdate[4]==0)||(signdate[3]==1||signdate[4]==2))
{if(signdate[7]==10)//日
{signdate[7]=0;
signdate[6]+=1;}
if(signdate[6]==3&&signdate[7]==2)//日
{signdate[6]=0;signdate[7]=1;
signdate[4]+=1;}
if(signdate[4]==10)//月
{signdate[4]=0;
signdate[3]+=1;}
if(signdate[3]==1&&signdate[4]==2)//月
{signdate[3]=0;signdate[4]=1;
signdate[1]+=1;}
if(signdate[1]==10)//年
{signdate[1]=0;
signdate[0]+=1;} }
//小月30天
if((signdate[3]==0&&signdate[4]==4)||(signdate[3]==0&&signdate[4]==6)||(signdate[3]==0&&signdate[4]==9)||(signdate[3]==1&&signdate[4]==1))
{if(signdate[7]==10)//日
{signdate[7]=0;
signdate[6]+=1;}
if(signdate[6]==3&&signdate[7]==1)//日
{signdate[6]=0;signdate[7]=1;signdate[4]+=1;}
if(signdate[4]==10)//月
{signdate[4]=0;
signdate[3]+=1;}
if(signdate[3]==1&&signdate[4]==3)//月
{signdate[3]=0;signdate[4]=1;signdate[1]++;}
if(signdate[1]==10)//年
{signdate[1]=0;
signdate[0]+=1;} }

//2月28天
if(signdate[3]==0&&signdate[4]==2)
if(signdate[6]==2&&signdate[7]==9)
{signdate[7]=1;signdate[6]=0;signdate[4]+=1; } }
//***********一秒定时 50ms扫描键盘*************//
void t1(void) interrupt 3 using 2
{TR1=0;
TH1=tn1h;
TL1=tn1l;
TR1=1;
tcount++;
if(tcount==50) //一秒定时
{tflag=1;
tcount=0;
timechange();
}
keyscan();
}
//************显示程序************//
void display(void)
{uchar i=0;
uchar a=0;
for(i=0;i<8;i++)
{if(flag==1)
P2=signtime[i]+a;
else
P2=signdate[i]+a;
a+=32;
delay(50);
}
}
//*************主程序*************//
void main()
{TMOD=0x11; //定时器工作模式 方式一
TH0=tn0h; //
TL0=tn0l; //
TH1=tn1h; //
TL1=tn1l; //
TR1=1; //启动定时器一
ET0=0; //允许定时器0中断
ET1=1; //允许定时器1中断
EA=1;
while(1)
{display();
}
}

给你一个设计思路吧:
1。首先是系统CLK的选择,由于你要显示1/10秒,也就是100ms为一个基本单位,这样你的时钟频率最低不能小于10Hz。
2。写几个计数器。
1。第一个计数器用于1/10秒到1秒之间的技术,计10个清0,输出一个控制信号a;
2。第二个计数器用于1秒到1分之间的技术,每来一个a,计数一次;计数到60,清0,同时输出一个b。
3。第三个计数器依次类推了。。
3。如果希望用数码管显示,那么通常常用的是8bit输入的数码显示译码管,那么你需要在计数的同时,将计数器的值输出译码管的输入,就可以了。
还搞不定的话,说一下,我帮你写


求一个数字钟vhdl程序: 设计一个能显示1\/10秒、秒、分、时的12小时数 ...
1。首先是系统CLK的选择,由于你要显示1\/10秒,也就是100ms为一个基本单位,这样你的时钟频率最低不能小于10Hz。2。写几个计数器。1。第一个计数器用于1\/10秒到1秒之间的技术,计10个清0,输出一个控制信号a;2。第二个计数器用于1秒到1分之间的技术,每来一个a,计数一次;计数到60,清0...

数字钟设计 用VHDL语言实现 你怎么做的
SEC_EN<='1';MIN_EN<='1';HOUR_EN<='1';DAY_EN<='1';MON_EN<='1';YEAR_EN<='1';WEEK_EN<='1';CASE MODE IS WHEN NORMAL => MODE<=SEC_SET;SEC<=SEC_CUR;SEC_EN<='0';WHEN SEC_SET => MODE<=MIN_SET;MIN<=MIN_CUR;SEC_EN<='1';MIN_EN<='0';WHEN MIN_SET...

数字钟vhdl程序代码源
if stop='1' then cnt0:=cnt0; cnt1:=cnt1; end if;if cnt1="1001" and cnt0="1000" then---当记数为98(实际是经过59个记时脉冲)co<='1';---进位cnt0:="1001";---低位为9elsif cnt0<"1001" then---小于9时cnt0:=cnt0+1;---计数--elsif cnt0="1001" then--clk1<=not clk1;...

vhdl 数字钟
u1 : count60 port map(carry=>clk_1h,rst=>reset,times=>abin1,full=>carry1); u2 : count60 port map(carry=>carry1,rst=>reset,times=>abin2,full=>carry2); u3 : count24 port map(carry=>carry2,rst=>reset,times=>abin3); u4 : i60bcd port map(interg=>abin1,ten=>sh,one=>sl...

vhdl数字钟的 CLOCK引脚是啥意思
pin assignment file里的)如果没有,自己分配时,要看你的板子上的引脚都怎么与FPGA芯片链接的,然后查pin planner 图,找到正确的pin,比如7 seg LED 一般会连到FPGA的某几个pin上,至于clk signal,FPGA内部有专门的PLL clock source,你把你的clk信号名assign给clock source pin 即可。

基于VHDL语言的自动打铃数字钟设计
其中主体电路完成数字钟的基本功能,扩展电路完成数字钟的扩展功能。论文安排如下: 1、绪论 阐述研究电子钟所具有的现实意义。 2、设计内容及设计方案 论述电子钟的具体设计方案及设计要求。 3、单元电路设计、原理及器件选择 说明电子钟的设计原理以及器件的选择,主要从石英晶体振荡器、分频器、计数器、显示器和校时...

用VHDL语言设计一个12小时数字钟,用数码管现实时分秒,实现整点报时功能...
一个12进制计数器+一个60进制计数器+一个60进制计数器当分\/秒计数器输出达到整点报时状态是输出报时信号。如果要代码的话,找我Q Q 聊

vhdl数字钟的代码
enmin <='1';else enmin<=emin;end if;end if;end if;end process;process(clk,secl)alias lcount: std_logic_vector(3 downto 0)is sec (3 downto 0);alias hcount:std_logic_vector(2 downto 0)is sec (6 downto 4);begin if secl='1' then sec<="0000000";else if (clk...

求助~vhdl 数字钟闹钟时间延长到2分钟,用led灯显示。
这个简单,有个使能信号,闹钟开始为1,计数两分钟,然后使能信号为0。把这个使能信号的值赋给led的引脚

基于vhdl电子秒表的系统设计怎么做?
一、实验原理 :用层次化设计的方法以VHDL语言编程实现以下功能:【1】具有“时”、“分”、“秒”计时功能;时为24进制,分和秒都为60进制。【2】具有消抖功能:手工按下键盘到是否这个过程大概50ms左右,在按下开始到弹簧片稳,定接触这段时间为5-10ms,从释放到弹片完全分开也是5-10ms,在达到...

凤县17253269577: 用VHDL语言编写一数字时钟 -
殷俘冠心: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all;-------------------------------------------------------------------- entity digital is port( Clk : in std_logic; --时钟输入 Rst : in std_logic; --复位输入 S1,S2 : in std_...

凤县17253269577: 基于VHDL的数字钟设计 -
殷俘冠心: 原发布者:晴空微澜20 数字时钟设计一、题目分析1、功能介绍1)具有时、分、秒计数显示功能,以24小时循环计时.2)时钟计数显示时有LED灯的花样显示.3)具有调节小时、分钟及清零的功能.4)具有整点报时功能.2、总体方框图3...

凤县17253269577: VHDL电子时钟设计 -
殷俘冠心: 基于CPLD的VHDL语言数字钟(含秒表)设计 利用一块芯片完成除时钟源、按键、扬声器和显示器(数码管)之外的所有数字电路功能.所有数字逻辑功能都在CPLD器件上用VHDL语言实现.这样设计具有...

凤县17253269577: 用VHDL语言设计一个12小时数字钟,用数码管现实时分秒,实现整点报时功能
殷俘冠心: 一个12进制计数器+一个60进制计数器+一个60进制计数器 当分/秒计数器输出达到整点报时状态是输出报时信号. 如果要代码的话,找我Q Q 聊

凤县17253269577: 基于VHDL的数字钟设计
殷俘冠心: -------------------------------------------时间设置小时部分 sethour1:process(clk,seth2) begin if clk'event and clk='1' then if seth1="0010"and seth2="0011" then seth1<="0000"; elsif seth2="1001" then seth1<=seth1+1; end if; end if; end process ...

凤县17253269577: 求vhdl 的 数字时钟代码 有时分秒的 -
殷俘冠心: 下面是笔者写过的一个液晶显示时钟改成的数码管显示时钟,已经通过编译,不过没有硬件实践,(液晶显示通过了硬件验证).你可以验证一下!另带有时间调整功能,如不需要可删除. (时钟频率可自行修改成1s)library ieee; use ieee.std...

凤县17253269577: 基于VHDL语言的数字钟的层次化设计 -
殷俘冠心: 此数字钟是以24小时制记时,当到整点时会报时一分钟,按下清零键时也会报时一分钟.主要元件有计数器,分频器,报时器,选择器和译码器等.控制逻辑主要是用来实现计数和清零.基本方框图如下:留下邮箱,给你把正文发过去.

凤县17253269577: 用vhdl设计简单时钟 -
殷俘冠心: http://wenku.baidu.com/view/1f74c8a00029bd64783e2cad.html供你参考,这个时2113钟设计不知被多少人做过了5261,网上代码多的是,4102一模一样我不敢说,但1653是稍作改动都可以用专的,ps:还是自己尝试着属去写...

凤县17253269577: 用VHDL语言写数字钟,要有整点报时的 -
殷俘冠心: a.秒计数器设计(xsecond)<br>LIBRARY IEEE;<br> USE IEEE.STD_LOGIC_1164.ALL;<br> USE IEEE.STD_LOGIC_UNSIGNED.ALL;<br> USE IEEE.STD_LOGIC_ARITH.ALL;<br> entity xsecond is<br> port (clk:in std_logic;<br> clkset:in std_...

凤县17253269577: 基于FPGA技术的数字时钟万年历设计 -
殷俘冠心: 【实验目的】: 设计一个24小时制数字钟,要求能显示时,分,秒,并且可以手动调整时和分 【试验中所用器材】: 开发环境MAX—PLUSII,ZY11EDA13BE 试验系统, VHDL 语言. 【设计原理】 数字钟的主体是计数器,它记录并显示接收到...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网