数字电子时钟课程设计报告
《电子技术》课程设计报告-数字电子钟设计

《电子技术》课程设计报告-数字电子钟设计一、背景介绍数字电子钟是一个实时的计时器,它可以按照设定的时刻精确地表示时间。
它使用微处理器和时钟芯片来处理时间。
因此,它可以被视为一个微处理器系统,系统中含有存储器、计数器、报警功能等。
最新的电子时钟如石英钟使用特制石英晶片来制定时钟。
由于石英可以产生完美的电振动,因此可以更准确地检测时钟改变。
二、数字电子钟的设计原理1、时钟驱动电子时钟的操作需要一定的时间和精度,主要是依靠特殊的驱动器来实现的。
驱动器有石英、硅、力学和光学等多种。
其中石英芯片是电子时钟的核心部件并且最常用。
可以让电子时钟每秒产生32千分之一秒的精度。
2、晶振电路晶体振荡器电路是将电能转换成振荡信号和时钟信号的基础电路。
在电子时钟中,晶振电路可以将3.3V的DC电源转换成正弦波信号。
3、控制电路控制电路是接收电子时钟信号,并将其转换为可读取的数字信号的电路。
它通过检测当前的时钟值与它预设的标准值,来决定是否需要重新设定。
4、显示电路为了使时间显示准确,显示电路需要有一定的能力,它可以将控制电路经过变换后的数字转化为可视的数字或符号信号,比如LED。
我们首先使用PIC16F628A微控制器来控制数字电子钟,PIC16F628A是一款常用的单片机,在实现数字电子钟的最基本功能时天然的具有很多优势,即具有丰富的I/O口及高性能的CPU。
而在驱动这个数字电子时钟时,我们选择了普通的石英晶振,其工作电压为3.3V,频率为32.768kHz。
它的作用是将电源电压转换成正弦波信号,然后此信号可以被PIC单片机读取,从而实现全电子时钟功能。
在处理每秒钟走过的时间时,我们使用计数器根据晶振输入的时钟信号逐渐计数,而当计数器计数到一定值时,PIC单片机就知道一秒的时间已经过去,然后继续进行计算.最后,我们选用一个4位共阳极数码管来将这些数据转化为显示数字的动作,它从数据地址上读取数据,然后一次送到一位,就可以实时显示电子时钟的实时时间。
课程设计_数字电子钟设计报告 -终

数字闹钟设计报告目录1. 设计任务与要求 (2)2. 设计报告内容2.1实验名称 (2)2.2实验仪器及主要器件 (2)2.3实验基本原理 (3)2.4数字闹钟单元电路设计、参数计算和器件选择…………………………3-72.5数字闹钟电路图 (8)2.6数字闹钟的调试方法与过程 (8)2.7设计与调试过程的问题解决方案 (8)3.实验心得体会……………………………………………………………………9、101. 设计任务与要求数字闹钟的具体设计任务及要求如下:(1) 有“时”、“分”十进制显示, “秒”使用发光二极管闪烁表示。
(2) 以24小时为一个计时周期。
(3) 走时过程中能按预设的定时时间(精确到小时)启动闹钟, 以发光二极管闪烁表示, 启闹时间为3s~10s。
2. 设计报告内容2.1实验名称数字闹钟2.2实验仪器及主要器件(1)CD4511( 4片)、数码管(4片)(2)74LS00(6片)(3)74LS138(2片)(4)74LS163(6片)(5)LM555(1片)(6)电阻、电容、导线等(若干)(7)面包板(2片)、示波器等2.3数字闹钟基本原理要想构成数字闹钟, 首先应选择一个标准时间源——即秒信号发生器。
可以采用LM555构成多谐振荡器, 通过改变电阻来实现频率的变化, 使之产生1HZ的信号。
计时的规律是: 60秒=1分, 60分=1小时, 24小时=1天, 就需要对计数器分别设计为60进制和24进制的, 并发出驱动信号。
各计数器输出信号经译码器到数字显示器, 按“时”、“分”顺序将数字显示出来, 秒信号可以通过数码管边角的点来显示。
数字闹钟要求有定时响闹的功能, 故需要提供设定闹时电路和对比起闹电路。
设时电路应共享译码器到数字显示器, 以便使用者设定时间, 并可减少电路的芯片数量;而对比起闹电路提供声源, 应具有人工止闹功能, 止闹后不再重新操作, 将不再发生起闹等功能。
数字电子钟的逻辑框图如图所示。
电子数字时钟课程设计报告(数电)

电子数字时钟课程设计报告(数电)第一篇:电子数字时钟课程设计报告(数电)数字电子钟的设计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 振荡电路多谐振荡器也称无稳态触发器,它没有稳定状态,同时无需外加触发脉冲,就能输出一定频率的矩形波形(自激振荡)。
数字钟电子课程设计数字时钟

数字时钟课程设计报告姓名:学号:班级:专业:评阅老师:评分:评语:引言 (3)一. 设计意义和要求 (4)1.1设计意义 (4)1.2设计目的 (4)1.3设计要求 (4)二. 方案设计 (5)2.1设计思路 (5)2.2 方案设计 (5)三. 单元电路设计 (8)3.1秒脉冲电路 (8)3.2 计时电路 (8)3.3 译码和显示电路 (13)3.4调时调分控制电路 (13)3.5整点报时电路 (14)3.6 清零控制电路 (15)四. 调试与检测 (16)五. 总结与体会 (17)六. 元件清单 (18)七. 参考文献 (19)所谓数字钟,是指利用电子电路构成的计时器。
相对机械钟而言,数字钟能实现准确计时,并显示时,分,秒,而且可以方便,准确的对时间进行调节。
在此基础上,还可以实现整点报时的功能。
因此,数字钟的应用十分广泛。
我们要通过这次的课程设计掌握数字钟的原理,学会设计简单的数字时钟。
设计过程采用系统设计的方法,先分析任务,得到系统和要求,然后进行总体设计,划分子系统,然后进行详细设计,确定各个功能子系统中的内部电路,最后按照原理图构成实物,进行调试和改进。
一设计意义及要求1.1设计意义(1). 了解数字钟的原理和功能(2).学会使用555定时器构成脉冲发生器(3).了解和掌握计数器,译码器和显示器的工作原理和使用方法(4). 进一步学习与掌握各种组合逻辑电路与时序电路的原理与使用方法,学会利用数字电路实现数字钟的功能1.2设计目的(1). 使学生进一步掌握数字电子技术的理论知识,培养学生工程设计能力和综合分析问题、解决问题的能力;(2). 使学生基本掌握常用电子电路的一般设计方法,提高电子电路的设计和实验能力;(3). 熟悉并学会选用电子元器件,为以后从事生产和科研工作打下一定的基础。
1.3设计要求(1). 设计一个准确计时,以数字显示时,分,秒并能校正的时钟。
(2). 小时的计时要求为“12翻1”,分和秒要求为60进制进位。
数字电子钟课程设计报告

课程设计(论文)课程名称:电子设计自动化课程设计题目名称:多功能数字电子钟专业:电子信息科学与技术电子三班学号:姓名:指导教师:设计时间: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仿真三、电子钟设计的总体仿真:四、收获与体会:通过这次课程设计我学到了很多,不但进一步掌握了数字电子技术的基础知识及仿真软件的使用,还提高了自己设计能力和实践能力,同时我也看到了自己在时间方面的不足,明白了仅仅掌握理论知识是不行的,一定要理论结合实践充分发挥知识的作用,将理论知识运用到实践中去。
数字电子时钟课程设计报告-5

数字电子时钟课程设计报告-5数字电子时钟课程设计报告-55.结果分析与讨论在本次数字电子时钟课程设计中,我们成功地设计出了一个简单的数字电子时钟。
通过对数字电子时钟的设计,我们深入理解了数字电路和时钟电路的原理,并且应用了Arduino开发板及其相关的编程语言。
在设计过程中,我们首先确定了所需的功能,包括显示时间、日期、设置闹钟等。
然后,我们根据这些功能需求,选择合适的硬件模块和传感器,例如7段数码管显示模块和实时时钟模块。
接着,我们进行了电路的连接和元器件的焊接,确保电路的正常工作。
在编程方面,我们使用Arduino的编程语言来实现时钟功能。
通过编写合适的代码,我们能够获取实时时钟模块的时间和日期,并将其显示在数码管上。
我们还添加了设置闹钟的功能,当闹钟时间到达时,数码管会显示闹钟提醒信息。
通过测试,我们发现我们设计的数字电子时钟能够准确显示时间和日期,并且可以正常设置和响铃闹钟。
同时,我们注意到在电路连接和编程过程中可能出现一些问题,例如电路连接错误、编程错误等。
然而,我们能够及时发现并解决这些问题,确保了时钟的正常工作。
值得一提的是,在本次课程设计中,我们还获得了很多宝贵的经验和知识。
我们学到了数字电路的设计和实现方法,熟悉了Arduino开发板的使用,掌握了一些电路故障的排除方法。
通过这次设计,我们加深了对数字电子时钟原理的理解,并且提高了我们的动手能力和解决问题的能力。
总体而言,本次数字电子时钟课程设计是一次非常有意义和有收获的实践活动。
通过设计和实现数字电子时钟,我们巩固了课堂知识,提高了实践能力,拓宽了思维的广度。
我们相信,这次课程设计对我们今后的学习和发展将会具有重要的促进作用。
感谢老师的指导和帮助,感谢小组成员的合作和付出!。
数字电子时钟课程设计报告

华北科技学院课程设计
分十位计数单元为 6 进制,当 QDQCQBQA 变成 0101 时, 通过与非门把它接回置数端,计数器的输入置为 0000,计数 器又从 0000 开始,如此重复,十位和个位合起来就是 60 进 制 。同 时 两 个 分 计 数 芯 片 的 脉 冲 输 入 端 接 秒 计 数 器 的 进 位 输 出 端 ,当 各 个 芯 片 开 始 工 作 时 ,秒 计 数 器 的 进 位 输 出 端 给 分 计 数 器 的 两 片 分 计 数 芯 片 的 输 入 高 电 平 脉 冲 ,使 分 计 数 器 开 始计数,当分计数器的输出为 59 状态时使两个芯片的置数 端工作,进行置数,同时分十位上的进位信号传输给“时” 个位的计数单元。分计数器的设计电路如图五所示。
图五 分计数器的设计电路
11
华北科技学院课程设计
(3)时计数器的设计 时计数单元为 24 进制计数器,其输出为 8421BCD 码。同样 采用十进制计数器 74160N 来实现时间计数单元的计数功能。 数字钟的“时”计数器为模 24 的计数器,它的个位是四进 制计数器,而十位则是二进制计数器,其计数规律为:
6
华北科技学院课程设计
增大。如果精度要求不高也可以采用由集成电路定时器 555 与 RC 组成的多谐振荡器。根据理论知识运用,运用 CB555 定时器与电阻电容组合设计多谐振荡器的振荡器的周期为 1 秒,即周期 T=1, 根 据 理 论 知 识 得 , 多 谐 振 荡 器 周 期 的 计 算 公 式 为 :, 多 谐 振 荡 器 频 率 的 计 算 公 式 为 :,占 空 比 的 计 算 公 式 为 :,通 过 以 上 公式计算多谐振荡器的周期频率的大小跟外接电阻的阻值。 运用 CB555 定时器设计多谐振荡器,由 CB555 定时器的参数 特性可知,当电源电压为 5V 时,在 100mA 的输出电流下输 出电压的典型值为 3.3V,所以取 VCC=5V 时可以满足对输出 周期为一秒的脉冲信号的要求。 令占空比 q=2/3,C=10uF 时,得=,则 , 即 3C=1,则 。 通过计算得电阻 R=48K,电容 C=10uF,因两个电阻的大小相 等,所以取两只阻值为 47K 的电阻和一个阻值为 2K 的电位 器串联,得到设计电路,如图二所示。
数字电子时钟课程设计报告

数字电子时钟设计报告目录一、设计任务和要求二、设计的方案的选择与论证三、电路设计计算与分析四、总结及心得五、附录六、参考文献一、设计任务和要求(一)设计任务(1)时钟显示功能,能够以十进制显示“时”、“分”、“秒”。
(2)具有校准“时”、“分”的功能。
(3)整点自动报时:在整点时自动发出鸣叫声并有指示灯闪烁。
(4)闹钟功能:可按设定的时间报时。
(二)设计要求(1)用Multisim画出整个系统电路图,并列出所需器件清单。
(2)调试振荡电路,用Multisim提供的示波器观察其输出波形是否复合要求。
(3)实现整个数字电子钟电路各项任务的正常工作。
二、设计的方案的选择与论证钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。
诸如,定时报警、按时自动打铃、时间程序自动控制等,这些,都是以钟表数字化为基础的。
本次所要设计的数字电子表可以满足使用者的一些特殊要求,输出方式灵活,如可以随意设置时、分、秒的输出,定点报时。
由于集成电路技术的发展,特别是MOS集成电路技术的发展,使数字电子钟具有体积小、耗电省、计时准确、性能稳定、维护方便等优点。
此次设计的数字时钟电子电路分为以下6个部分:(1)振荡电路(2)时间计数电路(3)显示电路(4)校时电路(5)整点报时电路(6)闹钟功能电路。
数字时钟实际上是一个对标准频率(1HZ)进行计数的计数电路,因此,时间计数电路是一个由计数器组成的时序逻辑电路。
用555定时器构成的多谐振荡器作为秒脉冲信号源,控制秒个位的信号输入,整点报时信号输入和闹钟报时信号输入,是整个电路唯一的脉冲信号源。
将计数器与显示器相连接,可以将输入的二进制数翻译成可以直读的十进制数字并显示出来,显示管与计数器之间由译码器相接,作为译码驱动。
由于计数的起始时间不可能与标准时间(如北京时间)完全一致,异或计数过程中可能出现误差,固需要在电路中添加校时电路,以保证可以随时对时间进行校正。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字时钟课程设计报告目录一.设计的目的、任务和要求 (2)二.设计的方案的选择与论证 (4)三.电路的设计 (5)(a)设计内容 (5)(b)数字时钟结构的设计 (5)(c)设计步骤 (6)1.时钟脉冲发生器的设计 (6)2.时分秒计数电路的设计 (8)3.计数器的组间级联设计 (13)4.校准电路的设计 (15)四.电路的仿真与调试 (17)五.总结及心得 (19)六.附录 (21)七.参考文献 (22)一、设计的目的、任务和要求(一)设计目的电子技术(数字)课程设计是电子技术基础课程的实践性教学环节,通过该教学环节,要求达到以下目的:1.使学生进一步掌握数字电子技术的理论知识,培养学生工程设计能力和综合分析问题、解决问题的能力;2.使学生基本掌握常用电子电路的一般设计方法,提高电子电路的设计和实验能力;3.熟悉并学会选用电子元器件,为以后从事生产和科研工作打下一定的基础。
(二)设计任务1.显示时、分、秒。
2,可以24小时制或12小时制。
3.具有校时功能,分别对小时和分钟单独校时,对分钟校时的时候,最大分钟不向小时进位。
校时时钟源可以手动输入或借用电路中的时钟。
4.为了保证计时准确、稳定,由晶体振荡器提供标准时间的基准信号。
(三)设计要求1.设计时综合考虑实用、经济并满足性能指标要求;2.必须独立完成设计课题;3.合理选用原件;4.按时完成设计任务并提交设计报告。
二、设计的方案的选择与论证考虑到实用、经济和性能指标的满足,运用CB555,74LS160, CC4011,电阻,电容等器件经行电子时钟电路的计数及校准功能的设计。
运用CB555与电阻电容组合连接成一个周期为一秒的多谐振荡器,用与非门的组合连接成校准电路对电子时钟进行校对。
在连接计算器电路时可以用整体置零法和整体置数法。
本实验电路采用整体置零法.总体电路是由各功能电路或单元电路组成的。
数字电子钟是由振荡电路、时间计数电路、数码显示电路和校时电路组成。
三、电路的设计(a)设计内容运用CB555定时器,电阻,电容设计一个多谢振荡器,用多片74LS160、多片显示译码器、与非门的组合设计时、分、秒计数器,用于非门的组合连接校准电路。
用两片74LS160级联构成60进制计数器,用来计“秒”,其CP输入信号为秒脉冲;另两片74LS160级联构成60进制计数器,用来计“分”,其CP输入为“秒”变为0时产生的一个下降沿信号;还有两片74LS90级联构成24进制计数器,用来计“时”,其CP输入为“分”变0时产生的一个下降沿信号。
这样六片74LS160实现了数字钟的计时功能。
它们的输出用六片数码显示管显示。
(b)数字时钟主要由以下几个部分组成:秒信号发生器、时、分、秒计数器,译码器及显示器,校时电路,清零电路组成。
电路设计结构图如图一所示。
图一电路设计结构图(c)设计步骤1.设计时钟脉冲发生器石英晶体振荡器的特点是振荡频率准确、电路结构简单、频率易调整。
它还具有压电效应,在晶体某一方向加一电场,则在与此垂直的方向产生机械振动,有了机械振动,就会在相应的垂直面上产生电场,从而机械振动和电场互为因果,这种循环过程一直持续到晶体的机械强度限止时,才达到最后稳定。
这用压电谐振的频率即为晶体振荡器的固有频率。
一般来说,振荡器的频率越高,计时精度越高,但耗电量将增大。
如果精度要求不高也可以采用由集成电路定时器555与RC组成的多谐振荡器。
根据理论知识运用,运用CB555定时器与电阻电容组合设计多谐振荡器的振荡器的周期为1秒,即周期T=1,根据理论知识得,多谐振荡器周期的计算公式为:,多谐振荡器频率的计算公式为:,占空比的计算公式为:,通过以上公式计算多谐振荡器的周期频率的大小跟外接电阻的阻值。
运用CB555定时器设计多谐振荡器,由CB555定时器的参数特性可知,当电源电压为5V时,在100mA的输出电流下输出电压的典型值为3.3V,所以取VCC=5V时可以满足对输出周期为一秒的脉冲信号的要求。
令占空比q=2/3,C=10uF时,得=,则,即3C=1,则。
通过计算得电阻R=48K,电容C=10uF,因两个电阻的大小相等,所以取两只阻值为47K的电阻和一个阻值为2K的电位器串联,得到设计电路,如图二所示。
图二时钟脉冲发生器2.设计时分秒计数电路(1)秒计数器的设计秒脉冲信号经过6级计数器,分别得到“秒”个位、十位,“分”个位、十位以及“时”个位、十位的计时。
“秒”、“分”计数器为60进制,小时为24进制。
60进制计数器数字钟的“分”和“秒”计数器均为模60的计数器,它们的个位都是十进制计数器,而十位则是六进制计数器,其计数规律为:要想实现计数功能,可以选用74LS90芯片级联组成模数为60的计数器,也可以用4518双重BCD 加法计数器芯片,采用反馈归零法实现秒60进制,还可以用74LS160十进制芯片来实现。
若选用74LS90级联的话,只要一级出现问题,则整个计数功能模块都会受到影响,从而使计数出现问题。
所以,综合考虑,选用74LS160十进制芯片,它不仅造价便宜,使用普遍,而且使用方便。
其管脚图如图三所示。
U174LS160NQA 14QB 13QC 12QD 11RCO 15A 3B 4C 5D 6ENP 7ENT 10~LOAD 9~CLR1CLK 2图三74LS160的管脚图秒计数器的设计电路如图四所示。
图四秒计数器的设计电路图(2)分计数器的设计同样通过整体置数法运用两片74LS160、与非门和两片显示译码器连接成60进制的计数器作为分的计数电路。
两个芯片的复位端CLR和分个位芯片的工作状态控制端ENP、ENT接高电平,分十位芯片的工作状态控制端ENP、ENT接分个位芯片的进位输出端。
分个位计数单元为10进制计数器,无需进制转换,当QDQCQBQA变成1001时,通过与非门把它接回到置数端,计数器的输入置为0000,使计数器又从0000开始,如此重复。
分十位计数单元为6进制,当QDQCQBQA变成0101时,通过与非门把它接回置数端,计数器的输入置为0000,计数器又从0000开始,如此重复,十位和个位合起来就是60进制。
同时两个分计数芯片的脉冲输入端接秒计数器的进位输出端,当各个芯片开始工作时,秒计数器的进位输出端给分计数器的两片分计数芯片的输入高电平脉冲,使分计数器开始计数,当分计数器的输出为59状态时使两个芯片的置数端工作,进行置数,同时分十位上的进位信号传输给“时”个位的计数单元。
分计数器的设计电路如图五所示。
图五分计数器的设计电路(3)时计数器的设计时计数单元为24进制计数器,其输出为8421BCD码。
同样采用十进制计数器74160N来实现时间计数单元的计数功能。
数字钟的“时”计数器为模24的计数器,它的个位是四进制计数器,而十位则是二进制计数器,其计数规律为:即当数字时钟运行到“23时59分59秒”时计数器再加一个秒脉冲时数字钟自动运行到“00时00分00秒”,实现日常生活的24小时计数制。
计数功能的原理,由振荡器给秒个位每秒送一个脉冲,当个位由0循环到9时,个位向十位送一个脉冲,这样依次的,就可以完成计数的功能。
时计数器的设计电路如图六所示。
图六时计数器的设计电路3.计数器的组间级联问题“秒”的脉冲输入端接校准电路的输出,“秒”个位的进位输出端接“秒”十位的工作状态控制端,“秒”的进位输出接“分”的两个芯片的脉冲输入端,“分”的个位进位输出端接“分”十位工作状态控制端,“分”的进位输出端接“时”的两个芯片的脉冲输入端,“时”个位进位输出端就“时”十位的工作状态控制端,“时”“分”“秒”的复位端都接高电平,计数器秒脉冲信号经过6级计数器,分别得到“秒”个位、十位、“分”个位、十位以及“时”个位、十位的计时。
“秒”“分”计数器为六十进制,小时为二十四进制。
电路如图七所示。
图七计数器的组间级联电路图4.设计校准电路在实际生活当中,由于各种各样的原因,可能会使数字钟计时不准。
当数字钟计时出现误差时,必须对时间进行校正,通常称为“校时”。
校时是数字钟应该具备的基本功能,要求能对时和分进行校对。
对校时电路的设计要求是,在进行小时校正时不影响分和秒计数器的正常计数;同理,进行分校正时不影响秒计数器的正常计数。
这时就要进行手动或者自动的校准。
若采用自动校准,由于脉冲一直存在,所以校准的时候会带来不便。
因此,本次设计采用手动校准。
校时脉冲即为秒进位脉冲或分进位脉冲。
图7所示电路为校“时”、校“分”电路。
其中J1为校“分”用的控制开关,J2为校“时”用的控制开关,J3为总的校时开关。
其中,当总校时开关打到校准档时就进行手动校时。
校准时开关接5V的直流电源,输入为高电平。
经过一个反相器输出低电平。
输入的信号经过三个与非门低电平0,送到分计数器的个位计数器,就可以进行校分。
同理也可以进行校时。
设计的校准电路如图八所示。
图八校准电路的设计电路图四、电路的仿真与调试(1)可以先将系统划分为多谐振荡器、计数器、校准电路、译码显示等部分,对它们分别进行设计与调试,最后联机统调。
(2)各部件调试完毕后,用示波器或频率计观察石英晶体振荡器的输出频率(3)将频率为1Hz的标准秒脉冲信号分别送入“时“分”、“秒”计数器,检查各级计数器的工作状况。
(4)各部件调试正常后,进行组装联调,检查校准电路是否可以实现快速校时,最后对系统进行微调。
(5)仿真调试完毕后得电子时钟总电路,如图九所示。
图九电子时钟电路图五、总结及心得大三我们已经学习了数字电子电路和模拟电子电路,对电子技术有了一些初步了解,但那都是一些理论的东西。
通过这次对数字钟的设计与制作,让我们了解了电路的设计程序,也对数字钟的原理与设计理念有了一定的了解。
我们知道了如何设计出1HZ的信号,也对时分秒的设计有了一定的了解,并且知道在实际电路一般步骤为由数字钟系统组成框图按照信号的流向分级安装,逐级级联,这里的每一级是指组成数字钟的各功能电路。
同时,在此次的数字钟设计过程中,我们更进一步地熟悉了芯片的结构及掌握了各芯片的工作原理和其具体的使用方法,也锻炼了自己独立思考问题的能力和通过查看相关资料来解决问题的习惯。
虽然这只是一次简单的课程设计,但通过这次课程设计我们了解了课程设计的一般步骤,和设计中应注意的问题。
此外,我们也深刻地体会到设计一个电路前先进行仿真的重要性,更深有体会,通过仿真可以对自己设计得电路进行逐级排查和调试,找出电路中问题的所在,及时纠正自己的错误。
回顾这次的课程设计,让我感慨颇多,从选题到定稿,从理论到实践,在这过程中我学到很多很多的东西,而且巩固了以前所学过的知识,学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。