实训 可调电子钟1

合集下载

FPGA可调数字时钟实验报告

FPGA可调数字时钟实验报告

一、实验要求1、用vhdl编程,实现10进制计数器2、用vhdl编程,实现60进制计数器3、用vhdl编程,实现数字时钟,时、分、秒、毫秒分别显示在数码管上。

4、实现可调数字时钟的程序设计,用按键实现时、分、秒、毫秒的调整。

二、实验原理用VHDL,行为级描述语言实现实验要求。

思路如下:1、分频部分:由50MHZ分频实现1ms的技术,需要对50MHZ采取500000分频。

2、计数部分:采用低级影响高级的想法,类似进位加1的思路。

对8个寄存器进行计数,同步数码管输出。

3、数码管输出部分:用一个拨码开关控制显示,当sw0=0时,四位数码管显示秒、毫秒的计数。

当sw0=1时,四位数码管显示时、分得计数。

4、调整部分:分别用四个按键控制时、分、秒、毫秒的数值。

先由一个开关控制计数暂停,然后,当按键按下一次,对应的数码管相对之前的数值加1,,通过按键实现时间控制,最后开关控制恢复计数,完成时间调整。

5、整个实现过程由一个文件实现。

三、实验过程各个引脚说明:Clk:50MHZSW:数码管切换,SW=’0’时,数码管显示为秒,毫秒。

SW=’1’时,数码管显示为时,分。

SW1:暂停与启动。

SW1=’0’时,时钟启动,SW=’1’时,时钟暂停。

SW2:时钟调整接通按钮,当SW2=’0’时,不进行调整,当SW=’1’时,通过按键调整时间。

KEY0:毫秒调整,按一次实现+1功能KEY1:秒调整,按一次实现+1功能KEY2:分调整,按一次实现+1功能KEY3:时调整,按一次实现+1功能Q0;第一个数码管Q1; 第二个数码管Q2: 第三个数码管Q3: 第四个数码管1、源代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity paobiao isport(clk,sw,key0,key1,key2,key3,sw1,sw2:in std_logic;q0:out std_logic_vector(6 downto 0);q1:out std_logic_vector(6 downto 0);q2:out std_logic_vector(6 downto 0);q3:out std_logic_vector(6 downto 0));end paobiao;architecture behave of paobiao issignal cntt1 :integer range 0 to 10;signal cntt2 :integer range 0 to 10;signal cntt3 :integer range 0 to 10;signal cntt4 :integer range 0 to 6;signal cntt5 :integer range 0 to 10;signal cntt6 :integer range 0 to 10;signal cntt7 :integer range 0 to 10;signal cntt8 :integer range 0 to 6;signal cntttt1 :integer range 0 to 10;signal cntttt2 :integer range 0 to 10;signal cntttt3 :integer range 0 to 10;signal cntttt4 :integer range 0 to 6;signal cntttt5 :integer range 0 to 10;signal cntttt6 :integer range 0 to 10;signal cntttt7 :integer range 0 to 10;signal cntttt8 :integer range 0 to 6;beginprocess (clk)--,key0,key1,key2,key3)variable cnt :integer range 0 to 500000;--variable cnt9 :integer range 0 to 3000000000;variable cnt1 :integer range 0 to 10;variable cnt2 :integer range 0 to 10;variable cnt3 :integer range 0 to 10;variable cnt4 :integer range 0 to 6;variable cnt5 :integer range 0 to 10;variable cnt6 :integer range 0 to 10;variable cnt7 :integer range 0 to 10;variable cnt8:integer range 0 to 6;beginif(clk'event and clk='1') thenif(sw1='0') thenif(cnt>=2) thencnt:=0;cnt1:=cnt1+1;if (cnt1=10) thencnt1:=0;cnt2:=cnt2+1;if(cnt2=10) thencnt1:=0;cnt2:=0;cnt3:=cnt3+1;if(cnt3=10) thencnt1:=0;cnt2:=0;cnt3:=0;cnt4:=cnt4+1;if(cnt4=6) thencnt1:=0;cnt2:=0;cnt3:=0;cnt4:=0;cnt5:=cnt5+1; if (cnt5=10) thencnt5:=0;cnt6:=cnt6+1;if(cnt6=6) thencnt5:=0;cnt6:=0;cnt7:=cnt7+1;if(cnt7=4) thencnt5:=0;cnt6:=0;cnt7:=0;cnt8:=cnt8+1;if(cnt8=3) thencnt5:=0;cnt6:=0;cnt7:=0;cnt8:=0;end if;end if;end if;end if;end if;end if;end if;end if;else cnt:=cnt+1;end if;if(sw2='0') thencntt1<=cnt1;cntt2<=cnt2;cntt3<=cnt3;cntt4<=cnt4;cntt5<=cnt5;cntt6<=cnt6;cntt7<=cnt7;cntt8<=cnt8;elsecnt1:=cntttt1;cnt2:=cntttt2;cnt3:=cntttt3;cnt4:=cntttt4;cnt5:=cntttt5;cnt6:=cntttt6;cnt7:=cntttt7;cnt8:=cntttt8;cntt1<=cnt1;cntt2<=cnt2;cntt3<=cnt3;cntt4<=cnt4;cntt5<=cnt5;cntt6<=cnt6;cntt7<=cnt7;cntt8<=cnt8;end if;end if;end if;end process;process (key0)variable cnttt1 :integer range 0 to 10; variable cnttt2 :integer range 0 to 10; beginif(key0'event and key0='0') thencnttt1:=cnttt1+1;if(cnttt1=10) thencnttt1:=0;cnttt2:=cnttt2+1;if(cnttt2=10) thencnttt2:=0;end if;end if;cntttt1<=cnttt1;cntttt2<=cnttt2;end if;end process;process (key1)variable cnttt3 :integer range 0 to 10; variable cnttt4 :integer range 0 to 10; beginif(key1'event and key1='0') thencnttt3:=cnttt3+1;if(cnttt3=10) thencnttt3:=0;cnttt4:=cnttt4+1;if(cnttt4=6) thencnttt4:=0;end if;end if;cntttt3<=cnttt3;cntttt4<=cnttt4;end if;end process;process(key2)variable cnttt5 :integer range 0 to 10; variable cnttt6 :integer range 0 to 10; beginif(key2'event and key2='0') thencnttt5:=cnttt5+1;if(cnttt5=10) thencnttt5:=0;cnttt6:=cnttt6+1;if(cnttt6=6) thencnttt6:=0;end if;end if;cntttt5<=cnttt5;cntttt6<=cnttt6;end if;end process;process(key3)variable cnttt7 :integer range 0 to 10; variable cnttt8 :integer range 0 to 10; beginif (key3'event and key3='0') thencnttt7:=cnttt7+1;if(cnttt7=4) thencnttt7:=0;cnttt8:=cnttt8+1;if(cnttt8=3) thencnttt8:=0;end if;end if;cntttt7<=cnttt7;cntttt8<=cnttt8;end if;end process;--end if;--end process;process(cntt1,cntt5)beginif(sw='0') thencase cntt1 iswhen 0=>q0<="1000000";when 1=>q0<="1111001";when 2=>q0<="0100100";when 3=>q0<="0110000";when 4=>q0<="0011001";when 5=>q0<="0010010";when 6=>q0<="0000010";when 7=>q0<="1011000";when 8=>q0<="0000000";when 9=>q0<="0010000";when others=>q0<=NULL;end case;elsecase cntt5 iswhen 0=>q0<="1000000";when 1=>q0<="1111001";when 2=>q0<="0100100";when 3=>q0<="0110000";when 4=>q0<="0011001";when 5=>q0<="0010010";when 6=>q0<="0000010";when 7=>q0<="1011000";when 8=>q0<="0000000";when 9=>q0<="0010000";when others=>q0<=NULL;end case;end if;end process;process(cntt2,cntt6)beginif(sw='0') thencase cntt2 iswhen 0=>q1<="1000000";when 1=>q1<="1111001";when 2=>q1<="0100100";when 3=>q1<="0110000";when 4=>q1<="0011001";when 5=>q1<="0010010";when 6=>q1<="0000010";when 7=>q1<="1011000";when 8=>q1<="0000000";when 9=>q1<="0010000";when others=>q1<=NULL;end case;elsecase cntt6 iswhen 0=>q1<="1000000";when 1=>q1<="1111001";when 2=>q1<="0100100";when 3=>q1<="0110000";when 4=>q1<="0011001";when 5=>q1<="0010010";when 6=>q1<="0000010";when 7=>q1<="1011000";when 8=>q1<="0000000";when 9=>q1<="0010000";when others=>q1<=NULL;end case;end if;end process;process(cntt3,cntt7)beginif(sw='0') thencase cntt3 iswhen 0=>q2<="1000000";when 1=>q2<="1111001";when 2=>q2<="0100100";when 3=>q2<="0110000";when 4=>q2<="0011001";when 5=>q2<="0010010";when 6=>q2<="0000010";when 7=>q2<="1011000";when 8=>q2<="0000000";when 9=>q2<="0010000";when others=>q2<=NULL;end case;elsecase cntt7 iswhen 0=>q2<="1000000";when 1=>q2<="1111001";when 2=>q2<="0100100";when 3=>q2<="0110000";when 4=>q2<="0011001";when 5=>q2<="0010010";when 6=>q2<="0000010";when 7=>q2<="1011000";when 8=>q2<="0000000";when 9=>q2<="0010000";when others=>q2<=NULL;end case;end if;end process;process(cntt4,cntt8)beginif(sw='0') thencase cntt4 iswhen 0=>q3<="1000000";when 1=>q3<="1111001";when 2=>q3<="0100100";when 3=>q3<="0110000";when 4=>q3<="0011001";when 5=>q3<="0010010";when others=>q3<=NULL;end case;elsecase cntt8 iswhen 0=>q3<="1000000";when 1=>q3<="1111001";when 2=>q3<="0100100";when 3=>q3<="0110000";when 4=>q3<="0011001";when 5=>q3<="0010010";when 6=>q3<="0000010";-- when 7=>q3<="1011000";-- when 8=>q3<="0000000";--when 9=>q3<="0010000";when others=>q3<=NULL;end case;end if;end process;end behave;2、原理图如下:3、功能仿真如下1、秒、毫秒计数仿真2、分、时计数仿真注释:由于仿真时间限制,小时不能显示。

多功能电子时钟实训报告

多功能电子时钟实训报告

一、实训目的本次实训旨在通过学习单片机技术,设计并实现一个基于单片机的多功能电子时钟系统。

通过实训,使学生掌握以下知识和技能:1. 熟悉单片机的基本原理和编程方法;2. 掌握电子时钟系统的硬件设计、软件编程和调试方法;3. 提高动手能力和实际应用能力。

二、实训内容1. 系统硬件设计(1)核心控制器:选用AT89C51单片机作为系统的核心控制器。

(2)时钟芯片:使用DS1302实时时钟芯片,提供精确的时间信号。

(3)液晶显示屏:选用1602液晶显示屏,用于显示时间、日期、温度等信息。

(4)按键模块:设计包含时间设置键、日期设置键、闹钟设置键等的按键模块。

(5)温度传感器:使用DS18B20温度传感器,用于检测环境温度。

(6)电源模块:为整个系统提供稳定的工作电压。

2. 系统软件设计(1)主程序:负责系统初始化、时钟显示、闹钟提醒、温度检测等功能。

(2)中断程序:负责时钟中断、闹钟中断、温度中断等。

(3)显示程序:负责液晶显示屏的显示内容更新。

(4)按键处理程序:负责按键扫描、按键消抖、按键功能处理等。

三、实训过程1. 硬件搭建(1)根据设计图纸,焊接电路板。

(2)连接单片机、时钟芯片、液晶显示屏、按键模块、温度传感器和电源模块。

(3)检查电路连接是否正确,确保系统硬件正常工作。

2. 软件编程(1)编写主程序、中断程序、显示程序和按键处理程序。

(2)使用C语言进行编程,并利用Keil软件进行编译。

(3)将编译好的程序烧录到单片机中。

3. 调试与优化(1)在Proteus仿真软件中,对系统进行仿真调试。

(2)检查程序运行是否正常,优化程序代码。

(3)对硬件电路进行调整,确保系统稳定运行。

四、实训结果1. 系统功能实现(1)显示当前时间、日期和温度。

(2)设置闹钟时间,并在设定时间响起。

(3)计时器功能,可以记录时间。

(4)温度检测功能,实时显示环境温度。

2. 系统稳定性通过仿真和实际测试,系统稳定运行,满足设计要求。

自制可调式数字时钟完整版

自制可调式数字时钟完整版

《综合设计实训I》可调式数字时钟姓名:学号:班级:实训地点:指导教师:通信与电子学院编制年月日一、设计要求数字时钟是采用数字电路实现对年,月,日,时,分,秒数字显示的计时装置,广泛用于个人,家庭,车站,码头,办公室等公共场所,成为人们日常生活中的必需品。

1,、设计时可以利用单片机内部定时器,也可以利用外部实时时钟芯片。

(I/O,I2C总线)2、有年,月,日,时,分,秒功能,而且要能够校正前面五项。

3、显示时可以用8位数码管,也可以用LCD液晶屏。

(年只需显示后2位)4、可选功能:闹钟功能。

二、设计方案1、芯片分析AT89C51引脚图管脚说明:VCC:供电电压。

GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P0口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

可调电子时钟设计

可调电子时钟设计

单片机综合实验课程报告题目可调电子时钟设计学生姓名学号院系专业指导教师二O一二年五月十五日目录摘要 (1)关键字 (1)一、可调电子时钟预期功能 (3)二、设计方案 (3)2.1 单片机最小系统 (3)2.2 LCD1602 (3)2.3 DS1302 (4)三、硬件电路设计 (4)四、软件设计 (5)五、仿真结果 (7)六、小结 (8)参考文献 (8)附录 (10)可调电子时钟设计南京信息工程大学信息与控制学院,江苏南京 210044摘要:用AT89C51作为最小系统设计可调电子时钟,用液晶显示屏LCD102输出显示,用时钟芯片DS1302管理时间。

可以显示年、月、日、星期、时、分、秒,并且均可通过按键调整。

当按第一个键时开始调整时间,第二个键是加键,第三个键是减键。

单片机具有集成度高、功能强、通用好、特别是它能耗低、价格便宜、可靠性高、抗干扰能力强和使用方便等独特的优点,所以单片机现在广泛的应用到家用电器、机电产品、儿童玩具、机器人、办公自动化产品等领域。

数字电子时钟电路设计系统,以AT89C51单片机为控制核心,由按键、液晶显示屏和LED灯显示等功能模块组成。

基于题目基本要求,本系统对时间显示和定时报警进行了重点设计。

本系统大部分功能由软件来实现,吸收了硬件软件化的思想,大部分功能通过软件来实现,使电路简单明了,系统稳定性大大提高本系统成功的实现了要求的基本功能。

关键词:AT89C51;LCD1602;DS1302Design of Adjustable Electronic ClockNUIST,Nanjing 210044,ChinaAbstract:This paper introduced the design of the adjustable digital clock based on A T89C51, the specific process of how the system hardware and software achieved were detailed descrip tion through the design of adjustable digital clock. The modular design and production, whic h consisted of MCU module, clock module and the associated control module, were mainly recounted.As well as hardware design and software design use the same method,consists suspension module,time adjustable module,and that use the C language to achieve because of its sample and strong negotiability.In this design,the functions of time run and change,functions of the year,month and day display have been achieved.Key words:AT89C51;LCD1602;DS1302一、数码管显示预期功能1、以格式“小时-分钟-秒”显示时间。

可调节的数字时钟

可调节的数字时钟

微机原理实验报告实验名称:可调节的数字时钟院系:物理与机电工程学院专业班级:学号:学生姓名:指导教师:完成时间:报告成绩:可调实时时钟一、实验目的1 进一步熟悉EasyARM2131开发板硬件结构。

2 熟悉ADS1.2集成开发环境。

3 熟练掌握RTC的寄存器的操作及其使用。

4 掌握如何用按键进行时钟调节。

二、实验原理特性RTC功能结构如下图所示三、实验设备1 计算机2 EasyARM2131开发板四、实验流程图实验流程图如图所示五、实验程序代码本次实验通过调节KEY1 KEY2 KEY3来调节时钟,其中KEY1用来选择要调节的位置,KEY2用来加一,KEY2用来减一,每次按键蜂鸣器都会蜂鸣一声,对应的LED灯会闪一下提醒按键有效。

调时间时RTC会停走。

RTC内容是通过串口发送到上位机软件上显示。

/*RTC万年历实验** 功能:运行RTC进行计时,将时间值通过串口向上位机发送。

** 上位机使用EasyARM软件,在仿真的万年历显示器显示结果。

可通过按键调整时钟** 说明:通讯波特率115200,8位数据位,1位停止位,无校验。

*/#include "config.h"const uint32 key1=1<<16;const uint32 key2=1<<17;const uint32 key3=1<<18;const uint32 beep=1<<7;const uint32 LEDS8 = (0xFF << 18);const uint32 LED1 = (1 << 18);const uint32 LED2 = (1 << 19);const uint32 LED3 = (1 << 20);uint8 moshi;typedef struct UartMode // 定义串口模式设置的数据结构{uint8 datab; // 字长度 5/6/7/8uint8 stopb; // 停止位 1/2uint8 parity; // 奇偶校验 0-无校验, 1-奇校验, 2-偶校验}UARTMODE;/* 函数名称:DelayNS()** 函数功能:长软件延时** 入口参数:dly 延时参数,值越大,延时越久** 出口参数:无*/void DelayNS (uint32 dly){uint32 i;for ( ; dly>0; dly--)for (i=0; i<4200; i++);}/* 函数名称:UART0_Init()** 函数功能:初始化串口:设置工作模式和波特率。

单片机电子钟实训报告

单片机电子钟实训报告

一、引言随着电子技术的不断发展,单片机在各个领域得到了广泛的应用。

电子钟作为单片机应用的一个重要实例,具有很高的实用价值。

本实训报告主要介绍了单片机电子钟的设计与实现过程,包括硬件电路设计、软件编程以及调试过程。

二、硬件电路设计1. 单片机选择本实训选用AT89C51单片机作为核心控制器,该单片机具有丰富的I/O端口、较强的计算能力和较大的存储空间,能够满足电子钟的设计需求。

2. 时钟芯片本实训采用DS1302时钟芯片作为时间源,该芯片具有年、月、日、周、时、分、秒的精确计时功能,并具备闰年补偿等功能。

3. 液晶显示屏本实训选用1602液晶显示屏用于显示时间、日期等信息。

1602液晶显示屏具有清晰显示多个字符和符号的特点,方便用户查看时间和其他信息。

4. 按键模块本实训设计按键模块用于用户输入和设置。

按键包括时间设置键、日期设置键、闹钟设置键等,方便用户进行各项操作。

5. 电源模块本实训采用DC5V电源模块,为整个电子钟提供稳定的电源供应。

三、软件编程1. 主程序主程序负责初始化单片机、时钟芯片、液晶显示屏等硬件设备,并进入主循环。

主循环中,程序会不断检测按键状态,根据按键输入调整时间、日期和闹钟设置。

2. 时钟控制程序时钟控制程序负责实现时钟的基本功能,包括计时、闰年补偿等。

程序通过定时器中断,每秒更新一次时间。

3. 显示程序显示程序负责将时间、日期等信息显示在液晶显示屏上。

程序使用1602液晶显示屏的指令集,动态显示时、分、秒和日期。

4. 按键扫描程序按键扫描程序负责检测按键状态,并根据按键输入调整时间、日期和闹钟设置。

程序采用轮询方式检测按键状态,以提高按键响应速度。

5. 闹钟程序闹钟程序负责实现闹钟功能,当时间达到设定的闹钟时间时,电子钟会发出蜂鸣声提示用户。

四、调试过程1. 硬件调试首先,对硬件电路进行调试,检查各元器件是否安装正确,连接是否牢固。

然后,使用万用表检测电源电压、单片机各引脚电压是否正常。

电子钟实验报告

电子钟实验报告电子钟实验报告引言:电子钟是一种利用电子技术来实现时间显示的装置,它不仅能够准确地显示时间,还具备了一些其他功能,如闹钟、温度显示等。

在本次实验中,我们将通过搭建一个简单的电子钟来了解其基本原理和工作方式。

一、材料与方法本次实验所需材料包括:Arduino开发板、LCD液晶显示屏、实时时钟模块、电阻、电容等。

我们首先将这些材料按照电路图连接起来,然后通过编写Arduino代码来实现时间的显示和功能的控制。

二、电子钟的原理电子钟的核心部分是实时时钟模块,它通过与Arduino开发板的连接,提供准确的时间信号。

实时时钟模块内部有一个独立的时钟电路,可以独立运行,并通过I2C总线与Arduino进行通信。

当我们将时间信息发送给实时时钟模块后,它会自动更新时间,并通过Arduino控制LCD显示屏来显示时间。

三、电路连接与编程我们首先将Arduino开发板与实时时钟模块通过I2C总线连接,然后将LCD显示屏与Arduino开发板连接。

接下来,我们需要编写Arduino代码来实现时间的显示和功能的控制。

在代码中,我们需要使用实时时钟模块的库函数来获取当前时间,并将其发送给LCD显示屏进行显示。

同时,我们还可以通过编写代码来实现一些其他功能,如闹钟、温度显示等。

四、实验结果与分析经过搭建电路和编写代码后,我们成功地实现了一个简单的电子钟。

通过观察LCD显示屏,我们可以清晰地看到当前的时间,并且可以通过按键来控制闹钟的开关和设置温度显示。

这个电子钟不仅具备了时间显示的功能,还具备了一些其他实用的功能,为我们的生活带来了便利。

五、实验总结通过本次实验,我们深入了解了电子钟的原理和工作方式,并通过实际操作来搭建了一个简单的电子钟。

在实验过程中,我们不仅学会了如何连接电路和编写代码,还锻炼了自己的动手能力和解决问题的能力。

电子钟作为一种常见的电子设备,广泛应用于我们的日常生活中,通过本次实验,我们对其有了更深入的了解。

电子钟套件装配实训报告

一、实训目的通过本次电子钟套件装配实训,掌握电子钟的基本工作原理,了解电子钟各部件的结构与功能,提高动手实践能力和电子技能。

二、实训时间2021年10月25日三、实训地点电子技术实验室四、实训指导教师张老师五、实训内容1. 电子钟套件的认识2. 电子钟电路图分析3. 电子钟套件装配4. 电子钟调试与测试六、实训过程1. 电子钟套件的认识在实训开始前,首先对电子钟套件进行了仔细观察,了解了套件中各部件的名称、规格和功能。

套件主要包括以下部件:(1)集成电路(IC):如555定时器、译码器、驱动器等。

(2)晶体振荡器:提供电子钟的基准频率。

(3)电容、电阻、二极管等元器件:用于电路的稳定、放大、整流等功能。

(4)数码管:显示电子钟的时间。

(5)电源:为电子钟提供工作电压。

2. 电子钟电路图分析在了解电子钟套件各部件的基础上,对电子钟电路图进行了分析。

电路图主要由以下部分组成:(1)多谐振荡器:由555定时器构成,产生1kHz的矩形波脉冲信号。

(2)分频电路:将1kHz的脉冲信号分频,得到1Hz的脉冲信号,用于秒计时。

(3)计数器:由集成电路组成,用于计数秒、分、时。

(4)译码器:将计数器的输出信号转换为数码管所需的编码信号。

(5)显示器:数码管,显示电子钟的时间。

3. 电子钟套件装配根据电路图,将各部件按照电路连接顺序进行装配。

具体步骤如下:(1)将555定时器、晶体振荡器、电容、电阻等元器件按照电路图要求焊接在印制电路板上。

(2)将译码器、驱动器等集成电路焊接在印制电路板上。

(3)将数码管焊接在印制电路板上,并连接好引脚。

(4)将电源焊接在印制电路板上,并连接好引脚。

4. 电子钟调试与测试完成装配后,对电子钟进行调试与测试。

具体步骤如下:(1)检查电路连接是否正确,确保各元器件焊接牢固。

(2)接通电源,观察数码管是否显示正常,若显示异常,检查电路连接。

(3)调整晶振频率,使电子钟计时准确。

(4)测试电子钟的计时功能、闹钟功能等。

数字电子钟设计实训报告

数字电子钟的设计【摘要】本系统由晶体振荡器、分频器、计数器、译码器、七段译码显示器和校准、报时电路组成,采用了CMOS或TTL系列(双列直插式)中小规模集成芯片。

总体方案设计由主体电路和扩展电路两大部分组成。

其中主体电路完成数字钟的基本功能,扩展电路完成数字钟的扩展功能,进行了各单元电路设计,总体安装、制作及调试。

数字钟是一种计时装置,不仅能替代指针式钟表,还可以运用到定时控制、自动计时及时间程序控制等方面,应用广泛。

【关键词】石英晶振、分频器、计数器、译码器、七段译码显示器、校准、整点报时。

第一章数字电子钟总体方案1.1数字电子钟总体方案的确定数字电子钟组成一般由振荡器、分频器、计数器、译码器及显示器等几部分组成。

石英振荡器产生的时标信号送到分频器,分频电路将时标信号分成秒脉冲,秒脉冲送入计数器进行计数,并把累计结果以“时”、“分”、“秒”的数字显示出来。

“秒”的显示由两级计数器和译码器组成的六十进制计数器电路实现,“分“的显示电路与“秒”相同。

“时”的显示由两极计数器和译码器组成的二十四进制计数器电路实现。

秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器加分频器来实现。

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

“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。

“时计数器”采用24进制计时器,可实现对一天24小时的累计。

译码显示电路将“时”、“分”、“秒”计数器的输出状态0进行七段显示译码器译码,通过六位七段译码显示器显示出来。

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

校时电路时用来对“时”、“分”显示数字进行校对调整的。

数字电子钟总体方案框图图1.1.1 数字电子钟组成框图1.2数字电子钟电路组成数字电子钟组成一般由振荡器、分频器、计数器、译码器及七段译码显示器等几部分组成(如图1.2.1所示)。

电子时钟实验报告

电子时钟实验报告电子时钟实验报告引言:电子时钟是一种使用数字显示时间的现代化设备,它在我们的日常生活中起着重要的作用。

本次实验旨在通过制作一个简单的电子时钟,了解其工作原理和基本构造,并对其进行测试和改进。

一、实验材料和设备本次实验所需材料和设备包括:电子元件(电阻、电容、二极管等)、集成电路、面包板、电源、示波器、万用表等。

二、实验步骤1. 准备工作首先,我们需要准备好所需的电子元件和设备,并将它们连接在面包板上。

确保连接正确无误后,将面包板连接到电源上。

2. 时钟电路设计我们设计的电子时钟采用了数字时分秒的显示方式。

为了实现这一功能,我们使用了一个集成电路来控制时钟的计时和显示功能。

通过连接电阻和电容,我们可以调整时钟的频率和精度。

3. 时钟电路测试在完成时钟电路的设计后,我们需要进行测试以确保其正常工作。

首先,我们使用示波器来观察时钟信号的波形,并检查其频率和稳定性。

然后,我们使用万用表来测量电压和电流,确保电路中没有异常。

4. 时钟显示改进为了提高时钟的显示效果,我们可以对电子时钟进行改进。

例如,我们可以增加背光功能,使时钟在光线较暗的环境下也能清晰可见。

此外,我们还可以增加闹钟功能,使时钟能够发出声音提醒我们。

5. 结果分析通过实验,我们成功制作了一个简单的电子时钟,并对其进行了测试和改进。

我们发现,该时钟具有较高的准确性和稳定性,能够准确显示时间。

同时,通过添加背光和闹钟功能,我们提高了时钟的实用性和便利性。

6. 实验总结本次实验使我们更加深入地了解了电子时钟的工作原理和构造。

通过实践,我们不仅学会了如何制作一个简单的电子时钟,还了解了如何测试和改进它。

这对我们理解电子时钟的应用和发展具有重要意义。

结论:通过本次实验,我们成功制作了一个简单的电子时钟,并对其进行了测试和改进。

我们深入了解了电子时钟的工作原理和构造,并发现其具有较高的准确性和稳定性。

通过实践,我们不仅学会了如何制作一个电子时钟,还了解了如何测试和改进它。

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

实训 可调电子钟/温度显示系统
一、系统原理图

P00
P01
P02
P03
P04

P05
P06
P07

P00
P01
P02
P03
P04
P05
P06
P07

XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD3
36
P0.4/AD4
35

P0.5/AD5
34P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51X1C130pFC230pF
C3

10uF
R1

100
R2

1k

K1

K2
K3

R31kR41kR51kR61kR71kR81kR91kR101kR11
100

R12
100

R13
100

R14
100

R15
100

R16
100

R17
100

R18
100

A
B
C
D
E

F
G
Dp

ABCDE
F
G

D
p

R23
4.7k

LS1
SOUNDER
R24

100

-44.0
DQ
2

VCC
3

GND
1

U2

DS18B20

仿真原理图所需器件:
7SEG-MPX4-CA-BLUE:四位共阳极LED数码管 AT89C51:单片机 BUTTON:按键
CAP:瓷片电容 CAP-ELEC:电解电容 CRYSTAL:晶体振荡器 DS18B20:温度传感器
PNP:PNP型三极管 RES:电阻 SOUNDER:蜂鸣器
二、实训任务
1.在Proteus环境下建立原理图。
2.在Keil环境下编写程序实现电子钟和温度显示。
3.系统功能要求:(1)使用四位LED数码管显示器实现小时、分钟显示,小时和分钟之
间用小数点隔开,秒的显示利用最后一位数字的小数点代表秒。小时调整使用按键K1实现,
分钟调整使用按键K2实现。当K3按下时显示DS18B20所测温度。其他附加功能不限。
(2)扩展功能:在完成功能(1)的基础上可利用蜂鸣器实现整点报时,超温报警等功
能。
4.焊接电路板,完成硬件电路的焊接烧写程序,完成系统功能要求。
硬件元件清单:
名称 引脚 数量 名称 引脚 数量
瓷片电容 2 2 蜂鸣器 2
1
电解电容 2 1 电阻 2
25
4位共阳LED数码管 12 1 温度传感器 3
1
按键 4 4 AT89C51 40
1
晶体振荡器 2 1 松香 1盒
导线 1段 40针管座
2
焊锡 1段
主要 元器件引脚图:
SM410564(4位共阳LED数码管):

AT89C51:
电子时钟:利用定时器T0实现1s定时,T0设置为方式1,时间50ms,利用软件计数
20次,实现1s定时。中断服务子程序流程图:

开始

重装初值,
计数器加1,

是否半秒?
秒显示标志位反转
是否1秒?
软件计数器清0,秒加1
是否60秒?
秒清0,分钟加1
是否60分?
分清0,小时加1
是否24小时?
小时清0
返回

Y
Y
Y
Y
Y

N
N
N
N
N
参考以上流程图编写程序。使用Proteus和Keil仿真。使用定时器中断T0实现。
显示子程序流程图:
开始

取小时十位显
示代码送P0

位选显示器“1”位

返回
延时
取小时个位显示代
码,添加小数点送P0

延时
取分钟十位显
示代码送P0

延时
取分钟个位显
示代码

延时

位选显示器“2”位
位选显示器“3”位

位选显示器“4”位
半秒标志位是否为1?
N
Y
添加分钟个位显示
代码小数点

显示代码送P0

参考以上流程图,编写显示时间的子程序或函数。小时和分钟之间利用显示器的小数点
隔开,秒的显示用显示器最后一位的小数点来表示,1秒闪一次。使用Proteus和Keil仿真
调试。

相关文档
最新文档