仿广播电台整点报时数字钟设计.docx

上传人:b****3 文档编号:3747312 上传时间:2022-11-25 格式:DOCX 页数:26 大小:227.72KB
下载 相关 举报
仿广播电台整点报时数字钟设计.docx_第1页
第1页 / 共26页
仿广播电台整点报时数字钟设计.docx_第2页
第2页 / 共26页
仿广播电台整点报时数字钟设计.docx_第3页
第3页 / 共26页
仿广播电台整点报时数字钟设计.docx_第4页
第4页 / 共26页
仿广播电台整点报时数字钟设计.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

仿广播电台整点报时数字钟设计.docx

《仿广播电台整点报时数字钟设计.docx》由会员分享,可在线阅读,更多相关《仿广播电台整点报时数字钟设计.docx(26页珍藏版)》请在冰豆网上搜索。

仿广播电台整点报时数字钟设计.docx

仿广播电台整点报时数字钟设计

 

赣南师院

物理与电子信息学院

课程设计报告书

 

姓名:

甘松华

班级:

电子科学与技术06级

学号:

060803037

时间:

2008年12月

 

设计题目

仿广播电台整点报时数字钟设计

设计要求

 设计一数字钟,实现以下功能:

1.具有时、分、秒计数显示功能,以24小时循环计时;

2.具有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间,并能对计时清零;

3.具有仿广播电台整点报时的功能,整点报时的同时LED灯花样显示。

设计过程

一、系统方案选择和论证

1、数字钟系统方案选择和论证

本设计的总体组成框图如图1所示:

数字钟电路系统由主体电路和拓展电路两大部分组成。

其中,主体电路完成数字钟的基本功能,拓展电路完成电路的拓展功能。

该系统的工作原理是:

震荡器产生的稳定高频脉冲信号,完成数字钟的时间基准,再经分频器输出标准秒脉冲。

秒计数器计满60后向分计数器进位,分计数器计满60后向小时计数进位,小时计数器按“12翻1”规律计数。

计数器的输出经译码器送显示器。

计时出现误差时可以用校时电路进行校时、校分、校秒。

拓展电路必须在主体电路正常运行的情况下才能进行功能拓展。

采用译码器接到分计数器和秒计数器相应的输出端,使计数器运行到差十秒整点报时,利用分频器输出的500HZ和1000HZ的信号加到音响电路中,用于模仿电台报时:

每当数字钟计时快要正点时发出声响,按照4低音一高音的顺序发出间断声响,以最后一声高音的时刻为正点时刻。

LED灯也依次轮流显示。

在EDA实验室可以直接通过实验箱上的频率脉冲给该电路图添加所需要的频率,而不需要我们自己设计。

下面通过硬件中数字钟所需要的频率来设计电路。

实验中需要的是1HZ的脉冲,通过该脉冲使数字钟达到秒信号所需要的频率

 

图1多功能数字钟系统组成框图

1.1振荡器设计方案

振荡器是数字钟的核心。

振荡器的稳定度及频率的精确度决定了数字钟计时的准确程度,一般来说,振荡器的频率越高,计时精度越高

方案一:

采用由石英晶体与逻辑门及RC组成的多谐振荡电路,以产生符合要求的振荡脉冲。

方案二:

采用由555集成电路与RC组成多谐振荡器,以产生符合要求的振荡脉冲。

方案一采用石英晶体振荡器产生的脉冲频率稳定度高且精度很高,适宜于作为要求高精度的时钟基准脉冲,作为振荡器电路。

方案二产生的脉冲频率稳定度相对不高,但在要求不是很高的情况,可以采用方案二。

考虑到经济方面的原因,石英晶体震荡不宜采用,所以本实验采用方案二。

原理图如图2

图2振荡器原理图

这里选用由555构成多谐振荡器,振荡频率为fo=1KHZ

f=

假定C1=0.1uf,

得到R1=2K;R2=5.1K;

为了能使得到的频率更精确,再加一个阻值为10K的可调电阻。

1.2分频器的设计方案

分频器的主要功能有两个:

一是产生标准秒脉冲信号,二是提供扩展电路所需信号,仿广播电台报时用的1KHz的高音频信号和500Hz的低音频信号等。

选用3片中规模集成电路,计数器74LS90可以完成上述功能。

因每片为1/10分频,3片级联则可获得所需要的频率信号,即第一片的Q0输出频率为500Hz,第二片的Q3端输出为10Hz,第三片的Q3端输出为1Hz。

74LS90是二——五——十进制计数器,它有两个时钟输入端CP0和CP1。

其中CP0和Q0组成一位二进制计数器,CP1和Q3Q2Q1组成五进制计数器。

若将Q0和CP1相连接,时钟脉冲从CP0输入,则构成十进制计数器,74LS90有两个清零端Ro

(1),Ro

(2)和两个置9端R9

(1),R9

(2),它的功能表和管脚示意图如表1所示。

Ro

(1)

Ro

(2)

R9

(1)

R9

(2)

Q3

Q2

Q1

Q0

1

1

0

*

0

0

0

0

1

1

*

0

0

0

0

0

*

*

1

1

1

0

0

1

*

0

*

0

计数

0

*

0

*

0

*

*

0

*

0

0

*

表174LS90功能表

原理图如图3所示,仿真波形如图4所示

图3分频器原理图

 

图4分频器仿真图

1.3校时电路的设计方案

当数字钟接通电源或者计时出现误差时,需要校正时间。

校时是数字钟应具备的基本功能。

这里只进行分和小时校时。

对校时电路的要求是,在小时校正时不影响分和秒的正常计数;在分校正时不影响秒和小时的正常计数。

通过门电路实现对进位和校时信号的选择,用RS触发器做开关,可以通过控制RS触发器开关来选择是正常计时模式或是校时模式。

校时电路是由门电路构成的组合逻辑电路,可以完全使校时电路能稳定地工作。

图4所示校“时”、校“分”电路。

其中S1为校“时”用的控制开关,S2为校“分”用的控制开,他们的控制功能表如表2.3.1所示。

校时脉冲采用采用分频器输出的1Hz脉冲。

校时电路原理图如图5所示,仿真图如图6所示。

S1

R1

S2

R2

功能

0

×

0

×

计数

0

×

1

0

校分

1

0

0

×

校时

表2

图5校时电路原理图

图6校时电路仿真图

1.4时分秒计数器的设计方案

由于考虑到采用各种计数器集成块组成时序逻辑电路,虽然原理简单,但连线繁多,占用芯片非常多的I/O口,电路稳定性较差,而采用VHDL语言构建的模块稳定性好,而且连线少,节省了芯片的I/O口,因此采用VHDL语言构建模块的方法。

1.4.1小时计数模块VHDL源程序(HOUR)

LIBRARYieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

ENTITYhourIS

PORT(

clk,reset:

INSTD_LOGIC;

daout:

outstd_logic_vector(5downto0));

ENDentityhour;

ARCHITECTUREfunOFhourIS

SIGNALcount:

STD_LOGIC_VECTOR(5downto0);

BEGIN

daout<=count;

process(clk,reset)

begin

if(reset='0')then

count<="000000";

elsif(clk'eventandclk='1')then

if(count(3downto0)="1001")then

if(count<16#24#)then

count<=count+7;

else

count<="000000";

endif;

elsif(count<16#24#)then

count<=count+1;

else

count<="000000";

endif;

endif;

endprocess;

ENDfun;

小时计数原理图如图7所示,仿真图如图8所示

图7小时计数器原理图

图8小时计数器仿真图

1.4.2分计数模块VHDL源程序(MINUTE)

LIBRARYieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

ENTITYminuteIS

PORT(

clk,clk1,reset,sethour:

INSTD_LOGIC;

enhour:

OUTSTD_LOGIC;

daout:

outstd_logic_vector(6downto0));

ENDentityminute;

ARCHITECTUREfunOFminuteIS

SIGNALcount:

STD_LOGIC_VECTOR(6downto0);

BEGIN

daout<=count;

process(clk,reset,sethour)

begin

if(reset='0')then

count<="0000000";

elsif(sethour='0')then

enhour<=clk1;

elsif(clk'eventandclk='1')then

if(count(3downto0)="1001")then

if(count<16#60#)then

if(count="1011001")then

enhour<='1';

count<="0000000";ELSE

count<=count+7;

endif;

else

count<="0000000";

endif;

elsif(count<16#60#)then

count<=count+1;

enhour<='0'after100ns;

else

count<="0000000";

endif;

endif;

endprocess;

ENDfun;

分计数原理图如图9所示,仿真图如图10所示

图9分计数器原理图

图10分计数器仿真图

1.4.3秒计数模块VHDL源程序(SECOND)

LIBRARYieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

ENTITYsecondIS

PORT(

clk,reset,setmin:

INSTD_LOGIC;

enmin:

OUTSTD_LOGIC;

daout:

outstd_logic_vector(6downto0));

ENDentitysecond;

ARCHITECTUREfunOFsecondIS

SIGNALcount:

STD_LOGIC_VECTOR(6downto0);

BEGIN

daout<=count;

process(clk,reset,setmin)

begin

--enmin<=k;

if(reset='0')then

count<="0000000";

elsif(setmin='0')then

enmin<=clk;

elsif(clk'eventandclk='1')then

if(count(3downto0)="1001")then

if(count<16#60#)then

if(count="1011001")then

enmin<='1';

count<="0000000";ELSE

count<=count+7;

endif;

else

count<="0000000";

endif;

elsif(count<16#60#)then

count<=count+1;

enmin<='0'after100ns;

else

count<="0000000";

endif;

endif;

endprocess;

ENDfun;

秒计数原理图如图11所示,仿真图如图12所示

 

图11秒计数器原理图

图12秒计器数仿真图

1.5扫描显示模块的设计方案

在这里我们采用动态扫描显示方法。

通过信号选通器选通计数器的某一位经译码器到相应的那个数码管显示出来,其他各位不显示,在下一选通脉冲到来时选择下一位到数码管显示,如此循环。

当这个选通脉冲频率足够大时人眼就感觉不出六个数码管的交替亮灭,从而实现六位数的显示。

我们选用的七段译码驱动器(74LS48)和数码管(LED)是共阴极接法(需要输出高电平有效的译码器驱动)。

译码显示电路如图13所示。

图13译码显示电路

时间设置模块VHDL源程序(SELTIME)

LIBRARYieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

useieee.std_logic_arith.all;

ENTITYseltimeIS

PORT(

clk1,reset:

INSTD_LOGIC;

sec,min:

INSTD_LOGIC_VECTOR(6downto0);

hour:

instd_logic_vector(5downto0);

daout:

OUTSTD_LOGIC_vector(3downto0);

sel:

outstd_logic_vector(2downto0));

ENDseltime;

ARCHITECTUREfunOFseltimeIS

SIGNALcount:

STD_LOGIC_vector(2downto0);

BEGIN

sel<=count;

process(clk1,reset)

begin

if(reset='0')then

count<="000";

elsif(clk1'eventandclk1='1')then

if(count>="101")then

count<="000";

else

count<=count+1;

endif;

endif;

casecountis

when"000"=>daout<=sec(3downto0);

when"001"=>daout(3)<='0';

daout(2downto0)<=sec(6downto4);

when"010"=>daout<=min(3downto0);

when"011"=>daout(3)<='0';

daout(2downto0)<=min(6downto4);

when"100"=>daout<=hour(3downto0);

whenothers=>daout(3downto2)<="00";

daout(1downto0)<=hour(5downto4);

endcase;

endprocess;

endfun;

扫描信号电路原理图如图14,仿真图如图15

图14扫描信号电路原理图

图15扫描信号电路仿真图

1.6译码驱动模块的设计方案

译码驱动模块AHDL源程序(DELED)

SUBDESIGNdeled

num[3..0]:

INPUT;

a,b,c,d,e,f,g:

OUTPUT;

BEGIN

TABLE

num[3..0]=>a,b,c,d,e,f,g;

H"0"=>1,1,1,1,1,1,0;

H"1"=>0,1,1,0,0,0,0;

H"2"=>1,1,0,1,1,0,1;

H"3"=>1,1,1,1,0,0,1;

H"4"=>0,1,1,0,0,1,1;

H"5"=>1,0,1,1,0,1,1;

H"6"=>1,0,1,1,1,1,1;

H"7"=>1,1,1,0,0,0,0;

H"8"=>1,1,1,1,1,1,1;

H"9"=>1,1,1,1,0,1,1;

H"A"=>1,1,1,0,1,1,1;

H"B"=>0,0,1,1,1,1,1;

H"C"=>1,0,0,1,1,1,0;

H"D"=>0,1,1,1,1,0,1;

H"E"=>1,0,0,1,1,1,1;

H"F"=>1,0,0,0,1,1,1;

ENDTABLE;

END;

译码驱动电路原理图如图16,仿真图如图17

图16译码驱动电路原理图

图17译码驱动电路仿真图

1.7整点报时及LED花样显示模块的设计方案

整点报时及LED花样显示模块VHDL源程序(ALERT)

LIBRARYieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

ENTITYalertIS

PORT(

clk:

INSTD_LOGIC;

dain:

INSTD_LOGIC_VECTOR(6DOWNTO0);

speak:

OUTSTD_LOGIC;

lamp:

OUTSTD_LOGIC_VECTOR(2DOWNTO0));

ENDalert;

ARCHITECTUREfunOFalertIS

signalcount:

std_logic_vector(1downto0);

signalcount1:

std_logic_vector(1downto0);

BEGIN

speaker:

process(clk)

begin

speak<=count1

(1);

if(clk'eventandclk='1')then

if(dain="000000")then

if(count1>="10")then

count1<="00";

else

count1<=count1+1;

endif;

endif;

endif;

endprocessspeaker;

lamper:

process(clk)

begin

if(rising_edge(clk))then

if(count<="10")then

if(count="00")then

lamp<="001";

elsif(count="01")then

lamp<="010";

elsif(count="10")then

lamp<="100";

endif;

count<=count+1;

else

count<="00";

endif;

endif;

endprocesslamper;

ENDfun;

整点报时及LED灯花样显示模块原理图如图18,仿真图如图19所示。

图18整点报时及LED灯花样显示电路原理图

图19整点报时及LED灯花样显示电路仿真图

1.8总原理图

各模块设计确定后,得数字钟总原理图如图20

图20数字钟总原理图

数字钟总原理仿真图如图21

 

图21数字钟总原理仿真图

二、系统安装与调试

2.1输入与输出端接口

(1)SETMIN,SETHOUR、RESET分别接按键开关;

(2)A、B、C、D、E、F、G分别与数码管的a,b,c,d,e,f,g输入端相连;

(3)LAMP0,LAMP1,LAMP2分别和LED相接;

(4)时钟信号CLK接1HZ,扫描信号CLKDSP接32HZ以上频率信号(含32HZ);

(5)扫描片地址信号SEL0,SEL1,SEL2分别和字符点阵显示模块的四位扫描驱动地址SEL0~SEL3的低三位相连,最高位地址接“0”,也可以悬空;

(6)接口SPEAKER同实验箱的SPEAKER相接;

2.2性能测试与分析

电路编译完成后下载到Altera公司的EPM7128SLC84-15芯片中.数码显示管显示正常,说明扫描显示模块正确。

数码管显示数字从000000开始,秒、分、时显示正确,在输入为1Hz的时钟脉冲下经与标准表对照,秒计时的周期为1秒钟。

为了在短时间内测试秒、分、时进位是否正确,加大输入脉冲频率。

显示管显示秒、分、时进位正确。

数字从000000一直进位到235959后回到0000000,在每小时的59分的51、53、55、57、秒蜂鸣器鸣低音,59秒鸣高音,同时LED灯循环显示,完全符合设计要求中的“仿广播电台整点报时”这一要求。

按动SETMIN,SETHOUR分别实现对分和时的调整,手动校时功能正确,两者不相影响。

按下RESET键,时间回归到000000,说明计时清零功能正常。

2.3结论心得与体会

起初设计的时候是考虑用硬件实现,但是真正等到电路设计好准备焊接的时候就发现,这个电路过于复杂,光芯片就多达20多快,还有6个数码管,考虑到大量芯片集成于一块电路板,电路内部易产生干扰;电路过于复杂,在焊接的过程中难免会产生虚焊等焊接错误,所以最终决定软件实现。

由于课时还没有学到这种语言,对于初步接触并用设计电路有很大的困难。

为了设计的需要,学习了VHDL语言,参考了很多资料,经过对VHDL语言的学习后,有了一定的知识就开始对电路进行设计。

毕竟都是自学自用刚开始还是感到很难,经过一段时间的磨合后就越来越熟悉了,在设计中遇到的问题也更容易解决了。

经过认真的编写与调式最终在仿真软件上成功运行仿真。

本次课程设计中主要用到的是24进制和60进制。

计数器需要我们能充分掌握同步和异步之间的区别,以及置数和清零的区别。

对它们有了透彻的了解才能够正确地实现所需要的进制。

通过这次数字钟的设计,让我深深感受到了数字电路的重要性和实用性,也加深了对数字钟内部电路的认识,大大提高了逻辑思维能力,在逻辑电路的分析与设计上有了很大的进步。

同时也让我充分的了解的扫描显示电路的用法,及具体的实现过程。

由于本数字钟有6位数字需要显示,如果用普通的一个输出对应一个译码驱动器和一个数码管的静态显示方法,那么仅七端码输出就需要多达42个I/O口和数码管连线,显然这将占据大量I/O口,连线也很麻烦。

而采用动态扫描显示的方法仅需7根数码管连线就能实现多位显示需求,通过本设计深刻感受到动态扫描显示方法的优越性。

在设计电路的连接图中出错的主要原因都是接线和芯片的接触不良以及接线的错误所引起的.总的来说,通过这次的课程设计,不仅加深了对组合逻辑电路和时序逻辑电路的应用,对数字钟知识的认识,还加深了对EDA技术的应用,让我体会到了构建模块对于数字电路分析带来的方便。

虽然在设计的过程中出现了许许多多的挫折麻烦,但是经过独立思考,查阅资料和跟同学讨论研究后,总能解决问题并提出最佳方案,或对原有方案最优化。

参考文献:

[1]阎石主编《数字电子技术》第4版北京:

高等教育出版社,1998年

[2]谢自美主编电子线路设计●实验●测试第3版,武汉:

华中科技大学出版社,2006年

[3]赣南师范学院物理与电子信息学院编《数字电路实验指导书》

[4]曹昕燕周风原聂春

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 动物植物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1