数码管数字时钟电路的设计

合集下载

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

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

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

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

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

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

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

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

通过仿真过程也进一步学会了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光电组合器件,构成模块式石英晶体数字钟。

数字电路数字时钟课程实验报告

数字电路数字时钟课程实验报告

数字时钟设计实验报告一、设计要求:设计一个24小时制的数字时钟。

要求:计时、显示精度到秒;有校时功能。

采用中小规模集成电路设计。

发挥:增加闹钟功能。

二、设计方案:由秒时钟信号发生器、计时电路和校时电路构成电路。

秒时钟信号发生器可由振荡器和分频器构成。

计时电路中采用两个60进制计数器分别完成秒计时和分计时;24进制计数器完成时计时;采用译码器将计数器的输出译码后送七段数码管显示。

校时电路采用开关控制时、分、秒计数器的时钟信号为校时脉冲以完成校时。

三、电路框图:图一数字时钟电路框图四、电路原理图:(一)秒脉冲信号发生器秒脉冲信号发生器是数字电子钟的核心部分,它的精度和稳定度决定了数字钟的质量。

由振荡器与分频器组合产生秒脉冲信号。

振荡器: 通常用555定时器与RC构成的多谐振荡器,经过调整输出1000Hz脉冲。

分频器: 分频器功能主要有两个,一是产生标准秒脉冲信号,一是提供功能扩展电路所需要的信号,选用三片74LS290进行级联,因为每片为1/10分频器,三片级联好获得1Hz标准秒脉冲。

其电路图如下:译码器译码器译码器时计数器分计数器秒计数器校时电路秒信号发生器图二秒脉冲信号发生器(二)秒、分、时计时器电路设计秒、分计数器为60进制计数器,小时计数器为24进制计数器。

60进制——秒计数器秒的个位部分为逢十进一,十位部分为逢六进一,从而共同完成60进制计数器。

当计数到59时清零并重新开始计数。

秒的个位部分的设计:利用十进制计数器CD40110设计10进制计数器显示秒的个位。

个位计数器由0增加到9时产生进位,连在十位部计数器脉冲输入端CP,从而实现10进制计数和进位功能。

利用74LS161和74LS11设计6进制计数器显示秒的十位,当十位计数器由0增加到5时利用74LS11与门产生一个高电平接到个位、十位的CD40110的清零端,同时产生一个脉冲给分的个位。

其电路图如下:图三 60进制--秒计数电路60进制——分计数电路分的个位部分为逢十进一,十位部分为逢六进一,从而共同完成60进制计数器。

51单片机数码管时钟电路的设计

51单片机数码管时钟电路的设计

51单片机数码管时钟电路的设计设计一个51单片机数码管时钟电路,让我们开始吧。

一、设计思路该数码管时钟电路的设计主要包括以下几个方面:1.使用DS1302时钟芯片获取真实时间;2.使用I2C总线方式将DS1302时钟芯片与51单片机连接;3.使用74HC595芯片驱动数码管显示;4.使用按键控制时钟的设置和调节;5.使用蜂鸣器发出报警声;6.使用LED指示灯显示时钟状态。

二、硬件设计部分数码管显示部分:1.使用4位共阳数码管作为时分显示器,使用1位共阳数码管作为秒显示器;2.使用8片74HC595芯片级联起来,将时分秒数据传输到数码管显示;3.设置共阳数码管的通阳管为P0口,设置74HC595的DS(串行数据输入)、SH(上升沿锁存)、STCP(74HC595的8位锁存输出)引脚接到P1.2、P1.3、P1.4端口;4.设置8个控制引脚接到P1.5~P1.12端口。

实时时钟部分:1.使用DS1302时钟芯片连接到P2.0、P2.1、P2.2、P2.3、P2.4、P2.5、P2.6、P2.7端口;2.设置时钟复位引脚接到P0.1端口,时钟传输使能引脚接到P0.2端口。

按键输入部分:1.设置按键S1接到P3.2端口,按键S2接到P3.3端口;2.设置按键的上拉电阻,使其处于高电平状态;3.设置按键的下降沿触发外部中断,以便检测按键的按下事件。

其他部分:1.设置蜂鸣器接到P0.0端口,并使用普通电阻限流;2.设置LED指示灯接到P0.7端口。

三、软件设计部分1.初始化函数:初始化P0、P1、P2、P3口的状态;2.DS1302驱动函数:包括初始化DS1302芯片和读写DS1302寄存器的函数;3.74HC595驱动函数:包括初始化74HC595芯片,以及向74HC595芯片发送8位数据的函数;4.数码管显示函数:将时分秒数据按位转换为对应的数字和状态,并调用74HC595驱动函数显示;5.按键检测函数:检测按键的按下事件,并根据按键事件的不同触发不同的操作;6.报警函数:当设定时间到达时,将触发报警声,并控制LED灯闪烁;7.主函数:循环读取DS1302时间,并更新数码管显示,检测按键事件,触发报警。

VHDL数字时钟设计

VHDL数字时钟设计

VHDL数字时钟设计序⾔这个是我在做FPGA界的HelloWorld——数字钟设计时随⼿写下的,再现了数字钟设计的过程⽬标分析1. 时钟具有时分秒的显⽰,需6个数码管。

为了减⼩功耗采⽤扫描法显⽰2. 按键设置时间,需要对按键进⾏消抖3. 时分秒即为2个60进制计数器,⼀个24进制计数器。

模块设计综上所述,我采⽤模块化设计⽅法进⾏设计,绘制框图如下。

1. 时钟分频产⽣各个模块所需频率时钟。

2. 按键处理模块对按键信号进⾏消抖、变长脉冲为短脉冲等处理。

3. 时间控制模块产⽣时间信号或对时间进⾏设置。

4. 数码管驱动模块负责对时间信号BCD码译码为数码管的段码并且扫描输出到数码管。

下⾯对各个模块分别详细叙述时钟分频模块我打算把时钟分频模块做成“数控N分频器”,通过给分频器传⼊数值N来对时钟信号进⾏N分频。

得到的信号频率为原时钟信号的频率/N,占空⽐为1/N。

稍微考虑下其他模块所需时钟:按键处理模块100Hz ,时间控制模块1Hz,数码管驱动50Hz。

⽽输⼊时钟为33.8688MHz。

我不想传⼊的N数值过⼤,我打算先对时钟进⾏两次:第⼀次调⽤时钟分频模块得到1Mhz,第⼆次得到1Khz。

这样N的位数为10可以满⾜需求。

代码如下library IEEE;use IEEE.STD_LOGIC_1164.all;use IEEE.STD_LOGIC_UNSIGNED.all;entity ClkDiv isport(clk_i:IN STD_LOGIC;N_i: IN STD_LOGIC_VECTOR(9 DOWNTO 0);clk_o:OUT STD_LOGIC);end ClkDiv;architecture behavior of ClkDiv issignal count:STD_LOGIC_VECTOR(9 DOWNTO 0):="0000000001";signal clk_temp:STD_LOGIC:='0';beginprocess(clk_i)beginif(clk_i'EVENT and clk_i='1')thenif (count=N_i)thencount<="0000000001";clk_temp<='1';elsecount<=count+1;clk_temp<='0';end if;end if;end process;clk_o<=clk_temp;end behavior;仿真结果如下:2分频:输出信号为f/2Hz,占空⽐1:23分频:输出信号为f/3Hz,占空⽐1:3按键处理模块去抖动根据以往的经验,按键按下弹起电平会有⼀⼩段⽑刺,可能会引起电路误操作,所以要对按键进⾏消抖处理使变为⼲净的矩形信号。

数字钟系统电路的设计方案与仿真分析

数字钟系统电路的设计方案与仿真分析

数字钟系统电路的设计方案与仿真分析
在电子技术实验教学中,构建学生的电路设计理念,提高学生的电路设计能力,是教学的根本目的和核心内容。

数字钟电路的设计和仿真,涉及模拟电子技术、数字电子技术等多方面知识,能够体现实验者的理论功底和设计水平,是电子设计和仿真教学的典型案例。

文中采用了555 定时器电路、计数电路、译码电路、显示电路和时钟校正电路,来实现该电路。

1 系统设计方案
数字钟由振荡器、分频器、计时电路、译码显示电路等组成。

振荡器是数字钟的核心,提供一定频率的方波信号;分频器的作用是进行频率变换,产生频率为1 Hz 的秒信号,作为是整个系统的时基信号; 计时电路是将时基信号进行计数;译码显示电路的作用是显示时、分、秒时间;校正电路用来对时、分进行校对调整。

其总体结构图,如图1 所示。

2 子系统的实现
2.1 振荡器
本系统的振荡器采用由555 定时器与RC 组成的多谐振荡器来实现,如图2 所示即为产生1 kHz 时钟信号的电路图。

此多谐振荡器虽然产生的脉冲误差较大,但设计方案快捷、易于实现、受电源电压和温度变化的影响很小。

2.2 分频器
由于振荡器产生的频率高,要得到标准的秒信号,就需要对所得到的信号进行分频。

在此电路中,分频器的功能主要有两个:1)产生标准脉冲信号;2)提供电路工作需要的信号,比如扩展电路需要的信号。

通常实现分频器的电路是计数器电路,选择74LS160 十进制计数器来完成上述功能[5]。

如图3 所示,555 定时器产生1 kHz 的信号,经过3 次1/10 分频后得到1 Hz 的脉冲信号,为秒个位提供标准秒脉冲信号。

基于数码管时钟电路的设计

基于数码管时钟电路的设计

LED数码管时钟电路采用24 h计时方式,时、分、秒用六位数码管显示。

该电路采用AT89C2051单片机,使用3 V电池供电,只使用一个按键开关即可进入调时、省电(不显示LED数码管)和正常显示三种状态。

AT89C2051单片机的应用意义采用ATMEL的AT89C2051微处理器,是基于以下几个因素:1)89C2051为51内核,仿真调试软硬件资源丰富;2)性价比高,货源充足;3)DIP20封装,体积小,便于产品小型化;4)为EEPROM程序存储介质,1000次以上擦/写周期,便于编程调试;5)具有IDLE和POWER-DOWN两种工作模式,便于进行低功耗设计;6)工作电压范围宽:2.7~6V,便于交直流供电。

AT89C2051主要特点1)指令与MCS-51芯片兼容。

2)内含2K字节的可反复电气烧录及可擦除内存。

3)工作电压2.7V至6V。

4)工作频率最高至24MHZ。

5)内含128字节RAM。

6)15条可编程控制I/O线。

7)一个模拟电压比较器关键字:数码管脉冲定时计数单片机简介 3 8051单片机介绍 4 8051单片机内部定时器/计数器简介 6 时钟电路硬件设计7 系统主要程序的设计8 主程序流程图9 T0中断服务程序10 AT89C2051时钟程序11 计数初值19 学习心得20 参考文献20单片机简介单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。

概括的讲:一块芯片就成了一台计算机。

它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。

同时,学习使用单片机是了解计算机原理与结构的最佳选择。

可以说,二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。

不过,这种电脑,通常是指个人计算机,简称PC 机。

它由主机、键盘、显示器等组成。

还有一类计算机,大多数人却不怎么熟悉。

这种计算机就是把智能赋予各种机械的单片机(亦称微型控制器)。

AT89C2051数字电子钟的设计

AT89C2051数字电子钟的设计

AT89C2051数字电子钟的设计一、设计任务与要求1.通过单片机技术使 LED 数码管输出显示时间。

2. 可通过按键设置闹钟功能,且停闹无须手工操作。

3. 提高计时精度,使计时误差最小。

4. 通过键盘 2 个键,从左到右依次标名为 SET,DOWN,UP,ENTER, 用来修改和设置系统时钟。

二、方案设计与论证其主要设计思想是:整个系统用单片机为中央控制器,由单片机执行采集时钟芯片的时间信号并通过显示模块来输出信号及相关的控制功能。

时钟芯片产生时钟信号,利用单片机的 I/O 口传给单片机;并通过 I/O 口实现 LCD 的显示。

系统设有 4 个按键可以对时间星期年月日进行调整,还可以设置闹钟。

本电路以一片AT89C2051 单片机为主体,其显示数据从P3.0-P3.7 口输出,P1 口输出对应的六位位选信号。

电子钟程序设计时使用了 T0 作为计时,T1 为调整时显示用。

只要对程序稍加更改,可以很容易的实现 8 路定时功能。

电子钟只用一个轻触式按键来完成所有的设置。

为了使闹钟音量足够大,采用了 PNP 型三极管 8550 来驱动蜂鸣器,驱动电阻用 1K 的,蜂鸣器为 5V 小型蜂鸣器。

若用 NPN 来驱动蜂鸣器音量要小一点。

LED 数码管位驱动用8850,电子钟采用自制的 3A 开关电源供电。

AT89C205 是一个低电压,高性能 CMOS 8 位单片机,片内含 2k bytes 的可反复擦写的只读 Flash 程序存储器和 128 bytes 的随机存取数据存储器(RAM),器件采用 ATMEL 公司的高密度、非易失性存储技术生产,兼容标准 MCS-51 指令系统,片内置通用 8 位中央处理器和 Flash 存储单元,功能强大。

但它只有 20 个引脚,15 个双向输入/输出(I/O)端口,其中 P1 是一个完整的 8 位双向 I/O 口,两个外中断口,两个 16 位可编程定时计数器,两个全双向串行通信口,一个模拟比较放大器。

数字电子钟的设计 数电数字电子钟课程设计

数字电子钟的设计 数电数字电子钟课程设计

数字电路课程设计报告课程名称数字电路技术基础设计题目数字电子钟的设计所学专业名称电子信息工程班级2008级电信(2)班学号2008210139学生姓名司浩指导教师吕承启2010年6月20 日数字电子技术课程设计报告一、设计目的数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。

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

因此,我们此次设计与制做数字钟就是为了了解数字钟的原理,从而学会制作数字钟.而且通过数字钟的制作进一步的了解各种在制作中用到的中小规模集成电路的作用及实用方法.且由于数字钟包括组合逻辑电路和时叙电路.通过它可以进一步学习与掌握各种组合逻辑电路与时序电路的原理与使用方法.二、设计要求(1)设计指标①时间以12小时为一个周期;②显示时、分、秒;③具有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间;④计时过程具有报时功能,当时间到达整点前10秒进行蜂鸣报时;⑤为了保证计时的稳定及准确须由晶体振荡器提供表针时间基准信号。

(2)设计要求①画出电路原理图(或仿真电路图);②元器件及参数选择;(3)制作要求:自行装配和调试,并能发现问题和解决问题。

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

三、原理框图1.数字钟的构成数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路。

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

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

(a)数字钟组成框图2.晶体振荡器电路晶体振荡器电路给数字钟提供一个频率稳定准确的32768Hz的方波信号,可保证数字钟的走时准确及稳定。

不管是指针式的电子钟还是数字显示的电子钟都使用了晶体振荡器电路。

电子设计自动化(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.能够利用软件设计数字电子钟电路原理图。

2.要求熟悉集成芯片功能。

3.具有时、分、秒显示功能。

三、毕业设计进程表毕业设计进程表起止日期设计内容备注第1周资料准备,查阅相关文献第2周设计电路第3-4周编写说明书,交指导老师审阅第5周整理资料,准备答辩前言目前市场上提供的无论是机械钟还是石英钟在晚上无照明的情况下都是不可见的。

要知道当前的时间,必须先开灯,故较为不便。

现在市场上出现了这样一类的电子钟,它以六只LED数码管来显示时分秒,与传统的以指针显示秒的方式不同,超越了人们传统的习惯与理念。

数字电子钟是一种用数字显示秒、分、时的计时装置,与传统的机械钟相比,具有走时准确、显示直观、无机械传动装置等优点,因而得到广泛的应用。

如,日常生活中的电子手表,车站、码头、机场等公共场所的大型数显电子钟。

要实现数字电子钟的设计可以由单片机控制或者由数字IC构成。

这里我们要做的是一个由数字IC构成的数字电子钟设计。

目录1 设计功能要求 (1)2 设计方案 (1)3设计中所用到的元器件 (2)3.1译码器 (2)3.2计数器 (4)3.3显示器 (4)3.4振荡器 (5)4 电路设计 (6)4.1时分秒计数器 (6)4.1.1秒计数器的设计 (6)4.1.2分计数器的设计 (8)4.1.3时计数器的设计 (8)4.2校时电路 (8)4.3译码显示电路 (10)4.4总体电路 (11)5器件清单 (13)结束语 (14)致谢 (15)参考文献 (16)附录A 数字电子钟整体体电路图 (17)1 设计功能要求设计一数字钟,该数字钟能够准确计时,以数字形式显示时、分、秒的时间和校时功能。

在电路中,振荡电路提供的1Hz脉冲信号。

在计时出现误差时电路还可以进行校时、校分和校秒的功能。

并且要用数码管显示时、分、秒,各位均为两位显示。

具体要求如下:1.时的计时要求为“23置0”,分和秒的计时要求为60进制。

LED七段数码管数字钟

LED七段数码管数字钟

设 计 题 目: LED 七段数码管数字钟 学 院 名 称: 计算机科学与工程学院 专 业: 计算机科学与技术 班 级: 05计1 姓 名: 丁 琳 指导教师姓名: 白凤娥 指导教师职称: 教 授设 计 成 绩: 评 阅 教 师: 评 阅 日 期:2008年 12月 日微机原理与接口技术课程设计报告JIANGSU TEACHERS UNIVERCITY OF TECHNOLOGY目录一、设计任务书 (3)二、设计题目 (3)三、设计方案 (3)四、硬件原理 (4)1.七段数码管显示 (4)2.键盘扫描显示 (5)3.8253计数器和8259中断 (6)4.硬件连接 (6)五、程序流程图及程序清单 (7)1.七段数码管显示 (8)2. 键盘扫描显示 (9)3.定时器设计 (12)4.总程序设计 (15)六、调试过程及结果 (29)七、设计总结和体会 (30)八、参考文献 (30)一、设计任务书《微机原理及接口技术》是一门应用性、综合性、实践性较强的课程,没有实际的有针对性的设计环节,我们就不能很好的理解和掌握所学的技术知识,更缺乏解决实际问题的能力。

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

通过课程设计实践,不仅要培养我们的实际动手能力,检验我们对本门课学习的情况,更要培养我们在实际的工程设计中查阅专业资料、工具书或参考书,掌握工程设计手段和软件工具,并能用设计报告表达设计思想和结果的能力。

培养我们实事求是和严肃认真的工作态度。

通过设计过程,要求我们熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,使我们得到微机开发应用方面的初步训练。

集体讨论设计题目的总体设计方案、编程、软件硬件调试、编写设计报告等问题,真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。

数码管时钟电路的设计

数码管时钟电路的设计

前言单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。

单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。

由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。

这次毕业设计通过对它的学习、应用,以AT89C205芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由直流电源供电,通过数码管能够准确显示。

.数字时钟是现代社会应用广泛的计时工具,在航天、电子等科研单位,工厂、医院、学校等企事业单位,各种体育赛事及至我们每个人的日常生活中都发挥着重要的作用。

本系统是基于AT89C2051单片机设计的一个具有六位LED显示的数字时实时钟,采用独立式按键进行时间调整,该系统同时具有硬件设计简单、工作稳定性高、价格低廉等优点。

目录摘要时钟,自从它发明的那天起,就成为人类的朋友,但随着时间的推移,科学技术的不断发展,人们对时间计量的精度要求越来越高,应用越来越广。

怎样让时钟更好的为人民服务,怎样让我们的老朋友焕发青春呢?这就要求人们不断设计出新型时钟。

现今,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。

本文利用单片机实现数字时钟计时功能的主要内容,其中AT89C2051是核心元件同时采用数码管动态显示“时”,“分”,“秒”的现代计时装置。

与传统机械表相比,它具有走时精确,显示直观等特点。

它的计时周期为24小时,显满刻度为“23时59分59秒”,另外具有校时功能,断电后有记忆功能,恢复供电时可实现计时同步等特点。

74ls161单片机30进制数数字钟设计过程

74ls161单片机30进制数数字钟设计过程

74ls161单片机30进制数数字钟设计过程设计一个74LS161单片机30进制数的数字钟,可以按照以下步骤进行:
1.确定时钟的时间范围和显示方式。

例如,设定时间范围为00:00到29:59,并使用四个数码管显示小时和分钟。

2.确定数码管的接线方式。

74LS161是一个4位二进制计数器,输出
是四个二进制信号。

将每个输出信号连接到对应数码管的相应段。

3.编写单片机程序。

使用74LS161作为时钟源,每秒产生一个脉冲。

程序需实现以下功能:
-将74LS161的输出转换为30进制的数值,并将其转换为BCD码或者
直接连接到数码管显示。

-根据当前的数值更新数码管的显示。

4.连接外部电路和电源。

将74LS161和四位数码管连接到单片机的引脚,并连接适当的电源。

确保电路的接地和电源线连接正确。

5.编译程序,并将其烧录到单片机中。

使用适当的开发工具和编译器,将编写好的程序烧录到单片机中。

6.测试和调试。

连接电源后,观察数码管的显示是否正确。

调试程序,确保时钟的计时和显示功能正常。

以上是一个简单的设计过程,可以根据具体需求进行适当的修改和调整。

还可以添加其他功能,如闹钟和定时器等。

数字时钟电路的设计(Multisim仿真)

数字时钟电路的设计(Multisim仿真)

一、数字时钟电路的设计
1、设计任务和要求
设计一个数字时钟电路,要求显示时、分、秒,频率为1Hz。

2、基本设计思路
设计两个模60计数器(分别作为“秒”和“分”显示)和一个
模24计数器(作为“时”显示)
其中,用两片十进制计数器74LS162,同步级联,时钟频率为1
赫兹,当级联的计数器输出BCD码为01100000时,用一个二输
入与非门将“十位”的QC和QB两个输出接入CLEAR端,同时
接入下一个级联的计数器组,完成“秒”向“分”,同理实现“分”
向“时”的进位。

对于“时”,当计数器输出BCD码为00100100
时,用一个二输入与非门将“十位”的QB和“个位”的QC输
出接入CLEAR端。

最后将各片计数器的输出端都依次接LED数码管,显示时间变
化。

3、电路仿真结果
我们用Multisim进行仿真,得到了正确的结果,仿真过程中若
干时间点的结果如下:
秒分时
秒分时。

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

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

多功能数字钟的设计及制作1.设计分析本次设计的数字钟具有校时功能。

我们需要在先设计一个基本的数字钟,然后在此基础上增加校时电路。

一个基本的数字钟由三个部分组成:秒脉冲产生电路,计数电路,译码显示电路,然后就是加上校时电路,一个四部分构成了本次设计的多功能数字钟,其总体方框图如图1-1图1-1 总体方框图2.设计内容2.1秒脉冲产生部分本设计使用由555定时器构成的多谐振荡器来产生1HZ的信号。

虽然此振荡器没有石英晶体稳定度和精确度高,由于设计简单而成为了设计时的首选。

只要在555定时器电路外部配上两个电阻及两个电容元件,并将某些引脚相连,就可以方便地构成多谐振荡器。

555定时器是数字脉冲产生的核心芯片,所以在了解其原理之前,我们需了解555定时器。

555定时器逻辑符号如图2-1所示:图2-1 555定时器逻辑符号管脚功能如表2-1所示:图2-2 秒脉冲电路根据原理和元件图,结合一阶电路暂态过程的三要素法,可以计算出充放电的时间,两者相加即为脉冲周期,脉冲周期的倒数即为脉冲频率。

充电过程的方程式: 2/3Vcc=Vcc+(1/3Vcc-Vcc)e(t1/RC)t1=(R1+R2)C*㏑2=0.7(R1+R2)C放电过程的方程式: 1/3Vcc=0+(2/3Vcc-0)e(t1/RC)t2=R2*C㏑2=0.7R2*C脉冲周期为: t=t1+t2=0.7(R1+2R2)C脉冲频率为: f=1/t=1.43/(R1+2R2)C令R1=15k,R2=68k,C=0. 01F,(其中0.01F的电容的作用是防干扰的)代入数据,计算得,f=0.94HZ≈1HZ基本满足实验要求。

2.2计数部分计数部分的核心芯片是74LS9074LS90是二---五---十进制异步计数器。

它有两个时钟输入CKA和CKB,其中,CPA和Q0组成一位二进制计数器,CKB和Q1Q2Q3组成五进制计数器,若将Q0与CKB相连接,时钟脉冲从CKA输入,则构成了84212BCD码十进制计数器。

数字电子钟逻辑电路设计

数字电子钟逻辑电路设计

数字电子钟逻辑电路设计数字电子钟是一种应用广泛的数字化产品,它不仅方便准确地显示时间,还具备功能丰富、外观美观等优点。

本文将介绍数字电子钟的逻辑电路设计,包括时钟信号输入模块、计数模块、显示模块以及设置功能模块等方面。

一、时钟信号输入模块时钟信号输入模块是数字电子钟的核心模块之一,它负责提供准确的时钟信号供其他模块使用。

在设计时钟信号输入模块时,我们可以采用晶振作为时钟源,通过将晶振输出的脉冲信号进行适当的处理,得到精确的时钟信号。

具体而言,我们可以通过使用频率分频电路,将晶振输出的高频脉冲信号分频成我们需要的低频时钟信号。

这样能够降低电路的复杂度,提高系统的稳定性和可靠性。

二、计数模块计数模块是实现数字电子钟时间计数功能的核心模块。

在设计计数模块时,我们可以采用分秒计数和时分计数两种方式。

对于分秒计数,我们可以使用两个计数器分别表示分钟和秒钟,当秒钟计数到59时,分钟计数器加1,同时秒钟计数器清零,从而实现分秒的连续计数。

对于时分计数,我们可以使用两个计数器分别表示小时和分钟,同样采用类似的逻辑实现。

当分钟计数到59时,小时计数器加1,同时分钟计数器清零,从而实现时分的连续计数。

三、显示模块显示模块是数字电子钟的重要组成部分,它负责将计数模块得到的时间信息以合适的形式显示出来。

在设计显示模块时,我们可以采用数码管来显示时间信息。

数码管是一种方便实用的数字显示元件,它可根据控制信号显示0至9的数字。

我们可以通过将计数器输出的二进制信号转换为对应的数码管控制信号,从而实现时间的数字显示。

四、设置功能模块设置功能模块是数字电子钟的附加功能之一,它可以实现时间的设置和调整。

在设计设置功能模块时,我们可以引入按钮和开关等输入元件,通过对输入元件状态的检测和判断,实现时间的设置和调整。

具体而言,我们可以设计一个按钮矩阵用于选择要设置的时间单位(例如时、分、秒),再通过加减按钮来实现时间数值的单步增减操作。

数字时钟实验报告

数字时钟实验报告

数字时钟实验报告数字时钟实验报告引言:数字时钟是一种常见的时间显示设备,它以数字的形式直观地展示时间,广泛应用于家庭、学校、办公场所等各个领域。

本次实验旨在通过制作一个简单的数字时钟,了解数字时钟的工作原理和构造,并通过实践掌握相关的电子元件和电路知识。

一、实验材料和仪器:1. 电子元件:7段LED数码管、集成电路555计时器、电阻、电容等。

2. 仪器:数字万用表、示波器、电源等。

二、实验步骤:1. 电路连接:首先,将7段LED数码管按照电路图连接到555计时器的输出引脚上。

然后,根据电路图连接电阻和电容,形成555计时器的工作电路。

最后,将电源连接到电路上,确保电路供电正常。

2. 电路调试:打开电源后,使用数字万用表检测电路各个节点的电压和电流,确保电路连接正确,并且电压、电流符合设计要求。

然后,使用示波器观察555计时器输出的方波信号,并调节电阻和电容的数值,使得方波信号的频率和占空比符合数字时钟的要求。

3. 数字时钟显示:当电路调试完成后,数字时钟即可正常工作。

通过改变555计时器的频率,可以实现数字时钟的时间显示刷新频率调节。

通过观察7段LED数码管的亮灭情况,可以准确读取当前的时间。

三、实验结果分析:通过实验,我们成功制作了一个简单的数字时钟。

通过调节电路中的元件数值,我们可以改变数字时钟的刷新频率和显示方式。

实验中,我们还发现了以下几个问题和现象:1. 数码管亮度不均匀:在实验过程中,我们发现数码管的亮度不均匀,有些段显示较亮,而有些段显示较暗。

这是由于数码管内部的发光二极管的特性不完全一致,导致亮度差异。

为了解决这个问题,可以采用亮度均衡电路或者更换亮度较为一致的数码管。

2. 时钟误差:在实验中,我们发现数字时钟的时间显示与实际时间存在一定的误差。

这是由于555计时器的精度有限,以及电容和电阻的误差累积导致的。

为了提高数字时钟的精度,可以选择更高精度的计时器和优质的电子元件。

3. 电路稳定性:在实验过程中,我们发现电路的稳定性对数字时钟的正常工作十分重要。

基于单片机的电子时钟6位LED数码管显示

基于单片机的电子时钟6位LED数码管显示

数码管显示电子时钟设计一.功能要求1.数字电子时钟最主要是LED数码管显示功能,以24小时为一个周期,显示时间时、分、秒。

2.具有校时功能,可以对时、进行单独校对,使其校正到标准时间。

二.方案论证1.数字时钟方案数字时钟是本设计的最主要的部分。

根据需要,可利用两种方案实现。

方案一:本方案采用Dallas公司的专用时钟芯片DS12887A。

该芯片内部采用石英晶体振荡器,其芯片精度不大于10ms/年,且具有完备的时钟闹钟功能,因此,可直接对其以用于显示或设置,使得软件编程相对简单。

为保证时钟在电网电压不足或突然掉电等突发情况下仍能正常工作,芯片内部包含锂电池。

当电网电压不足或突然掉电时,系统自动转换到内部锂电池供电系统。

而且即使系统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以备随时提供正确的时间。

方案二:本方案完全用软件实现数字时钟。

原理为:在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。

利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将十字节清零。

该方案具有硬件电路简单的特点。

但由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。

而且,由于是软件实现,当单片机不上电,程序不执行时,时钟将不工作。

基于硬件电路的考虑,本设计采用方案二完成数字时钟的功能。

2.数码管显示方案方案一:静态显示。

所谓静态显示,就是当显示器显示某一字符时,相应的发光二极管恒定的导通或截止。

该方式每一位都需要一个8 位输出口控制。

静态显示时较小的电流能获得较高的亮度,且字符不闪烁。

但当所显示的位数较多时,静态显示所需的I/O口太多,造成了资源的浪费。

方案二:动态显示。

所谓动态显示就是一位一位的轮流点亮各个位,对于显示器的每一位来说,每隔一段时间点亮一次。

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

程序如下: ORG 0000H AJMP MAINT NOP ORG 000BH AJMP INT01 NOP ORG 001BH AJMP INT11 NOP
;转主程序 ;转定时器T0中断程序 ;转定时器T1中断程序
******主程序******
MAINT:
MOV R0,#7FH
;00H~7FH单元清零
开始
内存单元清零 T0, T1为 16位 计 数 器
允 许 T0中 断
调用显示子程序
N
P 2 .7 = 0 ?
Y 调时程序
图10-7 主程序流程图
2) 显示子程序
数码管显示的数据存放在50H~55H内存单元中, 其中50H、51H单元存放秒数据,52H、53H单元存放 分数据,54H、55H单元存放时数据。时间数据采用 BCD码表示,对应的显示用段码表存放在ROM中。
AJMP
XYZ4
;转到XYZ4循环
KMTES: SETB ET0 ;省电状态,开T0中断
SETB TR0 ;启动T0(开时钟)
KMA: JB P2.7,$ ;无按键按下,等待
LCALL XSZCX
;通过调用显示时间程序延时消抖动
JB P2.7,KMA ;是干扰返回等待
KMA1:
JNB P2.7,$
ET1
;允许T1中断
SETB
TR1
;启动T1
XYZ2:JNB P2.7,XYZ1
;P2.7端为0,等待
CLR 01H
;置调分标志位为1
XYZ4:JB P2.7,XYZ3
;等待键按下
LCALL
YS05S
;延时0.5 s
JNB
P2.7,XYZHH
;按键时间大于0.5 s,转到调小时状态
MOV
R0,#53H
5) 调时功能程序 调整时间程序的方法是:按下功能键,当按下时间 小于1 s时,进入省电状态,大于1 s时,进入调分状态, 等待操作,此时计时器停止走动。
6) 延时程序
系统使用三个延时程序。因为系统是动态显示, 为了确保系统在有效显示时间范围内(约50 ms)必须执 行显示程序,所以0.5 s的延时程序是通过执行显示程 序约81遍实现的。
;等待键释放
LJMP MAINT1 ;返回主程序,显示时间
XYZHH: XYZ6:
JNB P2.7,XYZ5 ;等待键释放
SETB 01H ;置调小时标志位
JB P2.7,XYZ7 ;等待键按下
LCALL YS05S ;有键按下,延时0.5 s
JNB P2.7,XYZOUT
JNB P2.7,SJTZ1
SJMPMຫໍສະໝຸດ INT1;功能键没有按下,显示时间
SJTZ1:
CLR ET0 ;关闭T0中断
CLR TR0
;关闭T0
LCALL YS1S
;调用1 s延时程序
JB P2.7,KMTES
;按键时间小于1 s,进入省电状态
MOV
R2,#06H
;进入调时状态,置闪烁定时初值
SETB
3) 定时器T0中断服务程序
时钟的最小计时单位是秒,60 s进位1 min,60 min 进位1 h。定时器T0用于产生最小单位1 s,定时时间为 50 ms,中断累计20次即为1 s。计数单元中的十进制 BCD数每逢60进位。程序流程图如图10-8所示。
开始
保护现场
N
1 s到 否 ?
Y
秒单元加1
N
N
6 0 s到 ?
Y 秒 单 元 清 0, 分 单 元 加 1
N
N
6 0 m in 到 ?
Y
分 单 元 清 0, 时 单 元 加 1
N
N
24h到 ?
Y 时单元清零
恢复现场
中断返回
图10-8 T0中断服务程序
4) 定时器T1中断服务程序 进行时间调整时,正在被调整的时间以闪烁形式表 现,定时器T1用于产生闪烁的时间间隔,每隔0.3 s闪 烁一次。程序流程图略。
AT89C51
P0口
P3口 5V 10F 8.2 k
RST
5V
VCC
P1.7 P1.6 P1.5
g
f e
P1.4 d
P1.3 P1.2 P1.1 P1.0
c b a
时十位 时个位 分十位 分个位 秒十位 秒个位
g
g
g
g
g
f
f
f
f
f
e
e
e
e
e
d
d
d
d
d
c
c
c
c
c
b
b
b
b
b
a
a
a
a
a
3.9 k
3.9 k
CLR A
WZ1:MOV @R0,A
DJNZ R0,WZ1
MOV SP,#30H
;置堆栈指针
MOV 5AH,#0AH ;放入“熄灭符”数据
MOV TMOD,#11H
;设T0,T1为16位定时器
MOV MOV MOV MOV SETB SETB SETB MOV
TL0,#0B0H ;置50 ms定时初值
10.3.2 数码管数字时钟电路的设计
1. 系统硬件电路的设计
单片机控制的数码管时钟电路如图10-6所示,它采 用的是AT89C51单片机,只用了 P1口和P2口,P0、P3 口可用于扩展显示年、月、日等功能。为了简化硬件 电路,LED显示采用动态扫描方式实现,P1口输出段 码数据,P2.0~P2.5端作扫描输出控制端,P2.7作功能 转换按键输入端。LED采用共阳极数码管,由三极管 9012提供驱动电流。为了提高计时精度,所采用的晶 振频率为12 MHz。
;按键时间小于0.5 s,进入调分状态
LCALL
ADD1
;调时间加1子程序
MOV A,R3
;取要调整的单元数据
CLR C
CJNE A,#60,QWE ;调整单元数据与60比较
JC XYZ4
;小于60转到XYZ4循环
QWE:CLR
A ;大于或等于60,清零
MOV
@R0,A
DEC
R0
MOV
@R0,A
CLR C
TH0,#3CH
TL1,#0B0H
TH1,#3CH
EA
;开中断
ET0
;允许T0中断
TR0
;启动T0
R4,#14H ;用于产生1 s定时
MAINT1: LCALL
XSZCX
;调用显示子程序
JNB P2.7,SJTZ0
;功能键按下,进入调时程序
SJMP
MAINT1
SJTZ0: LCALL
XSZCX
;通过调用显示时间程序延时消抖动
3.9 k 3.9 k 3.9 k 3.9 k
P2.5
5V
12MHz XTAL2
30 pF
P2.4 P2.3 P2.2 P2.1
30 pF
P2.0 5 V
XTAL1
P2.6
10 k
VSS
P2.7
按键
图10-6 AT89C51数字时钟电路图
2. 系统软件的设计 1) 主程序 主程序功能主要是初始化、正常显示时间和判断功 能转换键。显示时间调用显示子程序。当P2.7端口按 键按下时,转入调时功能程序。主程序流程图如图107所示。
相关文档
最新文档