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

合集下载

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

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

程序如下: 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

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

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

数字时钟设计实验报告一、设计要求:设计一个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时间,并更新数码管显示,检测按键事件,触发报警。

Multisim仿真—数字钟的设计

Multisim仿真—数字钟的设计

数字钟的设计一、设计任务数字钟设计二、设计条件基于Multisim 10 仿真软件的调试三、设计功能要求1、时间以12小时为一个周期;2、显示时、分、秒。

四、电路中允许使用的主要元器件555:时钟电路74LS161:计数器4511:数码管驱动7400:与非门7404:非门SEVEN_SEG_COM_K:共阴数码管五、提供的参考电路:1、时钟秒位的参考电路2、时、分、秒功能仿真参考电路说明:后期将为同学们提供在面包板上插接实际电路的机会,但实验室只能提供555、74LS161、4511、7400、7404、SEVEN_SEG_COM这些元器件,所以必须按上述元器件设计完整的时、分、秒电路。

3.1 时钟秒位的参考电路(10进制和6进制计数器及数码管显示)电路说明:先画以555芯片为中心的时钟电路部分,然后再画74LS161、4511、数码管为中心的显示电路部分。

①按照电路图选择放置元器件:点击中的放置电阻、电容和电感;点击放置电源和地。

②点击中的放置LM555CM时钟元件。

③点击中的放置共阴极数码管。

④点击中的放置计数器74LS161N、与非门7400N(一个芯片中含4个与非门资源)、非门7404N (一个芯片中含6个非门资源)。

⑤点击中的放置数码管驱动4511BD_5V。

⑥点击元器件的管脚按照电路图进行连线。

⑦点击仿真按钮进行仿真。

3.2 时、分、秒功能仿真参考电路电路说明:先画以555芯片为中心的时钟电路部分,然后再画秒位时钟电路、分位时钟电路、小时位时钟电路。

①按照电路图选择放置元器件:点击中的放置电阻、电容和电感;点击放置电源和地。

②点击中的放置LM555CM 时钟元件。

③点击中的放置共阴极数码管。

④点击中的放置计数器74LS161N、与非门7400N(一个芯片中含4个与非门资源)、非门7404N(一个芯片中含6个非门资源)。

⑤点击中的放置数码管驱动4511BD_5V。

⑥点击元器件的管脚按照电路图进行连线。

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按键处理模块去抖动根据以往的经验,按键按下弹起电平会有⼀⼩段⽑刺,可能会引起电路误操作,所以要对按键进⾏消抖处理使变为⼲净的矩形信号。

基于FPGA的数字钟设计

基于FPGA的数字钟设计

数字钟的设计一、 设计要求设计一个数字钟,要求用数码管分别显示时、分、秒的计数,同时可以进行时间设置,并且要求在整点的时候能够实现报时功能。

二、 设计原理计数器在正常工作下是对1Hz的频率计数,在调整时间状态下是对调整的时间模块进行计数;控制按键来选择是正常计数还是调整时间,并决定是调整时还是分;时间显示的LED数码管采用动态扫描实现;在整点到达时,还具有整点报时功能。

三、 电路符号数字钟电路符号如下图所示。

CLK2为分频之前的信号,CLR为清零端,CCK 为校时允许端。

MC为分信号调整端,HC为时信号调整端。

HH[3..0]为时高位,HL[3..0]为时低位,MH[3..0]为分高位,ML[3..0]为分低位,SH[3..0]为秒高位,SL[3..0]为秒低位。

DOUT[6..0]是数码管驱动,SEG[5..0]是位选择信号,RING是整点报时信号。

四、 设计方法本设计的电子时钟包括:分频模块、计时模块、校时模块、动态扫描译码显示模块和整点报时模块。

下面通过各个模块的设计来了解电子时钟的构成:一、 分频模块程序附录:module clk2clk1s(clk,clk1s); input clk;output clk1s;reg clk1s;reg [3:0] cnt;always@(posedge clk)if(cnt==4'b1111)beginclk1s<=~clk1s;cnt<=0;endelsecnt<=cnt+1; endmodule波形仿真:二、 计时模块六十进制计数器六十进制计数器程序附录:六十进制计数器模块:module m60(clk,clr,qh,ql,cao);input clk,clr;output cao;output[3:0] qh,ql;reg [3:0] qh,ql;reg cao;always @(posedge clk or negedge clr) beginif(clr==0)beginqh<=4'h0;ql<=4'h0;cao<=0;endelse if(ql==9)beginql<=0;if(qh==5)beginqh<=0;cao<=1;endelse qh=qh+1;endelsebeginql<=ql+1;cao<=0;endendendmodule二十四进制计数器模块:module m24(clk,clr,qh,ql);input clk,clr;output[3:0] qh,ql;reg [3:0] qh,ql;always @(posedge clk or negedge clr) beginif(clr==0)beginqh<=4'h0;ql<=4'h0;endelse if(qh==2)beginql<=ql+1;if(ql==3)beginqh<=0;ql<=0;endendelse if(ql==9)beginqh<=qh+1;ql<=0;endelseql<=ql+1; end endmodule波形仿真:清零清零正常计时三、 校时模块四、 动态译码显示模块CCK 为0不支持校时,有进位信号时产生分(时)脉冲程序附录:1、位扫描信号(HH,HL,MH,ML,SH,SL逐位扫描,并输出)module sel(clk,hh,hl,mh,ml,sh,sl,out);input clk;input [3:0] hh,hl,mh,ml,sh,sl;output [3:0] out;reg [3:0] out;reg [3:0] ss=0;always @(posedge clk)beginif(ss<4'b0101)ss<=ss+1;elsess<=0;endalways @(posedge clk)begincase(ss)4'd0:out<=sl;4'd1:out<=sh;4'd2:out<=ml;4'd3:out<=mh;4'd4:out<=hl;4'd5:out<=hh;endendmodule仿真图:2、段扫描信号(选择数码管点亮哪一位)module seg(clk,seg);input clk;output [5:0] seg;reg [5:0] seg;reg [3:0] ss=0;always @(posedge clk)beginif(ss<4'b0101)ss<=ss+1;elsess<=0;endalways @(posedge clk)begincase(ss)4'd0:seg<=6'b111110;4'd1:seg<=6'b111101;4'd2:seg<=6'b111011;4'd3:seg<=6'b110111;4'd4:seg<=6'b101111;4'd5:seg<=6'b011111;default:seg<=6'b111111;endcaseend3、4—7译码module decode4_7(decodeout,indec); output[6:0] decodeout;input[3:0] indec;reg[6:0] decodeout;always @(indec)begincase(indec)4'd0:decodeout=7'b1111110;4'd1:decodeout=7'b0110000;4'd2:decodeout=7'b1101101;4'd3:decodeout=7'b1111001;4'd4:decodeout=7'b0110011;4'd5:decodeout=7'b1011011;4'd6:decodeout=7'b1011111;4'd7:decodeout=7'b1110000;4'd8:decodeout=7'b1111111;4'd9:decodeout=7'b1111011;default: decodeout=7'b0000000;endcaseendendmodule五、 整点报时模块六、 数字钟仿真图数字钟的设计注:动态扫描的时钟频率尽量要快。

多功能数字钟电路设计

多功能数字钟电路设计

多功能数字钟电路设计1设计内容简介数字钟是一个简单的时序组合逻辑电路,数字钟的电路系统主要包括时间显示,脉冲产生,报时,闹钟四部分。

脉冲产生部分包括振荡器、分频器;时间显示部分包括计数器、译码器、显示器;报时和闹钟部分主要由门电路构成,用来驱动蜂鸣器。

2设计任务与要求Ⅰ以十进制数字形式显示时、分、秒的时间。

Ⅱ小时计数器的计时要求为“24翻1”,分钟和秒的时间要求为60进位。

Ⅲ能实现手动快速校时、校分;Ⅳ具有整点报时功能,报时声响为四低一高,最后一响为整点。

Ⅴ具有定制控制(定小时)的闹钟功能。

Ⅵ画出完整的电路原理图3主要集成电路器件计数器74LS162六只;74LS90三只;CD4511六只;CD4060六只;三极管74LS191一只;555定时器1只;七段式数码显示器六只,74LS00 若干;74LS03(OC) 若干;74LS20 若干;电阻若干,等4设计方案数字电子钟的原理方框图如图(1)所示。

该电路由秒信号发生器、“时,分,秒”计数器、译码器及显示器、校时电路、整点报时电路、闹钟定时等电路组成。

秒信号产生器决定了整个计时系统的精度,故用石英晶体振荡器加分频器来实现。

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

“分计数器”也采用六十进制计数器,每60分钟,发出一个“时脉冲”,该信号经被送到“时计数器”作为“时计数器”的时钟脉冲,而“时计数器”采用二十四进制计数器,实现“24翻1”的计数方式,可实现对一天二十四小时的累计。

译码显示电路将“时”、“分”、“秒”计数器的输出状态通过七段式显示译码器译码,通过刘伟LED 七段显示器显示出来。

整点报时电路是根据计时系统的输出状态产生一脉冲信号,然后触发一音频发生器实现整点报时,定时电路与此类似。

校时电路是用“时”、“分”、“秒”显示数5电路设计5.1秒信号发生器秒信号发生器是数字钟的核心部分,它的精度和稳定度决定了数字钟的质量,通常用晶体整荡器产生的脉冲经过整形、分频获得1 Hz的秒脉冲。

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

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

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

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

文中采用了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 的脉冲信号,为秒个位提供标准秒脉冲信号。

电子设计自动化(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)显示时、分、秒。

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.测试和调试。

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

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

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

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

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

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

数字电子技术课程设计报告题目:数字钟的设计与制作时间:09-10学年第二学期18-19周院校:武汉纺织大学班级:测控081组员:夏亦冰李艳飞田传雪吴哲伦数字电子技术课程设计报告一.设计目的数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。

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

因此,我们此次设计与制做数字钟就是为了了解数字钟的原理,从而学会制作数字钟.而且通过数字钟的制作进一步的了解各种在制作中用到的中小规模集成电路的作用及实用方法.且由于数字钟包括组合逻辑电路和时叙电路.通过它可以进一步学习与掌握各种组合逻辑电路与时序电路的原理与使用方法.二.实现功能1.要求内容1)时以24为周期2)分和秒以60为周期3)能显示时、分、秒4)具有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间2. 发挥内容1)星期的显示2)计时过程具有报时功能三.元器件1.洞洞板2块2.0.47uF电容1个3.100nF电容1个4.共阴八段数码管7个5.网络线10米6.CD4511集成块7块7.CD4060集成块1块8.74HC390集成块4块9.74HC51集成块1块10.74HC00集成块4块11.74HC30集成块1块12.10MΩ电阻5个13.74HC00集成块4块14.L7805三端稳压管1个15.30pF瓷片电容2个16.9V电池1块17.单刀双掷开关2个18.单刀单置开关1个19.74HC10集成块1块各个芯片引脚图1.CD74HC3902.L7805稳压管3.CD4060 4.CD4511 5.74HC10 6.74HC307.74HC518.74HC00四、原理框图1.数字钟的构成数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路。

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

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

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

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

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

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

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

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

电子技术数字时钟报告电路原理图

电子技术数字时钟报告电路原理图

电子技术课程设计报告设计题目:数字电子时钟班级:学生姓名:学号:指导老师:完成时间:一.设计题目:数字电子时钟二.设计目的:1.熟悉集成电路的引脚安排和各芯片的逻辑功能及使用方法;2.了解数字电子钟的组成及工作原理 ;3.熟悉数字电子钟的设计与制作;三、设计任务及要求用常用的数字芯片设计一个数字电子钟,具体要求如下:1、以24小时为一个计时周期;2、具有“时”、“分”、“秒”数字显示;3、数码管显示电路;4、具有校时功能;5、整点前10秒,数字钟会自动报时,以示提醒;6、用PROTEUS画出电路原理图并仿真验证;四、设计步骤:电路图可分解为:1.脉冲产生电路;2.计时电路;3.显示电路;4校时电路;5整点报时电路;1.脉冲电路是由一个555定时器构成的一秒脉冲,即频率为1HZ;电路图如下:2.计时电路即是计数电路,通过计数器集成芯片如:74LS192 、74LS161、74LS163等完成对秒脉冲的计数,考虑到计数的进制,本设计采用的是74LS192;秒钟个位计到9进10时,秒钟个位回0,秒钟十位进1,秒钟计到59,进60时,秒钟回00,分钟进1;分钟个位计到9进10时,分钟个位回0,分钟十位进1,分钟计到59,进60时,分钟回00,时钟进1;时钟个位记到9进10时,时钟个位回0,时钟十位进1,当时钟计数到23进24时,时钟回00.电路图如下:3.显示电路是完成各个计数器的计数结果的显示,由显示译码器和数码管组成,译码器选用的是4511七段显示译码器,LED数码管选用的是共阴极七段数码管,数码管要加限流电阻,本设计采用的是400欧姆的电阻;电路图如下:4.校时电路通过RS触发器及与非门和与门对时和分进行校准,电路图如下:5.整点报时电路即在时间出现整点的前几秒,数值时钟会自动提醒,本设计采用连续蜂鸣声;根据要求,电路应在整点前10秒开始整点报时,也就是每个小时的59分50秒开始报时,元器件有两个三输入一输出的与门,一个两输入一输出的与门,发生器件选择蜂鸣器;具体电路图如下:六.设计用到的元器件有:与非门74LS00,与门74LS08,74LS11,7段共阴极数码管,计数器芯片74LS192,555定时器,4511译码器,电阻,电容,二极管在电路开始工作时,对计数电路进行清零时会使用到,单刀双掷开关;设计电路图如报告夹纸;七.仿真测试:1.电路计时仿真电路开始计数时:计数从1秒到10秒的进位,从59秒到一分钟的进位,从1分到10分的进位,从59分到一小时的进位,从1小时到10小时的进位,从23小时到24小时的进位,然后重新开始由此循环,便完成了24小时循环计时功能,仿真结果如下:1. 7.2.8.3. 9.4. 10.5. 11.6. 12.13.2.电路报时仿真由电路图可知,U18:A和U18:B的6个输入引脚都为高电平时,蜂鸣器才会通电并发声,当计数器计数到59分50秒是,要求开始报时,而59分59秒时,还在报时,也就是说只需要检测分钟数和秒计数的十位,5的BCD码是4和1,9的BCD码是8和1,一共需要6个测端口,也就是上述的6个输入端口,开始报时时,报时电路状态如图:3.校时电路仿真正常计时校时U15:D和u15:C是一个选通电路,12角接的是秒的进位信号,9角接的是秒的脉冲信号,当SW1接到下引脚时,U15:D接通,u15:C关闭,进位信号通过,计数器的分技术正常计时;当SW1接到上引脚时,U15:D关闭,u15:C接通,校时的秒脉冲通过,便实现了分钟校时,时钟的校时与分钟校时大致相同;八.心得体会以及故障解决设计过程中遇到了一个问题,就是在校时电路开始工作时,校时的选择电路会给分钟和时钟的个位一个进位信号,也就是仿真开始时电路的分钟和时钟个位会有一个1;为了解决这个问题,我采用的是在电路开始工作时,同时给分钟和时钟的个位一个高电平的清零信号来解决,由于时钟的个位和十位的清零端是连在一起的,再加上分钟的个位,在校时小时的时候且当小时跳完24小时时,会给分钟的个位一个清零信号,这时在电路中加一个单向导通的二极管变解决了,具体加在那儿,请参考电路图;在设计过称中,我们也许遇到的问题不止一个两个,而我们要做的是通过努力去解决它;首先我们要具备丰富的基础知识,这是要在学习和实际生活中积累而成的;其次,我们还有身边的朋友同学老师可以请教,俗话说:三人行,必有我师;最后,我们还有网络,当今是个信息时代,网络承载信息的传递,而且信息量非常大,所以我们也可以适当的利用网络资源;通过这次对数字钟的设计与制作,让我了解了设计电路的步骤,也让我了解了关于数字钟的原理与设计理念,要设计一个电路总要先用仿真,仿真成功之后才实际接线;但是仿真是在一个比较好的状态下工作,而电路在实际工作中需要考虑到一些驱动和限流电阻等等,因为,再实际接线中有着各种各样的条件制约和干扰;而且,在仿真中无法成功的电路接法,在实际中因为芯片本身的特性而能够成功;所以,在设计时应考虑两者的差异,从中找出最适合的设计方法;这次学习让我对各种电路都有了大概的了解,所以说,坐而言不如立而行,对于这些电路还是应该自己动手实际操作才会有深刻理解,才能在实际生活和工作中应用起来;。

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