8位数字钟程序

合集下载

多功能数字钟

多功能数字钟

电子技术课程设计多功能数字钟学院:专业、班级:姓名:学号:指导老师:2008年12月目录1、设计任务与要求 (2)2、总体框图 (2)3、选择器件 (2)4、功能模块 (3)(1)时钟记数模块 (3)(2)整点报时驱动信号产生模块 (6)(3)八段共阴扫描数码管的片选驱动信号输出模块 (7)(4)驱动八段字形译码输出模块 (9)5、总体设计电路图 (10)(1)仿真图 (10)(2)电路图 (11)(3)管脚图 (11)6、设计心得体会 (12)一、设计任务与要求1、具有时、分、秒记数显示功能,以24小时循环计时。

2、要求数字钟具有清零、调节小时、分钟功能。

3、具有整点报时,整点报时的同时LED灯花样显示。

二、总体框图多功能数字钟总体框图如下图所示。

它由时钟记数模块(包括hour、minute、second 三个小模块)、驱动8位八段共阴扫描数码管的片选驱动信号输出模块(seltime)、驱动八段字形译码输出模块(deled)、整点报时驱动信号产生模块(alart)。

系统总体框图三、选择器件网络线若干/人、共阴八段数码管6个、蜂鸣器、hour(24进制记数器)、minute(60进制记数器)、second(60进制记数器)、alert(整点报时驱动信号产生模块)、seltime(驱动8位八段共阴扫描数码管的片选驱动信号输出模块)、deled(驱动八段字形译码输出模块)。

四、功能模块多功能数字钟中的时钟记数模块、驱动8位八段共阴扫描数码管的片选驱动信号输出模块、驱动八段字形译码输出模块、整点报时驱动信号产生模块。

(1) 时钟记数模块:<1.1>该模块的功能是:在时钟信号(CLK)的作用下可以生成波形;在清零信号(RESET)作用下,即可清零。

VHDL程序如下:LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity hour isport(clk,reset:in std_logic;daout:out std_logic_vector(5 downto 0));end entity hour;architecture fun of hour issignal count:std_logic_vector(5 downto 0);begindaout<=count;process(clk,reset)beginif(reset='0') thencount<="000000";elsif(clk' event and clk='1') thenif(count(3 downto 0)="1001") thenif(count<16#24#) thencount<=count+7;else count<="000000";end if;elsif(count<16#23#) thencount<=count+1;else count<="000000";end if;end if;end process;end fun;<1.2>VHDL程序如下:LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity minute isport(clk,clk1,reset,sethour:in std_logic;enhour:out std_logicdaout:out std_logic_vector(6 downto 0));end entity minute;architecture fun of minute issignal count:std_logic_vector(6 downto 0); begindaout<=count;process(clk,reset,sethour)beginif(reset='0') thencount<="0000000";elsif(sethour='0') thenenhour<=clk1;elsif(clk' event and clk='1') thenif(count(3 downto 0)="1001") thenif(count<16#60#) thenif(count="1011001") thenenhour<='1';count<="0000000"; else count<=count+7;end if;elsecount<="0000000";end if;elsif(count<16#60#) thencount<=count+1;enhour<='0';elsecount<="0000000";end if;end if;<1.3>VHDL程序如下:LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY second ISPORT(clk,reset,setmin:IN STD_LOGIC;enmin:OUT STD_LOGIC;daout:out std_logic_vector(6 downto 0)); END entity second;ARCHITECTURE fun OF second ISSIGNAL count:STD_LOGIC_VECTOR(6 downto 0); BEGINdaout<=count;process(clk,reset,setmin)beginif(reset='0') thencount<="0000000";elsif(setmin='0')thenenmin <=clk;elsif(clk'event and clk='1')thenif(count(3 downto 0)="1001")thenif(count<16#60#)thenif(count="1011001")thenenmin<='1';count<="0000000";ELSE count<=count+7;end if;elsecount<="0000000";end if;elsif(count<16#60#)thencount<=count+1;enmin<='0';elsecount<="0000000";end if;end if;end process;END fun;(2)整点报时驱动信号产生模块该模块功能:在时钟信号(CLK)的作用下可以生成波形,SPEAK输出接扬声器,以产生整点报时发声。

数字钟的设计方法及步骤

数字钟的设计方法及步骤

四川机电职业技术学院数字电子课程设计说明书题目:数字电子钟院系名称:电子电气工程系专业班级:09电气6班学生姓名:姚瑶学号:0907041114指导教师:刘惠兰、刘廷敏、徐贵仁教师职称:2010年12月15日摘要数字电子钟是采用数字电路实现对“时”、“分”、“秒”数字显示的设计装置。

由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度、稳定度远远超过了老式机械钟表。

在数字显示方面,目前还可以直接采用CMOS-LED 光电组合器件,构成模块式石英晶体数字钟。

为了帮助同学们了解数字钟的组成,运用已学过的数字电路基本知识,掌握设计简单数字系统的方法,本课题介绍数字钟的设计制作方法。

关键词:数字集成电路计数器七段数码显示校时电路1设计题目数字电子钟A 纸,页边距为2.5cm数字电子钟是采用数字电路实现对“时”、“分”、“秒”数字显示的设计装置。

由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度、稳定度远远超过了老式机械钟表。

在数字显示方面,目前还可以直接采用CMOS-LED 光电组合器件,构成模块式石英晶体数字钟。

为了帮助同学们了解数字钟的组成,运用已学过的数字电路基本知识,掌握设计简单数字系统的方法,本课题介绍数字钟的设计制作方法。

1.1数字钟的组成和工作原理一个简单的数字钟,主要由六部分组成。

整机电路方框图如图1-1所示。

图1-1数字钟整机方框图(宋体,5号)1.1.1石英晶体振荡器模块振荡器主要用来产生时间标准信号。

因为数字钟的精度,主要取决于时间标准信号的频率及其稳定度,所以要产生稳定的时标信号,一般是采用石英晶体多谐振荡器,从数字钟的精度考虑,晶振频率愈高,钏表的计时准确度就愈高。

但这会使振荡器的耗电量增大,分频器的级数也要增多。

所以在确定频率时应考虑两方面的因素,然后再选定石英晶体的型号。

图1-2晶体振荡器之一100kΩ1.1.2分频器模块因为振荡器产生的时标信号频率很高,要使它变成能用来计时的“秒”信号,需要一定级数的分频电路。

数字时钟_89C52_单片机C语言程序

数字时钟_89C52_单片机C语言程序
/*列扫描控制 LED1位 2位 3位 4位 5位 6位 7位 8位*/
uchar MON[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
uchar A;
uchar BIN=0; /* 【BIN】作为倒计时开始的标志 */
TH0 = (65536 - 10000) / 256; /*给定计时器高位赋予 初值=15536/256*/
TL0 = (65536 - 10000) % 256; /*给定计时器低位赋予 初值=15536%256 */
ET0 = 1; /*打开定时器外部终断0允许 ET1是中断器1的开关*/
P2 = C[4];
Delay(1);
P0 = Code[Msec%10]; /*第五位的数字显示【分】的【个】位 */
P2 = C[5];
Delay(1);
Delay(1);
P0 = 0x40; /*第六位符号【-】的显示 */
P2 = C[6];
Delay(1);
P2 = C[2];
Delay(1);
if(x/50==0)
P0 = 0x40; /*第三位符号【-】的显示 */
else
P0 = 0x00;
P2 = C[3];
Delay(1);
P0 = Code[min/10]; /*第四位的数字的显示【分】的【十】位 */
uchar month=7;
uchar month2;
uchar day=19;
uchar set1 = 1; /* set1=1 是调节 时分秒 set1=2时时调节 年月日 set=3时事调节闹钟 */

AT89C52单片机的数字时钟

AT89C52单片机的数字时钟

摘要20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。

数字钟是采用数字电路实现对“时”、“分”、“秒”数字显示的计时装置。

数字钟的精度、稳定度远远超过老式机械钟。

在这次设计中,我们采用LED数码管显示时、分、秒,以24小时计时方式,根据数码管动态显示原理来进行显示,用12MHz的晶振产生振荡脉冲,定时器计数。

在此次设计中,电路具有显示时间的其本功能,还可以实现对时间的调整、整点报时。

关键字:数字钟、时间。

AbstractAt the end of the 20th century, electronic technology has experienced rapid growth, the modern electronic products, almost permeated the various sectors of society, and promoted the development of social productive forces and the social informatization level, but also improve the modern electronic products to further improve the performance, product update rhythm also more and more quickly.A digital clock is used in digital circuit ", "" points" and "second" digital display timer. A digital clock accuracy and stability than old mechanical clock. In this design, we adopt LED digital display tube, minutes and seconds, when in 24 hours time, according to the principle of dynamic display of digital tube to show, with the crystals 12MHz produce oscillation pulses, timer count. In this design, the circuit has its time, still can realize the function of the time.Key words: electric clock、time.目录第一章绪论 (4)1.1数字电子钟的背景 (4)1.2数字电子钟的意义 (4)1.3数字电子钟的应用 (4)第二章整体设计方案 (5)2.1单片机的基本结构 (5)第三章数字钟的硬件设计 (9)3.1最小系统设计 (9)3.2LED显示电路 (11)3.3键盘控制电路 (13)3.4数字钟的硬件图 (14)第四章数字钟的软件设计 (15)4.1系统软件设计流程图 (15)第五章系统仿真 (18)5.1PROTUES软件介绍 (18)5.2电子钟系统PROTUES仿真 (18)第六章调试与功能说明 (19)6.1系统性能测试与功能说明 (19)6.2系统时钟误差分析 (19)6.3软件调试问题及解决 (19)结束语 (20)参考文献(REFERENCES): (21)附录一 (22)源程序清单 (22)第一章绪论1.1数字电子钟的背景20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。

数字时钟代码

数字时钟代码

数字时钟代码1. 介绍数字时钟是一种常见的显示时间的装置,它通过数字显示屏显示当前的小时和分钟。

本文档将介绍如何编写一个简单的数字时钟代码。

2. 代码实现以下是一个基本的数字时钟代码实现示例:import timewhile True:current_time = time.localtime()hour = str(current_time.tm_hour).zfill(2)minute = str(current_time.tm_min).zfill(2)second = str(current_time.tm_sec).zfill(2)clock_display = f"{hour}:{minute}:{second}"print(clock_display, end="\r")time.sleep(1)代码说明:- `time.localtime()` 函数返回当前时间的结构化对象,包括小时、分钟和秒等信息。

- `str(current_time.tm_hour).zfill(2)` 将小时转换为字符串,并使用 `zfill()` 方法填充到两位数。

- `str(current_time.tm_min).zfill(2)` 和`str(current_time.tm_sec).zfill(2)` 同理处理分钟和秒。

- 使用 f-string 格式化字符串 `clock_display`,将小时、分钟和秒显示为 `` 的形式。

- `print(clock_display, end="\r")` 使用 `\r` 实现覆盖打印,使得时钟在同一行连续显示。

- `time.sleep(1)` 让程序每隔一秒更新一次时间。

请注意,上述代码需要在支持 Python 的环境中运行。

3. 结束语通过以上的代码实现,我们可以编写一个简单的数字时钟。

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 位可编程定时计数器,两个全双向串行通信口,一个模拟比较放大器。

8位锁存器的工作原理

8位锁存器的工作原理

8位锁存器的工作原理8位锁存器是一种常用的数字电路元件,用于存储和传输8位二进制数据。

它是由8个D触发器组成的,每个D触发器都可以存储一个二进制位。

在工作过程中,8位锁存器根据控制信号的输入和时钟信号的变化来实现数据的存储和传输。

我们来看看8位锁存器的内部结构。

它由8个D触发器组成,每个D触发器有一个数据输入端(D)、时钟输入端(CLK)、复位输入端(RST)和输出端(Q)。

D触发器的输出端连接到相邻一个D触发器的数据输入端,形成一个级联的结构。

这样,当时钟信号发生变化时,数据就会从第一个D触发器传递到第二个D触发器,依次类推,最终传递到第八个D触发器。

在工作过程中,8位锁存器需要根据控制信号来决定是存储数据还是传输数据。

当控制信号为存储(Load)时,数据将会被写入到锁存器中。

具体操作是将要存储的数据输入到每个D触发器的数据输入端,并将控制信号输入到每个D触发器的复位输入端。

当时钟信号发生变化时,控制信号会使得每个D触发器的复位输入端被激活,将数据存储到锁存器中。

当控制信号为传输(Transfer)时,数据将会被传输到下一个级联的锁存器中。

具体操作是将时钟信号输入到每个D触发器的时钟输入端,使得数据从一个D触发器传递到下一个D触发器。

这样,当时钟信号发生变化时,数据就会从第一个D触发器传递到第二个D触发器,依次类推,最终传递到第八个D触发器。

需要注意的是,在传输过程中,控制信号需要保持为传输(Transfer)状态,否则数据将不会被传输到下一个级联的锁存器中。

此外,当控制信号为传输(Transfer)状态时,输入的数据将会被传输到输出端,从而可以被其他电路元件读取和使用。

通过控制信号的切换,8位锁存器可以实现数据的存储和传输,从而在数字电路中起到重要的作用。

它可以用于存储和传输各种类型的数据,例如数字信号、图像数据、音频数据等。

在计算机系统中,8位锁存器常常被用于存储和传输字节数据,从而实现数据的存储和传输。

基于Proteus的单片机控制电子时钟电路设计与仿真

基于Proteus的单片机控制电子时钟电路设计与仿真
方案二:AT89S52是一个低消耗,高性能CMOS8为单片机,片内含4kBytes ISP的可反复撰写1000次的Flash只读程序存储器。主要性能有:与MCS—51单片机产品兼容、全静态操作:0Hz~33Hz、三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器、八个中断源、全双工UART串行通道、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符、易编程.
Philips公司以其在嵌入式应用方面的巨大优势,将MCS—51从单片机微型计算机发展到微控制器。因此,当我们回顾嵌入式系统发展道路时,不要忘记Intel和Philips的历史功绩.
嵌入式系统
单片机是嵌入式系统的独立发展之路,向MCU阶段发展的重要因素,就是寻求应用系统在芯片上的最大化解决;因此,专用单片机的发展自然形成了SoC化趋势。随着微电子技术、IC设计、EDA工具的发展,基于SoC的单片机应用系统设计会有较大的发展.因此,对单片机的理解可以从单片机微型计算机、单片微控制器延伸到单片机应用系统。
第二章
2.1
单片机是指一个集成在一块芯片上的完整计算机系统。尽管它的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存。同时集成诸如通讯接口、定时器、实时时钟等外围设备。而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入系统集成在一块芯片上。
从节省单片机芯片I/O口和降低能耗的角度出发,本数字电子钟数码管显示选择采用方案二.
3.3
1.电源电路
本数字电子钟设计所需电源电压为直流、电压值大小为5V的电压源。从硬件实物设计简易程度与经费方面考虑,用两节电压值为2.5V干电池与电路电压源引脚相连接即可达到硬件设计要求。即本数字电子钟设计用两节电压值大小2。55V干电池做硬件电路电压源。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
keybuff[3]=(keybuff[3]<<1)|KeyDecmin;
for(j=0;j<4;j++)
{
if((keybuff[j]&0x0F)==0x00)
{
KeySta[j]=0;
}
else if((keybuff[j]&0x0F)==0x0F)
{
KeySta[j]=1;
}
}
}
void InterruptTime() interrupt 1
LedBuff[5]=LedChar[sec%10];
LedBuff[6]=LedChar[10];
}
}
void ExchangeTime()
{
if(flag==1)
{
flag=0;
sec++;
if(sec>=60)
{
sec=0;
min++;
if(min>=60)
{
min=0;
hour++;
if(hour>=24)
}
}
}
void KeyAction()
{
if(k==0)
{
hour++;
if(hour>=24)
hour=0;
}
else if(k==1)
{
hour--;
if(hour==-1)
hour=23;
}
else if(k==2)
{
min++;
if(min>=60)
{min=0;
hour++;
if(hour>=24)
{
static unsigned int cnt=0;
TH0=0xFC;
TL0=0x67;
cnt++;
if(cnt>=1000)
{
cnt=0;
flag=1;
}
LedScan();
KeyScan();
}
void int0_inter() interrupt 0
{
keyflag=~keyflag;
}
case 5:P0=0x5F;P1=LedBuff[6];i++;break;
case 6:P0=0x3F;P1=LedBuff[4];i++;break;
case 7:P0=0x1F;P1=LedBuff[5];i=0;break;
}
}
void KeyScan()
{
unsigned char j;
void ExchangeTime();
void KeyDriver();
void KeyAction();
void main()
{
EA = 1;
IT0 = 1;
TMOD = 0x01;
TH0 = 0xFC;
=1;
TR0=1;
while(1)
{
if(keyflag)
case 1:P0=0xDF;P1=LedBuff[1];i++;break;
case 2:P0=0xBF;P1=LedBuff[6];i++;break;
case 3:P0=0x9F;P1=LedBuff[2];i++;break;
case 4:P0=0x7F;P1=LedBuff[3];i++;break;
unsigned char k=0;//用于KeyAction和KeyDriver
bit flag=0;
bit keyflag=1;
sbit KeyAddhour = P2^4;
sbit KeyDechour = P2^5;
sbit KeyAddmin = P2^6;
sbit KeyDecmin = P2^7;
hour=0;
}
}
else if(k==3)
{
min--;
if(min==-1)
{
min=59;
hour--;
if(hour==-1)
hour=23;
}
}
else {}
}
void LedScan()
{
static unsigned char i=0;
P1=0x00;
switch(i)
{
case 0:P0=0xFF;P1=LedBuff[0];i++;break;
{
ExchangeTime();
}
else
{
KeyDriver();
}
LedBuff[0]=LedChar[hour/10];
LedBuff[1]=LedChar[hour%10];
LedBuff[2]=LedChar[min/10];
LedBuff[3]=LedChar[min%10];
LedBuff[4]=LedChar[sec/10];
static unsigned char keybuff[4]={0xFF,0xFF,0xFF,0xFF};
keybuff[0]=(keybuff[0]<<1)|KeyAddhour;
keybuff[1]=(keybuff[1]<<1)|KeyDechour;
keybuff[2]=(keybuff[2]<<1)|KeyAddmin;
hour=0;
}
}
}
}
void KeyDriver()
{
static unsigned char backup[4]={1,1,1,1};
for(k=0;k<4;k++)
{
if(backup[k]!=KeySta[k])
{
if(backup[k]!=0)
{
KeyAction();
}
backup[k]=KeySta[k];
unsigned char LedBuff[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00};
unsigned char KeySta[]={0xFF,0xFF,0xFF,0xFF};
unsigned char hour=0;
unsigned char min=0;
unsigned char sec=0;
5
8位共阴数码管,外部中断进入调时模式,4个按键实现:时+;时-;分+;分-。分享给大家。
参考教材——《手把手教你学51单片机》C语言版
#include<reg51.h>
unsigned char code LedChar[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};//共阴
相关文档
最新文档