高仿真数码管电子钟课程设计报告

合集下载

电子钟课程设计报告

电子钟课程设计报告

电子钟课程设计报告一、设计任务和要求设计一个电子钟,要求:1、以十进制数显示时、分、秒;2、具有时、分、秒校准功能二、设计说明1、所需的原件:时钟脉冲、电源+V cc、按钮开关、开关SW、双输入端与门、三输入端与门、双输入端或门、74LS160计数器、74LS49译码器、RESPACK7(做上拉电阻)、七段显示数码管、与非门2、电路设计图如下:3、电路分析:(1)、时钟的分秒为60进制,时为24进制,从上往下排序数码管D1D2组成秒,D3D4组成分,D5D6组成时。

当D1的计数器进位时,RCO输出高电平给D2的计数器的ENP、ENT,因为整个电路都使用同一个时钟信号,因此D2的计数器的ENP、ENT和CLK同时为高电平,因此计数器加一。

同理D2的计数器的进位会使D3是其计数器加一,以此类推,构成时钟。

(2)工作时候把SW断开,按钮开关全部闭上(3)七段显示数码管必须要接上拉电阻才能工作(4)校准功能:吧开关SW闭上,按一下按钮开关AN1,在那时会输出一个高电平,在三端输入与门和时钟信号,接地结果反向的信号相与,输出高电平再或门之后输出高电平使计数器工作一次,即加一。

因此AN1按一下,D1加一,即秒加一。

同理AN2可以校准分,AN3可以校准时。

校准后断开SW让其开始工作。

四、调试(1)把时钟信号频率调成1Hz,开始工作,检查D1到D2进位是否正确(2)把时钟信号频率调成10Hz,开始工作,检查D2到D3进位是否正确(3)把时钟信号频率调成100Hz,开始工作,检查D3到D4进位是否正确(4)把时钟信号频率调成600Hz,开始工作,检查D4到D5进位是否正确把时钟信号频率调成6KHz,开始工作,检查D5到D6进位是否正确,再检查D5 D6是否组成24进制出现的问题:1、若数码管的示数不变,可能是开关SW合上了2、如果各个数码管一起计数,可能是是开关SW合上了,而且按钮开关全部断开了。

3、进位是0—1—2—3……9—19—10—11,则计数器的进位输出连到了下一个个计数器的时钟输入端了。

单片机技术课程设计报告(数码管电子时钟)

单片机技术课程设计报告(数码管电子时钟)

福建工程学院软件学院题目:电子时钟班级:物联网2班姓名:孙建兴学号: 3112113229指导老师:郑旭丹日期: 2013 年 11 月 14 日课设报告目录1 摘要 (3)2 设计要求 (3)2.1 功能需求 (3)2.2 设计要求 (3)3 硬件设计及描述 (5)3.1 总体描述 (5)3.2 系统总体框图 (6)3.3 Proteus电路图 (6)3.4 各部分硬件介绍 (6)4 软件设计流程及描述 (9)4.1 程序流程图 (9)4.2函数模块及功能 (9)5 功能实现(功能介绍+照片) (19)6 心得体会 (19)7 源程序 (20)1 摘要通过本课程设计使学生进一步巩固单片机原理与技术的基本概念、理论,分析问题的基本方法;增强学生的软件编程实现能力和解决实际问题的能力,使学生能有效的将理论和实际紧密结合,拓展学生在工程实践方面的专业知识和相关技能。

2 设计要求要求能够熟练的用单片机中定时/计数、中断、数码管显示等技术参考教或相关资料,采用C语言采用编程实现数字时钟的功能,在数码管上实时显示,并运用Proteus软件绘制电路原理图,进行仿真验证和误差分析。

2.1 功能需求1、在数码管上动态显示时间,时钟的工作范围在00:00:00~24:59:59。

2、可对时钟在00:00:00~24:59:59范围内任意正常的设置。

2.2 设计要求1、通过数码管动态显示时间信息。

图2.1 数码管2、通过独立键盘的P32和P33接口分别实现开始计时和时间设置功能。

图2.2 独立键盘3、通过矩阵键盘实现时间设置功能中时间的更改。

图2.3 4*4矩阵键盘3 硬件设计及描述3.1 总体描述1、程序开始后首先显示00-00-00等待按键,按P3^2键后开始计时功能。

2、当按下P3^3键后进入时间设置模式,等待用户设置时间。

3、通过矩阵键盘设置时间,可对时间的每一位进行增减操作。

4、限制每一位的数字范围,即秒的个位和分的个位为0-9,十位为0-5;当小时的十位为0-1时,其个位0-9,当十位为2时,其个位0-3。

[数电课程设计数字电子时钟的实现] 电子时钟课程设计

[数电课程设计数字电子时钟的实现] 电子时钟课程设计

[数电课程设计数字电子时钟的实现] 电子时钟课程设计课程设计报告设计题目:数字电子时钟的设计与实现班级:学号:姓名:指导教师:设计时间:摘要钟表的数字化给人们生产生活带来了极大的方便,大大的扩展了原先钟表的报时。

诸如,定时报警、按时自动打铃、时间程序自动控制等,这些,都是以钟表数字化为基础的。

功能数字钟是一种用数字电路实现时、分、秒、计时的装置,与机械时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。

从原理上讲,数字钟是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。

因此,此次设计与制作数字钟就是为了了解数字钟的原理,从而学会制作数字钟,而且通过数字钟的制作进一步的了解各种在制作中用到的中小规模集成电路的作用及使用方法。

通过此次课程设计可以进一步学习与各种组合逻辑电路与时序电路的原理与使用方法。

通过仿真过程也进一步学会了Multisim7的使用方法与注意事项。

本次所要设计的数字电子表可以满足使用者的一些特殊要求,输出方式灵活,如可以随意设置时、分、秒的输出,定点报时。

由于集成电路技术的发展,,使数字电子钟具有体积小、耗电省、计时准确、性能稳定、维护方便等优点。

关键词:数字钟,组合逻辑电路,时序电路,集成电路目录摘要 (1)第1章概述············································3第2章课程设计任务及要求·······························42.1设计任务············································42.2设计要求············································4第3章系统设计··········································63.1方案论证············································63.2系统设计············································63.2.1结构框图及说明·································63.2.2系统原理图及工作原理···························73.3单元电路设计········································83.3.1单元电路工作原理·······························83.3.2元件参数选择···································14第4章软件仿真·········································154.1仿真电路图··········································154.2仿真过程············································164.3仿真结果············································16第5章安装调试··········································175.1安装调试过程········································175.2故障分析············································17第6章结论···············································18第7章使用仪器设备清单··································19参考文献·················································19收获、体会和建议·········································20第1章概述数字集成电路的出现和飞速发展,以及石英晶体振荡器的广泛应用,使得数字钟的精度稳定度远远超过了老式的机械表,用数字电路实现对“时”、“分”、“秒”数字显示的数字钟在数字显示方面,目前已有集成的计数、译码电路,它可以直接驱动数码显示器件,也可以直接采用才COMS--LED光电组合器件,构成模块式石英晶体数字钟。

电子数字时钟课程设计报告(数电)

电子数字时钟课程设计报告(数电)

电子数字时钟课程设计报告(数电)第一篇:电子数字时钟课程设计报告(数电)数字电子钟的设计1.设计目的数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。

数字钟从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。

因此,我们此次设计数字钟就是为了了解数字钟的原理,从而学会制作数字钟。

而且通过数字钟的制作进一步的了解各种在制作中用到的中小规模集成电路的作用及实用方法。

且由于数字钟包括组合逻辑电路和时叙电路。

通过它可以进一步学习与掌握各种组合逻辑电路与时序电路的原理与使用方法。

1.1设计指标1.时间以12小时为一个周期;2.显示时、分、秒;3.具有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间; 1.2 设计要求1、电路设计原理说明2、硬件电路设计(要求画出电路原理图及说明)3、实物制作:完成的系统能达到题目的要求。

4、完成3000字的课程设计报告2.功能原理2.1 数字钟的基本原理数字电子钟由信号发生器、“时、分、秒”计数器、LED数码管、校时电路、整点报时电路等组成。

工作原理为时钟源用以产生稳定的脉冲信号,作为数字种的时间基准,要求震荡频率为1HZ,为标准秒脉冲。

将标准秒脉冲信号送入“秒计数器”,该计数器采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。

“分计数器”也采用60进制计数器,每累计60分,发出一个“时脉冲”信号,该信号将被送到“时计数器”。

“时计数器”采用24进制计数器,可以实现24小时的累计。

LED数码管将“时、分、秒”计数器的输出状态显示。

校时电路是来对“时、分、秒”显示数字进行校对调整。

2.2 原理框图3.功能模块3.1 振荡电路多谐振荡器也称无稳态触发器,它没有稳定状态,同时无需外加触发脉冲,就能输出一定频率的矩形波形(自激振荡)。

电子钟课程设计报告

电子钟课程设计报告

电子钟课程设计报告一、课程目标知识目标:1. 学生能理解电子钟的基本原理,掌握电子钟的组成、工作方式及相关电子元件的功能。

2. 学生能描述电子钟中数字电路的基本逻辑关系,理解时、分、秒的计算方法。

3. 学生了解电子钟的调试与检修方法,掌握基本的时间调整与故障排查技巧。

技能目标:1. 学生能运用所学知识,动手组装简单的电子钟电路,并能正确进行调试。

2. 学生能通过实际操作,学会使用万用表、电烙铁等基本电子工具,培养实际动手能力。

3. 学生能通过团队合作,解决电子钟组装过程中遇到的问题,提高问题分析和解决能力。

情感态度价值观目标:1. 学生培养对电子技术的兴趣,激发创新意识,提高科学探究的积极性。

2. 学生在团队协作中,学会尊重他人,培养良好的沟通与协作能力。

3. 学生通过学习电子钟的制作过程,认识到时间的宝贵,培养珍惜时间、严谨细致的态度。

课程性质:本课程为实践性较强的电子技术课程,旨在让学生在动手实践中掌握电子钟的基本原理和组装调试技能。

学生特点:五年级学生对电子技术有一定的好奇心,具备基本的动手能力,但需加强对电子元件和电路的理解。

教学要求:注重理论与实践相结合,关注学生的个体差异,引导学生在动手实践中学习,培养其创新思维和团队协作能力。

通过课程目标的具体分解,为后续教学设计和评估提供明确方向。

二、教学内容根据课程目标,本章节教学内容分为以下三个部分:1. 电子钟原理及组成- 介绍电子钟的基本原理,包括时、分、秒的计算方法。

- 电子钟的组成:时钟振荡器、分频器、计数器、显示器等。

- 教材章节:第三章“数字电路基础”及第四章“时钟电路”。

2. 电子元件及其功能- 学习常用电子元件:电阻、电容、二极管、三极管等。

- 电子元件在电子钟中的应用及其功能。

- 教材章节:第二章“常用电子元件”。

3. 电子钟组装与调试- 学习电子钟的组装方法,包括焊接技术、电路连接等。

- 掌握电子钟的调试技巧,如时间调整、故障排查等。

《电子技术课程设计报告》:多功能数字钟电路设计与仿真

《电子技术课程设计报告》:多功能数字钟电路设计与仿真

电子技术课程设计报告——多功能数字钟电路设计与仿真目录一、实验名称 (1)二、用途 (1)三、主要技术指标 (1)四、设计步骤 (1)1、数字钟的构成 (1)2、各模块设计 (2)(1)石英晶体振荡器 (2)(2)分频器 (3)(3)分秒计时器 (4)(4) 小时计时器 (4)(5)译码器与数码管 (5)(6)校时电路 (6)(7)整点报时电路 (6)(8)闹钟电路 (7)五、电路仿真及调试 (8)六、元器件明细表 (8)七、小结 (10)一、实验名称多功能数字钟电路设计与仿真二、用途数字钟是一种用数字电路技术实现时、分、秒计时的钟表。

与机械钟相比具有更高的准确性和直观性,具有更长的使用寿命,已得到广泛的使用。

数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路。

由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路,同时标准的1HZ时间信号必须做到准确稳定,通常使用石英晶体振荡器电路构成数字钟。

三、主要技术指标①时间以24小时为一个周期;②数值显示时、分、秒;③有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间;④具有整点报时功能,当时间到达整点前5秒进行蜂鸣报时;⑤具有闹钟功能,当时间到达预设的时间进行蜂鸣闹铃;⑥为了保证计时的稳定及准确须由石英晶体振荡器提供时间基准信号。

四、设计步骤1、数字钟的构成数字式计时器应由秒发生装置、计秒,计分,计时部分、时间显示部分、时间校正和闹钟报时等几部分组成。

所涉及的电子器件主要有振荡器、加法计数器、译码器、显示器、寄存器、比较器等。

其中,振荡器组成标准秒信号发生器;由不同进制的计数器、译码器和显示器组成计时,显示系统;寄存器和比较器构成定点报时系统。

其结构原理图如下:该系统的主要工作原理是:①振荡器产生高稳定的高频脉冲信号,作为数字钟的时间基准(系统时钟),再经分频器输出标准秒脉冲信号。

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

数字时钟课程设计报告

数字时钟课程设计报告

一.设计题目数字时钟仿真设计二.设计目的和要球1)目的掌握数字时钟的工作原理和设计方法,学会用Multisim10软件操作实验内容,掌握设计性试验的实验方法。

数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的应用。

数字钟从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。

因此,我们此次设计数字钟就是为了了解数字钟的原理,从而学会制作数字钟。

而且通过数字钟的制作进一步的了解各种在制作中用到的中小规模集成电路的作用及实用方法。

且由于数字钟包括组合逻辑电路和时序电路。

通过它可以进一步学习和掌握各种组合逻辑电路与时序电路的原理和方法。

2)要求(1)设计一个具有时、分、秒的十进制数字显示的计时器。

(2)具有手动校时、校分的功能。

(3)通过开关能实现小时的十二进制和二十四进制转换。

(4)具有整点报时的功能,应该是每个整点完成相应点数的报时,如3点钟响3声。

三.设计原理1)总体方案设计数字时钟由振荡器、分频器、计数器、译码现实、报时等电路组成。

其中,振荡器和分频器组成标准信号发生器,直接决定计时系统的精度。

由不同进制的计数器、译码器和显示器组成计时系统。

将标准秒信号送入采用六十进制的“秒计数器”,每累计60s就发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。

“分计数器”也采用六十进制计数器,每累计60min,发出一个“时脉冲”信号,该信号将被送到“时计数器”。

“时计数器”采用二十四进制或十二进制计时器,可实现对一天24h 或12h 的累计。

译码显示电路将“时”、“分”、“秒”计数器的输出状态通过六位七段译码器显示器显示出来,可进行整点报时,计时出现误差时,可以用校时电路校时、校分。

数字时钟的原理框图如图1所示。

2)单元电路设计1.秒脉冲产生电路秒脉冲产生电路用一个1Hz 的秒脉冲时钟信号源代替。

电子设计自动化(EDA)_数字时钟程序模块(LED数码管显示)_实验报告

电子设计自动化(EDA)_数字时钟程序模块(LED数码管显示)_实验报告

电子设计自动化(EDA)—数字时钟LED数码管显示二、实验内容和实验目的1. 6个数码管动态扫描显示驱动2. 按键模式选择(时\分\秒)与闹钟(时\分)调整控制,3. 用硬件描述语言(或混合原理图)设计时、分、秒计数器模块、闹钟模块、按键控制状态机模块、动态扫描显示驱动模块、顶层模块。

要求使用实验箱左下角的6个动态数码管(DS6 A~DS1A)显示时、分、秒;要求模式按键和调整按键信号都取自经过防抖处理后的按键跳线插孔。

实验目的: 1)学会看硬件原理图, 2)掌握FPGA硬件开发的基本技能3)培养EDA综合分析、综合设计的能力三、实验步骤、实现方法(或设计思想)及实验结果主要设备: 1)PC机, 2)硬件实验箱, 3)Quartus II软件开发平台。

1.打开Quartus II , 连接实验箱上的相关硬件资源, 如下图1所示。

2.建立新文件, 选择文本类型或原理图类型。

3. 编写程序。

4.编译5. 仿真, 加载程序到芯片, 观察硬件输出结果(数码管显示)6.结果正确则完成。

若结果不正确, 则修改程序, 再编译, 直到正确。

模24计数器模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY count24 ISPORT(clk,en:IN STD_LOGIC;cout:OUT STD_LOGIC;hh,hl:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END count24;ARCHITECTURE arc OF count24 ISSIGNAL a,b:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(clk,en)BEGINhh<=a;hl<=b;IF(clk'EVENT AND clk='1') THENIF(en='1') THENIF(a="0010" AND b="0011") THENa<="0000";b<="0000";ELSE IF(b="1001") THENa<=a+'1';b<="0000";ELSE b<=b+'1';END IF;END IF;IF(a="0010" AND b="0010") THENcout<='1';ELSE cout<='0';END IF;END IF;END IF;END PROCESS;END arc;模60计数器模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY count60 ISPORT(clk,en:IN STD_LOGIC;cout:OUT STD_LOGIC;hh,hl:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END count60;ARCHITECTURE arc OF count60 ISSIGNAL a,b:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL sout:STD_LOGIC;BEGINPROCESS(clk)BEGINhh<=a; hl<=b;IF(clk'EVENT AND clk='1') THENIF(en='1') THENIF(a="0101" AND b="1001") THENa<="0000";b<="0000";ELSE IF(b="1001") THENa<=a+'1';b<="0000";ELSE b<=b+'1';END IF;END IF;END IF;END IF;END PROCESS;sout<='1' WHEN a="0101" AND b="1001" ELSE '0';cout<=sout AND en;END arc;4-7显示译码模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY segment4to7 ISPORT(s:IN STD_LOGIC_VECTOR(3 DOWNTO 0);a,b,c,d,e,f,g:OUT STD_LOGIC);END segment4to7;ARCHITECTURE arc OF segment4to7 IS SIGNAL y:STD_LOGIC_VECTOR(6 DOWNTO 0); BEGINa<= y(6);b<= y(5);c<= y(4);d<= y(3);e<= y(2); f<= y(1);g<= y(0);PROCESS(s)BEGINCASE s ISWHEN "0000"=>y<="1111110"; WHEN "0001"=>y<="0110000"; WHEN "0010"=>y<="1101101"; WHEN "0011"=>y<="1111001"; WHEN "0100"=>y<="0110011"; WHEN "0101"=>y<="1011011"; WHEN "0110"=>y<="1011111"; WHEN "0111"=>y<="1110000"; WHEN "1000"=>y<="1111111"; WHEN "1001"=>y<="1111011"; WHEN OTHERS=>y<="0000000"; END CASE;END PROCESS;END arc;带闹钟控制模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mode_adjust_with_alarm ISPORT (adjust,mode,clk1hz: IN STD_LOGIC;clkh,enh,clkm,enm,clks,enha: OUT STD_LOGIC;clkh_a,clkm_a:OUT STD_LOGIC;mode_ss: OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END mode_adjust_with_alarm;ARCHITECTURE arc OF mode_adjust_with_alarm ISTYPE mystate IS (s0,s1,s2,s3,s4,s5);SIGNAL c_state,next_state: mystate;BEGINPROCESS (c_state)BEGINCASE c_state ISWHEN s0=> next_state <= s1; clkh<=clk1hz; clkm<=clk1hz; clks<=clk1hz;enh<='0'; enm<='0'; enha<='0'; clkh_a<= '0'; clkm_a<= '0'; mode_ss <="000";WHEN s1=> next_state <= s2; clkh<=adjust; clkm<= '0'; clks<='0';enh<='1'; enm<='0';enha<='0'; clkh_a<= '0';clkm_a<= '0'; mode_ss <="001";WHEN s2=> next_state <= s3; clkh<= '0'; clkm<=adjust; clks <= '0';enh<='0';enm<='1';enha<='0'; clkh_a<= '0'; clkm_a<= '0'; mode_ss <="010";WHEN s3=> next_state <= s4; clkh<= '0'; clkm<= '0'; clks<=adjust;enh<='0'; enm<='0';enha<='0'; clkh_a<= '0'; clkm_a<= '0'; mode_ss <="011";WHEN s4=> next_state <= s5; clkh<= clk1hz; clkm<= clk1hz; clks<=clk1hz;enh<='0';enm<='0';enha<='1'; clkh_a<=adjust; clkm_a<= '0'; mode_ss <="100";WHEN s5=> next_state <= s0; clkh<= clk1hz; clkm<= clk1hz; clks<=clk1hz;enh<='0'; enm<='0'; enha<='0'; clkh_a<= '0'; clkm_a<=adjust; mode_ss <="101";END CASE;END PROCESS;PROCESS (mode)BEGINIF (mode'EVENT AND mode='1') THENc_state<=next_state ;END IF;END PROCESS;END arc;扫描模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY scan ISPORT(clk256hz:IN STD_LOGIC;ss:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END scan;ARCHITECTURE arc OF scan ISTYPE mystate IS (s0, s1,s2,s3,s4,s5);SIGNAL c_state,next_state: mystate;BEGINPROCESS ( c_state )BEGINCASE c_state ISWHEN s0=> next_state <=s1; ss<="010";WHEN s1=> next_state <=s2; ss<="011";WHEN s2=> next_state <=s3; ss<="100";WHEN s3=> next_state <=s4; ss<="101";WHEN s4=> next_state <=s5; ss<="110";WHEN s5=> next_state <=s0; ss<="111";END CASE;END PROCESS;PROCESS (clk256hz)BEGINIF (clk256hz'EVENT AND clk256hz='1') THENc_state<=next_state ;END IF;END PROCESS;END arc;复用模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux ISPORT(hh,hl,mh,ml,sh,sl,hha,hla,mha,mla:IN STD_LOGIC_VECTOR(3 DOWNTO 0);ss,mode_ss:IN STD_LOGIC_VECTOR(2 DOWNTO 0);y:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);alarm:OUT STD_LOGIC);END mux;ARCHITECTURE arc OF mux ISSIGNAL a,hhtmp,hltmp,mhtmp,mltmp,shtmp,sltmp:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(mode_ss)BEGINCASE mode_ss ISWHEN "000"=>hhtmp<=hh; hltmp<=hl; mhtmp<=mh; mltmp<=ml; shtmp<=sh; sltmp<=sl;WHEN "001"=>hhtmp<=hh; hltmp<=hl; mhtmp<=mh; mltmp<=ml; shtmp<=sh; sltmp<=sl;WHEN "010"=>hhtmp<=hh; hltmp<=hl; mhtmp<=mh; mltmp<=ml; shtmp<=sh; sltmp<=sl;WHEN "011"=>hhtmp<=hh; hltmp<=hl; mhtmp<=mh; mltmp<=ml; shtmp<=sh; sltmp<=sl;WHEN "100"=> hhtmp<=hha; hltmp<=hla; mhtmp<=mha; mltmp<=mla; shtmp<=sh; sltmp<=sl;WHEN "101"=> hhtmp<=hha; hltmp<=hla; mhtmp<=mha; mltmp<=mla; shtmp<=sh; sltmp<=sl;WHEN OTHERS=>hhtmp<="0000";hltmp<="0000";mhtmp<="0000";mltmp<="0000";shtmp<="0000";sltmp<="0000"; END CASE;END PROCESS;PROCESS(ss)BEGINCASE ss ISWHEN "010"=> a <=hhtmp;WHEN "011"=> a <=hltmp;WHEN "100"=> a <=mhtmp;WHEN "101"=> a <=mltmp;WHEN "110"=> a <=shtmp;WHEN "111"=> a <=sltmp;WHEN OTHERS => a <="0000";END CASE;y<=a;END PROCESS;alarm<='1' WHEN ((hh=hha)AND(hl=hla)AND(mh=mha)AND(ml=mla)) ELSE '0';END arc;闪烁模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY blink_control ISPORT(ss,mode_ss:IN STD_LOGIC_VECTOR(2 DOWNTO 0);blink_en:OUT STD_LOGIC);END blink_control;ARCHITECTURE arc OF blink_control ISBEGINPROCESS (ss,mode_ss)BEGINIF(ss="010" AND mode_ss="001") THEN blink_en<='1';ELSIF(ss="011" AND mode_ss="001") THEN blink_en<='1';ELSIF(ss="100" AND mode_ss="010") THEN blink_en<='1';ELSIF(ss="101" AND mode_ss="010") THEN blink_en<='1';ELSIF(ss="110" AND mode_ss="011") THEN blink_en<='1';ELSIF(ss="111" AND mode_ss="011") THEN blink_en<='1';ELSIF(ss="010" AND mode_ss="100") THEN blink_en<='1';ELSIF(ss="011" AND mode_ss="100") THEN blink_en<='1';ELSIF(ss="100" AND mode_ss="101") THEN blink_en<='1';ELSIF(ss="101" AND mode_ss="101") THEN blink_en<='1';ELSE blink_en<='0';END IF;END PROCESS;END arc;Top文件LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY design3 ISPORT (mode,adjust,clk1hz,clk2hz,clk256hz,clk1khz:IN STD_LOGIC;alarm,a,b,c,d,e,f,g:OUT STD_LOGIC;ss:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END design3;ARCHITECTURE arc OF design3 ISCOMPONENT mode_adjust_with_alarm PORT (adjust,mode,clk1hz: IN STD_LOGIC;clkh,enh,clkm,enm,clks,enha: OUT STD_LOGIC;clkh_a,clkm_a:OUT STD_LOGIC;mode_ss: OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END COMPONENT;COMPONENT scan PORT (clk256hz:IN STD_LOGIC;ss:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END COMPONENT;COMPONENT segment4to7 PORT (s: IN STD_LOGIC_VECTOR(3 DOWNTO 0);a,b,c,d,e,f,g: OUT STD_LOGIC);END COMPONENT;COMPONENT mux PORT(hh,hl,mh,ml,sh,sl,hha,hla,mha,mla:IN STD_LOGIC_VECTOR(3 DOWNTO 0);ss,mode_ss:IN STD_LOGIC_VECTOR(2 DOWNTO 0);y:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);alarm:OUT STD_LOGIC);END COMPONENT;COMPONENT blink_control PORT(ss,mode_ss:IN STD_LOGIC_VECTOR(2 DOWNTO 0);blink_en:OUT STD_LOGIC);END COMPONENT;COMPONENT count24 PORT (clk,en:IN STD_LOGIC;cout:OUT STD_LOGIC;hh,hl:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT;COMPONENT count60 PORT (clk ,en:IN STD_LOGIC;cout:OUT STD_LOGIC;hh,hl:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT;SIGNALclkh,enh,clkm,enm,clks,clkh_a,clkm_a,coutm,couts,coutm_en,couts_en,cout,vcc,coutma_en,coutma,alarm1,bli nk_en,blink_tmp,enha: STD_LOGIC;SIGNAL mode_ss,ss1:STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL hh,hl,mh,ml,sh,sl,hha,hla,mha,mla,y,i:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINvcc<='1';coutm_en <= enh OR coutm;couts_en <= enm OR couts;coutma_en<= enha OR coutma;blink_tmp<=blink_en and clk2hz;i(3)<=y(3) OR blink_tmp;i(2)<=y(2) OR blink_tmp;i(1)<=y(1) OR blink_tmp;i(0)<=y(0) OR blink_tmp;ss<=ss1;alarm<=alarm1 AND clk1khz;u1:mode_adjust_with_alarmPORT MAP( adjust,mode,clk1hz,clkh,enh,clkm,enm,clks,enha,clkh_a,clkm_a,mode_ss);u2:count24 PORT MAP(clkh,coutm_en,cout,hh,hl);u3:count60 PORT MAP(clkm,couts_en,coutm,mh,ml);u4:count60 PORT MAP(clks,vcc,couts,sh,sl);u5:count24 PORT MAP(clkh_a,coutma_en,cout,hha,hla);u6:count60 PORT MAP(clkm_a,vcc,coutma,mha,mla);u7:mux PORT MAP(hh,hl,mh,ml,sh,sl,hha,hla,mha,mla,ss1,mode_ss,y,alarm1);u8:scan PORT MAP(clk256hz,ss1);u9:blink_control PORT MAP(ss1,mode_ss,blink_en);u10:segment4to7 PORT MAP(i,a,b,c,d,e,f,g);END arc;实验结果:数字钟包括正常的时分秒计时, 实验箱左下角的6个动态数码管(DS6 A~DS1A)显示时、分、秒。

电子钟课程设计报告

电子钟课程设计报告

电子钟程序设计一、课程设计目的通过课程设计,进一步建立微机系统概念,加深对系统理解和认识,提高微机系统的应用水平;进一步学习和掌握汇编语言程序的编写方法和应用方法,通过较大规模程序的编写,提高汇编语言程序的水平;进一步熟悉接口,熟悉并口芯片、中断控制芯片、定时计数芯片及数码管等常用接口芯片的编程使用方法。

二、课程设计要求和内容1、设计要求利用8253可编程定时/计数器、8259中断控制器、8255可编程并行接口芯片七段数码管设计一个电子钟的电路,并编制一程序使得该电子钟能正常运行。

2、设计内容选用8253的计数器2进行100ms的定时,其输出OUT2与8259的IRQ7相连,当定时到100ms时产生一个中断信号,在服务中断程序中进行时、分、秒的计数,并送入相应存储单元;8255的A口接七段数码管的位选信号,B口接数码管的段选信号,时、分、秒的数值通过对8255的编程可送到七段数码管上显示。

三、课程设计使用的设备和开发环境1、设计环境:PC机一台,Windows xp 系统,实验箱,导线若干。

2、设计所用设备:8253定时器:用于产生秒脉冲波,其输出信号可作为中断请示信号送IRQ28255并口:用作接口芯片8259中断控制器:用于产生中断LED:六个LED用于显示时:分:秒四、硬件电路设计(一)设计思路1.先在数据段开辟6个存储单元,用来存放时、分、秒的信息。

这6个存储单元分别对应时、分、秒的十位和个位。

调用子程序的清屏部分。

2. 在主程序中分别对8253、8259、8255进行初始化编程。

8253的计数器0工作在方式3下,CLK0接19.2K的脉冲频率,经过19200次分频,在OUT0端口输出频率为1Hz的方波,产生秒脉冲。

3. 8255的A口工作在方式0输入,B口工作在方式0输出,为基本的输入输出方式。

这部分为。

手动修改时间部分4. 在中断服务程序中对中断次数进行统计。

当产生1次中断时,将秒的个位加1,判断是否到10,如到了则十位加1,个位清零;再判断十位是否到6,如到了则十位清零,分的个位加1,同理对分、时做相应的处理。

数字电子钟课程设计报告

数字电子钟课程设计报告

课程设计(论文)课程名称:电子设计自动化课程设计题目名称:多功能数字电子钟专业:电子信息科学与技术电子三班学号:姓名:指导教师:设计时间:2011-2012-1学期16、17周目录一、课程设计的目的及要求: (3)1.1 课程设计的目的: (3)1.2课程设计的要求: (3)二、电子钟的总的设计方案及原理图: (3)2.1电子钟的设计的总体框图: (3)2.1.2、工作进程: (4)2.2电子钟各部分的原理及其仿真: (4)2.2.1 分频器的设计原理及其仿真: (4)2.2.2 控制器的设计原理及其仿真: (6)2.2.3 调时器的设计原理及其仿真: (7)2.2.4 时钟的设计原理及其仿真: (7)2.2.5 秒表的设计原理及其仿真: (10)2.2.6 闹钟的设计原理及其仿真: (13)2.2.7 闹钟响铃的设计原理及其仿真: (15)2.2.8 显示模块的设计原理及其仿真: (17)三、电子钟设计的总体仿真: (20)四、收获与体会: (20)五、参考文献: (20)一、课程设计的目的及要求:1.1 课程设计的目的:1、熟悉EDA工具设计数字电路的方法。

2、掌握VHDL描述硬件的方法。

3、加深对VHDL的理解和掌握。

1.2课程设计的要求:基本功能要求:设计一个电子时钟,要求可以显示时、分、秒,用户可以设置时间。

扩展功能要求:跑表功能,闹钟功能,调整数码管的亮度。

二、电子钟的总的设计方案及原理图:2.1电子钟的设计的总体框图:2.1.1、闹钟电路控制电路时钟电路秒表电路显示模块数码管输出显示2.1.2、工作进程:当开机后,系统首先是时钟状态,当按下键8进入调时,键4调节时间,再按下键8退出调时,按两下键5进入秒表,同时键8为开始及清零,键1为结束及开始,再按两下键5进入闹钟设置,键4调节时间,最后按两下键5返回时钟状态,2.2电子钟各部分的原理及其仿真:2.2.1 分频器的设计原理及其仿真:2.2.1.1、原理程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity dvf is----------------状态机控制模块port(clk:in std_logic; -------输入10MHZ信号clk_out1:out std_logic;clk_out2:out std_logic;clk_out3:out std_logic);end;architecture one of dvf issignal clk_tmp1: std_logic;signal clk_tmp2: std_logic;signal clk_tmp3: std_logic;signal cnt1:integer range 0 to 4999999;signal cnt2:integer range 0 to 49999;signal cnt3:integer range 0 to 49;beginfen1: process(clk,clk_tmp1)--时钟信号1秒,1HZbeginif clk'event and clk='1' thenif cnt1<4999999 thencnt1<=cnt1+1;elsecnt1<=0;clk_tmp1<=NOT clk_tmp1 ;end if;end if;clk_out1<=clk_tmp1;end process;fen2: process(clk,clk_tmp2)--跑表信号100HZbeginif clk'event and clk='1' thenif cnt2<49999 then cnt2<=cnt2+1;else cnt2<=0; clk_tmp2<=NOT clk_tmp2 ;end if;end if;clk_out2<=clk_tmp2;end process;fen3: process(clk,clk_tmp3)--用于控制模块的时钟beginif clk'event and clk='1' thenif cnt3<49 thencnt3<=cnt3+1;elsecnt3<=0;clk_tmp3<=NOT clk_tmp3 ;end if;end if;clk_out3<=clk_tmp3;end process;end ;2.2.1.2、分频器的RTL仿真:2.2.2.1、控制器原理程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity control isport (ad_in: in std_logic;out_en: out std_logic_vector(1 downto 0)); end;architecture one of control issignal moshis:std_logic_vector(1 downto 0):="00"; beginprocess(ad_in)beginif ad_in'event and ad_in='1' thenif moshis="10"thenmoshis<="00";else moshis<=moshis+1;end if;end if;end process;out_en<=moshis;end;2.2.2.2、RTL仿真:2.2.3.1、调时器的原理程序:library ieee;use ieee.std_logic_1164.all;entity tiaoshi isport( clk_t,dis_clk : in std_logic;ad_in : in std_logic;ad_out : out std_logic);end ;architecture bhv of tiaoshi issignal q1: std_logic;beginq1<=clk_t and dis_clk;ad_out<=q1 or ad_in;end;2.2.3.2、RTL仿真:2.2.4 时钟的设计原理及其仿真:2.2.4.1、时钟的原理程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity clock is --时钟port( en_in : in std_logic_vector(1 downto 0);clk_in : in std_logic;s_out1 : out std_logic_vector(3 downto 0);--秒的个位s_out2 : out std_logic_vector(3 downto 0);--秒的十位m_out1 : out std_logic_vector(3 downto 0);--分的个位m_out2 : out std_logic_vector(3 downto 0);--分的十位h_out1 : out std_logic_vector(3 downto 0);--小时的个位h_out2 : out std_logic_vector(3 downto 0));--小时的十位end ;architecture one of clock issignal tmp10:std_logic_vector(3 downto 0);signal tmp:std_logic_vector(3 downto 0);signal m_tmp10:std_logic_vector(3 downto 0);signal m_tmp:std_logic_vector(3 downto 0);signal h_tmp10:std_logic_vector(3 downto 0);signal h_tmp:std_logic_vector(3 downto 0);signal s_jinwei:std_logic;--秒的溢出signal m_jinwei:std_logic;--分钟的溢出begin--******************************************************************* no1:process(clk_in,tmp,tmp10)beginif clk_in'event and clk_in='1' thenif en_in="00"thenif (tmp10="0101" and tmp="1001") thentmp10<="0000";tmp<="0000";elsif tmp="1001" thentmp<="0000";tmp10<=tmp10+1;else tmp<=tmp+1;end if;end if;end if;if tmp10="0000" and tmp="0000" then s_jinwei<='1';else s_jinwei<='0';end if;s_out2<=tmp10;s_out1<=tmp;end process;--*******************************************************************no2: process(s_jinwei,en_in,m_tmp,m_tmp10)--用来输出分钟beginif s_jinwei'event and s_jinwei='1' thenif en_in="00"thenif (m_tmp10="0101" and m_tmp="1001") thenm_tmp10<="0000";m_tmp<="0000";elsif m_tmp="1001" thenm_tmp<="0000";m_tmp10<=m_tmp10+1;else m_tmp<=m_tmp+1;end if;end if;end if;if m_tmp10="0101" and m_tmp="1001" then m_jinwei<='1';else m_jinwei<='0';end if;m_out2<=m_tmp10;m_out1<=m_tmp;end process;--******************************************************************* no3: process(m_jinwei,en_in,h_tmp,h_tmp10)--用来输出小时beginif m_jinwei'event and m_jinwei='1' thenif en_in="00"thenif (h_tmp10="0010" and h_tmp="0100") thenh_tmp10<="0000";h_tmp<="0000";elsif h_tmp="1001" thenh_tmp<="0000";h_tmp10<=h_tmp10+1;else h_tmp<=h_tmp+1;end if;end if;end if;h_out2<=h_tmp10;h_out1<=h_tmp;end process;end;2.2.4.2、时钟的RTL仿真:2.2.5 秒表的设计原理及其仿真:2.2.5.1、秒表的原理程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity second is --秒表port( en_in : in std_logic_vector(1 downto 0);clk_in ,jian1 : in std_logic;reset : in std_logic;s_out1 : out std_logic_vector(3 downto 0);--秒下一位的个位s_out2 : out std_logic_vector(3 downto 0);--秒下一秒的十位m_out1 : out std_logic_vector(3 downto 0);--秒的个位m_out2 : out std_logic_vector(3 downto 0);--秒的十位h_out1 : out std_logic_vector(3 downto 0);--分钟的个位h_out2 : out std_logic_vector(3 downto 0));--分钟的十位end ;architecture one of second issignal tmp10:std_logic_vector(3 downto 0);signal tmp:std_logic_vector(3 downto 0);signal m_tmp10:std_logic_vector(3 downto 0);signal m_tmp:std_logic_vector(3 downto 0);signal h_tmp10:std_logic_vector(3 downto 0);signal h_tmp:std_logic_vector(3 downto 0);signal s_jinwei:std_logic;--秒下一位的溢出signal m_jinwei:std_logic;--秒的溢出signal start:std_logic:='0';begin--******************************************************************* no1:process(clk_in,tmp,tmp10,reset,start) --用来输出秒的下一位beginif reset='1' then tmp10<="0000";tmp<="0000";elsif start='1' thenelsif clk_in'event and clk_in='1' thenif en_in="01"thenif (tmp10="1001" and tmp="1001") thentmp10<="0000";tmp<="0000";elsif tmp="1001" thentmp<="0000";tmp10<=tmp10+1;else tmp<=tmp+1;end if;end if;end if;if tmp10="1001" and tmp="1001" then s_jinwei<='1';--可能有错误,有待修改else s_jinwei<='0';end if;s_out2<=tmp10;s_out1<=tmp;end process;--*******************************************************************no2: process(s_jinwei,en_in,m_tmp,m_tmp10,reset,start)--用来输出秒beginif reset='1' then m_tmp10<="0000";m_tmp<="0000";elsif start='1' thenelsif s_jinwei'event and s_jinwei='1' thenif en_in="01"thenif (m_tmp10="0101" and m_tmp="1001") thenm_tmp10<="0000";m_tmp<="0000";elsif m_tmp="1001" thenm_tmp<="0000";m_tmp10<=m_tmp10+1;else m_tmp<=m_tmp+1;end if;end if;end if;if m_tmp10="0101" and m_tmp="1001" then m_jinwei<='1';else m_jinwei<='0';end if;m_out2<=m_tmp10;m_out1<=m_tmp;end process;--*******************************************************************no3: process(m_jinwei,en_in,h_tmp,h_tmp10,reset,start)--用来输出分钟beginif reset='1' then h_tmp10<="0000";h_tmp<="0000";elsif start='1' thenelsif m_jinwei'event and m_jinwei='1' thenif en_in="01"thenif (h_tmp10="0101" and h_tmp="1001") then h_tmp10<="0000";h_tmp<="0000";elsif h_tmp="1001" thenh_tmp<="0000";h_tmp10<=h_tmp10+1; else h_tmp<=h_tmp+1;end if;end if;end if;h_out2<=h_tmp10;h_out1<=h_tmp;end process;process(jian1,start)beginif jian1'event and jian1='1' thenstart<=not start;else start<=start;end if;end process;end;2.2.5.2、RTL仿真:2.2.6 闹钟的设计原理及其仿真:2.2.6.1 闹钟的原理程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity alarm is --闹钟的设置port( en_in : in std_logic_vector(1 downto 0);ala_set : in std_logic;sec,sec10 : out std_logic_vector(3 downto 0);min : out std_logic_vector(3 downto 0);--分的个位min10 : out std_logic_vector(3 downto 0);--分的十位hr : out std_logic_vector(3 downto 0);--小时的个位hr10 : out std_logic_vector(3 downto 0));--小时的十位end ;architecture one of alarm issignal m_tmp10:std_logic_vector(3 downto 0);signal m_tmp:std_logic_vector(3 downto 0);signal h_tmp10:std_logic_vector(3 downto 0);signal h_tmp:std_logic_vector(3 downto 0);signal m_jinwei:std_logic;--分钟的溢出signal s_jinwei:std_logic;signal s_tmp:std_logic_vector(3 downto 0);signal s_tmp10:std_logic_vector(3 downto 0);begin--*******************************************************************no1: process(ala_set,en_in,s_tmp,s_tmp10)--用来输出秒beginif ala_set'event and ala_set='1' thenif en_in="10"thenif (s_tmp10="0101" and s_tmp="1001") thens_tmp10<="0000";s_tmp<="0000";elsif s_tmp="1001" thens_tmp<="0000";s_tmp10<=s_tmp10+1;else s_tmp<=s_tmp+1;end if;end if;end if;if s_tmp10="0101" and s_tmp="1001" then s_jinwei<='1';else s_jinwei<='0';end if;sec10<=s_tmp10;end process;--*******************************************************************no0: process(s_jinwei,en_in,m_tmp,m_tmp10)--用来输出分钟beginif s_jinwei'event and s_jinwei='1' thenif en_in="10"thenif (m_tmp10="0101" and m_tmp="1001") thenm_tmp10<="0000";m_tmp<="0000";elsif m_tmp="1001" thenm_tmp<="0000";m_tmp10<=m_tmp10+1;else m_tmp<=m_tmp+1;end if;end if;end if;if m_tmp10="0101" and m_tmp="1001" then m_jinwei<='1';else m_jinwei<='0';end if;min10<=m_tmp10;min<=m_tmp;end process;--*******************************************************************no2: process(m_jinwei,en_in,h_tmp,h_tmp10)--用来输出小时beginif m_jinwei'event and m_jinwei='1' thenif en_in="10"thenif (h_tmp10="0010" and h_tmp="0100") thenh_tmp10<="0000";h_tmp<="0000";elsif h_tmp="1001" thenh_tmp<="0000";h_tmp10<=h_tmp10+1;else h_tmp<=h_tmp+1;end if;end if;end if;hr10<=h_tmp10;hr<=h_tmp;end;2.2.6.2、RTL仿真:2.2.7 闹钟响铃的设计原理及其仿真:2.2.7.1、闹钟响铃的原理程序:--小时寄存器library ieee;use ieee.std_logic_1164.all;entity hr_jicun isport( clk: in std_logic;adin: in std_logic_vector(3 downto 0);adin10:in std_logic_vector(3 downto 0);adout:out std_logic_vector(3 downto 0);adout10:out std_logic_vector(3 downto 0));end;architecture bhv of hr_jicun isbeginprocess(clk)beginif clk'event and clk='1' thenadout<=adin;adout10<=adin10;end if;end process;end;--分钟寄存器---------------------------------library ieee;use ieee.std_logic_1164.all;entity m_jicun isport( clk: in std_logic;adin: in std_logic_vector(3 downto 0);adin10:in std_logic_vector(3 downto 0);adout:out std_logic_vector(3 downto 0);adout10:out std_logic_vector(3 downto 0));end;architecture bhv of m_jicun isbeginprocess(clk)beginif clk'event and clk='1' thenadout<=adin;adout10<=adin10;end if;end process;end;--比较器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity bijiaoqi isport (clk : in std_logic;alah_in: in std_logic_vector(3 downto 0);--闹钟小时个位输入alah10_in:in std_logic_vector(3 downto 0);--闹钟小时十位输入cloch_in: in std_logic_vector(3 downto 0);--时钟小时个位输入cloch10_in:in std_logic_vector(3 downto 0);--时钟小时十位输入alam_in : in std_logic_vector(3 downto 0);--闹钟分钟个位输入alam10_in:in std_logic_vector(3 downto 0);--闹钟分钟十位输入clocm_in : in std_logic_vector(3 downto 0);--时钟分钟个位输入clocm10_in:in std_logic_vector(3 downto 0);--时钟分钟十位输入ad_out : out std_logic );--驱动输出end;architecture bhv of bijiaoqi isbeginprocess(alah_in,cloch_in ,clk, alam_in,clocm_in, alah10_in,cloch10_in , alam10_in,clocm10_in)beginif (alah_in=cloch_in and alam_in=clocm_in and alah10_in=cloch10_in and alam10_in=clocm10_in and alam_in>1)then ad_out<=clk ;else ad_out<='1';end if;end process;end;2.2.8 显示模块的设计原理及其仿真:2.2.8.1显示器的原理程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity scanled isport(clk : in std_logic;alarmset : in std_logic_vector(1 downto 0); --如果进入闹钟定时,则进行定时译码second : in std_logic_vector(1 downto 0); --如果进入秒表,则进行秒表译码sl,sh,ml,mh,hl,hh : in std_logic_vector(3 downto 0); --走时扫描译码asl,ash,aml,amh,ahl,ahh : in std_logic_vector(3 downto 0); --闹钟定时译码sls,shs,mls,mhs,hls,hhs : in std_logic_vector(3 downto 0); --秒表译码sg : out std_logic_vector(6 downto 0);bt : out std_logic_vector(7 downto 0));end;architecture bhv of scanled issignal cnt8 : std_logic_vector(2 downto 0);signal a : std_logic_vector(3 downto 0);beginp1:process(cnt8,sl,sh,ml,mh,hl,hh,second,alarmset,sls,shs,mls,mhs,asl,ash,hhs,hls,aml,amh,ah l,ahh)begincase cnt8 isWHEN "000" => bt<="00000001";if alarmset="10" then a<=ahh(3 downto 0);elsif second ="01" then a<=hhs(3 downto 0);else a<=hh(3 downto 0);end if; --注意检查,显示的顺序WHEN "001" => bt<="00000010";if alarmset="10" then a<=ahl(3 downto 0);elsif second ="01" then a<=hls(3 downto 0);else a<=hl(3 downto 0);end if;WHEN "010" => bt<="00000100";a<="1010";WHEN "011" => bt<="00001000";if alarmset="10" then a<=amh(3 downto 0);elsif second ="01" then a<=mhs(3 downto 0);else a<=mh(3 downto 0);end if;WHEN "100" => bt<="00010000";if alarmset="10" then a<=aml(3 downto 0);elsif second ="01" then a<=mls(3 downto 0);else a<=ml(3 downto 0);end if;WHEN "101" => bt<="00100000";a<="1010";WHEN "110" => bt<="01000000";if alarmset="10" then a<=ash(3 downto 0);elsif second ="01" then a<=shs(3 downto 0);else a<=sh(3 downto 0);end if;WHEN "111" => bt<="10000000";if alarmset="10" then a<=asl(3 downto 0);elsif second ="01" then a<=sls(3 downto 0);else a<=sl(3 downto 0);end if;when others=>null;end case;end process p1;p2:process(clk)beginif clk'event and clk='1' thencnt8<=cnt8+1;end if;end process p2;p3:process(a)begincase a iswhen "0000" =>sg<="0111111";when "0001" =>sg<="0000110";when "0010" =>sg<="1011011";when "0011" =>sg<="1001111";when "0100" =>sg<="1100110";when "0101" =>sg<="1101101";when "0110" =>sg<="1111101";when "0111" =>sg<="0000111";when "1000" =>sg<="1111111";when "1001" =>sg<="1101111";when "1010" =>sg<="1000000";when others => null;end case;end process p3;end;2.2.8.2、RTL仿真三、电子钟设计的总体仿真:四、收获与体会:通过这次课程设计我学到了很多,不但进一步掌握了数字电子技术的基础知识及仿真软件的使用,还提高了自己设计能力和实践能力,同时我也看到了自己在时间方面的不足,明白了仅仅掌握理论知识是不行的,一定要理论结合实践充分发挥知识的作用,将理论知识运用到实践中去。

数字电子钟高分课程设计报告

数字电子钟高分课程设计报告

. . ..课程设计报告设计名称:课程设计系别:****学生姓名:***班级:学号:成绩:指导教师:开课时间: 2012 至2013 学年第 2 学期课程设计任务安排摘要数字钟是用数字集成电路构成,用数码管显示的一种现代化计数器。

它一般由振荡器、分频器、计数器、译码器、显示器、较时电路等部分组成,这些都是数字电路中应用最广的基本电路。

振荡器和分频器构成组成标准秒信号发生器,不同进制的计数器、译码器和显示器组成计时系统,通过校时校时校分电路实现对时、分的校准。

数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路。

由于计数的起始时间不可能与标准时间(北京时间)一致,故需要在电路上加一个校时电路,同时标准的1HZ 时间信号必须做到准确稳定。

通常使用石英晶体振荡器电路构成数字钟。

数码显示电子钟电路,采用一只PMOS大规模集成电路LM8560(TMS3450NL、SC8560、CD8560)和四位LED显示屏,通过驱动显示屏便能显示时、分。

振荡部分采用石英晶体振作时基信号源,从而保证了走时的精确。

本电路还供有定时报警功能,它定时调整方便,电路稳定可靠,能耗低,集成电路采用插座插装,制作成功率高,非常适合广大电子爱好者装配使用。

本电路还可扩展成定时控制交流开关(小保姆式)等功能。

关键词:电子钟数码管 PMOS集成电路目录第一章电子元件的焊接技术 (4)1.1 焊接工具和材料 (4)1.2 手工焊接方法 (4)1.2.1 五步焊接法 (4)1.2.2 焊接要注意的事项 (4)第二章概述与要求 (5)2.1 概述 (5)2.2 设计要求 (5)第三章电子钟实验原理 (6)3.1数码钟的构成 (6)3.2主要元器件及电路介绍 (6)3.2.1 LM8560原理 (6)3.2.2 CD4060原理 (7)3.2.3 蜂鸣器 (8)3.3 电路基本原理 (8)第四章焊接与安装 (10)4.1安装 (10)4.1.1 安装工艺要求 (10)4.1.2 安装注意事项 (10)第五章调试与故障处理 (12)5.1 调试 (12)5.2 故障的检查方法 (12)5.3 逐级孤立法分析与排除故障 (12)感想 (13)致 (14)参考文献 (15)附录A (16)附录B (17)第一章电子元件的焊接技术一个电子装置由若干个电子元件组成,各个电子元件通过焊接连接为一个完整的电路,焊接技术的优劣直接影响电子装置是否正常运行和质量的好坏。

课程设计电子时钟设计

课程设计电子时钟设计

微机原理及其接口技术课程设计题目: 8086电子时钟设计前言课程设计是培养和锻炼学生在学习完本门课后综合应用所学理论知识解决实际工程设计和应用问题的能力的重要教学环节,它具有动乎、动脑和理论联系实际的特点,是培养在校工科大学生理论联系实际、敢于动手、善于动手和独立自主解决设计实践中遇到的各种问题能力的一种较好方法。

《微机接口技术》是一门应用性、综合性、实践性较强的课程,没有实际的有针对性的设计环节,学生就不能很好的理解和掌握所学的技术知识,更缺乏解决实际问题的能力。

所以通过有针对性的课程设计,使学生学会系统地综合运用所学的理论知识,提高学生在微机应用方面的开发与设计本领,系统的掌握微机硬软件设计方法。

时钟就是一种对时间进行累计的工具,即计时。

计时的本质就是计数,只不过这里的“数”的单位是时间单位,如果把一小片一小片计时单位累计起来,就可获得一段时间。

因此,使用计数器对时钟脉冲进行计数,就是时钟实现的基本原理;再用LED数码管显示出来,并设计出几个按键用于对时钟进行调整,这样,一个完整的时钟就设计完成了。

本次课程设计要求利用8253定时器设计一个具有时、分、秒显示的电子时钟,并定义一个启动键,当按下该键的时候,时钟从当前的设定值(可以在缓冲区中设置)开始走时。

同时,再定义三个按键,分别对时、分、秒进行校正。

目录目录---------------------------------------------------- 21、电子时钟功能介绍------------------------------------- 32、电子时钟系统总体方案设计----------------------------- 42.1方案比较------------------------------------------ 42.2方案选择------------------------------------------ 43、电子时钟的工作原理----------------------------------- 53.1实现时钟计时的基本方法---------------------------- 53.2电子钟的时间显示---------------------------------- 54、硬件设计---------------------------------------------- 64.1硬件设计电路图------------------------------------ 64.1.1主电路模块----------------------------------- 64.1.2 LED显示模块--------------------------------- 64.1.3按键模块------------------------------------- 64.1.4总体电路图----------------------------------- 64.2硬件设计所用芯片介绍------------------------------ 64.2.2 8253芯片的内部结构及引脚-------------------- 84.2.3 8255A芯片的内部结构及引脚------------------- 95、软件设计--------------------------------------------- 105.1电子时钟部分程序流程框图------------------------- 105.1.1主程序流程框图--------------------------------- 105.1.2键扫子程序流程框图----------------------------- 105.1.3中断处理程序流程框图--------------------------- 105.2电子时钟总体程序--------------------------------- 106、总结与体会------------------------------------------- 10参考文献----------------------------------------------- 11附录1-------------------------------------------------- 12附录2-------------------------------------------------- 121、电子时钟功能介绍可调整运行的电子钟具有三种工作状态:"P.”状态、运行状态、调整状态。

毕业设计41仿真做的《数字时钟》

毕业设计41仿真做的《数字时钟》

课程设计报告课程名称电子仿真技术课题名称数字钟设计与制作数字钟数字钟电路是一个典型的数字电路系统,其由时、分、秒计数器以及校时和显示电路组成。

下面介绍利用集成十进制递增计数器(74160)和带译码器的七段显示数码管组成的数字钟电路。

一.设计任务与要求任务:设计一个具有“时”、“分”、“秒”的十进制数字显示的计数器。

要求:1.准确计时,显示小时、分、秒,小时能以24小时或12小时计时;2.带有时间校正功能;3.采用555定时器设计时钟电路,用74系列中小规模集成器件实现。

二.方案设计与论证方案一:利用2片74LS160N和译码及其他器件构成十进制“秒”的十进制显示的计时器;根据图 8-11 所示的图案可以清楚的看到,显示“时”、“分”、“秒”须要2片中规模计数器。

其中,“分”、“秒”位计时为六十进制计数器,“时”位为二十四进制计数器。

六十进制计数器和二十四进制计数器都选用 74LS160N 集成快来实现。

实现的方法采用反馈清0法。

六十进制和二十四进制计数器如图8-23、8-24所示。

示的计时;图8-24 24进制方案三:利用一片X1(hour) 和译码器其他器件构成24小时或12小时的子电路的十进制显示的计时;图8-26 (24-12)子电路方案四:利用1片X1M和译码器其他器件构成六十进制的子电路来显示的计时;图 8-25 六十进制计数器的分-秒子电路方案五:利用1片555定时器和其他器件构成555振荡器;如图8-27,由555定时器和外接元件R 1、R 2、C 2构成多谐振荡器,电路没有稳态,仅存两个暂稳态,电路亦不需要外加触发信号,利用电源通过R 1、R 2向电容C 2充电,以及C 2通过R2向放电端DIS 放电,使电路产生振荡。

电容C2在1/3Vcc 和2/3Vcc 之间充电和放电。

输出信号时间参数是T=t w1+t w2,t w1=0.7(R 1+R 2)C 2,t w2=0.7R 2C 2。

数字钟课程设计报告模板

数字钟课程设计报告模板

数字钟课程设计报告模板一、教学目标本课程的教学目标是让学生掌握数字钟的工作原理、设计和制作方法。

知识目标包括了解数字钟的组成部分、工作原理和相关电路知识;技能目标包括学会使用数字电路设计软件进行数字钟的设计和仿真,并能实际制作出一个简单的数字钟;情感态度价值观目标包括培养学生的创新意识、团队合作精神和对电子技术的兴趣。

二、教学内容本课程的教学内容主要包括数字钟的工作原理、设计和制作。

首先,学生需要了解数字钟的组成部分,包括时钟芯片、显示模块、按键输入模块等,并学习相关电路知识。

然后,学生将学习如何使用数字电路设计软件进行数字钟的设计和仿真,包括时钟信号的产生、计数器的实现、显示模块的设计等。

最后,学生将实际制作出一个简单的数字钟,并进行调试和测试。

三、教学方法为了达到上述教学目标,本课程将采用多种教学方法。

首先,将采用讲授法,向学生讲解数字钟的工作原理和相关电路知识。

其次,将采用讨论法,引导学生进行思考和提问,促进学生之间的交流和合作。

此外,还将采用案例分析法,通过分析具体的数字钟设计案例,帮助学生理解和掌握设计方法和技巧。

最后,将采用实验法,让学生亲自动手制作和调试数字钟,提高学生的实践能力和解决问题的能力。

四、教学资源为了支持本课程的教学内容和教学方法的实施,将选择和准备适当的教学资源。

教材方面,将选择一本与数字钟设计和制作相关的教材,用于学生学习和参考。

参考书方面,将提供一些与数字电路设计和仿真相关的书籍,供学生进一步深入学习和研究。

多媒体资料方面,将制作一些与数字钟设计和制作相关的教学视频和演示文稿,用于课堂演示和讲解。

实验设备方面,将准备一些数字电路设计实验板和相关器件,供学生进行实验和制作数字钟。

五、教学评估本课程的评估方式包括平时表现、作业和考试三个部分。

平时表现主要评估学生在课堂上的参与程度、提问和回答问题的积极性等,占总评的20%。

作业包括课堂练习和课后作业,主要评估学生的理解和应用能力,占总评的30%。

单片机技术课程设计报告(数码管电子时钟)

单片机技术课程设计报告(数码管电子时钟)

单片机技术课程设计报告(数码管电子时钟)福建工程学院软件学院题目:电子时钟班级:物联网2班姓名:孙建兴学号: 3112113229指导老师:郑旭丹日期: 2013 年 11 月 14 日课设报告目录1 摘要 (3)2 设计要求 (3)2.1 功能需求 (3)2.2 设计要求 (3)3 硬件设计及描述 (5)3.1 总体描述 (5)3.2 系统总体框图 (6)3.3 Proteus电路图 (6)3.4 各部分硬件介绍 (6)4 软件设计流程及描述 (9)4.1 程序流程图 (9)4.2函数模块及功能 (9)5 功能实现(功能介绍+照片) (19)6 心得体会 (19)7 源程序 (20)1 摘要通过本课程设计使学生进一步巩固单片机原理与技术的基本概念、理论,分析问题的基本方法;增强学生的软件编程实现能力和解决实际问题的能力,使学生能有效的将理论和实际紧密结合,拓展学生在工程实践方面的专业知识和相关技能。

2 设计要求要求能够熟练的用单片机中定时/计数、中断、数码管显示等技术参考教或相关资料,采用C语言采用编程实现数字时钟的功能,在数码管上实时显示,并运用Proteus软件绘制电路原理图,进行仿真验证和误差分析。

2.1 功能需求1、在数码管上动态显示时间,时钟的工作范围在00:00:00~24:59:59。

2、可对时钟在00:00:00~24:59:59范围内任意正常的设置。

2.2 设计要求1、通过数码管动态显示时间信息。

图2.1 数码管2、通过独立键盘的P32和P33接口分别实现开始计时和时间设置功能。

图2.2 独立键盘3、通过矩阵键盘实现时间设置功能中时间的更改。

图2.3 4*4矩阵键盘3 硬件设计及描述3.1 总体描述1、程序开始后首先显示00-00-00等待按键,按P3^2键后开始计时功能。

2、当按下P3^3键后进入时间设置模式,等待用户设置时间。

3、通过矩阵键盘设置时间,可对时间的每一位进行增减操作。

电子钟课程设计实验报告

电子钟课程设计实验报告

电子钟课程设计实验报告实验报告:电子钟课程设计一、实验目的:1. 掌握电子时钟的硬件设计和软件编程方法。

2. 熟悉数字电路的设计和实现。

3. 提高电路设计和实验能力。

二、实验设备和材料:1. FPGA 开发板。

2. 七段数码管。

3. 按钮开关。

4. 时钟电路。

三、实验原理:本电子钟的基本原理是通过 FPGA 芯片实时计数,并将计数结果转化为时间的显示。

时钟电路提供一个恒定的时钟信号,FPGA 芯片在每个时钟脉冲到来时进行计数,并将计数结果转化为显示在七段数码管上。

按钮开关用于设置时间。

四、实验步骤:1. 确定时钟信号的频率,并设计时钟电路,将时钟信号连接到FPGA 开发板上的时钟输入引脚。

2. 将七段数码管分别连接到 FPGA 开发板上的输出引脚。

3. 设计计数模块,包括计数器和时钟信号的同步控制。

4. 设计显示模块,将计数结果转化为七段数码管的控制信号。

5. 设计按钮开关控制模块,用于设置时间和调整闹钟参数等功能。

6. 将上述模块整合在一起,并进行综合和实现。

7. 进行电路调试和测试,检查电子钟的功能是否正常。

五、实验结果:经过调试和测试,实验电子钟正常工作,能够实时显示当前时间,并且可以通过按钮开关进行时间设置和闹钟调整。

六、实验总结:通过本次实验,我掌握了电子时钟的硬件设计和软件编程方法,提高了数字电路设计和实验能力。

通过学习和实践,我深刻理解了数字电路和时序控制的基本原理,并能够将其应用到实际项目中。

我还发现,在设计和实现电子钟的过程中,需要注意时序控制的正确性,以确保信号的稳定和正确传递。

电子钟课程设计报告

电子钟课程设计报告

电子钟课程设计报告引言:时间是非常宝贵的资源,人们需要使用时间来安排自己的学习、工作和娱乐等生活活动。

电子钟在现代社会中被广泛使用,它可以清晰、准确地显示时间,并可以帮助人们有效地管理时间。

为了应对市场需求,我们设计了一套名为“电子钟课程”的培训项目,如果您对时间管理感兴趣,那么这个培训课程将非常有用。

一、培训目标:通过本培训课程,学员可以:1.学习电子钟的机构组成及其工作原理。

2.熟练掌握电子钟的使用及调整方法。

3.了解各类电子钟的使用场合以及销售特点,提高销售技巧。

二、培训内容:1.电子钟的类型及市场特点。

2.电子钟的主要组成部分:电源,显示器,指示器,控制器,计数器和计时器等。

3.电子钟的使用方法及调整方法:(1)设置时间和日期。

(2)了解各种显示模式及其用途。

(3)掌握电子钟的调试方法。

(4)学习如何维护、保养和更换电池等。

4.如何销售电子钟:了解市场需求,掌握销售技巧。

(1)了解不同使用场合的不同需求,推荐适合的电子钟。

(2)使用合适的销售技巧,提高销售表现。

三、培训方法:1.培训采用课堂教学和实用操作相结合的方法。

2.电子钟的组成和熟练掌握使用方法,通过教师演示和学员自主操作来完成。

3.实践操作环节:学员需要在电子钟的使用调试及销售过程中进行实践操作并提交实际操作报告。

四、培训评估:1.作业:学员需要在规定的时间内完成作业,并进行批改和评分。

2.期末考试:学员需要参加期末考试,以检测其对课程内容的掌握程度。

3.操作报告:学员需要提交实际操作报告,并由任课老师进行评定。

五、教学资源与评价:1.教学资源:(1)教师:所有授课教师都有丰富的电子钟使用经验,并拥有教学经验。

(2)课程材料:针对课程内容编写的电子版文字、图像、音频和视频材料。

(3)设备工具:提供实验室和工具等必要设备及器材。

2.评价:我们将根据学员的学习情况和成绩来评价教学效果,并进行改进。

六、结语:本课程旨在帮助学员了解电子钟的组成及使用方法、掌握市场需求、通过提高自身销售技巧来提高销售表现。

数字电子钟课程设计报告

数字电子钟课程设计报告

目录摘要 (3)关键词 (3)一、设计任务与要求 (4)二、方案设计与论证 (4)方案一 (4)方案二 (5)三、硬件单元电路设计与参数计算 (5)1. 电源电路 (5)2. 按键电路 (5)3. 时钟电路 (5)4. 驱动电路 (5)5. LED显示电路 (5)6. 单片机电路 (6)四、软件设计与流程图 (10)五、总原电路及元器件清单 (10)1.总原理图 (10)2.PCB制板图 (11)3.整体电路仿真图 (12)4.元件清单 (12)六、安装与调试 (13)1. 电路安装 (13)2. 电路调试 (13)3. 软件调试 (13)七、性能测试与分析 (14)八、结论与心得 (14)九、参考文献 (15)十、致谢 (15)十一、程序清单 (15)摘要:本论文基于单片机原理技术介绍了一款于AT89C52芯片作为核心控制器的单片机数字电子钟的设计与制作,包括硬件电路原理的实现方案设计、软件程序编辑的实现、数字电子钟正常工作的流程、原理图仿真实现、硬件实物的安装制作与硬件实物的调试过程。

该单片机数字电子钟采用LED 数码管能够准确显示时间(显示格式为:时时,分分,秒秒),可随时进行时间调整,时间可采用12 小时制显示或24 小时制显示,采用12 小时显示时可在标志位数码管上显示A(表示上午)或B(表示下午),可暂停时间的变动,暂停时一位数码管上显示字母H,可按自己的要求设置扩展的小键盘个数。

关键词:单片机;数字电子钟;数码管;AT89C52一、设计任务与要求1、设计任务用单片机设计一个数字电子钟,采用LED 数码管来显示时间。

2、设计要求(1)显示格式为:XX:XX:XX,即:时:分:秒。

(2)时间可采用12 小时制显示或24 小时制显示,采用12 小时显示时必须在另外一个数码管上显示A(表示上午)或B(表示下午)。

(3)设置一个按键用于时间显示方式的切换。

(4)系统上电后从上电时初始化显示: 12-00-00开始计时。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

高仿真数码管电子钟目录高仿真数码管电子钟 (2)摘要 (2)1 引言 (3)1.1 本系统研究的背景和意义 (3)1.2 本系统主要研究内容 (3)2 系统总体设计 (4)2.1 系统设计方案与论证 (4)2.11 FPGA设计方案 (4)2.12 NE555时基电路设计方案 (4)2.13单片机设计方案 (5)2.14最终设计方案 (5)2.2 系统总体结构图 (5)3 系统硬件设计 (7)3.1 芯片介绍 (7)3.11 8051单片机简单介绍 (7)3.12 74LS138 3-8译码器介绍 (9)3.2 系统硬件原理图 (11)3.3复位模块 (11)3.4按键模块 (12)3.5显示驱动模块 (13)4 系统软件设计 (13)4.1 系统软件总体设计 (13)4.2 中断子程序 (14)4.3按键扫描子程序 (15)5 系统调试 (16)5.1 硬件调试 (16)5.2 软件调试 (16)6 结论 (16)参考文献 (17)附录 (18)高仿真数码管电子钟摘要电子时钟主要是利用电子技术将时钟电子化、数字化,拥有时钟精确、体积小、界面友好、可拓展性能强等特点,被广泛应用于生活和工作当中。

本文主要为实现一款可正常显示时间、带有hAM/24制调整、带有PMh12/显示以及时间校准功能的一款基于单片机仿真的多功能电子钟。

本文对当前的电子钟开发手段进行了比较与分析,最终确定了采用单片机技术实现高仿真电子钟的设计。

本设计采用51AT芯片作为核心,采用外部时钟89C脉冲定时,用oteusPr软件自带的电子钟组件实现高度仿真的显示效果。

软件部分主要采用简单且流通性强的C51语言编写实现。

这种高度仿真的电子钟具有电路简单,读取方便、显示直观、功能多样、时间精度较高、操作简单、编程容易成本低廉等诸多优点。

本次设计主要是用oteusPr电路软件实现了高仿真数码管电子钟的仿真。

稍加改装,增加部分功能所生产出的实际产品即可应用于一般的生活和工作中,从而给人们的生活和生产带来便利,符合电子仪器仪表的发展趋势,具有广阔的市场前景。

关键词:电子钟、单片机、51AT、C5189C1 引言时间是人类生活必不可少的重要元素,如果没有时间的概念,社会将不会有所发展和进步。

从古代的铜壶滴漏、十二天干地支,到后来的机械钟表以及当今的石英钟,都充分显现了时间的重要,同时也代表着科技的进步。

致力于计时器的研究和充分发挥时钟的作用,将有着主要的意义。

1.1 本系统研究的背景和意义20世纪末,电子技术获得了飞速的发展。

在其推动下,现代电子产品几乎渗透到了社会的各个领域,有利的推动和提高了社会生产力的发展与信息化程度,同时也使现代电子产品性能进一步提升,产品更新换代的节奏也越来越快。

时间对人们来说总是那么宝贵,工作的忙碌性和繁杂容易使人忘记当前的时间。

然而遇到重大事情的时候,一旦忘记时间,就会给自己或他人造成很大麻烦。

平时我们要求上班准时,约会或召开会议要提前时间;火车要准时到达,航班准时起飞;工业生产中,很多环节都需要用时间来确定工序替换时刻。

所以说能随时准确知道时间并利用时间,是我们生活和工作中必不可少的。

电子钟是采用电子电路实现对时分秒进行数字显示的及时装置,广泛应用于个人家庭,车站,码头办公室等办公场所。

由于数字集成电路的发展,使得数字钟的精度远远超过老式机械钟表,钟表的数字化给人们的生产生活带来了极大的方便,而且大大的扩展了原先钟表的功能。

诸如定时自动报警、0按时自动打铃、定时广播、自动启闭路灯、定时开关烘箱、通断电力设备,设置各种定时电气的自动启用等,所有这些都已钟表数字化为基础的,因此,研究数字电子钟及扩大其应用,有着非常现实的意义。

1.2 本系统主要研究内容本设计采用51Pr软件89CAT芯片作为核心,采用外部时钟脉冲定时,用oteus自带的电子钟组件实现高度仿真的显示效果。

本次设计的电子钟主要研究内容:(1)研究电子时钟的原理与实现方法(2)51单片机的原理与应用(3)构思基于单片机的高仿真电子时钟的实现方案(4)熟悉运用C51单片机语言编写软件系统(5)熟悉运用Keil C软件与Proteus软件仿真和调试系统2 系统总体设计2.1 系统设计方案与论证电子时钟既可以通过纯硬件实现,也可以通过软硬件结合实现,根据电子时钟里的核心部件——秒信号的产生原理,通常有以下三种形式:2.11 FPGA设计方案现场可编程门阵列(即FPGA)是20世纪70年代发展起来的一种可编程逻辑器件,是目前数字系统设计的主要硬件基础。

FPGA在设计过程中方便、快捷,而且FPGA技术功能强大,能够应用其制作诸如基代码发生器、数字频率计、电子琴、电梯控制器、自动售货机控制系统、多功能波形发生器、步进电机定位控制系统、电子时钟等。

应用FPGA能够将时钟设计为四种类型:全局时钟、门控时钟、多级逻辑时钟和波动式时钟。

多时钟系统能够包括上述四种时钟类型的任意组合。

2.12 NE555时基电路设计方案采用NE555时基电路或其他振荡电路产生秒脉冲信号,作为秒加法电路的时钟信号或为处理器的外部中断输入信号,可构成电子钟。

通过调整相关参数可使输出的频率为精确的1HZ。

图2.12 基于 NE555的秒信号发生器采用NE555定时器设计电子时钟,成本低,容易实现。

但是受芯片引脚数量和功能的限制,不容易实现电子时钟的多功能性。

2.13单片机设计方案利用单片机的智能性,可方便的实现具有智能的电子钟设计。

单片机具有时钟振荡系统,利用系统时钟借助微处理器的定时器/计数器可实现电子钟功能。

然而系统时钟误差较大,电子钟的积累误差也可能较大,所以通过误差修改软件加以修正,或者在设计高精度的时钟日历芯片,以精确时间,另外很多功能不同的单片机是兼容的,这就更便于实现产品的多功能性。

2.14最终设计方案在比较了三种方案之后,考虑单片机货源充足、价格低廉,可软硬件结合使用,能够较方便的实现系统的多功能性,故采用单片机作为本次设计的硬件基础。

本次设计用Proteus软件本身的50HZ激励源作为时钟脉冲,接入单片机的外部中端口来仿真是想基准时钟信号输入。

2.2 系统原理及总体结构图本系统采用51单片机中51AT芯片控制整个系统,连接各部分模块,下89C面为系统的设计原理组成框图:图2.2 系统原理组成框图本系统主要采用单片机作为主控芯片,外接复位模块、调整校时模块、驱动显示模块和外部时钟脉冲。

本设计采用50HZ激励源仿真时钟脉冲,驱动显示模块主要由单片机P2.0—P2.2三个端口接74LS138译码器,8个输出端口接8片74100的使能端,P2.3接74LS138的使能端,P2.4—P2.7接到8片74100的输入端,采取动态扫描原理来驱动显示。

由于50HZ激励源仿真时钟脉冲接在AT89C51芯片的INT0中断端口,激励源时钟脉冲周期为0.02秒,在每一个时钟脉冲上升沿触发中断,调用中断子程序。

中断子程序主要为每0.5秒使显示组件中的LED[:]点亮,每1秒LED[:]关闭且秒递增,满60秒加分,同时每秒刷新时分秒显示。

系统设置了显示缓冲disp_Buffer[],共有7位,前6位为时分秒显示缓冲(各占两位),第7位控制AM、PM、SET标志以及LED发光管闪光显示。

disp_Buffer[6]从低位到高位,第1位为0时AM显示,为1时PM显示;第2位为0时12h制,为1时24h制,仅当第2位为1时,第1位才有效;第3位为SET标志位,为1时处于设置状态,发光管亮,为0时处于显示状态,发光管灭;第4位为LED闪烁控制位,为0时亮,为1时灭。

系统在显示状态时,中断开,循环执行中断子程序,秒递增,刷新显示,将当前时间current_Time中的相应位装入disp_Buffer中相应位,再从单片机P2端口输出驱动显示。

当系统处于设置状态时,关闭中断,显示暂停,执行调整与设置时钟程序。

3 系统硬件设计3.1 芯片介绍3.11 8051单片机简单介绍AT89C51是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,片内含4KB的可反复擦除的只读程序存储器(PEROM)和128B随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和FLASH存储单元,功能强大AT89C51单片机可为您提供许多高性价比的应用场合。

主要性能参数:①与MCS-51产品指令系统完全兼容②4K字节可重擦写FLASH闪速存储器③1000次擦写周期④全静态操作:0HZ-24MHZ⑤三级加密程序存储器⑥128 8字节内部RAM⑦32个可编程I/O口线⑧2个16位定时/计数器⑨6个中断源⑩可编程串行UART通道图3.111 AT89C51 引脚封装图芯片引脚介绍:(1)主电源引脚◇ VCC:+5 V电源◇ VSS:地线。

(2)时钟电路引脚◇ XTAL1和XTAL2:外接晶体引线端。

当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。

(3)控制信号引脚◇ RST/VPD:复位信号。

当输入的复位信号延续两个机器周期以上的高电平时即为有效,用以完成单片机的复位初始化操作;当单片机掉电时,此引脚上可接备用电源,由VPD向片内RAM提供备用电源,一保持片内RAM中的数据不丢失。

◇ ALE/PROG:地址锁存控制信号。

在系统扩展时,ALE用于控制把P0口输出的低8位地址锁存起来,以实现低位地址和数据的隔离。

此外,由于ALE是以晶振1/6的固定频率输出的正脉冲,因此,可作为外部时钟或外部定时脉冲使用。

对于EPROM型单片机,在EPRAM编程期间,此引脚接收编程脉冲。

◇ PSEN:片外程序存储器读选通信号输出端。

◇ EA/VPP:访问程序存储控制信号。

当EA信号为低电平时,对ROM的读操作限定在外部程序存储器;当EA信号为高电平时,对ROM的读操作是从内部程序存储器开始,并可延至外部程序存储器。

对于EPROM型单片机,在EPRAM编程期间,此引脚接上加21V EPROM编程电源VPP。

(4)I/O引脚P0.0 ~ P0.7: P0口8位双向口线。

P1.0 ~ P1.7 :P1口8位双向口线。

P2.0 ~ P2.7 :P2口8位双向口线。

P3.0 ~ P3.7 :P3口8位双向口线。

P3口线的第二功能。

P3的8条口线都定义有第二功能,详见表3-1。

表3-11 P3口各引脚与第二功能表以上把8051单片机的全部信号引脚分别以第一功能和第二功能的形式列出。

对于各种型号的芯片,其引脚的第一功能信号是相同的,所不同的只在引脚的第二功能信号。

对于9、30和31三个引脚,由于第一功能信号与第二功能信号是单片机在不同工作方式下的信号,因此不会发生使用上的矛盾。

相关文档
最新文档