vhdl数字钟课程设计

2024-05-01

vhdl数字钟课程设计(共6篇)

篇1:vhdl数字钟课程设计

数字系统设计与VHDL课程大作业

具体要求

一、总体要求:

1. 本课程为专业必选考查类课程,以大作业加平时成绩的形式给定最终成绩。

2. 每班六个题目,每4-5为一组,自由组合,分工合作。10月26日上课

前请各班上交分组及组长情况表。

3. 所有作业需完成VHDL核心代码的设计,并采用QuartusII进行相关仿

真或平台实现,否则全组不及格。

4. 各小组推选一人于第十周(11月5日和9日)上讲台讲解题目设计思路、源代码分析、仿真结果及演示。

5. 各小组组长于11月30日前到老师处汇报题目的完成情况,并接受考核。

6. 每名同学于11月30日前提交一份大作业报告,并由班长统一送交老师。

二、大作业题目:

1. 频率计设计(平台实现)

1)

2)

3)

4)能对输入的方波信号频率进行采样; 采样频率范围为0~999999Hz,以1Hz为单位进行显示; 采用六个七段数码管显示当前采样的频率值; 本电路系统输入时钟为6MHz。

2. 方波发生器设计(仿真实现)

1)

2)

3)系统的输入时钟为6MHz; 系统输出频率为对系统时钟的1~32分频;(5位二进制输入); 系统输出频率的占空比可调,分为25%、50%、75%三档;(采用2位二进制

位输入控制)。

3. 竞赛抢答器设计(平台实现)

1)

2)抢答器的输入路数为8路;(8位二进制输入)当主持人宣布开始(按下某一键时为有效),抢答时当某一方先按下按键,其

他键则失效;

3)

4)

5)用1个七段数码管显示抢中的路编号; 系统复位键按下后,进行下一轮抢答; 系统的输入时钟为6MHz。

4. 交通灯控制系统设计(平台实现)

1)交叉路口为十字路口;

2)

3)每路口设直行、左转、右转的方向指示灯; 每个方向指示灯有三种颜色,即红、绿、黄三色。为简化设计,右转指示灯常

绿;黄灯闪动时间间隔为0。5S,持续时间自定义。

4)

5)每路口需用两个数码管显示允许通行或禁止通行的时间; 系统的输入时钟为6MHz。

5. 点阵字符显示控制器设计(仿真实现)

1)

2)

3)用16*16点阵的发光二极管显示字符; 可显示字符为0~9的数字字符与A~F英文字母; 输入为四位二进制矢量。

6. 万年历及电子钟设计(平台实现)

1)

2)

3)

4)能显示年、月、日、时、分、秒、星期,共需15个数码管; 年、月、日、时、分、星期均需可调; 系统默认时间为2000年01月01日00时00分00秒星期6; 系统输入时钟为6MHz。

三、大作业报告要求:

1. 题目功能分析;

2. 总体模块划分;

3. 代码实现;

4. 仿真结果;

5. 设计心得、体会;

6. 报告采用统一的A4封面,其中1、2、5项必须为手写,3、4项为打印。

7. 网络工程专业不再进行期末考试,期终成绩以作业测试、讲解、报告综

合评定,计算机专业还需要进行闭卷考试,但作业测试、讲解、报告占主要部分。

篇2:vhdl数字钟课程设计

课程设计报告

课程设计题目:用VHDL语言实现数字钟的设计

班 级:电子1001班 学 号:20102594 姓 名:刘云飞

指导老师:李世平、李宁

设计时间:2012年12月

东北大学信息学院

摘要

随着EDA技术的发展,EDA在通信、电子等领域占有十分重要的地位。本设计介绍了基于VHDL语言的数字钟的设计。数字钟的功能是对年、月、日、时、分、秒、星期,以及闹钟时、分的预置;在正常计数时的时、分与闹钟设定的时、分相同时,实现报时,同时以stop和pass键对闹钟进行停止及延迟响铃的控制;在整点的时候led灯闪烁一下。其中,用set脉冲的不同实现对预置,正常计时,闹钟的控制。Set为1~12分别控制显示年月日、预置年月日、时分秒、星期、显示时分秒、预置闹钟时分、显示闹钟预置的时分。预置时用up的高、低电平实现对各预置量的加、减控制。将1KHZ的时钟进行分频为1HZ,实现每次脉冲为1秒。经仿真和验证显示,此数字钟切实可行,可以实现显示时间和闹钟的功能。

关键词:VHDL语言,数字钟,预置

东北大学信息学院

目录

摘 要............................................................2

1、设计目的.........................................................4

2、设计内容和要求...................................................4

3、设计原理.........................................................4

3.1 数字钟功能介绍..........................................................................................................4 3.2 数字钟设计原理..........................................................................................................5

4、VHDL程序设计.....................................................6

4.1 整体设计思路................................................................................................................6 4.2 各模块设计方法............................................................................................................7 4.2.1 顶层模块...............................................................................................................7 4.2.2 其他模块...............................................................................................................8 4.2.3 程序包模块.........................................................................................................13

5、仿真与分析......................................................13

5.1 仿真结果....................................................................................................................13 5.2 仿真分析....................................................................................................................16

6、课程设计总结....................................................16

7、参考文献........................................................17

东北大学信息学院

1、设计目的

掌握利用可编程逻辑器件和EDA设计工具进行电子系统设计的方法。

2、设计内容和要求

用VHDL语言实现数字钟的设计,要求设计实现一个具有带预置数的数字钟,具有显示年月日时分秒的功能。用6个数码管显示时分秒,set按钮产生第一个脉冲时,显示切换年月日,第2个脉冲到来时可预置年份,第3个脉冲到来时可预置月份,依次第4、5、6、7个脉冲到来时分别可预置日期、时、分、秒,第 8个脉冲到来后预置结束,正常工作,显示的是时分秒。Up为高电平时,upclk有脉冲到达时,预置位加1。否则减1。

3、设计原理 3.1 数字钟功能介绍

数字钟具有计时、预置、报时的功能。以不同的set脉冲控制各个功能。

(1)在计时功能中,数字钟实现对年月日时分秒即星期的计时,并可以通过LED数码管分别显示年月日、或时分秒、或星期、或闹钟的时分。

(2)在预置功能中,可以通过UP键对各需要预置的量进行控制。UP=1时,进行“加”控制,UP=0时,进行“减”控制。

(3)在报时功能中,分为整点报时和设置时间报时。其中整点报时以ce作为使能输入端,在整点时灯进行一秒闪烁;设置时间报时以enable作为使能输入端,enable=1时设置时间报时功能启动,在闹钟预置时间与时钟当前时间相同时报时,若此时按下stop,闹钟立即停止并不再响铃,若按下pass,则闹钟立即停止,但三分钟后再响,如此循环5次后不再响铃,若什么都不按,闹钟响铃持续1分钟。

东北大学信息学院

3.2 数字钟设计原理

本设计功能有8个子模块:分频模块、时分秒模块、日模块、年月模块、闹钟预置模块、星期模块、响铃模块。通过元件例化由顶层文件timekeeper综合。

整体设计框图及外观图如(图 3-1)及(图3-2)

图3-1 数字钟设计整体框图

东北大学信息学院

图3-2 数字钟外观图

4、VHDL程序设计

4.1 整体设计思路

采用自上而下的方法进行整体设计。整个设计共分为8个模块,通过顶

层文件timekeeper元件例化将8个模块各个端口对应相连。在设计各个模块时所用到的其它运算方法等放于work库中,通过程序包及程序包体的方式对所使用函数进行定义。

主要使用的语句有:元件例化语句,过程语句,信号赋值语句,if语句,case语句(在状态机中)。

图(4-1)表示了个模块的连接及连接是所用到的触发器等。

东北大学信息学院

图4-1

整体结构图

4.2 各模块设计方法

4.2.1 顶层模块

顶层模块timekeeper是.对对所有模块的综合。

它包含的功能是:通过元件例化连接各模块;实现对闹钟控制位sp2的控制;实现闹钟的整点报时闪烁。

输入端:up

全局加减选择,控制预置时的加减

setpin 设定选择

东北大学信息学院

upclk 加减触发

f1000 时钟输入

输出端:a0~d1 八位数码管控制引脚的输出

z

整点报时输出 4.2.2 其他模块

1、时分秒模块

时分秒模块h_m_s是对时、分、秒正常计时(set=0 or 1 or 12)和预置时分秒(set=5 or 6 or 7)的实现。

分和秒由两个六十进制实现,时由24进制实现。当时间达到23时59分59秒时,时分秒全部归零,进位位ov由零变为1,通过管脚连接到date模块的时钟计数信号clk0,开启date模块。

2、日的模块

日的模块date实现日子进行正常计时(set=0 or 1 or 12)和预置(set=4)。

由于每月的天数与月份、年份有关,故需判断年月。(1)(2)(3)当1、3、5、7、8、10、12月时,每月31天,使用31进制。当4、6、9、11月时,每月30天,使用30进制。当2月时,分闰年和平年。闰年29天,平年28天。

闰年和平年的判断方法是:由于通过年月模块传输的年份为两位BCD码。若高位信号为“xxx0”且低位信号为“xx00”或高位信号为“xxx1”且低位信号为“xx10”,则可判定为闰年,否则为平年。

以上各月,当日期至月底时返回1,进位位ov变为1通过管脚连接年月模块的时钟计数信号clk0,开启年月模块。

3、年月模块

年月模块year_mon实现年月正常计时(set=0 or 1 or 12)和年、月的预置(set=2 or 3)。

月为12进制,当达到12时变回为1,同时使年份进1。由两位BCD码表示年份,故可以表示100年之年的所有年,为100进制。

东北大学信息学院

图4-2 year_mon和date模块的电路连接图

4、星期模块

星期模块week的功能是实现对星期的计时(set=0 or 1 or 12)和预置(set=8)。为七进制。

图4-3 week模块的RTL

5、闹钟模块

东北大学信息学院

闹钟模块alarm是对闹钟时和分的预置(set=10 or 11)。时为24进制,分为60进制。

图4-3 alarm模块的RTL

另外,在顶层模块timekeeper,当闹钟预置时间与计时时间相同时(仅时、分),闹钟响铃,当不对其进行任何操作时,响铃维持1分钟。响铃方式见4.2.7响铃模块。

6、响铃模块

响铃模块alarm是对闹钟响铃的控制。其中主要包含:

Enable:当enable=1时,闹钟可以工作。

Sp2 :当顶层模块闹钟时间与计时相等时,sp2=1,响铃开启。Stop :闹钟停止并不再响铃。

Pass :闹钟停止但三分钟后再响,循环5次。Sp :响铃输出。Sp=1时响铃,sp=0时不响。本模块主要使用的方法是状态机。相应状态转换图如下:

东北大学信息学院

图 4-4 响铃模块状态转换图

在状态t_pass时,使用计数的方法实现对3分钟,5次循环的计数。

图 4-5 计数的流程图

东北大学信息学院

图4-6 speak模块的RTL

7、分频模块

分频模块fenpin使输入为1KHZ时钟信号时,接入电路经分频后仍能按1HZ即1s计数。

图4-7 fenpin模块的RTL

8、显示模块

显示模块led即七段数码管的显示电路。

东北大学信息学院

图4-8 led模块的RTL 4.2.3 程序包模块

程序模块是对各模块所用到的函数的定义,通过程序包package定义时、日、月、年等的增减函数(procedure),并用程序包体package body具体说明函数的内容。通过use.work.pac.all语句调用程序包,使程序书写更加方便简洁。

5、仿真与分析

5.1 仿真结果

1、h_m_s模块

东北大学信息学院

表示当up=1时,时钟时(set=5)、分(set=6)、秒(set=7)从0开始加。

图 5-1

2、date模块

以下为对应月份截图。另外,当日期由最末变为1时,ov进1以控制year_mon模块。

(1)大月:每月31天。

图5-2-1(2)小月:每月30天。

图5-2-2(3)平年2月:每月28天。

东北大学信息学院

图5-2-3(3)闰年2月:每月29天。

图5-2-4

3、year_mon模块

图5-3

4、week模块

前半部分up=1,为加,1~7,后半部分up=0,为减,6~1

图5-4

5、alarm模块

下图反映对闹钟时(set=10)、分(set=11)的预置,up=1为加。

图 5-5

6、speak模块

(1)按下pass

由下图可见,当时间相同sp为高电平;按下pass后sp变为低电平,三分钟

东北大学信息学院

后sp又为高电平。

图5-6-1(2)按下stop

由下图可见,当时间相同时sp为高电平,按下stop后sp变为低电平。

图 5-6-2

5.2 仿真分析

各模块仿真均可实现,且波形显示可以实现预想的功能。

6、课程设计总结

通过这次的课程设计,我又一次系统的复习了VHDL语言,通过实践对VHDL语言和EDA技术有了更具现实性应用性的了解,并熟练了相关软件的使用方法。

此次课程设计的内容是数字钟,我学会了如何利用元件例化将各个模块结合起来,而不是一味的想起一个功能设计一个功能,而是有一个总体的自上而下的设计,建立基本的设计框图(如图 3-1),再进行具体的设计。

在程序调试的过程中,出现了很多的问题。我发现往往是一行出现了错误导致了接下来一系列错误的出现。

还有在仿真中出现错误的红线,并出现了‘U’字符,全都是未设置初值所致。而在设置初值时仍然出现了问题。最开始我想定义一个clr信号,当clr为高电平时各功能清零,但是在实际仿真时,由于常常要看在月末或类似23时59分59秒这样的时刻是否有进位信号进为高电平,从零开始显然让仿真变的十

东北大学信息学院

分麻烦,如果可以直接赋初值到接近进位的时刻就会让仿真变得简便。即使用信号赋初值的方法对信号进行赋初值,既解决错误又利于仿真。

在最后对顶层仿真时出现了很多的问题,最后发现都是未对应的问题。当然,我的设计还有很多不足的地方。比如有一处的竞争冒险产生的毛刺没有解决。最开始是将speak模块控制信号sp2的相关程序写在了alarm模块,仿真时发现在一处出现了毛刺,在对闹钟进行预置时分时的第一个时间都未足一个时钟周期(如图 5-5)。后来我想是否因为alarm模块有两个process进程,就将sp2的相关程序挪到了顶层模块,但是最后还是没有实现。咨询了一下同学们,他们都说这没有问题,不需要解决,所以就没有解决这个问题。

此次课程设计我学到了很多,但是我觉得应该放在刚刚考完EDA之后,那时候对只是记得比较清楚,不像在这次设计时很多知识都想不起来了。其他的对我帮助都很大。

篇3:用VHDL语言实现数字钟设计

20世纪90年代, 引起数字系统设计方式发生突破性变革的技术是VHDL设计技术。VHDL即Very High Speed Integrated Circuit, 作为IEEE-1076标准所规范的硬件描述语言, 可用于数字电路与系统的描述、模拟和自动设计[1]。VHDL具有多层次的设计描述功能, 支持设计库和可重复使用的元件生成, 支持阶层设计, 提供模块设计的创建[2]。VHDL描述语言既是程序又是文档, 可作为技术人员交流信息的文件, 增加了语言的可读性[3]。目前VHDL在欧美工业界的电子系统设计领域获得广泛应用。

利用硬件描述语言可以极大地方便数字集成电路设计。本文介绍了利用VHDL硬件描述语言进行数字钟的设计, 具有调节时、分、秒和整点报时功能, 并通过数码管驱动电路, 动态显示计时结果。采用VHDL语言设计数字电路系统是当今的趋势, 是我国在世界市场上生存竞争和发展的需要。

1 设计流程及原理

设计流程如图1所示。

数字钟的总体框图clock.gdf (如图2所示) , 由两个60进制计数器和一个24进制计数器组成, 分别对秒、分、小时进行计时, 当计时到59’50”时开始报时, 在52”、54”、56”、58”鸣叫, 鸣叫声频为500 Hz;到达59’60”时为最后一声整点报时, 频率为1 k Hz, 秒、分、时公用一个时钟为1 Hz的标准信号, 可以由晶振产生4 MHz信号通过分频得到, 当数字钟处于计时状态时秒计数器计时, 分和时计数器分别在EN信号有效且时钟到来时计数器加1。按下sa键时, 计数器迅速递增, 并按24 h循环, 记满23 h后再回00;按下sb键时, 计数器迅速递增, 并按60 h循环, 记满59 h后再回00, 但不向时进位, 从而实现时、分的校准。时、分、秒的计时结果通过6个数码管来动态显示。数字钟除了能够正常计时、进行时间调整外还可以利用扬声器进行整点报时。

2 电路设计

本节将根据上面的分析, 在具体编程过程中, 利用VHDL语言强大的功能软件, 将计数器和译码器有机的结合在一起。这样, 在简化程序设计的同时, 又增加了程序的可读性。

整个电路主要由以下几个模块组成:

1) 模块second60模块second60为60进制计数器, 计时输出为秒的数值。在计时到59时送出进位信号CO, 因为硬件有延时, 所以模块second60在此模块变为00时加1, 符合实际。

2) 模块minute60模块minute60为60进制计数器, 计时输出为分的数值, 在EN信号有效且时钟到来时, 计数器加1。在sb按下时, EN信号有效, 计数值以秒的速度增加, 从而实现对分钟的设置。

3) 模块SST模块SST为整点报时提供控制信号, 当59 min, 秒为50、52、54、56、58时, Q500输出“1”;秒为00时, Q1K输出“1”。这两个信号经过逻辑门实现报时功能。

4) 模块BBB模块BBB对应不同的片选信号送出不同的要显示的数据。

5) 模块FEN10模块FEN10实现10分频。

6) 模块DISP模块为七段译码器。译码器的作用就是将计数器传来的BCD码进行处理后, 来驱动数码管进行显示。这里只描述4-8译码器的设计方法和相应的逻辑对应关系。4-8译码器是针对秒、分、时的个位显示进行设计的。

3 电路调试

执行“MAX+plus”的“Compiler”命令, 可对顶层设计文件进行编译。在编译中, 自动完成编译网表提取 (Compiler Netlist Extractor) 、数据库建立 (Database Builder) 、逻辑综合 (Logic Synthesizer) 、逻辑分割 (Partitioner) 、适配 (Fitter) 、延时网表提取 (Timing SNF Extractor) 和编程文件汇编 (Assembler) 等操作。

在完成对图形编辑文件的编译后, 系统并没有为设计文件自动生成元件符号, 若要生成元件符号, 则还要执行“File”菜单下的“Create Default Symbol”命令。到这里, 数字钟的完整的VHDL语言描述就全部完成了。将结果下载到实验板上进行硬件仿真, 结果正确。

这里只列出对秒、分、时的软件仿真结果。

秒的仿真结果:

分的仿真结果:

小时的仿真结果:

4 总结

用VHDL语言实现数字系统越来越流行, 现今, VHDL语言在国内硬件设计中已得到广泛的应用, 每个硬件设计工程师都应该掌握VHDL语言的设计方法。

参考文献

篇4:VHDL在数字电路设计中的应用

关键词:VHDL 数字电路 MAX+plusⅡ 仿真

0 引言

VHDL是70年代末和80年代初,由美国国防部为超高速集成电路VHSIC(Very Hight Speed Intergrated Circuit)计划提出的硬件描述语言VHDL(VHSIC Hardware Description Language)。1983年7月,由Intermetrics公司和Texas Instruments公司组成开发小组,承担了提出语言版本并开发其软件环境的任务。其目的在于所开发的硬件描述语言具有功能强大、严格、可读性好、通用性好、移植性好等特点,避免重复劳动,省时省力并能降低开发电子新产品的费用。利用计算机辅助设计自上而下的逐层完成相应的描述,并与大规模可编程器件相结合,使设计出的电路系统速度更快、体积更小、重量更轻、功耗更小、稳定性更高,大大提高了产品的竞争能力。VHDL语言已日益成为一种通用的硬件设计交换媒介, MAX+PLUSⅡ计算机辅助工程软件,提供了全面的逻辑设计能力,从编辑、综合、布线到仿真、下载验证一气呵成,十分方便。

1 VHDL语言特点:

传统的设计方法是基于中小规模集成电路器件进行设计(如74系列及其改进系列、CC4000系列、74HC系列等都属于通用型数字集成电路),而且是采用自底向上进行设计:①首先确定可用的元器件;②根据这些器件进行逻辑设计,完成各模块;③将各模块进行连接,最后形成系统;④而后经调试、测量观察整个系统是否达到规定的性能指标。

VHDL与电路图设计电路的方式不同,和电路图设计方式相比,具有以下特点:①易于修改;②设计能力更强;③VHDL语言很方便:独立于器件设计;相同的程序代码可以用于不同厂家生产的器件。④VHDL具有电路仿真与验证功能,仿真结果直观、形象。

2 VHDL程序的基本结构:

VHDL程序的基本结构可分为:①LIBRARY和PACHAGE声明区;②ENTITY定义区;③ARCHITECTURE定义区;④CONFIGURATION定义区。

2.1 LIBRARY和PACKAGE声明区:Library(库)是用于存放预先编译好的Package(程序包)。Package(程序包)中定义了基本的常数,数据类型,元件及子程序等。作用:声明在实体和结构体定义中将用到的数据类型、元件或子程序等。

声明格式:Library 库名;Use 库名. PACKAGE名.All;

2.2 ENTITY定义区:ENTITY(实体)用于定义电路的外观,即I/O端口的类型和数量。

定义格式:Entity 实体名 is。Port(a:inbit;b:in bit;c:out bit);

End 实体名;其中a、b、c是端口名,in、out是端口模式,bit是数据类型。

2.3 ARCHITECTURE定义区:定义了实体的实现。即电路的具体描述,说明电路执行什么动作或实现功能。

定义格式:Architecture 结构体名 of 实体名 is

[声明语句;(内部信号、变量、常数,元件,子程序声明)]

Begin并行描述语句;End 结构体名;

2.4 CONFIGURATION定义区:当实体有多个结构体时,系统默认实体选用最后一个结构体,利用CONFIGURATION语句可以任意选择采用哪一个结构体。

定义格式:Configuration 配置名 of 实体名 is

for选用的结构体名end for;end configuration 配置名;

3 十进制计数器的VHDL程序设计:

下面以十进制计数器为例简单的介绍一下,用VHDL语言进行电路设计的具体过程。

3.1 功能:此十进制计数器的有一时钟使能输入端ENA,用于锁定计数值。当高电平时计数允许,低电平时禁止计数。

3.2 语言程序设计:library ieee;use ieee.std_logic_1164.all;→library声明区;entity cnt10 isport(clk,clr,ena:in std_logic;—计数、清零、计数使能信号;co:out std_logic;—计数进位;cq:out integer range 0 to 15);—4位计数结果输出end cnt10;entity定义区architecture behav of cnt10 is signal cqi:integer range 0 to 15;begin process(clk,clr,ena)begin if clk=‘1 then cqi<=0;—计数器异步清零elsif clk'event and clk=‘1 then if ena='1' then if cqi<9 then cqi<=cqi+1;—等于9,则清零else cqi<=0;end if;end if;end if;end process;process(cqi)beginif cqi=9 then co<=‘1;—进位输出else co<=‘0;end if;end process;cq<=cqi;end behav;architecture定义区

3.3 VHDL语言的开发环境:以MAX+plusⅡ作为运行环境,支持原理图、VHDL和Verilog语言文本文件,以及波形与EDIF等格式的文件作为设计输入,并支持这些文件的任意混合设计。MAX+plusⅡ具有门级仿真器,可以进行功能仿真和时序仿真,能够产生精确的仿真结果。在MAX+plusⅡ环境下用VHDL语言设计电路的全过程包括以下几个步骤:①源文件的编辑:点击“新建文件夹”在对话框中选择“Text Editor file ”,按 “OK”按钮,即选中了文本编辑方式。然后将上述程序输入。输入完毕后,选择菜单“File→Save”,出现对话框,然后在“File Name”框中输入文件名,然后按“OK”,文件即被存入。②系统的编译:在编译系统文件F_ADDER.GDF前,需要设置该文件为顶层文件Project。选择菜单“File”→“Project”→“Set Project to Current File”,当前的工程即被设为F_ADDER。选择“MAX+plusⅡ”→“Compiler”菜单,可运行编译器,检验程序是否正确。③系统仿真:选择菜单“File”→“New”,在对话框中选择“Waveform Editor File”,按“OK”后将出现波形编辑器子窗口。选择菜单“Node”→“Enter Nodes from SNF”,在出现的对话框中选择“list”键,然后按“=〉”按钮,在按下“OK”键,选中的信号将出现在波形编辑器中。编辑好输入信号保存,再按下“MAX+plusⅡ”→“simulator”出现仿真结果。

CNT10的仿真波形如图1:

该仿真波形,很直观的将十位计数器的计数过程展现出来,同时也验证了vhdl程序设计的可实现性。④系统下载:程序设计成功后,就可以下载到芯片上进行实验操作了。如果MAX+plusⅡ是安装后第一次调用编程器,则MAX+plusⅡ讲弹出对话框选择型号,以便调用正确的编程器驱动程序。其选择方法是启动“Programmer”,选菜单“Options”→“Hardware Setup”,在“Hardware Type”下拉栏中选“ByteBlaster”,按“OK”即可。用鼠标双击编程器子窗口或者选择“MAX+plusⅡ”→“Programmer”菜单,可调出编程器(Programmer)窗口。在将设计文件编程配置进硬件芯片前,需连接好硬件测试系统。一切连接就绪后,方可按下编程器窗口中的“Configure”按钮,无误后,即可将所涉及的内容下载到芯片中。下载成功后弹出的小窗口中显示“Configuration Complete”。接下去就可以在实验系统上进行实验验证。

4 小结

通过对十进制计数器的VHDL的仿真实现,简单的介绍了用VHDL语言进行数字电路设计的方法、步骤,表明了VHDL在数字电子电路的设计中具有设计方法灵活、硬件描述能力强、仿真结果直观等特点。随着集成电路技术的高速发展,数字系统迅速朝着更高集成度、超小型化、高性能、高可靠性和低功耗的系统级芯片方向发展,从而使电路设计逐步向高层设计转移。作为一种设计技术,VHDL已成为数字电路设计时一种重要的方法,为我们的学习、工作提供了很大的帮助。

参考文献:

[1]曾繁泰,陈美金编著.VHDL程序设计.清华大学出版社.2000.

[2]刘润华,单亦先编著.电子设计自动化.石油大学出版社.2001.9:35-41.

[3]谭会生,张昌凡编著.EDA技术与应用.西安电子科技大学出版社.2001.

[4]王振红编著.VHDL数字电路设计与应用实践教程.机械工业出版社.2003.6.

篇5:数字钟课程设计

COUNT EQU 33H;定时器T0(用来走时)计数值存储器(计数中断20次到1秒)COUNTS EQU 34H;定时器T1(用来预置)计数值存储器(计数中断15次到预置值加一)HOUR EQU 40H;以下为时间,日期,闹铃时间,生日的存储地址 MIN EQU 41H SECOND EQU 22H YEAR EQU 50H MONTH EQU 23H DAY EQU 52H RH EQU 60H;闹铃小时 RM EQU 61H;闹铃分 RE EQU 62H;闹铃使能 BM EQU 71H;生日-月份 BD EQU 72H;生日-天 MOV LED12,#0 MOV LED34,#0 MOV LED56,#0 MOV COUNT,#0 MOV COUNTS,#0 MOV HOUR,#0 MOV MIN,#0 MOV SECOND,#0 MOV YEAR,#0 MOV MONTH,#1 MOV DAY,#1 MOV RH,#0 MOV RM,#0 MOV RE,#0 MOV BM,#6 MOV BD,#1 BS BIT 00H;birthday symbol生日标志(到生日那天就为1)

SS BIT 01H;set symbol预置信号(按下中断预置为1,便开始闪烁和预置)GS BIT 02H;glisten symbol闪烁标志 FC BIT 03H;frequency control频率控制 NB BIT 04H;neglect bitrhday symbol 忽略生日标志 CLR BS CLR SS CLR GS CLR FC CLR NB SETB 05H;生日显示有效标志位 MOV IP,#02H;中断优先级:T0>INT0>T1 MOV TMOD,#11H MOV IE,#8BH SETB IT0 MOV TH0,#3CH;50ms MOV TL0,#0B0H SETB TR0 MOV R1,#50;显示延时用 MOV R0,#0;显示延时用

;************************************************************** TWO检测开关号 TWO:MOV P0,#0FFH JB P0.5,TWO1 MOV RE,#0A0H;0A0表示闹铃无效,送0A0是为了方便将使能查表显示,表中第A项为“-” SJMP TWO2 TWO1:MOV RE,#0A1H TWO2:JB P0.0,TWO4 JB P0.1,TWO3 MOV LED12,HOUR MOV LED34,MIN MOV LED56,SECOND SJMP THREE TWO3:MOV LED12,YEAR MOV LED34,MONTH MOV LED56,DAY SJMP THREE TWO4:JB P0.1,TWO5 MOV LED12,RH MOV LED34,RM MOV LED56,RE SJMP THREE TWO5:MOV LED12,BM MOV LED34,BD MOV LED56,#0BCH SJMP THREE;************************************** THREE显示主程序(同时包含了闹铃,预置闪烁,闹铃功能)THREE:MOV P1,#0 MOV P0,#0FFH MOV DPTR,#TAB3 JNB SS,THREEB;判断预置信号是否有效,预置有效则转入判断闪烁显示模块,否则转入正常显示模块

SJMP THREEA THREEB:LJMP THREE11;THREE11是正常显示并判断整点报时及闹铃模块

THREEA:JNB P0.3,THREE1;开始是判断闪烁显示,这句判断是否预置分/月/生日的日/闹铃分

JNB GS,THREE1;是否闪烁?

LCALL TWELVE;闪烁则调用延时不显示LED34 SJMP THREE4 THREE1:MOV A,LED34 ANL A,#0FH MOVC A,@A+DPTR MOV P2,A THREE2:SETB P1.3 NOP DJNZ R0,THREE2 CLR P1.3 MOV A,LED34 SWAP A ANL A,#0FH MOVC A,@A+DPTR MOV P2,A THREE3:SETB P1.2 NOP DJNZ R0,THREE3 CLR P1.2 JNB P0.2,THREE4;判断是否预置小时/年/生日月/闹铃的小时 JNB GS,THREE4;是否显示小时/年/生日月/闹铃的小时 LCALL TWELVE SJMP THREE7 THREE4:MOV A,LED12 ANL A,#0FH MOVC A,@A+DPTR MOV P2,A THREE5:SETB P1.1 NOP DJNZ R0,THREE5 CLR P1.1 MOV A,LED12 SWAP A ANL A,#0FH MOVC A,@A+DPTR MOV P2,A THREE6:SETB P1.0 NOP DJNZ R0,THREE6 CLR P1.0 JB P0.0,THREE7;数码管56只有在显示日期的天时才有预置闪烁功能,其余三项都不需要判断闪烁 JNB P0.1,THREE7 JB P0.3,THREE7 JNB P0.4,THREE7 JNB GS,THREE7 LCALL TWELVE SJMP THREE10 THREE7:MOV A,LED56 ANL A,#0FH MOVC A,@A+DPTR MOV P2,A THREE8:SETB P1.5 NOP DJNZ R0,THREE8 CLR P1.5 MOV A,LED56 SWAP A ANL A,#0FH MOVC A,@A+DPTR MOV P2,A THREE9:SETB P1.4 NOP DJNZ R0,THREE9 CLR P1.4 THREE10:DJNZ R1,TWOA SJMP TWOB TWOA:LJMP TWO TWOB:MOV R1,#50;判断闪烁一次是否完成 CPL GS;取反闪烁标志,用于控制闪烁的亮和灭 LJMP TWO;一轮显示完后再判断开关号;**************************正常显示

THREE11:LCALL EIGHT;判断是否取反P1.6即输出闹铃或整点报时,以下每次显示都要调用一次

JB NB,THREE12;如果是在整点报时状态就不显示生日提醒,报时过后显示提醒 JNB BS,THREE12 SJMP SEVEN;跳到生日提醒程序

THREE12:CLR NB;开始正常显示时间及判断闹铃输出 MOV A,LED34 ANL A,#0FH MOVC A,@A+DPTR MOV P2,A THREE13:SETB P1.3 NOP DJNZ R0,THREE13 CLR P1.3 MOV A,LED34 SWAP A ANL A,#0FH MOVC A,@A+DPTR MOV P2,A THREE14:SETB P1.2 NOP DJNZ R0,THREE14 CLR P1.2 LCALL EIGHT MOV A,LED12 ANL A,#0FH MOVC A,@A+DPTR MOV P2,A THREE15:SETB P1.1 NOP DJNZ R0,THREE15 CLR P1.1 MOV A,LED12 SWAP A ANL A,#0FH MOVC A,@A+DPTR MOV P2,A THREE16:SETB P1.0 NOP DJNZ R0,THREE16 CLR P1.0 LCALL EIGHT MOV A,LED56 ANL A,#0FH MOVC A,@A+DPTR MOV P2,A THREE17:SETB P1.5 NOP DJNZ R0,THREE17 CLR P1.5 MOV A,LED56 SWAP A ANL A,#0FH MOVC A,@A+DPTR MOV P2,A THREE18:SETB P1.4 NOP DJNZ R0,THREE18 CLR P1.4 LJMP TWO;一轮显示完后判开关

TAB3:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H 7FH,6FH,40H,7CH,5EH;0.1.2.3.4.5.6.7.8.9.-.b.d,的字形表“bd”在显示生日时间时显示在LED56;**************************************************SEVEN生日时显示生日祝福语“HAPPY” SEVEN:MOV P1,#01H MOV P2,#76H DJNZ R0,SEVEN SEVEN1:MOV P1,#02H MOV P2,#77H DJNZ R0,SEVEN1 SEVEN2:MOV P1,#04H MOV P2,#73H DJNZ R0,SEVEN2 SEVEN3:MOV P1,#08H MOV P2,#73H DJNZ R0,SEVEN3 SEVEN4:MOV P1,#10H MOV P2,#6EH DJNZ R0,SEVEN4 LJMP TWO;一轮显示完后判开关

;******************************************************************EIGHT判断是否闹铃子程序 EIGHT:MOV A,RE CJNE A,#0A1H,EIGHT1 MOV A,MIN CJNE A,RM,EIGHT1 MOV A,HOUR CJNE A,RH,EIGHT1 SJMP EIGHT4;闹铃时间到则CPLP1.6一次并忽略生日标志(即NB有效)EIGHT1:MOV A,MIN CJNE A,#59H,EIGHT7 MOV A,SECOND CJNE A,#59H,EIGHT5;是否等于59分59秒 EIGHT2:MOV A,COUNT;是否到达后半秒 CJNE A,#10,EIGHT3 EIGHT3:JC EIGHT7 EIGHT4:CPL P1.6 SETB NB SJMP EIGHT7 EIGHT5:MOV A,SECOND CJNE A,#51H,EIGHT6;是否大于51秒 EIGHT6:JC EIGHT7 JNB 10H,EIGHT7;判断是否报低音

JB FC,EIGHT7;只有FC有效时才输出

SJMP EIGHT2 EIGHT7:CPL FC;用来控制报低音和高音,满足报低音条件时,调用两次本程序对P1.6取反一次,高音时调用一次取反一次

RET;******** NINE中断(T0)计时程序(包含了秒-分-时-日-月-年间的进位及判断大小月,平闰年)

NINE:MOV TH0,#3CH;开定时器 MOV TL0,#0B0H SETB TR0 INC COUNT MOV A,COUNT CJNE A,#20,INEAA SJMP AAA INEAA:LJMP NINE1 AAA:MOV COUNT,#0;计时 MOV A,SECOND ADD A,#01 DA A;换成bcd码以方便显示 MOV SECOND,A CJNE A,#60H,INEAA MOV SECOND,#0 MOV A,MIN ADD A,#01 DA A MOV MIN,A CJNE A,#60H,INEAA MOV MIN,#0 MOV A,HOUR ADD A,#01 DA A MOV HOUR,A CJNE A,#24H,INEAA MOV HOUR,#0 MOV A,DAY ADD A,#01 DA A MOV DAY,A;************************判断平闰年及大小月 MOV A,MONTH CJNE A,#02H,TEN6A MOV A,YEAR;把年由BCD码换成二进制码 ANL A,#0F0H SWAP A MOV B,#10 MUL AB MOV 24H,A MOV A,YEAR ANL A,#0FH ADD A,24H JB ACC.0,TEN5A;二进制码后两位为00表示为闰年 JB ACC.1,TEN5A MOV 24H,#01 MOV A,DAY CJNE A,#30H,NINE1 MOV DAY,#1 SJMP NINE0 TEN5A:MOV A,DAY CJNE A,#29H,NINE1 MOV DAY,#1 SJMP NINE0;**************判断大小月;大于等于8月时双月为大月,小于8月时单月为大月 TEN6A:MOV A,MONTH CJNE A,#08H,TEN7A TEN7A:JC TEN9A JB 18H,TEN8A MOV A,DAY CJNE A,#32H,NINE1 MOV DAY,#1 SJMP NINE0 TEN8A:MOV A,DAY CJNE A,#31H,NINE1 MOV DAY,#1 SJMP NINE0 TEN9A:JNB 18H,TEN10A MOV A,DAY CJNE A,#32H,NINE1 MOV DAY,#1 SJMP NINE0 TEN10A:MOV A,DAY CJNE A,#31H,NINE1 MOV DAY,#1;******************* NINE0:MOV A,MONTH ADD A,#01 DA A MOV MONTH,A SETB 05H CJNE A,#13H,NINE1 MOV MONTH,#1 MOV A,YEAR ADD A,#01 DA A MOV YEAR,A NINE1:MOV A,MONTH CJNE A,BM,NINE2 MOV A,DAY CJNE A,BD,NINE2 JNB 05H,NINE2 SETB BS NINE2:RETI;*****************************************TEN中断(T1)预置加一程序由INT0控制其的开启与关闭

;*******************判断预置项目 TEN:MOV TH1,#3CH MOV TL1,#0B0H SETB TR1 INC COUNTS MOV A,COUNTS CJNE A,#15,TENE MOV COUNTS,#0 JB P0.0,RBRB JB P0.1,DAT SJMP TIME DAT: LJMP DATE RBRB:JB P0.1,BDAT LJMP RTIME BDAT:LJMP BDATE TENE:RETI;**********************预置时间 TIME: JNB P0.3,TEN1 MOV A,MIN ADD A,#01 DA A MOV MIN,A CJNE A,#60H,TENA MOV MIN,#0 SJMP TENA TEN1:JNB P0.2,TENA MOV A,HOUR ADD A,#01 DA A MOV HOUR,A CJNE A,#24H,TENA MOV HOUR,#0 TENA:RETI;******************预置日期 DATE:JNB P0.3,TEN3 MOV A,MONTH ADD A,#01 DA A MOV MONTH,A CJNE A,#13H,TENB MOV MONTH,#1 SJMP TENB TEN3:JNB P0.2,TEN4 MOV A,YEAR ADD A,#01 DA A MOV YEAR,A SJMP TENB TEN4:JNB P0.4,TENB MOV A,DAY ADD A,#01 DA A MOV DAY,A;***************判断平闰年 MOV A,MONTH CJNE A,#02H,TEN6 MOV A,YEAR ANL A,#0F0H SWAP A MOV B,#10 MUL AB MOV 24H,A MOV A,YEAR ANL A,#0FH ADD A,24H JB ACC.0,TEN5 JB ACC.1,TEN5 MOV A,DAY CJNE A,#30H,TENB MOV DAY,#1 SJMP TENB TEN5:MOV A,DAY CJNE A,#29H,TENB MOV DAY,#1 SJMP TENB;**************判断大小月 TEN6:CJNE A,#08H,TEN7 TEN7:JC TEN9 JB 18H,TEN8 MOV A,DAY CJNE A,#32H,TENB MOV DAY,#1 SJMP TENB TEN8:MOV A,DAY CJNE A,#31H,TENB MOV DAY,#1 SJMP TENB TEN9:JNB 18H,TEN10 MOV A,DAY CJNE A,#32H,TENB MOV DAY,#1 SJMP TENB TEN10:MOV A,DAY CJNE A,#31H,TENB MOV DAY,#1 TENB: RETI;**************************预置闹铃时间 RTIME:JNB P0.3,TEN12 MOV A,RM ADD A,#01 DA A MOV RM,A CJNE A,#60H,TENC MOV RM,#0 SJMP TENC TEN12:JNB P0.2,TENC MOV A,RH ADD A,#01 DA A MOV RH,A CJNE A,#24H,TENC MOV RH,#0 TENC:RETI;************************预置生日日期 BDATE:JNB P0.3,TEN14 MOV A,BD ADD A,#01 DA A MOV BD,A MOV A,BM CJNE A,#02H,TEN15 MOV A,BD CJNE A,#30H,TEND MOV BD,#1 SJMP TEND TEN15:CJNE A,#08H,TEN16 TEN16:JC TEN18 JB 18H,TEN17 MOV A,BD CJNE A,#32H,TEND MOV BD,#1 SJMP TEND TEN17:MOV A,BD CJNE A,#31H,TEND MOV BD,#1 SJMP TEND TEN18:JNB 18H,TEN19 MOV A,BD CJNE A,#32H,TEND MOV BD,#1 SJMP TEND TEN19:MOV A,BD CJNE A,#31H,TEND MOV BD,#1 SJMP TEND TEN14:JNB P0.2,TEND MOV A,BM ADD A,#01 DA A MOV BM,A CJNE A,#13H,TEND MOV BM,#1 TEND:SETB 05H RETI;*******************************ELEVEN中断(INT0)控制了预置的开关以及生日信号的清除

ELEVEN:JNB SS,ELEVEN1;预置有效时按一次INT0关预置 CLR SS CLR TR1 SJMP ELEVEN3 ELEVEN1:JNB BS,ELEVEN2;预置无效判断生日信号有效则清除生日信号 CLR 05H CLR BS SJMP ELEVEN3 ELEVEN2:SETB SS;都无效则令预置有效 MOV TH1,#3CH MOV TL1,#0B0H SETB TR1 ELEVEN3:RETI;***************************************************************TWELVE 延时小程序

篇6:数字钟课程设计报告

数字电子钟是一种用数字电路实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的应用。数字钟从原理上来讲是一种典型的数字电路,其中即包含了组合逻辑电路,也有时序电路。

因此,我们此次设计与制作数字电子钟就是为了了解其工作原理,从而学会制作数字钟。通过设计和制作数字电子钟,可以加深我们对中小规模集成电路相关知识的理解,并且通过实际运用,提高我们的动手能力、培养我们的探索精神。

二、设计题目与设计要求 1.设计题目

本次的题目为设计一个具有计时、显示“时、分、秒”和校时功能的数字电子钟,具体功能如下:

① 显示时、分、秒;

② 具有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间; ③ 计时过程具有报时功能,当时间到达整点前10秒进行蜂鸣报时; ④ 为了保证计时的稳定及准确须由晶体振荡器提供表针时间基准信号。2.设计要求

本次设计的具体要求如下:

① 画出电路原理图(或仿真电路图); ② 元器件及参数选择; ③ 电路仿真与调试;

三、方案选择

数字电子钟作为实际生活中运用广泛的一个物品。在电路实现方面,完全可以用单片机实现功能。这也是我们小组一开始的思路。但是,由于我们小组的这道题本身就比较简单,如果还从用单片机来做,基本上就只是编个程序的事情了。如此,这个学期在数电课上学到的一些东西并不能得到很好的运用,老师也是基于此考虑,建议我们还是不要使用单片机。

因此,我们采用了老师提供的思路和方案,具体的阐述请见以下几个部分。

四、大体设计思路

1.总体概要设计

数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路。由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路,同时标准的1HZ时间信号必须做到准确稳定。晶体振荡器电路给数字电子钟提供一个频率稳定准确的32768Hz的方波信号,可保证数字钟的走时准确及稳定。然后分频器将32768Hz的高频方波信号经32768次分频后得到1Hz的方波信号供秒计数器进行计数。分频器实际上也就是计数器。通常使用石英晶体振荡器电路构成数字钟。图1所示为数字钟的一般构成框图。

“时”计时信号 “分”计时信号

校时信号

“秒”计时信号

图 1

数字电子钟原理框图

2.晶体振荡器电路

晶体振荡器电路给数字钟提供一个频率稳定准确的32768Hz的脉冲,可保证数字钟的走时准确及稳定。不管是指针式的电子钟还是数字显示的电子钟都使用了晶体振荡器电路。

3.分频器电路

分频器电路将32768Hz的高频方波信号经74HC4060和T’触发器(将D端接至输出的非端,使其变成一个T’触发器实现二分频)的分频后得到1Hz的方波信号,可以供秒计数器进行计数。分频器实际上也就是计数器。

4.时间计数器电路

时间计数电路由秒个位和秒十位计数器、分个位和分十位计数器及时个位和时十位计数器电路构成,其中秒个位和秒十位计数器、分个位和分十位计数器为60进制计数器,时个位和时十位计数器设计为24进制计数器。

5.译码驱动电路

译码驱动电路将计数器输出的8421BCD码转换为数码管需要的逻辑状态,并且为保证数码管正常工作提供足够的工作电流。

6.示数电路

用译码驱动电路提供的电流带动数码管实现数字电子钟最后的示数部分。数码管通常有发光二极管(LED)数码管和液晶(LCD)数码管,本设计采用的为LED数码管。

五、元件清单

30pF电容2个 32768Hz晶振1个 15k欧姆电阻4个 74HC4060一片

74LS74双D触发器一个 单刀双掷开关2个 1M电阻1个

74Ls00四二输入7个 74Ls192六片 74Ls48六片 共阴数码管6个 蜂鸣器一个

六、仿真电路图

根据上述思路,我们小组的各个成员分别负责了部分电路,在确认部分功能可以实现 的前提下,将它们有机地组合起来得到了总电路。并在proteus软件中进行了仿真,确定可以实现功能后,再申请了实做。

仿真电路总图见下:

七、各单元模块的具体设计和分析

1.晶体振荡器电路

晶体振荡器是构成数字式时钟的核心,它保证了时钟的走时准确及稳定。

图2所示电路通过CMOS非门构成的输出为方波的数字式晶体振荡电路,这个电路中,CMOS非门U1与晶体、电容和电阻构成晶体振荡器电路,U2实现整形功能,将振荡器输出的近似于正弦波的波形转换为较理想的方波。输出反馈电阻R1为非门提供偏置,使电路工作于放大区域,即非门的功能近似于一个高增益的反相放大器。电容C1、C2与晶体构成一个谐振型网络,完成对振荡频率的控制功能,同时提供了一个180度相移,从而和非门构成一个正反馈网络,实现了振荡器的功能。由于晶体具有较高的频率稳定性及准确性,从而保证了输出频率的稳定和准确。

晶体XTAL的频率选为32768HZ。该元件专为数字钟电路而设计,其频率较低,有利于减少分频器级数。

从有关手册中,可查得C1、C2 为30pF时,频率准确度和稳定度较高。

由于CMOS电路的输入阻抗极高,因此反馈电阻R1可选为20MΩ或10MΩ。较高的反馈电阻有利于提高振荡频率的稳定性。但是,由于实验室只提供了1MΩ的电阻,所以在实际制作的过程中,我们采用的是实验室提供的电阻,最终造成了脉冲输出端的频率并不是严格符合1Hz。

图2 晶体振荡器电路图

2.分频器电路

通常,数字钟的晶体振荡器输出频率较高,为了得到1Hz的秒信号输入,需要对振荡

器的输出信号进行分频。

通常实现分频器的电路是计数器电路,一般采用多级2进制计数器来实现。例如,将32767Hz的振荡信号分频为1Hz的分频倍数为32767(2),即实现该分频功能的计数器相当于15级2进制计数器。

本实验中采用HC4060来构成分频电路。HC4060在数字集成电路中可实现的分频次数最高,而且HC4060还包含振荡电路所需的非门,使用更为方便。

HC4060计数为最高为14级2进制计数器,可以将32767Hz的信号分频为2Hz,而经过转换为T’的D触发器则可以通过翻转功能将它分为1HZ的信号。如图3所示,可以直接实现振荡和分频的功能。

5图3 分频电路图

3.时间计数单元

时间计数单元有时计数、分计数和秒计数等几个部分。

时计数单元一般为24进制计数器计数器,其输出为两位8421BCD码形式;分计数和秒计数单元为60进制计数器,其输出也为8421BCD码。

针对每个计数单元,本实验分别采取了用两块74LS192芯片进行级联来产生相应的进制。

74LS192是同步十进制可逆计数器,它具有双时钟输入,并具有清除和置数等功能,其引脚排列及逻辑符号如下所示:

(a)引脚排列(b)逻辑符号

其中:为置数端,为加计数端,为减计数端,为非同步进位输出端,为清除端,Q0、Q1、Q2、为非同步借位输出端,P0、P1、P2、P3为计数器输入端,Q3为数据输出端。

其功能表如下:

表1 74LS192的功能表

对于秒计数单元,由于192内部本身就是10进制,所以只需要将作为十位输出的那一片192的输出端中的Q2和Q1(相与代表作为得到数字6)作为反馈端,相与再连接到两片

192的清零端上即可。如此就可以实现60进制的计数。满足秒计数的要求。实现此功能的部分电路如图四所示:

图4 60进制计数器电路

对于分计数单元,与秒计数单元完全一致,在此不再累述。

对于时计数单元,同理,将作为十位输出的那一片的192的输出端中的Q1(代表数字2)和作为个位输出的那一片192的输出端中的Q2(代表数字4)作为反馈端,相与再连接到两片192的清零端上即可。如此就可以实现24进制的计数。满足时计数的要求。实现此功能的部分电路如图五所示:

图5 24进制计数器电路

4.译码驱动及显示单元

计数器实现了对时间的累计以8421BCD码形式输出,选用显示译码电路将计数器的输出数码转换为数码显示器件所需要的输出逻辑和一定的电流,选用74LS48作为显示译码电路,选用共阴LED数码管作为显示单元电路,实现此部分的功能的电路如图6所示。

图6 译码驱动和显示电路

5.校时电路

当重新接通电源或走时出现误差时都需要对时间进行校正。通常,校正时间的方法是:首先截断正常的计数通路,然后再进行人工出触发计数或将频率较高的方波信号加到需要校正的计数单元的输入端,校正好后,再转入正常计时状态即可。

根据要求,数字钟应具有分校正和时校正功能,因此,应截断分个位和时个位的直接计数通路,并采用正常计时信号与校正信号可以随时切换的电路接入其中。

图7 校正电路

6.整点报时电路

一般时钟都应具备整点报时电路功能,即在时间出现整点前数秒内,数字钟会自动报时,以示提醒。其作用方式是发出连续的或有节奏的音频声波,较复杂的也可以是实时语音提示。本次采用的是用蜂鸣器实现简单的鸣响。

根据要求,电路应在整点前10秒钟内开始整点报时,即当时间在59分51秒到59分59秒期间时,报时电路报时控制信号。故将秒计数电路部分的作为十位的那一片的192的输出端中的Q2、Q0相与(即表示数字5),作为蜂鸣器的控制端1。再将分计数电路部分的作为十位的那一片192的输出端中的Q2、Q0相与(即表示数字5),再和作为个位的那一片192的输出端中的Q3、Q0相与(即表示数字9)相与,如此作为蜂鸣器的控制端2。最后,再将两个控制端相与,连接至蜂鸣器的一端,再将另一段接地即可。

上一篇:辩论自我介绍开场白下一篇:上鲍小学少先队工作计划