精华内容
下载资源
问答
  • 数字电子技术课程设计 具有校时功能的多功能数字钟 两种设计方案对比分析选择出更好的方案 并采用Proteus仿真
  • 多功能数字钟设计制作.doc
  • 因此,我们此次设计与制做数字钟就是为了了解数字钟的原理,从而学会制作数字钟,而且通过数字钟制作进一步的了解各种在制作中用到的中小规模集成电路的作用及实用方法,且由于数字钟包括组合逻辑电路和时叙电路,...
  • 多功能数字钟

    2014-05-06 11:54:48
    多功能数字钟设计制造,创新,研究开发,合理利用哦。
  • 科技信囊基于STC89C52单片机的多功能数字钟设计张开碧王浩曾勇斌(重庆邮电大学自动化学院中国重庆400065)I摘要】本文主要介绍了数字钟的功能以及相应的硬件电路的设计,并且用C语言缩写了相应的...

    2010年第35期。本刊重稿。科技信囊

    基于STC89C52单片机的多功能数字钟的设计

    张开碧王浩曾勇斌

    (重庆邮电大学自动化学院中国重庆400065)

    I摘要】本文主要介绍了数字钟的功能以及相应的硬件电路的设计,并且用C语言缩写了相应的程序下栽到单片机上进行调试,让其结合硬件电路实现对应的功能:时间显示、日期显示、跑表、闹铃、温度显示和湿度显示。本文着重地介绍了多功能数字钟的硬件制作。

    【关键词】数字钟;STC89C52单片机;硬件设计

    m嫡四ofMulfifhnctlonalⅨgitaDigitalClockBasedOIIsTC89C52

    ZHANGKai-biWANGHaoZENGYong-bin

    (CollegeofAutomation,ChongqingUniversityofPostsandTeleconmaunications.Chongqing,400065.CMna)【Abstract]This

    article

    paper

    describesthefunction

    ofthe

    digitalclockand

    the

    design

    ofthecorrespondinghardware

    circuit.Atcombinehumidity

    thethe

    w哪time,

    functions

    thecorrespondingprogramispreparatedwiththeClanguagewhichisdownloadedtotheMCUonthedebugginghardwaretothecorrespondingcircuit.Thesefunctionsincludethetimedisplay,datedisplay,stopwatch,alarm,temperaturedisplayand

    paper,themulti-function

    of

    display.In

    this

    clockhardwareproductionisintroducedemphatically.

    [KeywordslDigitalClock;STC89C52;Hardwaredesign

    digital

    0前言

    钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表腻先的报时功能。数字钟是一种用数字电路技术实现时、分、秒计时的装鼍.与机械式时钟相比具有更高的准确性和直观性.且无机械装蔑.具有更长的使用寿命.已得到广泛的使用。数宁钟的设计方法有许多种.町用中小规模集成电路组成电子钟:也可以利用专用的电子钟芯片配以最示电路及其所需要的外围电路组成电子钟:还可以利用单片机来实现电子钟。

    1功能

    本设计中选择s1℃89C52单片机来进行设计,主要由于其体积小、成本低.功能丰富并且实用方便。配合时钟芯片来实现时钟、跑表、闹铃、日历能功能,用温湿度传感器分别检测工作环境的温度和湿度。通过按不同的键在1602液晶显示器上显示对应的数值。数字钟的基本功能如下:

    计时及校时:数字钟的最基本功能既是显示和调整时间.本设计可以让数字钟24小时制或12小时制显示。可以通过设置进行转换

    1.1

    2.2.2时钟电路

    DSl2C887时钟芯片的电路图如图2所示。它是通过对应的靖口与单片机相连接的。

    等。

    1.2跑表:本数字钟还具备跑表的功能,跑表功能包括跑表的启动、停止、保持显示、清除等。1.3闹钟:可以通过键盘设定闹钟时间.在设置的时问进行闹钟提示,每一次响5秒。每隔5秒响一次,如果不人为的进行于涉闹钟会一直响60分钟。

    1.4日历:让数字钟可以显示日期(包括年、月、日),并且可以显示星期几。

    1.5温度、湿度等的显示:通过传感器等相关硬件配合相应的电路将测试到的温度和湿度数据转换为数字在时钟液晶显示屏上显出来。

    2系统硬件的设计

    2.1硬件的选择

    本设计选ATC89C52单片机作为主芯片以外.还要用的其他各种元件来实现相应的功能,因此还要对其他电子元件傲一个合理的选择和安排。在设计过程中结合实际情况对相关硬件傲j,如下选择:时钟电路中将用到DSl2C887时钟芯片,温度检测电路_I}j的是温度传感器DSl8820.湿度检测电路用到的是HSll01湿度传感器.闹钟以及按键提示均用到蜂鸣器。这样的硬件选择既可以实现散字钟的一系列功能,又是一个简洁的选择结果.而且成本低。较容易人手。2.2硬件的电路设计2.2.1ATC89C52芯片

    s1℃89c52是一种低功耗、高性能CMOS8位傲控嗣器.具有8K在系统可编程F1船h存储器。根据实际搭建电路图画出芯片的电路图如图l所示.端u接的其他设备在后面分别介绍一。

    DSl2C887实时时钟芯片功能丰富.可以用来直接代替IBMPC:

    上的时钟日历芯片DSl2887。同时它的管脚也和MCl46818B、DSl2887相兼容。

    2.2-3液晶显示电路

    液晶1002与单片机的电路图如图3.它是通过对应的端口与单片机的连接的。其中:

    ①l。2端为电源:15,16为背光电源;为防止直接加5V电压烧坏

    背光灯.在15脚串接一个lOn电阻用于限泷。

    ②液晶3端为液晶对比度调节端.通过一个10kQ电位器接地来调节液晶显示对比度。首次使用时.在液晶上电状态下.调节至液晶上面一行显示出黑色小格为止。

    ③液晶4端为向液晶控锚器写敷据,写命令选择螭。接单片机的

    P13口。

    ④液晶5嫱为读,写选择端,因为我们不从液晶读取任何数据,只

    向其写人命令和显示教据。因此此端始终选择为写状态。即低电平接

    1-229-png_6_0_0_401_403_297_163_753_1099.5-414-0-1874-414.jpg

    1-158-png_6_0_0_456_643_167_113_753_1099.5-232-0-2108-232.jpg

    地。

    12

    展开全文
  • 数字钟是一种用数字电路技术实现时、分、秒计时的装置,机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,已得到广泛的使用。数字钟从原理上讲是一种典型的数字电路,其中包括了组合...
  • 随着人类科技文明的发展,人们对于时钟的要求在不断地提高。时钟已不仅仅被看成一种用来显示时间的工具,在很实际应用中它还需要能够 ...
  • 多功能数字钟.zip

    2019-06-08 13:53:55
    利用数字电子计数知识设计制作的数字电子钟(含multisim仿真),该数字钟具有显示星期、24小时制时间、闹铃、整点报时、时间校准功能
  • AT89C52单片机\时钟芯片DS1302\ 液晶显示芯片,可以参考一下
  • 基于FPGA/CPLD的多功能数字钟设计,付丽娜,,本文介绍了利用VHDL硬件描述语言结合FPGA/CPLD芯片设计多功能数字钟,并对整个系统的各个模块设计过程作了具体介绍。在MAX PLUS II开发软
  • 本电子是利用纯数字电路,利用数字电子技术,利用多个计数器,实现多功能数字电子
  • 1、基于51单片机的多功能数字钟,姓名: 专业:电子信息工程 学号:,大学Hainan University,海南大学毕业设计,目录,1、系统简介,本文介绍设计与实现一种以AT89S51为控制核心,运用了时钟芯片DS1302的多功...

    《基于51单片机的多功能数字钟 演示文稿.ppt》由会员分享,可在线阅读,更多相关《基于51单片机的多功能数字钟 演示文稿.ppt(12页珍藏版)》请在人人文库网上搜索。

    1、基于51单片机的多功能数字钟,姓名: 专业:电子信息工程 学号:,大学Hainan University,海南大学毕业设计,目录,1、系统简介,本文介绍设计与实现一种以AT89S51为控制核心,运用了时钟芯片DS1302的多功能实时数字钟。它除了具备显示时间的基本功能,还加入了日期阴阳历显示、星期显示、 闹铃功能,能够通过 按键校时、设置闹铃、 修改日期。,2、系统框图,3、硬件设计,基本原理图,3、硬件制作,电路板PCB图,4、软件制作,主程序流程图,4、软件制作,YES,闹钟及整点报时 程序流程图,4、软件制作,蔡勒(Zeller)公式(只适合于1582年10月15日之后的情形): w=y+y/4+c/4-2c+26(m+1)/10+d-1 公式中的符号含义: c-世纪(年的高两位数);y-年(年的低两位数);m-月,在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算 。,星期计算 流程图,4、软件制作,时钟芯片 读写流程图,将该地址数据读出,5、实物演示,大学Hainan University,放映结束,感谢各位评委老师。

    展开全文
  • 课程设计题目:数字钟设计与制作 (一)设计指标: 1.显示时、分、秒。采用24小时制。 2.制作、调试出一个具有直流电源、简易信号源及用来计“时”“分”“秒”的数字钟系统。并按照直流电源、简易信号源、及...
  • 里面粗略讲解了各种电子制作方法,主要可以作为课程设计的资料参考!
  • 本文介绍了多功能数字时钟的系统设计。系统具有时间设置及显示、闹钟等功能。系统以 AT89S51为核心,主要进行基于AT89S51低功耗MCU的字符型数字时钟及其系统的研究。系统带有液晶显示器,配合按键提供友好的用户界面...
  • 数字逻辑 课程设计 多功能电子 Quartus II

    万次阅读 多人点赞 2014-09-27 15:00:31
    设计方案 1.系统功能描述 (1) 系统输入:系统状态及校时、定时转换的控制信号为k、set;...(3) 多功能数字钟控制器的状态图如图所示 图中:S0:显示计时器时间 T0:显示闹铃时间  S1:调计

    设计方案

    1.系统功能描述

                                     (1)      系统输入:系统状态及校时、定时转换的控制信号为k、set;时钟信号clk,采用1024Hz;系统复位信号为reset。输入信号由按键产生。

                                     (2)      系统输出:LED显示输出;蜂鸣器声音信号输出。

                                     (3)      多功能数字钟控制器的状态图如图所示

                                                    图中:S0:显示计时器时间     T0:显示闹铃时间

                                                                S1:调计时的时         T1:调闹铃的时

                                                                S2:调计时的分         T2:调闹铃的分

                                                                S3:调计时的秒         T3:调闹铃的秒

                                      (4)      计时:正常工作状态下,按下“set键”,进入“小时”校准状态,之后按下“k键”则进入“分”校准状态,继续按下“k键”则进入“秒复零”状态,第三次按下“k                                                    键”又恢复到正常计时显示状态。

                                      (5)      ”小时“校准状态:在“小时”校准状态下,显示”小时的数码管闪烁,通过按下”p键“使其递增计数。

                                      (6)      ”分“校准状态:在“分”校准状态下,显示“分”的数码管闪烁,通过按下”p键“使其递增计数。

                                      (7)      “秒”复零状态:在:“秒复零”状态下,显示“秒”的数码管闪烁并复零。

                                      (8)      整点报时:蜂鸣器在“59”分钟的第51、53、55、57秒发出频率为512Hz的低音,在“59”秒发出频率为1024Hz的高音,结束时为整点。

                                      (9)      显示:要求采用扫描显示方式驱动8个LED数码管分别显示时、分、秒并且他们之间用“—”隔开。

                                      (10)  闹钟:闹钟定时时间到,蜂鸣器发出周期为1s的滴、滴声,持续时间为10秒;闹钟定时显示。

                                      (11)  闹钟定时设置:在闹钟显示状态下,按下“set键”,进入“小时”校时状态,之后按下“k键”,进入“分”校时状态,继续按下“k键”,进入“秒”校时状态,第                                                   三次按下“k键”又恢复到闹钟显示状态。

                                      (12)  闹钟的时、分、秒设置过程和计时设置相同。



    整体效果图:


    1.控制器


    library ieee;
    use ieee.std_logic_1164.all;
    entity ctr is
         port(p:in std_logic;
              cp:in std_logic;
              k:in std_logic;
              set:in std_logic;
              reset:in std_logic;
              resec:out std_logic;
    
              rehour:out std_logic;
              setmin:out std_logic;
              setminen:out std_logic;
              sethour:out std_logic;
              sethouren:out std_logic;
              hourflash:out std_logic;
              minflash:out std_logic;
              secflash:out std_logic;
              ahourflash:out std_logic;
              aminflash:out std_logic;
              asecflash:out std_logic;
              changemode:out std_logic;
              setclksec:out std_logic;
              setclkmin:out std_logic;
              setclkhour:out std_logic);
    end ctr;
    architecture rtl of ctr is
    type state is(s0,s1,s2,s3,t0,t1,t2,t3);
    signal clock_s:state;
          begin 
            process(cp,k,set,reset,p)
               begin
                  if(reset='0') then
                       resec<='1';remin<='1';rehour<='1';setminen<='0';setmin<='0';sethouren<='0';sethour<='0';hourflash<='0';minflash<='0';
                       secflash<='0';ahourflash<='0';aminflash<='0';asecflash<='0';setclksec<='0';setclkmin<='0';setclkhour<='0';clock_s<=s0;
                  elsif(rising_edge(cp)) then
                     case clock_s is
                       when s0=>changemode<='0';
                       resec<='0';remin<='0';rehour<='0';setminen<='0';setmin<='0';sethouren<='0';sethour<='0';hourflash<='0';minflash<='0';
                       secflash<='0';ahourflash<='0';aminflash<='0';asecflash<='0';setclksec<='0';setclkmin<='0';setclkhour<='0';
                            if(k='0') then
                               clock_s<=t0;
                            elsif(set='0')then
                               clock_s<=s1;
                            else
                               clock_s<=s0;
                          end if;
                       when s1=>changemode<='0';
                       resec<='0';remin<='0';rehour<='0';setminen<='0';setmin<='0';sethouren<='1';sethour<=p;hourflash<='1';minflash<='0';
                       secflash<='0';ahourflash<='0';aminflash<='0';asecflash<='0';setclksec<='0';setclkmin<='0';setclkhour<='0';
                            if(k='0')then
                               clock_s<=s2;
                            else
                               clock_s<=s1;
                          end if;
                       when s2=>changemode<='0';
                       resec<='0';remin<='0';rehour<='0';setminen<='1';setmin<=p;sethouren<='0';sethour<='0';hourflash<='0';minflash<='1';
                       secflash<='0';ahourflash<='0';aminflash<='0';asecflash<='0';setclksec<='0';setclkmin<='0';setclkhour<='0';
                            if(k='0')then
                               clock_s<=s3;
                            else
                               clock_s<=s2;
                          end if;
                       when s3=>changemode<='0';
                       resec<=p;remin<='0';rehour<='0';setminen<='0';setmin<='0';sethouren<='0';sethour<='0';hourflash<='0';minflash<='0';
                       secflash<='1';ahourflash<='0';aminflash<='0';asecflash<='0';setclksec<='0';setclkmin<='0';setclkhour<='0';
                            if(k='0')then
                               clock_s<=s0;
                            else
                               clock_s<=s3;
                          end if;
                       when t0=>changemode<='1';
                       resec<='0';remin<='0';rehour<='0';setminen<='0';setmin<='0';sethouren<='0';sethour<='0';hourflash<='0';minflash<='0';
                       secflash<='0';ahourflash<='0';aminflash<='0';asecflash<='0';setclksec<='0';setclkmin<='0';setclkhour<='0';
                            if(k='0')then
                               clock_s<=s0;
                            elsif(set='0') then
                               clock_s<=t1;
                            else
                               clock_s<=t0;
                          end if;
                       when t1=>changemode<='1';
                       resec<='0';remin<='0';rehour<='0';setminen<='0';setmin<='0';sethouren<='0';sethour<='0';hourflash<='0';minflash<='0';
                       secflash<='0';ahourflash<='1';aminflash<='0';asecflash<='0';setclksec<='0';setclkmin<='0';setclkhour<=p;
                            if(k='0')then
                               clock_s<=t2;
                            else
                               clock_s<=t1;
                          end if;
                       when t2=>changemode<='1';
                       resec<='0';remin<='0';rehour<='0';setminen<='0';setmin<='0';sethouren<='0';sethour<='0';hourflash<='0';minflash<='0';
                       secflash<='0';ahourflash<='0';aminflash<='1';asecflash<='0';setclksec<='0';setclkmin<=p;setclkhour<='0';
                            if(k='0')then
                               clock_s<=t3;
                            else
                               clock_s<=t2;
                          end if;
                       when t3=>changemode<='1';
                       resec<='0';remin<='0';rehour<='0';setminen<='0';setmin<='0';sethouren<='0';sethour<='0';hourflash<='0';minflash<='0';
                       secflash<='0';ahourflash<='0';aminflash<='0';asecflash<='1';setclksec<=p;setclkmin<='0';setclkhour<='0';
                            if(k='0')then
                               clock_s<=t0;
                            else
                               clock_s<=t3;
                          end if;
                       when others=>clock_s<=s0;
                   end case;
              end if;
           end process;
    end rtl;
    

    2.60进制计数器


    LIBRARY IEEE;
    USE IEEE.STD_LOGIC_1164.ALL;
    USE IEEE.STD_LOGIC_UNSIGNED.ALL;
    USE IEEE.STD_LOGIC_ARITH.ALL;
    ENTITY counter_60 IS
           PORT(rs,cp:IN STD_LOGIC;
                co   :OUT STD_LOGIC;
                ql,qh   :OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
        END counter_60;
    ARCHITECTURE rtl OF counter_60 IS
        SIGNAL ql_temp:STD_LOGIC_VECTOR(3 DOWNTO 0):="0000";
        SIGNAL qh_temp:STD_LOGIC_VECTOR(3 DOWNTO 0):="0000";
        BEGIN
            PROCESS (rs,cp,qh_temp,ql_temp)
              BEGIN
                  if(rs='1') then
                       qh_temp<="0000";
                       ql_temp<="0000";
                       co<='0';
                elsIF(rising_edge(cp)) then
                   
                   if(qh_temp="0101" and ql_temp="1001") then
                       ql_temp<="0000";
                       qh_temp<="0000";
                       co<='1';
                   elsif(qh_temp<="0101" and ql_temp<"1001") then
                       ql_temp<=ql_temp+'1';
                       co<='0';
                   elsif(qh_temp<="0101" and ql_temp="1001") then
                       qh_temp<=qh_temp+'1';
                       ql_temp<="0000";
                       co<='0';
                end if;
              end if;
              qh<=qh_temp;
              ql<=ql_temp;
            END PROCESS;
    END rtl;
    

    3.24进制计数器


    LIBRARY IEEE;
    USE IEEE.STD_LOGIC_1164.ALL;
    USE IEEE.STD_LOGIC_UNSIGNED.ALL;
    USE IEEE.STD_LOGIC_ARITH.ALL;
    ENTITY counter_24 IS
           PORT(rs,cp:IN STD_LOGIC;
                ql,qh   :OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
        END counter_24;
    ARCHITECTURE rtl OF counter_24 IS
        SIGNAL ql_temp:STD_LOGIC_VECTOR(3 DOWNTO 0):="0000";
        SIGNAL qh_temp:STD_LOGIC_VECTOR(3 DOWNTO 0):="0000";
        SIGNAL rs_temp:STD_LOGIC;
        BEGIN
            PROCESS (rs,cp)
              BEGIN
                   if(rs='1') then
                       qh_temp<="0000";
                       ql_temp<="0000";
                elsIF(rising_edge(cp)) then
                   if(qh_temp="0010" and ql_temp="0011") then
                       qh_temp<="0000";
                       ql_temp<="0000";
                   elsif(qh_temp<="0010" and ql_temp<"1001") then
                       ql_temp<=ql_temp+'1';
                   elsif(qh_temp<="0010" and ql_temp="1001") then
                       qh_temp<=qh_temp+'1';
                       ql_temp<="0000";
                end if;
              end if;
            END PROCESS;
              qh<=qh_temp;
              ql<=ql_temp;
    END rtl;
    

    4.模1024计数器(分频器)


    library ieee;
    use ieee.std_logic_1164.all;
    use ieee.std_logic_unsigned.all;
    entity counter_10 is
          port(cp:in std_logic;
               d :out std_logic_vector(9 downto 0));
    end counter_10;
    architecture rtl of counter_10 is
    signal d_temp:std_logic_vector(9 downto 0):="0000000000";
       begin
        process(cp)
          begin
           if(rising_edge(cp)) then
               if(d_temp="1111111111") then
                  d_temp<="0000000000";
               else 
                  d_temp<=d_temp+'1';
               end if;
           end if;
        end process;
    d<=d_temp;
    end rtl;
    

    5.模8计数器(数码管扫描动态显示)


    library ieee;
    use ieee.std_logic_1164.all;
    use ieee.std_logic_unsigned.all;
    entity counter_8 is
       port(cp,en:in std_logic;
            a: out std_logic_vector(2 downto 0));
    end counter_8;
    architecture rtl of counter_8 is
         signal a_temp:std_logic_vector(2 downto 0):="000";
        begin
          process(cp,en)
            begin
             if(rising_edge(cp) and en='1') then
                 if(a_temp="111") then
                    a_temp<="000";
                 else
                    a_temp<=a_temp+'1';
                end if;
             end if;
           end process;
          a<=a_temp;
    end rtl;
    

    6.数据通断器(闪烁)


    library ieee;
    use ieee.std_logic_1164.all;
    use ieee.std_logic_unsigned.all;
    entity d_ff is
        port(en:in std_logic;
             q0 :out std_logic_vector(3 downto 0);
             q1 :out std_logic_vector(3 downto 0);
             d0 :in std_logic_vector(3 downto 0);
             d1 :in std_logic_vector(3 downto 0));
    end d_ff;
    architecture rtl of d_ff is
         begin 
           process(en,d0,d1)
              begin
                if(en='1') then
                 q0<=d0;
                 q1<=d1;
                else
                 q0<="1110";
                 q1<="1110";
              end if;
           end process;
    end rtl;
    

    7.48译码器(驱动数码管显示)


    LIBRARY IEEE;
    USE IEEE.STD_LOGIC_1164.ALL;
    ENTITY decode_48 IS
        PORT(d:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
             y:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));
    END decode_48;
    ARCHITECTURE rtl OF decode_48 IS
           BEGIN
             PROCESS(d)
             BEGIN
             CASE d IS
                WHEN "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 "1111"=>y<="0000001";
                WHEN OTHERS=>y<="0000000";
             END CASE;
           END PROCESS;
    END rtl;
     
    

    8.响铃模块


    library ieee;
    use ieee.std_logic_1164.all;
    entity ring is
            port(cp1,cp512,cp1024,en:in std_logic;
                 hourh,hourl,ahourh,ahourl,minh,minl,aminh,aminl,sech,secl,asech,asecl:in std_logic_vector(3 downto 0);
                 r:out std_logic);
    end ring;
    architecture rtl of ring is
          begin
            process(en,hourh,hourl,ahourh,ahourl,minh,minl,aminh,aminl,sech,secl,asech,asecl,cp1,cp512,cp1024)
               begin
                  if(en='1')then
                    if(hourh=ahourh and hourl=ahourl and minh=aminh and minl=aminl)then
                        if(cp1='1')then
                           r<=cp512;
                        else
                           r<='0';
                       end if;
                    elsif(minh="0101" and minl="1001" and sech="0101")then
                       if(secl="0001" or secl="0011" or secl="0101" or secl="0111")then
                           r<=cp512;
                       elsif(secl="1001")then
                           r<=cp1024;
                       else
                           r<='0';
                       end if;
                    else
                         r<='0';
                    end if;
                 end if;
            end process;
    end rtl;
    

    9.8选1数据选择器


    LIBRARY IEEE;
    USE IEEE.STD_LOGIC_1164.ALL;
    ENTITY sel_81 IS
          PORT(a:IN STD_LOGIC_VECTOR(2 DOWNTO 0);
               y:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
               d0:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
               d1:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
               d2:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
               d3:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
               d4:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
               d5:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
               d6:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
               d7:IN STD_LOGIC_VECTOR(3 DOWNTO 0));
               
    END sel_81;
    ARCHITECTURE rtl OF sel_81 IS
          BEGIN
            PROCESS(d0,d1,d2,d3,d4,d5,d6,d7,a)
              BEGIN
                CASE a IS
                   WHEN "000"=>y<=d7;
                   WHEN "001"=>y<=d6;
                   WHEN "010"=>y<=d5;
                   WHEN "011"=>y<=d4;
                   WHEN "100"=>y<=d3;
                   WHEN "101"=>y<=d2;
                   WHEN "110"=>y<=d1;
                   WHEN "111"=>y<=d0;
                END CASE;
            END PROCESS;
    END rtl;
    

    10.一位二选一数据选择器


    library ieee;
    use ieee.std_logic_1164.all;
    entity sel_21 is 
           port(a:in std_logic;
                y:out std_logic_vector(3 downto 0);
                d0:in  std_logic_vector(3 downto 0);
                d1:in  std_logic_vector(3 downto 0));
    end sel_21;
    architecture rtl of sel_21 is
          begin
             process(a,d0,d1)
              begin
                case a is
                 when '0'=>y<=d0;
                 when '1'=>y<=d1;
                end case;
             end process;
    end rtl;
    

    11.四位二选一数据选择器


    library ieee;
    use ieee.std_logic_1164.all;
    entity selone_21 is 
           port(a:in std_logic;
                y:out std_logic;
                d0:in  std_logic;
                d1:in  std_logic);
    end selone_21;
    architecture rtl of selone_21 is
          begin
             process(a,d0,d1)
              begin
                case a is
                 when '0'=>y<=d0;
                 when '1'=>y<=d1;
                end case;
             end process;
    end rtl;
    
    心得体会:

    在课程设计开始之前,我便对电子钟的制作产生了兴趣,通过在课堂上和老师一起学习VHDL语言的使用方法,以及课下上机进行练习,我已经初步掌握了通过该语言编写程序的方法,如编写底层程序,编译,仿真,生成模块,顶层连接等。并在几次实验课上分别上机连接硬件验证了自己编写的程序的正确性,为课程设计的实现打下了基础。在课程设计的实现过程中,我也遇到了很多问题,一开始是软件使用不够熟练,经常忘记某些步骤,甚至还发生过代码被覆盖的情况,其次是我才用了从中心向四周扩散的设计思路,即首先实现基本的时钟计数和显示的功能,然后再分别添加调节时钟的功能,显示闪烁的功能,闹钟的功能等,这种方法有利有弊,好处是一开始不用想太多,不用管整体是怎样的,只要将各个模块做好即可,所以很适合在知识储备不足的情况下进行设计,但缺点就是最后会发现控制端口很多,导致控制器非常庞大,整个电路的布线较乱,集成度低,最后就是考虑问题不够周全,比如我一开始在连线测试的时候发现数字显示是反着的,但是由于电路基本已经成型,模块多,不便于查错,在一个星期的制作当中,我利用中午,晚上以及平时上机时空闲的时间进行制作,由于只有一个人,所以不会因为思路的冲突而和搭档发生争论,但由于精力有限,所以花的时间非常多,但是对于自己感兴趣的事情,即使很累依然开心。通过课程设计,我觉得自己独立思考的能力和模块化的思维有了提高,在给同学的改错和讲解过程中,我也了解了很多常见的错误以及解决方法,积累了知识和经验,同时也体现了同学之间互帮互助的精神。我还要非常感谢指导老师对我的细心指导,在老师的帮助下,我不仅顺利完成了课程设计,还体会到了作为老师的不易之处,每天面对相同的问题,几百个学生,压力和焦虑都是在所难免的,所以在以后的学习过程中,我会更加从老师的立场思考,不给老师带来额外的压力。





    展开全文
  •  PCF8563是PHILIPS公司推出的一款工业级、内含I2C总线接口功能,且具有极低功耗的多功能时钟/日历芯片,还具有多种报警功能、定时器功能、时钟输出功能,以及中断输出功能等,能完成各种复杂的定时服务,甚室可为...
  • 数字钟设计与制作

    万次阅读 2008-01-17 16:30:00
    2006-06-13 11:28:37 数字钟设计与制作 数字钟是一种用数字电路技术实现时、分、秒计时的装置,机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。...
    2006-06-13 11:28:37

    字体变小 字体变大

    数字钟的设计与制作

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

    数字钟从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。目前,数字钟的功能越来越强,并且有多种专门的大规模集成电路可供选择。

    从有利于学习的角度考虑,这里主要介绍以中小规模集成电路和PLD器件设计数字钟的方法。

    1 数字钟的基本组成及工作原理

    1.1数字钟的构成

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

    1.1 数字钟的组成框图

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

    ⑵分频器电路  分频器电路将32768Hz的高频方波信号经32768()次分频后得到1Hz的方波信号供秒计数器进行计数。分频器实际上也就是计数器。

    ⑶时间计数器电路  时间计数电路由秒个位和秒十位计数器、分个位和分十位计数器及时个位和时十位计数器电路构成,其中秒个位和秒十位计数器、分个位和分十位计数器为60进制计数器,而根据设计要求,时个位和时十位计数器为12进制计数器。

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

    ⑸数码管  数码管通常有发光二极管(LED)数码管和液晶(LCD)数码管,本设计提供的为LED数码管。

    .2数字钟的工作原理

    1)晶体振荡器电路

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

    一般输出为方波的数字式晶体振荡器电路通常有两类,一类是用TTL门电路构成;另一类是通过CMOS非门构成的电路,如图1.2所示,从图上可以看出其结构非常简单。该电路广泛使用于各种需要频率稳定及准确的数字电路,如数字钟、电子计算机、数字通信电路等。

    图1.2 CMOS晶体振荡器(仿真电路)

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

    2)分频器电路

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

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

    3)时间计数单元

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

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

    一般采用10进制计数器如74HC290、74HC390等来实现时间计数单元的计数功能。欲实现12进制和60进制计数还需进行计数模值转换。

    4)译码驱动及显示单元

    计数器实现了对时间的累计以8421BCD码形式输出,为了将计数器输出的8421BCD码显示出来,需用显示译码电路将计数器的输出数码转换为数码显示器件所需要的输出逻辑和一定的电流,一般这种译码器通常称为7段译码显示驱动器。

    常用的7段译码显示驱动器有CD4511。

    5)校时电源电路

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

    6)整点报时电路

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

    2 数字钟的设计与制作

    [例1] 试分别用中小规模集成电路设计并制作一数字钟,指标要求如下:

    ⑴时间以12小时为一个周期;

    ⑵显示时、分、秒;

    ⑶具有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间‘

    ⑷计时过程具有报时功能,当时间到达整点前10秒进行蜂鸣报时;

    ⑸为了保证计时的稳定及准确须由晶体振荡器提供标准时间基准信号。

    设计与制作步骤如下:

    ⑴根据要求,选择数字钟电路设计方案如图1.1所示。

    ⑵电路设计及元器件选择

    ①振荡电路与分频电路:根据要求,振荡电路应选择晶体振荡电路,前已述及。振荡电路可以由图1.2所示非门来实现。为使电路具有更高的Q值以提高振荡频率的稳定性,这里选择CMOS非门,从减小电路功耗的角度来考虑, 这也是一种较好的选择,因此,电路的其它部分也应尽量采用CMOS集成电路来实现。另外,若为适应低电压工作条件,还应考虑采用74HC系列(低压可达2V)的集成电路。

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

    从有关手册中,可查得C1、C2均为30pF。当要求频率准确度和稳定度更高时,还可接入校正电容并采取温度补偿措施。

    由于CMOS电路的输入阻抗极高,因此反馈电阻R1可选为10MΩ。较高的反馈电阻有利于提高振荡频率的稳定性。

    非门电路可选74HC00或74HC04等。

    由于晶体振荡器输出频率为32768HZ,为了得到1HZ的秒信号输入, 需要对振荡器的输出信号进行15级2进制分频。

    实际上,从尽量减少元器件数量的角度来考虑,这里可选多极2进制计数电路CD4060和CD4040来构成分频电路。CD4060和CD4040在数字集成电路中可实现的分频次数最高,而且CD4060还包含振荡电路所需的非门,使用更为方便。

    CD4060计数为14级2进制计数器,可以将32768Hz的信号分频为2Hz,其内部框图如图2.1所示,从图中可以看出,CD4060的时钟输入端两个串接的非门,因此可以直接实现振荡和分频的功能。

    2.1 CD4046内部框图 图2.2 CD4040内部框图

    CD4040计数器的计数模数为4096(),其逻辑框图如图2.2所示。如将32768Hz信号分频为1Hz,则需外加一个8分频计数器,故一般较少使用CD4040来实现分频。

    综上所述,可选择CD4060同时构成振荡电路和分频电路。照图2.1,在之间接入振荡器外接元件可实现振荡,并利用时计数电路中多一个2分频器(后述)可实现15级2分频,即可得1Hz信号。

    ②时间计数电路:一般采用10进制计数器来实现时间计数单元的计数功能。为减少器件使用数量,可选74HC390,其内部逻辑框图如图2.3所示。该器件为双2-5-10异步计数器,并且每一计数器均提供一个异步清零端(高电平有效)。

    2.3 74HC390(1/2)内部逻辑框图

    秒个位计数单元为10进制计数器,无需进制转换,只需将Q与CP(下降沿有效)相连即可。CP(下降没效)与1Hz秒输入信号相连,Q可作为向上的进位信号与十位计数单元的CP相连。

    秒十位计数单元为6进制计数器,需要进制转换。将10进制计数器转换为6进制计数器的电路连接方法如图2.4所示,其中Q可作为向上的进位信号与分个位的计数单元的CP相连。

    2.4 10进制-6进制计数器转换电路

    分个位和分十位计数单元电路结构分别与秒个位和秒十位计数单元完全相同,只不过分个位计数单元的Q作为向上的进位信号应与分十位计数单元的CP相连,分十位计数单元的Q作为向上的进位信号应与时个位计数单元的CP相连。

    时个位计数单元电路结构仍与秒或个位计数单元相同,但是要求,整个时计数单元应为12进制计数器,不是10的整数倍,因此需将个位和十位计数单元合并为一个整体才能进行12进制转换。利用1片75HC390实现12进制计数功能的电路如图2.5所示。

    另外,图2.5所示电路中,尚余-2进制计数单元,正好可作为分频器2Hz输出信号转化为1Hz信号之用。

    8.2.5 12进制计数器电路

    ③译码驱动及显示单元电路:选择CD4511作为显示译码电路;选择LED数码管作为显示单元电路。

    ④校时电路;根据要求,数字钟应具有分校正和时校正功能,因此,应截断分个位和时个位的直接计数通路,并采用正常计时信号与校正信号可以随时切换的电路接入其中。图2.6所示即为用COMS与或非门实现的时或分校时电路,图中,In1端与低位的进位信号相连;In2端与校正信号相连,校正信号可直接取自分频器产生的1Hz或2Hz(不可太高或太低)信号;输出端则与分或时个位计时输入端相连。

    2.6 分或时校正电路(仿真电路)

    如图2.6所示,当开关打向下时,因为校正信号和0相与的输出为0,而开关的另一端接高电平,正常输入信号可以顺利通过与或门,故校时电路处于正常计时状态;当开关打向上时,情况正好与上述相反,这时校时电路处于校时状态。显然,这样的校时电路需要两个。

    若门电路采用TTL型,则可省去电阻R1和R2

    与或非门可选74HC15,非门则可选74HC00或74HC04等。

    2.6所示校时电路存在开关抖动问题,使电路无法正常工作,因此实际使用时,须对开关的状态进行消除抖动处理。通常采用基本RS触发器构成开关消抖动电路,如图2.7所示即为带有该电路的校正电路,其中与非门可选为74HC00等。

    另外,在对分进行校时时应不影响时计数器的现状态,即当分校时时,如果产生进位应该不影响时计数的计数或不产生进位作用,因此,可用分校时时RS触发器的0输出状态来封锁

    2.7 带有消抖动电路的校正电路(仿真电路)

    进位输入信号。74HC51正好为3—3输入的与或非门,多出的输入端可作为封锁信号输入之用。

    ⑤整点报时电路:根据要求,电路应在整点前10秒钟内开始整点报时,即当时间在59分50秒到59分59秒期间时,报时电路报时控制信号。

    当时间在59分50秒到59分59秒期间时,分十位、分个位和秒十位均保持不变,分别为5、9和5,因此可将分计数器十位的Q和Q 、个位的Q和Q及秒计数器十位的Q和Q相与,从而产生报时控制信号。

    报时电路可选74HC30来构成。74HC30为8输入与非门。

    选蜂鸣器为电声器件,蜂鸣器是一种压电电声器件,当其两端加上一个直流电压时酒会发出鸣叫声,两个输入端是极性的,其较长引脚应与高电位相连。

    与非门74HC30输出端应与蜂鸣器的负极相连,而蜂鸣器的正极则应与电源相连。

    ⑶根据上述设计思路,可画出实际电路图(或直接画仿真电路图,自行画出)。

    ⑷电路仿真调试 在完成电路的初步设计后,再对电路进行仿真调试,谜底是为了观察和测量电路的性能指标并调整部分元器件参数,从而达到各项指标的要求。

    PCB图设计与生成

    ①由仿真电路直接生成网络表;

    ②调用PROTEL—PCB,并进行元器件合理布局;

    ③调用网络表,并自动布线;

    PCB图的人工调整;

    ⑤打印输出。

    PCB板一般由生产商根据图纸进行生产,电路设计者无须介入。

    ⑹电路焊接与装配

    ①元器件老化与抽样检测;

    ②元器件预处理;

    ③基于PCB板的元器件焊接与电路装配。

    ⑺实际电路测试与改进 选择测量仪表与仪器,对电路进行实际测量与调试,调整电路参数,并解决存在的问题或电路故障等。

    3 数字钟的设计与制作任务书

    课题 1 试用中小规模集成电路设计并制作一数字钟

     要求如下:

    ⑴设计指标

    时间以24小时为一个周期;

    显示时、分、秒;

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

    计时过程具有报时功能,当时间到达整点前5秒进行蜂鸣报时;

    为了保证计时的稳定及准确须由晶体振荡器提供表针时间基准信号。

    ⑵设计要求

    画出电路原理图(或仿真电路图);

    元器件及参数选择;

    电路仿真与调试;

    PCB文件生成与打印输出。

    ⑶制作要求 自行装配和调试,并能发现问题和解决问题。

    ⑷编写设计报告 写出设计与制作的全过程,附上有关资料和图纸,有心得体会。

    ⑸答辩 在规定的时间内,完成叙述并回答提问。

    课题 2 试用CPLD器件设计并制作一数字钟

    要求如下:

    ⑴设计指标

    时间以24小时为一个周期;

    显示时、分、秒;

    具有较时功能,可以分别对时及分进行单独较时,使其校正到标准时间;

    计时过程具有报时功能,当时间到达整点前5秒进行蜂鸣报时;

    为了保证计时的稳定及准确须由晶体振荡器提供表针时间基准信号。

    ⑵设计要求

    画出电路原理图(或仿真电路图);

    元器件及参数选择;

    CPLD器件逻辑设计与编程;

    电路仿真与调试;

    PCB文件生成与打印输出。

    ⑶制作要求 自行装配和调试,并能发现问题和解决问题。

    ⑷编写设计报告 写出设计与制作的全过程,附上有关资料和图纸,有心得体会。

    ⑸答辩 在规定的时间内,完成叙述并回答提问。
    展开全文
  •  自从学习FPGA以来,唯一做过的完整系统就是基于basys2得多功能数字表。记得当时做的时候也没少头疼,最后用时间磨出来了一个不是很完整的小系统,当时还是产生了满满的成就感。现在回头看来,先不说功能实现的如何...
  •  PCF8563是PHILIPS公司推出的一款工业级、内含I2C总线接口功能,且具有极低功耗的多功能时钟/日历芯片,还具有多种报警功能、定时器功能、时钟输出功能,以及中断输出功能等,能完成各种复杂的定时服务,甚室可为...
  • 一、课程设计的任务和目的任务:设计一台能显示“时”、“分”、“秒”的数字钟,周期为24小时;具有校时、正点报时功能。 目的:培养学生综合运用所学知识的能力,综合设计能力,培养动手能力及分析问题、解决问题...
  • 数字电子设计与制作

    万次阅读 多人点赞 2018-04-14 09:35:28
    学号姓名实物演示(60%)论文成绩(30%)平时成绩(10%)总成绩0144300 0144297 评语:该小组基于单片机设计了一个系统,主要实现了数字时钟实时显示和远程通信的功能,硬件和软件系统工作正常,达到了设计要求。...
  • 基于74LS161实现的多功能数字钟

    千次阅读 多人点赞 2020-01-03 22:39:22
    1、 利用74LS161芯片将各引脚正确连接实现计数功能,并将...3、 将分别用于显示时、分、秒的六个74LS161芯片依次连接(用非门产生的进位信号下一个芯片的时钟信号相连),将信号源频率调至1HZ就可以实现计时功...
  • 基于单片机的数字钟设计

    千次阅读 2020-09-25 20:51:27
      基于单片机的定时和控制装置在许多行业有着广泛的应用,而数字钟是其中最基本的,也是最具有代表性的一个例子。   在基于单片机系统的数字钟电路中,除了基本的单片机系统和外围电路外,还需要外部的控制和...
  • 采用八位共阳数码管,STC89c51单片机的多功能那个数字钟,程序设置了十八组打铃程序,并可通过按键设置一组闹钟,带有继电器和蜂鸣器,源程序有注释c51,并附有PDF的原理图。功能能强大制作简单。
  • 多功能数字钟设计与制作 学生: 指导老师: 娄底职业技术学院 【摘要】: 多功能数字钟采用数字电路实现对“时”、“分”、“秒”数字显示的计时装置。具有时间显示、闹钟设置、报时功能、校正作用。走时准确、显示...
  • 本文介绍了一款基于AT89C52单片机数字钟的设计,阐述了多功能数字钟设计思路,详细叙述了系统硬件、软件设计的具体实现过程。论文重点阐述了时钟模块、显示模块、温度检测模块及相关控制模块等的模块化设计思路...
  • 多功能数字电子仿真文件及文章全文请戳末尾链接一、功能1、显示时间2、显示星期3、时间校准4、整点报时5、(扩展功能)定时闹钟二、原理资料已存入文章末尾链接三、元件清单四、仿真截图五、实物展示六、故障及排查1...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,832
精华内容 6,332
关键字:

多功能数字钟的设计与制作