电子时钟设计完美实现最终版要点

合集下载

电子行业智能电子钟设计与制作

电子行业智能电子钟设计与制作

电子行业智能电子钟设计与制作1. 引言随着科技的不断进步,电子行业在我们日常生活中扮演着越来越重要的角色。

智能电子钟作为电子行业中的一种常见应用,不仅能够准确地显示时间,还具备多种功能,如温度显示、闹钟功能、语音播报等。

本文将介绍电子行业智能电子钟的设计与制作过程。

2. 设计需求在设计智能电子钟之前,我们首先需要明确设计需求。

根据市场调研和用户需求分析,我们确定以下设计需求:•显示时间:智能电子钟需要能够准确地显示当前的时间,包括小时、分钟和秒。

•温度显示:智能电子钟需要具备温度传感器,能够实时监测环境温度,并将温度显示在屏幕上。

•闹钟功能:智能电子钟需要具备闹钟功能,用户可以设置闹钟时间,到达指定时间后,智能电子钟会发出响铃提醒。

•语音播报:智能电子钟需要能够通过扬声器进行语音播报,包括时间、温度和闹钟提醒等。

3. 系统设计基于设计需求,我们将进行系统设计,包括硬件设计和软件设计两个方面。

3.1 硬件设计硬件设计是智能电子钟实现功能的基础。

以下是硬件设计的要点:•处理器:选择一款高性能的微控制器作为处理器,具备足够的计算和控制能力。

•显示屏:选择一块合适的液晶显示屏,能够清晰地显示时间和温度。

•温度传感器:选择一款高精度的温度传感器,能够准确地测量环境温度。

•扬声器:选择一款高音质的扬声器,能够清晰地播放语音。

3.2 软件设计软件设计是智能电子钟实现各项功能的关键。

以下是软件设计的要点:•时间显示:编写程序,获取当前时间,并将时间显示在液晶屏上。

•温度显示:编写程序,读取温度传感器的数据,并将温度显示在液晶屏上。

•闹钟功能:编写程序,实现闹钟功能,包括设置闹钟时间、闹钟提醒等。

•语音播报:编写程序,通过扬声器进行语音播报,包括时间、温度和闹钟提醒等。

4. 制作过程4.1 硬件制作根据硬件设计的要点,进行硬件制作的具体步骤如下:1.按照电路图连接微控制器、液晶显示屏、温度传感器和扬声器等模块。

2.确保电路连接正确,检查是否有短路或接触不良的问题。

简易电子钟的设计与实现

简易电子钟的设计与实现

简易电子钟的设计与实现电子钟是一种普遍使用的计时设备,它便利性与实用性使其成为家庭、学校、办公室等各个场所的重要组成部分。

本文将介绍一种简易电子钟的设计和实现,希望读者在本文的指导下,能够自己动手制作一款属于自己的电子钟。

1. 硬件选购制作电子钟需要一些硬件设备,在硬件选购时,需要考虑以下因素:- 显示器件:显示器件如LED点阵和数码管是电子钟的重要组成部分,我们可以选择4位LED数码管或者128*64 OLED显示屏。

- 控制器:控制器有多种选择,我们可以使用Arduino单片机或者STM32单片机,这两个均为常用的开发板,容易上手,支持多种编程语言。

- 时间模块:时间模块用于获取当前时间,我们可以选择DS1302时钟模块或者DS3231高精度时钟模块。

- 其他器件:红外遥控模块,蜂鸣器等辅助器件,可以根据需要选择。

2. 硬件连接在确定所需器件后,首先需要对这些器件进行连接,连接方式如下:- 数码管:数码管有四根引脚,分别代表数码管的4位数码,分别对应数字0~9,连接数码管需要了解其引脚定义,我们可以根据不同原理图实现引脚连接。

- 控制器:控制器和显示器连接,通过控制器的输入输出端口和显示器的输入输出端口相连。

- 时间模块:时间模块通过IIC通讯协议与控制器相连。

- 其他器件:按照器件对应原理图进行连接。

3. 程序设计电子钟的最重要的部分是程序设计,通过编写程序,实现获取时间并在数码管或者显示屏上显示当前时间的功能。

电子钟的程序设计分为两个部分:硬件驱动和逻辑控制。

硬件驱动:硬件驱动是基础部分,用于控制指定端口的输入输出和基本的口蹦,例如我们需要实现时间的获取和进行控制,我们需要实现对时间模块进行操作的函数,例如读取时间,设置时间等功能。

逻辑控制:逻辑控制是电子钟的核心部分,它把硬件驱动和显示控制进行了结合,实现了时间的获取和显示。

逻辑控制程序主要包括以下几个部分:- 时间获取:获取时间模块的信息。

简易电子时钟设计报告

简易电子时钟设计报告

简易电子时钟设计报告1. 引言电子时钟是一种用数字形式显示时间的时钟,广泛应用于日常生活中。

本文将介绍一种简易的电子时钟设计方案,包括硬件设计和软件实现。

该电子时钟采用数字LED显示屏,并通过开发板上的微控制器控制时间的显示。

2. 硬件设计2.1 硬件组成该电子时钟的主要硬件组成包括:- 数字LED显示屏:用于显示时钟的小时和分钟数。

该显示屏采用共阳极的数码管,每个数字有7个段可以点亮。

- 微控制器:使用STM32F103C8T6微控制器,具备足够的输入输出和处理能力。

- 调节按钮:用于调节时钟的小时和分钟数。

2.2 电路设计数字LED显示屏的每个段通过一个继电器和一个可控硅管来控制。

继电器通过微控制器的输出口来控制,可控硅管则通过脉宽调制(PWM)来控制。

微控制器通过GPIO口读取调节按钮的状态,根据按钮的操作来调整时钟的小时和分钟数。

同时,微控制器通过定时器中断来实现时钟的运行和显示。

电路设计如下图所示:![电子时钟电路设计图](clock_circuit_design.png)3. 软件实现3.1 开发环境本设计使用Keil MDK开发环境进行软件的编写和调试。

Keil MDK 是一款常用的嵌入式开发工具,提供了强大的代码编辑、编译和仿真功能。

3.2 时钟控制软件中定义了一个结构体`Time`,包含了小时数和分钟数的变量。

通过定时器中断,每隔一秒钟将时钟的秒数加一,并根据秒数的变化更新时钟的小时和分钟数。

具体实现如下:cstruct Time {int hour;int minute;int second;void TIM2_IRQHandler(void) {if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) { TIM_ClearITPendingBit(TIM2, TIM_IT_Update); time.second++;if (time.second >= 60) {time.second = 0;time.minute++;}if (time.minute >= 60) {time.minute = 0;time.hour++;}if (time.hour >= 24) {time.hour = 0;}}3.3 数字显示根据时钟的小时和分钟数,将数字转换成BCD码,然后通过GPIO 口控制数字LED显示屏的每个段点亮或熄灭。

设计一个电子时钟,要求可以显示时、分、秒,用户可以设置时间

设计一个电子时钟,要求可以显示时、分、秒,用户可以设置时间

EDA课程设计-电子钟一、设计要求1、基本功能要求:设计一个电子时钟,要求可以显示时、分、秒,用户可以设置时间。

扩展功能要求:2、跑表功能,闹钟功能,调整数码管的亮度。

二、系统结构控制键—jian5、jian4、jian7、jian8:数码管显示段选信号输出sg:——选择6位数码管中的某一个显示数据;发光二极管控制信号输出—led(7~0)闹钟声音输出—speaker通过一个10M信号分出各种所需频率功能介绍运行后,选择模式7,8位数码管分显示时间的时、分、秒,当前为模式0:时间显示模式,按键7为模式选择键,按下按键7,系统进入模式1,第二次按下为模式2,设置时间模式,第三次按下为跑表模式,第四次为闹钟设置模式,第五次为亮度调节模式:设置时间模式,按键4控制更改数码管的位,按键5控制选中数码管的数值,时间设置完成后,按键按键8,设置时间会保存住,并在模式0中显示;系统进入模式2:秒表模式,按键4为开始/结束键,按键5为清零键;系统进入模式3:闹钟设置模式,相关设置与模式1相同,当当前时间与闹钟设置时间相同时,喇叭就会响;系统进入模式4:亮度调节模式,通过按键4设置亮度,共三种亮度;再按下按键7,系统又会进入模式0。

4、RTL图三、VHDL源程序1、library ieee; --通过10M分出所需频率use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenpin isport (clk_10M : in std_logic;clk_10000 : out std_logic;clk_100 : out std_logic;clk_1 : out std_logic);end entity;architecture sub1 of fenpin issignal Q_1 : std_logic_vector(8 downto 0);signal Q_2 : std_logic_vector(6 downto 0);signal Q_3 : std_logic_vector(6 downto 0);signal clk10000 : std_logic;signal clk100 : std_logic;signal clk1 : std_logic;beginprocess(clk_10M)beginif clk_10M'event and clk_10M='1' thenif Q_1=500 thenQ_1 <= "000000000";clk10000 <= not clk10000;if Q_2=100 thenQ_2 <= "0000000";clk100<= not clk100;if Q_3=100 thenQ_3 <= "0000000";clk1<=not clk1;else Q_3<=Q_3+1;end if;else Q_2<=Q_2+1;end if;else Q_1<=Q_1+1;end if;end if;end process;clk_10000 <= clk10000;clk_100 <= clk100;clk_1 <= clk1;end sub1;2、library ieee; --扫描数码管use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity xianshi isport(clk_10000:in std_logic;jian4:in std_logic;moshi:in integer range 0 to 4;a0,a1,a3,a4,a6,a7:in integer range 0 to 9;sg11:out std_logic_vector(6 downto 0);bt11:out std_logic_vector(7 downto 0));end;architecture one of xianshi issignal cnt8 :std_logic_vector(2 downto 0);signal a :integer range 0 to 15;signal light: std_logic;signal flash:integer range 0 to 2;signal count1,count2:integer range 0 to 10;beginp1: process(cnt8,light,a0,a1,a3,a4,a6,a7)begincase cnt8 iswhen "000" => bt11<= "0000000"&(light);a<=a0;when "001" => bt11<= "000000"&(light)&'0';a<=a1; when "010" => bt11<= "00000"&(light)&"00";a<=15; when "011" => bt11<= "0000"&(light)&"000";a<=a3; when "100" => bt11<= "000"&(light)&"0000";a<=a4; when "101" => bt11<= "00"&(light)&"00000";a<=15; when "110" => bt11<= '0'&(light)&"000000";a<=a6; when "111" => bt11<= (light)&"0000000";a<=a7;when others => null;end case;end process p1;p2:process(clk_10000)beginif clk_10000'event and clk_10000 ='1' then cnt8 <= cnt8+1; end if;end process p2;p3:process(a)begincase a iswhen 0 => sg11<= "0111111";when 1 => sg11<= "0000110";when 2 => sg11<= "1011011";when 3 => sg11<= "1001111";when 4 => sg11<= "1100110";when 5 => sg11<= "1101101";when 6 => sg11<= "1111101";when 7 => sg11<= "0000111";when 8 => sg11<= "1111111";when 9 => sg11<= "1101111";when 10 => sg11<= "1110111";when 11 => sg11<= "1111100";when 12 => sg11<= "0111001";when 13 => sg11<= "1011110";when 14 => sg11<= "1111001";when 15 => sg11<= "1000000";when others => null;end case;end process p3;process(jian4,moshi)beginif moshi=4 thenif jian4'event and jian4='1' thenif flash =2 thenflash<=0;else flash<=flash+1;end if;end if;end if;end process;process(clk_10000,flash)beginif clk_10000'event and clk_10000 ='1' thencase flash iswhen 0 => light<='1';when 1 => if count1=2 thencount1<=0; light<='1';else count1<=count1+1;light<='0';end if;when 2 => if count2=4 thencount2<=0; light<='1';else count2<=count2+1;light<='0';end if;end case;end if;end process;end;3、library ieee; --跑表开始暂停use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity paobiao isport(clk_1:in std_logic;jian8:in std_logic;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9; shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:out integer range 0 to 9); end entity;architecture bhv of paobiao issignal shi:integer range 0 to 100;signal fen:integer range 0 to 100;signal miao:integer range 0 to 100;beginprocess(clk_1,jian8,shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1)beginif jian8='1' thenshi<=shishi1*10+shige1;fen<=fenshi1*10+fenge1;miao<=miaoshi1*10+miaoge1;elsif clk_1'event and clk_1='1' thenif miao=59 thenmiao<=0;fen<=fen+1;elsif fen>59 thenfen<=0;shi<=shi+1;elsif shi>23 thenshi<=0;else miao<=miao+1;end if;end if;end process;miaoge2<=miao rem 10;miaoshi2<=miao/10;fenge2<=fen rem 10;fenshi2<=fen/10;shige2<=shi rem 10;shishi2<=shi/10;end;4、library ieee; --设置当前时间use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity settime isport(moshi:in integer range 0 to 4;jian4,jian5:in std_logic;shishi,shige,fenshi,fenge,miaoshi,miaoge:out integer range 0 to 9);end entity;architecture bav of settime issignal a:integer range 0 to 5;signal shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1: integer range 0 to 9; beginprocess(moshi,jian4)beginif moshi=1 thenif jian4'event and jian4='1' thenif a < 5 thena<=a+1;else a<=0;end if;end if;end if;end process;process(moshi,a,jian5)beginif moshi=1 thenif a=0 thenif jian5'event and jian5='1' thenif miaoge1 =9 thenmiaoge1<=0;else miaoge1<=miaoge1+1;end if;end if;end if;if a=1 thenif jian5'event and jian5='1' thenif miaoshi1 =5 thenmiaoshi1<=0;else miaoshi1<=miaoshi1+1;end if;end if;end if;if a=2 thenif jian5'event and jian5='1' thenif fenge1 =9 thenfenge1<=0;else fenge1<=fenge1+1;end if;end if;end if;if a=3 thenif jian5'event and jian5='1' thenif fenshi1 =5 thenfenshi1<=0;else fenshi1<=fenshi1+1;end if;end if;end if;if a=4 thenif jian5'event and jian5='1' thenif shige1 =9 thenshige1<=0;else shige1<=shige1+1;end if;end if;end if;if a=5 thenif jian5'event and jian5='1' thenif shishi1 =2 thenshishi1<=0;else shishi1<=shishi1+1;end if;end if;end if;end if;end process;miaoge<=miaoge1;miaoshi<=miaoshi1;fenge<=fenge1;fenshi<=fenshi1;shige<=shige1;shishi<=shishi1;end;5、library ieee; --秒表功能use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity miaobiao isport(clk_100:in std_logic;moshi:in integer range 0 to 4;jian5,jian4:in std_logic;fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge:out integer range 0 to 9); end entity;architecture bhv of miaobiao issignal fen,miao,xmiao:integer range 0 to 99;signal start:std_logic:='0';signal reset:std_logic:='0';beginprocess(clk_100,jian5,jian4,moshi,reset,start)beginif moshi=2 thenif reset='1' thenfen<=0;miao<=0;xmiao<=0;elsif start='1' thenelsif clk_100'event and clk_100='1' thenif xmiao=99 thenxmiao<=0;miao<=miao+1;elsif miao>59 thenmiao<=0;fen<=fen+1;elsif fen>23 thenfen<=0;else xmiao<=xmiao+1;end if;end if;end if;end process;process(jian4,start)beginif jian4'event and jian4='1' thenstart<=not start;else start<=start;end if;end process;process(jian5,reset)beginif jian5'event and jian5='1' thenreset<=not reset;else reset<= reset;end if;end process;xmiaoge<=xmiao rem 10;xmiaoshi<=xmiao/10;miaoge<=miao rem 10;miaoshi<=miao/10;fenge<=fen rem 10;fenshi<=fen/10;end;6、library ieee; --设置闹钟时间use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity naozhongset isport(moshi:in integer range 0 to 4;jian4,jian5:in std_logic;shishi,shige,fenshi,fenge,miaoshi,miaoge:out integer range 0 to 9); end entity;architecture bav of naozhongset issignal a:integer range 0 to 5;signal fenshi1,fenge1,miaoge1: integer range 0 to 9;signal shishi1: integer range 0 to 9:=1;signal shige1: integer range 0 to 9:=2;signal miaoshi1: integer range 0 to 9:=0;beginprocess(moshi,jian4)beginif moshi=3 thenif jian4'event and jian4='1' thenif a < 5 thena<=a+1;else a<=0;end if;end if;end if;end process;process(moshi,a,jian5)beginif moshi=3 thenif a=0 thenif jian5'event and jian5='1' thenif miaoge1 =9 thenmiaoge1<=0;else miaoge1<=miaoge1+1;end if;end if;end if;if a=1 thenif jian5'event and jian5='1' thenif miaoshi1 =5 thenmiaoshi1<=0;else miaoshi1<=miaoshi1+1;end if;end if;end if;if a=2 thenif jian5'event and jian5='1' thenif fenge1 =9 thenfenge1<=0;else fenge1<=fenge1+1;end if;end if;end if;if a=3 thenif jian5'event and jian5='1' thenif fenshi1 =5 thenfenshi1<=0;else fenshi1<=fenshi1+1;end if;end if;end if;if a=4 thenif jian5'event and jian5='1' thenif shige1 =9 thenshige1<=0;else shige1<=shige1+1;end if;end if;end if;if a=5 thenif jian5'event and jian5='1' thenif shishi1 =2 thenshishi1<=0;else shishi1<=shishi1+1;end if;end if;end if;end if;end process;miaoge<=miaoge1;miaoshi<=miaoshi1;fenge<=fenge1;fenshi<=fenshi1;shige<=shige1;shishi<=shishi1;end;7、library ieee; --闹钟喇叭输出use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity naozhongspeaker isport(clk_100:in std_logic;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9; shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:in integer range 0 to 9; speaker:out std_logic);end entity;architecture bav of naozhongspeaker isbeginprocess(clk_100,shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1,shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2)beginif shishi2=shishi1 and shige2=shige1 and fenshi2=fenshi1 andfenge2=fenge1 and miaoshi2=miaoshi1 thenspeaker<=clk_100;else speaker<='1';end if;end process;end;8、library ieee; --转换模式use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity moshi isport(jian7:in std_logic;moshi:out integer range 0 to 4);end;architecture one of moshi issignal moshis:integer range 0 to 4;beginprocess(jian7)beginif jian7'event and jian7='1' thenif moshis=4 thenmoshis<=0;else moshis<=moshis+1;end if;end if;end process;moshi<=moshis;end;9、library ieee; --五选一选择器use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity mux5_1 isport(moshi:in integer range 0 to 4 ;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9;shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:in integer range 0 to 9;shishi3,shige3,fenshi3,fenge3,miaoshi3,miaoge3:in integer range 0 to 9; fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge:in integer range 0 to 9;a0,a1,a3,a4,a6,a7:out integer range 0 to 9);end entity mux5_1;architecture bhv of mux5_1 isbeginprocess(shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1,shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2,shishi3,shige3,fenshi3,fenge3,miaoshi3,miaoge3,fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge,moshi)begincase moshi iswhen 0 =>a0<=shishi1;a1<=shige1;a3<=fenshi1;a4<=fenge1;a6<=miaoshi1;a7<=miaoge1;when 1 =>a0<=shishi2;a1<=shige2;a3<=fenshi2;a4<=fenge2;a6<=miaoshi2;a7<=miaoge2;when 2 =>a0<=fenshi;a1<=fenge;a3<=miaoshi;a4<=miaoge;a6<=xmiaoshi;a7<=xmiaoge;when 3 =>a0<=shishi3;a1<=shige3;a3<=fenshi3;a4<=fenge3;a6<=miaoshi3;a7<=miaoge3;when 4 => a0<=8;a1<=8;a3<=8;a4<=8;a6<=8;a7<=8;end case;end process;end;10、library ieee; --主程序置顶use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity clock isport(clk_10M:in std_logic;jian5,jian4,jian7,jian8:in std_logic;sg:out std_logic_vector(6 downto 0);bt:out std_logic_vector(7 downto 0);speaker:out std_logic);end entity;调用声明语句architecture bav of clock iscomponent fenpin --分频port (clk_10M : in std_logic;clk_10000 : out std_logic;clk_100 : out std_logic;clk_1 : out std_logic);end component;component paobiao --跑表port(clk_1:in std_logic;jian8:in std_logic;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9; shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:out integer range 0 to 9);end component;component xianshi --扫描显示port(clk_10000:in std_logic;jian4:in std_logic;moshi:in integer range 0 to 4;a0,a1,a3,a4,a6,a7:in integer range 0 to 9;sg11:out std_logic_vector(6 downto 0);bt11:out std_logic_vector(7 downto 0));end component;component moshi --模式转换port(jian7:in std_logic;moshi:out integer range 0 to 4);end component;component mux5_1 --五选一选择器port(moshi:in integer range 0 to 4 ;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9;shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:in integer range 0 to 9;shishi3,shige3,fenshi3,fenge3,miaoshi3,miaoge3:in integer range 0 to 9;fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge:in integer range 0 to 9;a0,a1,a3,a4,a6,a7:out integer range 0 to 9);end component;component settime --设置当前时间port(moshi:in integer range 0 to 4;jian4,jian5:in std_logic;shishi,shige,fenshi,fenge,miaoshi,miaoge:out integer range 0 to 9);end component;component miaobiao is --秒表port(clk_100:in std_logic;moshi:in integer range 0 to 4;jian5,jian4:in std_logic;fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge:out integer range 0 to 9);end component;component naozhongset is --闹钟时间设置port(moshi:in integer range 0 to 4;jian4,jian5:in std_logic;shishi,shige,fenshi,fenge,miaoshi,miaoge:out integer range 0 to 9);end component;component naozhongspeaker is --闹钟喇叭输出port(clk_100:in std_logic;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9;shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:in integer range 0 to 9;speaker:out std_logic);end component;signal moshis:integer range 0 to 4; --信号声明signal shishi1s,shige1s,fenshi1s,fenge1s,miaoshi1s,miaoge1s:integer range 0 to 9;signal shishi2s,shige2s,fenshi2s,fenge2s,miaoshi2s,miaoge2s:integer range 0 to 9;signal shishi3s,shige3s,fenshi3s,fenge3s,miaoshi3s,miaoge3s:integer range 0 to 9;signal fenshis,fenges,miaoshis,miaoges,xmiaoshis,xmiaoges: integer range 0 to 9;signal a0s,a1s,a3s,a4s,a6s,a7s: integer range 0 to 9;signal clk_10000s,clk_100s, clk_1s: std_logic;begin --元件例化u1:paobiao port map(clk_1=>clk_1s,jian8=>jian8,shishi1=>shishi2s,shige1=>shige2s,fenshi1=>fenshi2s,fenge1=>fenge2s,miaoshi 1=>miaoshi2s,miaoge1=>miaoge2s,shishi2=>shishi1s,shige2=>shige1s,fenshi2=>fenshi1s,fenge2=>fenge1s,miaoshi2=>m iaoshi1s,miaoge2=>miaoge1s);u2:xianshi port map(clk_10000=>clk_10000s,jian4=>jian4,moshi=>moshis,a0=>a0s,a1=>a1s,a3=>a3s,a4=>a4s,a6=>a6s,a7=>a7s,sg11=>sg,bt11=>bt);u3:settime port map(moshi=>moshis,jian5=>jian5,jian4=>jian4,shishi=>shishi2s,shige=>shige2s,fenshi=>fenshi2s,fenge=>fenge2s,miaoshi=>miaosh i2s,miaoge=>miaoge2s);u4:moshi port map(jian7=>jian7,moshi=>moshis);u5:mux5_1 port map(moshi=>moshis,shishi1=>shishi1s,shige1=>shige1s,fenshi1=>fenshi1s,fenge1=>fenge1s,miaoshi1=>m iaoshi1s,miaoge1=>miaoge1s,shishi2=>shishi2s,shige2=>shige2s,fenshi2=>fenshi2s,fenge2=>fenge2s,miaoshi2=>m iaoshi2s,miaoge2=>miaoge2s,shishi3=>shishi3s,shige3=>shige3s,fenshi3=>fenshi3s,fenge3=>fenge3s,miaoshi3=>m iaoshi3s,miaoge3=>miaoge3s,fenshi=>fenshis,fenge=>fenges,miaoshi=>miaoshis,miaoge=>miaoges,xmiaoshi=>x miaoshis,xmiaoge=>xmiaoges,a0=>a0s,a1=>a1s,a3=>a3s,a4=>a4s,a6=>a6s,a7=>a7s);u6:miaobiao port map(clk_100=>clk_100s,moshi=>moshis,jian5=>jian5,jian4=>jian4,fenshi=>fenshis,fenge=>fenges,miaoshi=>miaoshis,miaoge=>miaoges,xmiaoshi=>xmiao shis,xmiaoge=>xmiaoges);u7:fenpin port map(clk_10M=>clk_10m,clk_10000=>clk_10000s,clk_100=>clk_100s,clk_1 =>clk_1s);u8:naozhongset port map(moshi=>moshis,jian5=>jian5,jian4=>jian4,shishi=>shishi3s,shige=>shige3s,fenshi=>fenshi3s,fenge=>fenge3s,miaoshi=>mi aoshi3s,miaoge=>miaoge3s);u9:naozhongspeaker port map(clk_100=>clk_100s,speaker=>speaker,shishi1=>shishi3s,shige1=>shige3s,fenshi1=>fenshi3s,fenge1=>fenge3s,miaoshi1=>m iaoshi3s,miaoge1=>miaoge3s,shishi2=>shishi1s,shige2=>shige1s,fenshi2=>fenshi1s,fenge2=>fenge1s,miaoshi2=>m iaoshi1s,miaoge2=>miaoge1s);end;。

数字电子钟的设计

数字电子钟的设计

数字电子钟的设计数字电子钟的设计随着科技的不断发展,数字电子钟已经成为人们生活中不可或缺的一部分。

它不仅可以告诉我们时间,还可以让我们随时随地掌握时间。

本文将从数字电子钟的功能、设计要素和实现过程三个方面探讨数字电子钟的设计。

一、数字电子钟的功能数字电子钟最基本的功能是显示当前时间。

同时,数字电子钟还可以有多种附加功能,例如显示当前日期、闹钟定时、倒计时、秒表计时等等。

这些功能可以根据用户的需求进行扩展和定制。

数字电子钟还可以根据个人偏好设定显示模式。

比如,可以设定12小时还是24小时制显示,可以选择显示中文还是英文,可以选择不同的背景颜色和字体大小等等。

二、数字电子钟的设计要素数字电子钟的设计要素包括时钟芯片、数字显示器、主芯片、功率模块等多个组成部分。

下面我们来分别介绍一下。

1. 时钟芯片时钟芯片是数字电子钟的核心部件。

它可以提供高精度的时间信号,控制数字显示器显示时间。

常见的时钟芯片有DS1302和DS3231等。

其中,DS3231是一款高精度时钟芯片,可以达到非常高的精度要求。

2. 数字显示器数字显示器是数字电子钟最显著的部分。

常见的数字显示器有LED、LCD和OLED三种类型。

LED数字显示器是最常见的数字显示器,具有显著的视觉效果。

LCD数字显示器可以显示更多的信息,而且更加柔和。

OLED数字显示器颜色更加丰富,显示效果更加真实。

3. 主芯片主芯片是数字电子钟的中央处理器,负责控制各个组成部分间的通讯和协同。

常见的主芯片有STM32和ATMega328P等。

其中,STM32性能比较出色,可以满足高性能要求。

4. 功率模块数字电子钟的功率模块负责提供电源。

常见的功率模块有锂电池和AC/DC适配器两种。

锂电池电量长,使用方便,但是需要经常充电。

AC/DC适配器可以提供长期稳定的电源,但是需要连续供电。

三、数字电子钟的实现过程数字电子钟的实现过程需要进行硬件设计和软件开发两个步骤。

硬件设计包括电路设计和PCB设计两个方面。

电子时钟设计报告

电子时钟设计报告

电子时钟设计报告电子时钟是一款具有非常广泛应用的时钟,它通过电子元器件来实现时间的显示和调节。

随着电子技术的不断发展,人们对电子时钟的要求也越来越高,如何设计一款性能稳定、视觉效果好的电子时钟成为了设计者们的一个重要任务。

本文将着重探讨电子时钟的设计报告,包括设计原理、电路图、主要组成部分、工艺流程等方面内容,以帮助设计者更好地理解电子时钟的设计方法与原理。

一、设计原理电子时钟的工作原理是将系统时钟的时分秒等信息经过处理(包括计数、译码、调制等过程)后,驱动数码管、发声器等输出设备进行显示或报警。

其设计的核心是时钟IC,一般使用时钟芯片作为时钟电路的核心,将各个元器件关联起来,形成一个完整的电路。

二、电路图电子时钟的电路图包含了时钟IC、晶振、电源、数码管、发声器等主要组成部分。

其中,晶振对于时钟的稳定性非常重要,它能提供高精度的振荡波形,保证整个时钟系统的稳定性和准确性;数码管是时钟的显示部分,负责将数字表示在数码管上;发声器用于报时提醒。

下图是一个示例电路图:三、主要组成部分1、时钟IC:它是电子时钟的核心部分,负责处理和计数时间信号,然后把时间信号转换成对应的数字信号,驱动数码管。

2、晶振:它提供了高精度的振荡波形,保证整个时钟系统的稳定性和准确性。

3、电源:它负责为整个时钟系统提供电能,是整个电路的动力来源。

4、数码管:它是时钟的显示部分,负责将时间数字显示在数码管上,提供时分秒等不同的显示格式。

5、发声器:它用于报时提醒,将报时信号转换成声音输出。

四、工艺流程电子时钟的工艺流程包含了设计、PCB 布局、元器件采购、组装及测试等环节。

其中,设计和PCB 布局是电子时钟工艺流程的核心环节。

1、设计:根据用户需求,确定电子时钟的功能和使用场景,然后选择适合的电路图,搭建电路图,并进行仿真调试。

这一阶段要尽可能地避免因为电路选择不当、元器件不匹配等问题导致的功能失效或提前故障。

2、PCB 布局:将电子时钟的各个元器件布置在PCB 上,合理布局,缩短信号通路,提高性能稳定性。

电子时钟设计(完美实现最终版)要点

电子时钟设计(完美实现最终版)要点

电子时钟设计(完美实现最终版)要点————————————————————————————————作者:————————————————————————————————日期:电子时钟实验报告一,实验目的1. 学习8051定时器时间计时处理、按键扫描及LED数码管显示的设计方法。

2. 设计任务及要求利用实验平台上4个LED数码管,设计带有闹铃功能的数字时钟二,实验要求A.基本要求:1. 在4位数码管上显示当前时间。

显示格式“时时分分”2. 由LED闪动做秒显示。

3. 利用按键可对时间及闹玲进行设置,并可显示闹玲时间。

当闹铃时间到蜂鸣器发出声响,按停止键使可使闹玲声停止。

4.实现秒表功能(百分之一秒显示)B.扩展部分:1.日历功能(能对年,月,日,星期进行显示,分辨平年,闰年以及各月天数,并调整)2.音乐闹铃(铃音可选择,闹铃被停止后,闪烁显示当前时刻8秒后,或按键跳入正常时间显示状态)3.定时功能(设定一段时间长度,定时到后,闪烁提示)4.倒计时功能(设定一段时间长度,能实现倒计时显示,时间长减到0时,闪烁提示)5.闹铃重响功能(闹铃被停止后,以停止时刻开始,一段时间后闹铃重响,且重响时间的间隔可调)三,实验基本原理利用单片机定时器完成计时功能,定时器0计时中断程序每隔0.01s中断一次并当作一个计数,设定定时1秒的中断计数初值为100,每中断一次中断计数初值减1,当减到0时,则表示1s到了,秒变量加1,同理再判断是否1min钟到了,再判断是否1h到了。

为了将时间在LED数码管上显示,可采用静态显示法和动态显示法,由于静态显示法需要译码器,数据锁存器等较多硬件,可采用动态显示法实现LED显示,通过对每位数码管的依次扫描,使对应数码管亮,同时向该数码管送对应的字码,使其显示数字。

由于数码管扫描周期很短,由于人眼的视觉暂留效应,使数码管看起来总是亮的,从而实现了各种显示。

四,实验设计分析针对要实现的功能,采用AT89S51单片机进行设计,AT89S51 单片机是一款低功耗,高性能CMOS8位单片机,片内含4KB在线可编程(ISP)的可反复擦写1000次的Flash只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准MCS- 51指令系统及80C51引脚结构。

电子时钟设计总结

电子时钟设计总结

电子时钟设计总结1. 引言电子时钟是一种用数字显示时间的设备,广泛应用于日常生活中。

它可以准确地显示当前的时间,并具有一些额外的功能,如闹钟、定时器等。

本文将总结设计电子时钟的过程,并讨论一些设计注意事项。

2. 硬件设计2.1 主控芯片选择选择适合的主控芯片是设计电子时钟的关键步骤之一。

主控芯片应具备以下特点: - 高性能:能够稳定运行各种功能,并提供充足的计算能力。

- 低功耗:通过合理地管理能源,延长电子时钟的使用时间。

- 多功能接口:提供与其他外围设备的连接接口,如显示屏、按键、声音输出等。

2.2 显示屏选择电子时钟显示屏通常有液晶显示屏(LCD)和数码管显示屏两种。

液晶显示屏适合显示更复杂的内容,而数码管显示屏则适合显示简单的数字信息。

根据实际需求,选择显示屏材质和类型,并配合主控芯片进行驱动。

2.3 声音输出设计对于具有闹钟功能的电子时钟,声音输出是不可或缺的。

设计时应考虑合适的声音输出模块,并通过主控芯片进行控制。

2.4 电源设计电子时钟通常使用直流电源供电,应根据需要设计适当的电源模块。

考虑到时钟的移动性,推荐使用可充电电池作为备用电源。

3. 软件设计3.1 实时时钟模块实时时钟模块是电子时钟的核心部分,用于记录和维护时间信息。

主控芯片应具备实时时钟功能,并与时钟振荡器配合使用,保证时间精度。

3.2 时间计算与显示主控芯片应具备时间计算功能,计算当前的小时、分钟和秒数,并将其显示在合适的显示屏上。

还应考虑到时区、夏令时等因素,确保时间的准确性。

3.3 闹钟功能设计电子时钟时,闹钟功能往往是不可或缺的一部分。

通过主控芯片和声音输出模块的配合,实现设置闹钟时间、触发闹钟并发出声音的功能。

3.4 其他功能设计根据需求,还可以为电子时钟添加一些其他功能,如定时器、温湿度显示等。

这些功能的实现依赖于主控芯片和适当的外围设备。

4. PCB设计PCB设计是将电子元件固定在电路板上的过程。

在设计电子时钟的PCB布线时,需要合理安排元件的位置,并考虑信号线的布置和分层,以降低噪声和电磁干扰。

简易电子钟的设计与实现.docx

简易电子钟的设计与实现.docx

简易电子钟的设计与仿真一、设计要求和电路原理1.1 设计要求1)可以准确地显示北京时间。

2)时间显示选择24小时模式。

3)选用AT89C52单片机,将编写的程序下载到该单片机中,并能使数码管显示。

4)采用Keil C51编译,Proteus软件进行仿真。

1.2 设计原理与思路利用单片机的定时与中断系统功能实现电子钟的计数和调时。

采用AT89C52定时中断方式实现24小时制时钟精确的计时。

通过外部的12M(11.0529M)Hz 晶振产生稳定的谐振,在AT89C52的内部定时器电路实现定时,当定时器溢出时产生中断,累计定时器的定时时间达一秒时,数码管的秒显示加1,判断数码管的秒显示达60时,秒显示自动清零,分显示加1,判断分显示达60时,分显示自动清零,时显示加1,判断时显示达24时,时显示自动清零。

从而实现00:00:00—23:59:59 之间的任意时刻显示。

为了使时钟能够灵活的对时间进行调整、校对,通过增加外部的按键实现简单的复位、时调整、分调整的功能。

形成一个具有复位和校时功能的简易电子时钟。

二、电子时钟设计方案2.1电子钟设计的基本方法2.1.1电子钟实现计时的方法利用MCS-51系列单片机的可编程定时/计数器、中断系统来实现时钟计时。

(1) 计数初值计算:把定时器T0设为工作方式2,产生0.25ms定时中断,计数溢出4000次即得时钟计时最小单位秒,而4000次计数可用软件方法实现。

假设使用T/C0,方式2,0.25ms定时,fosc=12MHz。

则初值a满足(256-a)×1/12MHz×12μs =250μsa=6 (6H)TH0=#6H; TL0=#6H(2) 采用中断方式进行溢出次数累计,计满4000次为秒计时(1秒);(3) 从秒到分和从分到时的计时是通过累加和数值比较实现。

2.1.2 电子钟的时间显示电子钟的时钟时间在8位数码管上进行显示,时、分、秒的显示值可以在单片机的内部RAM设置三个缓冲单元,30H、31H、32H分别存储时、分、秒的值。

电子钟的设计

电子钟的设计

电子钟的设计随着科技的不断进步,电子钟已经成为现代家居中一个不可或缺的存在。

它们可以跟随地球的自转精确地测量时间,并在我们生活中发挥着重要的作用。

设计一个高效准确的电子钟需要考虑许多因素,本文将详细介绍电子钟的设计。

1. 液晶显示屏液晶显示屏是电子钟的一个重要组件。

它可以显示时间、温度、湿度等多种信息。

对于设计一个高效准确的电子钟,液晶显示屏的选择是非常重要的。

液晶显示屏的质量直接影响到电子钟的观感和使用效果。

一般来说,越好的液晶显示屏需要消耗更多的能量,所以在设计电子钟时需要权衡好效能和节能。

2. 晶振晶振是测量时间的重要器件。

它能够以极高的精度产生稳定的信号,用来同步设计中实际时间的计算。

晶振的选择也会直接影响到电子钟的准确度。

随着科技的不断进步,现代化的石英振荡器已被广泛应用,这种器件工作稳定,精度高,且可靠性强。

3. 控制器为了达到更好的稳定性和准确度,大多数电子钟的设计都是通过微控制器来执行操作的。

微控制器可以通过内部程序保持稳定并准确地执行指令。

在电子钟中,微控制器可以控制和监测时间、日期、闹钟、温度等参数。

常见的控制器包括基于ARM,PIC,AVR等芯片的控制器。

4. 续航当我们谈到电子钟的使用寿命时,续航是一个非常重要的问题。

一般来说,电子钟都是使用电池供电。

到目前为止,锂电池已经成为普遍使用的电池类型。

对于设计电子钟来说,需要在保持高效准确度的同时,考虑到电池的寿命。

一些设计公司提供了一些方便的功能,比如低功耗模式、太阳能等,能够最大程度地延长电子钟的使用寿命。

5. 外观美观设计一个好看的电子钟同样非常重要。

它不能仅仅功能强大,同时观感要出色。

外观上的设计可以包括颜色、造型、功能按钮等方面。

对于现代家居而言,简约大方的设计风格是比较流行的,同时还可以通过配色与装饰品等方面进一步丰富元素。

综上所述,电子钟的设计是一个非常繁琐的过程,需要仔细考虑到各个方面的因素。

准确、续航、美观、易操作等必须同时处理,以确保最终产品兼具美观与实用性。

电子时钟设计

电子时钟设计

电子时钟设计电子时钟是一种现代化的时钟,它不仅仅能显示时间,还能够精确地保持时间,并具有多种功能。

电子时钟设计需要考虑的许多因素,例如时钟的精度、功能、成本和外观等。

在电子时钟的设计过程中,最重要的考虑因素之一就是计时精度。

电子时钟需要采用高精度的计时器,以确保时钟的准确性。

这种计时器通常是基于定时晶振的。

定时晶振的频率非常稳定,可以作为时钟的参考基准。

在时钟电路中,定时晶振所产生的脉冲会被计数器所计数,在数字显示部分显示出时钟的具体时间。

电子时钟的功能也是设计时需要考虑的一个重要因素。

现代电子时钟不仅可以显示时间,还可以提供其他信息,如温度、湿度、日期、天气等。

这些额外的功能通常需要额外的传感器和处理器来检测和解析。

设计师需要考虑这些功能对电路设计的影响,如多余的接口和额外的芯片成本等。

除了以上两个因素,电子时钟的成本也是设计者必须考虑的一个重要因素。

电子时钟由多个部件组成,包括显示器、计时器、控制器、按钮和外壳等。

每个零部件的成本都会对总成本产生影响。

设计者需要权衡功能和价格之间的关系,以确保最终产品符合市场需求。

最后,外观也是电子时钟设计中一个重要的因素。

外壳设计不仅要符合功能性需求,还要考虑到外观的吸引力。

时钟外壳的材料和颜色也是设计中需要考虑的因素。

外观的设计可以对产品的销售产生积极影响,因此,设计者需要花费时间和精力来制定合适的产品外观设计。

总之,电子时钟的设计需要综合考虑多个因素,包括时钟的计时精度、功能、成本和外观等。

设计者必须权衡这些因素之间的关系,以确保最终产品符合市场需求和消费者的要求。

电子时钟已经成为现代生活中必不可少的物品之一,因此,对于设计者来说,电子时钟的设计将继续是一个长期而重要的挑战。

电子数字时钟课程设计报告(完整实物图+原理图+web图)

电子数字时钟课程设计报告(完整实物图+原理图+web图)

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

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

因此,我们此次设计数字钟就是为了了解数字钟的原理,从而学会制作数字钟。

而且通过数字钟的制作进一步的了解各种在制作中用到的中小规模集成电路的作用及实用方法。

且由于数字钟包括组合逻辑电路和时叙电路。

通过它可以进一步学习与掌握各种组合逻辑电路与时序电路的原理与使用方法。

1.1设计指标1. 时间以12小时为一个周期;2. 显示时、分、秒;3. 具有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间;1.2 设计要求1、电路设计原理说明2、硬件电路设计(要求画出电路原理图及说明)3、实物制作:完成的系统能达到题目的要求。

4、完成3000字的课程设计报告2. 功能原理2.1 数字钟的基本原理数字电子钟由信号发生器、“时、分、秒”计数器、LED数码管、校时电路、整点报时电路等组成。

工作原理为时钟源用以产生稳定的脉冲信号,作为数字种的时间基准,要求震荡频率为1HZ,为标准秒脉冲。

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

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

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

LED数码管将“时、分、秒”计数器的输出状态显示。

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

2.2 原理框图3. 功能模块3.1 振荡电路多谐振荡器也称无稳态触发器,它没有稳定状态,同时无需外加触发脉冲,就能输出一定频率的矩形波形(自激振荡)。

用555实现多谐振荡,需要R1,R2和电容,并接+5V的直流电源。

电子钟的设计

电子钟的设计

电子钟的设计随着科技的不断发展,电子产品逐渐走进人们的生活中,并展示出越来越强大和便捷的功能。

其中,电子钟是不可或缺的一款智能产品,为人们提供了高精度、易操作和多样化的时间显示方式,是现代生活中必不可少的物品。

那么,电子钟的设计又是怎样的呢?一、设计概述电子钟是一种通过电力或者电池等电源来驱动,用于测量时间以及显示时间的时间测量仪器。

传统的机械式时钟需要由机械部件驱动,但电子钟是用电子技术完成时间的测量和显示。

电子钟的制作需要具备电子电路设计、软件开发、结构设计等技术,这些方面的设计都需要有很高的要求。

二、电路设计电路设计是电子钟设计中最为基础且重要的一环。

电子钟采用的电路种类基本上可以分为数字式和模拟式两种。

数字电路的主要优势在于操作速度快,复杂电路数量少,且不容易受到环境的影响。

而模拟电路则具有更加高的精确度以及更为细腻的显示效果。

不同的电路在使用上各有特点,需要根据实际使用需求进行选择。

三、软件开发电子钟的软件开发也是电子钟设计中的一部分。

目前,市场上电子钟的软件多采用C语言或汇编语言进行编写。

软件可以控制数据的处理和传输以及系统内各种信号和辅助电路的控制,从而保证电子钟科学、高效的运行和显示。

四、结构设计结构设计是电子钟设计的最后一步,主要关注电子钟的外观形态、材料适配以及稳固性等问题。

电子钟的产品外形可以根据不同的需求进行设计。

还可以将电子钟嵌入机器、设备中,或是做成便携式的手持式设备。

五、电子钟常见设计要素1.时间表示精度: 电子钟精度一般都是正负数秒,集成电路的精度则比较高。

2.时钟显示器: 显示器有LED、LCD、Touch Screen 等多种,显示效果好的一般会使用带背光的LED显示屏。

3.电源: 电子钟多采用交直流混合供电方式,也可以使用充电电池。

4.实时钟: 用来保证电子钟时间的准确度。

5.控制电路: 主要由CPU芯片、ROM、RAM、接口芯片等构成。

六、总结电子钟设计是电子工程师的必修课,是一个精密度和专业度均很高的课题。

电子钟的设计与实现毕业设计

电子钟的设计与实现毕业设计

题目:电子时钟的设计与实现摘要电子时钟主要是利用电子技术将时钟电子化、数字化,拥有时钟精确、体积小、界面友好、可扩展性能强等特点,被广泛应用于生活和工作当中。

另外,在生活和工农业生产中,也常常需要温度,这就需要电子时钟具有多功能性。

本设计主要为实现一款可正常显示时钟本设计主要为实现一款可正常显示时钟//日历、测量环境温度、带有定时闹铃的多功能电子时钟。

本文对当前电子钟开发手段进行了比较和分析,最终确定了采用单片机技术实现多功能电子时钟。

本设计应用AT89C51芯片作为核心,芯片作为核心,77位LED 数码管显示,使用DS1302实时时钟日历芯片完成时钟实时时钟日历芯片完成时钟//日历的基本功能,同时利用DS18B20温度传感器测量环境温度。

这种实现方法的优点是电路简单,性能可靠,实时性好,时间和温度精度高,操作简单,编程容易。

该电子时钟可以应用于一般的生活和工作中,也可通过改装,提高性能,增加新功能,从而给人们的生活和工作带来更多的方便。

关键词:电子时钟;多功能;电子时钟;多功能;AT89C51AT89C51AT89C51;时钟日历芯片;温度传感器;时钟日历芯片;温度传感器AbstractThe electronic clock mainly uses the electronic technology make the clock computerization, the digitization, with the clock precision, small size, friendly interface, scalable scalable performance performance performance and and and other other other characteristics, characteristics, characteristics, was was was widely widely widely used used used in in in life life life and and and work. work. Measuring temperature, in life, industry and agricultural production, so electronic clock need multi-function. The The design design design for for for the the the main main main implementing implementing implementing a a a clock/calendar clock/calendar clock/calendar can can can be be be displayed displayed displayed normal, normal, collecting collecting personal personal personal ambient ambient ambient temperature, temperature, temperature, with with with the the the timing timing timing alarm alarm alarm of of of the the the multi-function multi-function electronic clock. Comparing Comparing and analysising the development and analysising the development technology of the electron clock, the design design determines determines determines to to to use use use the the the MCU MCU MCU technology technology technology to to to realize realize realize the the the multi-functional multi-functional multi-functional electron electron clock. clock. This This This design design design application application application A A T89C51 as as a a a core core core chips, chips, chips, 7 7 7 LED LED LED digital digital digital displaying, displaying, using DS1302 real-time clock chip to complete the basic function of the clock/calendar. At At the the the same same same time time time the the the design design design use use use of of of DS18B20 DS18B20 DS18B20 temperature temperature temperature sensors sensors sensors to to to collect collect collect the the environmental environmental temperature. temperature. temperature. The The The method method method has has has the the the advantage advantage advantage of of of being being being simple simple simple circuit, circuit, reliable performance, good real-time, high precision of the time and temperature , simply operation, easy programming. The electronic clock can be applied to the general living and working ,can also be modified modified to to to improve improve improve performance, performance, performance, add add add new new new functions, functions, functions, and and and brings brings brings more more more convenient convenient convenient to to people people’’s life and work. Key words: Electronic clock; Multi-function; AT89C51; DS1302; Temperature pickup Electronic clock; Multi-function; AT89C51; DS1302; Temperature pickup 目 录录摘 要要................................................................... 1 Abstract (2)第一章 引 言............................................................ 5 1.1 1.1 多功能电子时钟研究的背景和意义多功能电子时钟研究的背景和意义多功能电子时钟研究的背景和意义........................................ 5 1.2 1.2 电子时钟的功能电子时钟的功能电子时钟的功能........................................................ 6 第二章 电子时钟设计方案分析 ..........................................7 2.1 FPGA 设计方案设计方案 ......................................................... .........................................................7 2.2 NE555时基电路设计方案时基电路设计方案 ................................................ ................................................7 2.3 2.3 单片机设计方案单片机设计方案单片机设计方案........................................................ 8 第三章 基于单片机的电子时钟硬件设计 ................................10 3.1 3.1 主要主要IC 芯片选择芯片选择...................................................... 10 3.1.1 3.1.1 微处理器选择微处理器选择微处理器选择....................................................... 10 3.1.2 3.1.2 环境温度传感器选择环境温度传感器选择环境温度传感器选择................................................. 11 3.2 3.2 电子时钟硬件电路设计电子时钟硬件电路设计电子时钟硬件电路设计................................................. 12 3.2.1 3.2.1 时钟电路设计时钟电路设计时钟电路设计....................................................... 13 3.2.2 3.2.2 环境温度采集电路设计环境温度采集电路设计环境温度采集电路设计............................................... 13 3.2.3 3.2.3 显示电路显示电路显示电路........................................................... 14 3.2.4 3.2.4 按键电路设计按键电路设计按键电路设计....................................................... 15 3.2.5 3.2.5 闹铃电路设计闹铃电路设计闹铃电路设计....................................................... 17 3.2.6 3.2.6 复位电路设计复位电路设计复位电路设计....................................................... 17 第四章 电子时钟软件设计 ..............................................19 4.1 4.1 主程序设计主程序设计主程序设计........................................................... 19 4.2 4.2 子程序设计子程序设计子程序设计........................................................... 19 4.2.1 4.2.1 实时时钟日历子程序设计实时时钟日历子程序设计实时时钟日历子程序设计............................................. 19 4.2.2 4.2.2 环境温度采集子程序设计环境温度采集子程序设计环境温度采集子程序设计............................................. 20 4.2.3 4.2.3 显示子程序设计显示子程序设计显示子程序设计..................................................... 23 4.2.4 4.2.4 键盘扫描子程序键盘扫描子程序键盘扫描子程序 .. (23)4.2.5 4.2.5 闹铃子程序设计闹铃子程序设计闹铃子程序设计..................................................... 23 第五章 系统调试 .......................................................27 5.1 5.1 硬件调试硬件调试硬件调试............................................................. 27 5.1.1 5.1.1 单片机基础电路调试单片机基础电路调试单片机基础电路调试................................................. 27 5.1.2 5.1.2 显示电路调试显示电路调试显示电路调试....................................................... 29 5.1.3 DS1302电路调试电路调试 .................................................... ....................................................30 5.1.4 5.1.4 按键电路调试按键电路调试按键电路调试....................................................... 39 5.2 5.2 软件调试软件调试软件调试............................................................. 39 5.2.1 5.2.1 环境温度采集子程序调试环境温度采集子程序调试环境温度采集子程序调试............................................. 39 5.2.2 5.2.2 键盘子程序调试键盘子程序调试键盘子程序调试..................................................... 32 结 论论 . (33)参考文献参考文献 ..................................................... .. (42)致 谢谢 (43)第一章 引 言时间是人类生活必不可少的重要元素,如果没有时间的概念,社会将不会有所发展和进步。

电子行业数字电子时钟设计

电子行业数字电子时钟设计

电子行业数字电子时钟设计1. 概述数字电子时钟是一种能够以数字形式显示时间的电子设备。

它广泛应用于各个行业,尤其在电子行业中,数字电子时钟是一个非常重要的组成部分。

本文将介绍数字电子时钟的基本原理、设计流程以及注意事项,旨在为电子行业从业人员提供设计数字电子时钟的参考。

2. 基本原理2.1 时钟信号的生成数字电子时钟的核心是时钟信号的生成。

时钟信号可以通过多种方式生成,其中常用的方式是使用晶体管振荡器来产生稳定的方波信号。

晶体管振荡器的基本原理是利用晶体管的放大特性,将反馈信号输入到管子的基极并产生振荡。

通过适当调节电路参数,可以使振荡频率达到所需的时钟频率。

2.2 时间计数时钟信号生成后,接下来的步骤是对时钟信号进行计数。

计数可以通过计数器来完成,计数器是一种用于计数的逻辑电路。

在数字电子时钟中,使用的是二进制计数器。

二进制计数器具有多个输出引脚,每个输出引脚对应一个二进制位。

通过适当的电路连接和逻辑控制,可以实现对时间的精确计数。

2.3 数码管显示计数后,时钟信号需要通过数码管进行显示。

数码管是一种用于显示数字的电子元件。

数码管有多种类型,常见的有共阳数码管和共阴数码管。

在数字电子时钟设计中,可以根据需要选择合适的数码管类型。

根据计数器的输出,将相应的数字信号输入到数码管的控制引脚,数码管将会显示对应的数字。

3. 设计流程设计数字电子时钟的流程可以分为以下几个步骤:3.1 确定需求首先,需要明确数字电子时钟的需求。

包括时钟的显示格式、使用环境、界面布局等。

根据需求,确定时钟的设计参数。

3.2 选择器件根据需求和设计参数,选择合适的器件。

如晶体管、计数器、数码管等。

在选择器件时,需考虑器件的性能指标、功耗、稳定性等因素。

3.3 搭建电路根据选择的器件,搭建电路。

按照时钟信号的生成、时间计数和数码管显示的顺序连接电路。

在连接电路时,需注意电路连接的正确性和稳定性。

3.4 调试测试搭建完成后,进行调试测试。

电子时钟方案

电子时钟方案

电子时钟方案随着科技的发展,电子时钟成为了我们生活中必不可少的物品之一。

它不仅能精确地显示时间,还具备了实时数据显示、闹钟提醒等功能。

在本文中,将介绍一个基于微控制器的电子时钟方案,包括硬件设计和软件编程。

一、硬件设计1.主控芯片选择为了实现电子时钟的各种功能,我们选择了一款功能强大的微控制器作为主控芯片。

这款微控制器具备高性能、低功耗以及丰富的外设,能够满足时钟的各种需求。

2.显示模块设计电子时钟的核心部分是显示模块,我们选择了数码管作为显示器件。

数码管能够清晰地显示数字,而且功耗较低。

通过控制微控制器的输出口,我们可以实现对数码管的控制。

3.时钟电路设计为了保证电子时钟的精确性,我们需要设计一个稳定的时钟电路。

通常可以通过晶体振荡器和相关电路来实现。

通过对晶体振荡的分频,我们可以得到准确的时钟信号。

二、软件编程1.时钟显示功能编程的第一步是实现时钟的显示功能。

通过读取系统时钟信号,我们可以获取当前的时间,并将其转换为数字形式显示在数码管上。

同时,我们还需要编写代码来更新时钟的显示,以实现秒、分、时的无限循环。

2.实时数据显示功能除了时间的显示,电子时钟还可以显示其他实时数据。

例如,当前的温度、湿度、气压等信息。

通过连接传感器和采集模块,我们可以获取这些数据,并编写代码将其实时显示在数码管上。

3.闹钟功能电子时钟还具备闹钟提醒的功能。

我们可以设置闹钟时间,并在达到设定时间时触发提醒。

通过编写闹钟功能的代码,我们可以实现响铃、闪烁等提醒方式,以确保用户不会错过重要的事件。

4.按键控制功能为了方便用户的操作,我们可以通过添加按键来实现电子时钟的控制功能。

通过编写按键扫描和中断处理的代码,我们可以实现对时钟的调整、闹钟的设置等操作。

总结:通过对电子时钟方案的硬件设计和软件编程的介绍,我们可以看到电子时钟的制作并不复杂。

通过选择合适的主控芯片和显示模块,以及编写合适的软件代码,我们可以打造出功能强大、稳定可靠的电子时钟。

单片机电子时钟的设计

单片机电子时钟的设计

单片机电子时钟的设计一、设计目标与原理设计原理:1.使用单片机作为主控制器,通过系统时钟控制并计时,从而实现准确的时间显示。

2.利用矩阵键盘作为输入装置,通过按键输入来设置时间、闹钟等参数。

3.通过液晶显示屏显示时间、日期,以及其他相关信息。

4.利用蜂鸣器作为报警器,实现闹钟功能。

二、硬件设计1.单片机选择:选择一款适合的单片机芯片,如8051系列、PIC系列等,具备较强的扩展性和丰富的外设接口。

2.时钟模块:选择一个准确、稳定的时钟模块,如DS1302、DS3231等,可以提供标准的时间信号。

3.矩阵键盘:使用4x4的矩阵键盘,方便操作,实现对时钟的时间设置和闹钟等功能。

4.液晶显示屏:选择适合的液晶显示屏,显示时间、日期以及状态信息。

5.蜂鸣器:使用适当的蜂鸣器实现报警和闹钟功能。

6.电源:提供适当的电源电压和电流,保证设备正常运行。

三、系统架构设计1.硬件连接:将单片机与时钟模块、矩阵键盘、液晶显示屏和蜂鸣器连接起来,保证数据传输的正常进行。

2.时钟控制:通过单片机与时钟模块通信,获取当前的时间信息,并进行计时。

3.键盘输入:通过矩阵键盘检测按键输入,并根据不同的按键操作来实现时间设置、闹钟设置等功能。

4.显示控制:通过单片机控制液晶显示屏,将时间、日期等信息显示出来。

5.报警控制:根据闹钟设置的时间,通过单片机控制蜂鸣器实现报警和闹钟功能。

四、软件设计1.系统初始化:包括各个外设的初始化配置,如时钟模块的初始化、矩阵键盘的初始化等。

2.时钟控制:包括从时钟模块获取当前时间、计时等功能。

3.键盘输入处理:通过检测矩阵键盘的按键输入,实现对时间和闹钟等参数的设置。

4.显示控制:根据当前时间和设置的参数,将相应的信息显示在液晶显示屏上。

5.报警控制:根据闹钟设置的时间,控制蜂鸣器发出声音来实现报警和闹钟功能。

五、系统测试与优化1.硬件测试:对各个硬件模块进行测试,检查其是否正常工作。

2.软件测试:通过对软件功能的逐一测试,检查其是否符合设计要求。

电子时钟系统的设计与实现

电子时钟系统的设计与实现

课程名称:自动控制课程设计设计题目:电子时钟系统的设计与实现院系:专业:年级:姓名:指导教师:西南交通大学峨眉校区2010年7 月22日课程设计任务书专业姓名学号开题日期:2010年7月13 日完成日期:2010 年7 月22日题目电子时钟系统的设计与实现一、设计的目的通过课程设计,使学生巩固和加深对单片机基本知识的理解,学会查询资料、方案设计、方案比较,以及单元电路设计计算等环节,进一步提高学生综合运用所学知识的能力,提高分析解决实际问题的能力。

锻炼分析、解决电子电路问题的实际本领,通过此综合训练,为以后毕业设计打下一定的基础。

二、设计的内容及要求1、设计一个基于单片机的电子时钟,并且能够实现时分秒的显示和调节.2、系统显示器由6位数字型数码管组成,分别显示时间值的小时、分和秒.3、能够随时对当前时间进行调整。

4、能够随时输入定时(闹钟)时间.5、定时(闹钟)时间到,发出闹钟提醒信号.6、闹钟提醒信号的声音为断续形式,最长不超过1min.三、指导教师评语四、成绩指导教师(签章)年月日摘要随着电子技术的发展,计算机在现代科学技术的发展中起着越来越重要的作用.多媒体技术、网络技术、智能信息处理技术、自适用控制技术、数据挖掘与处理技术等都离不开计算机。

本课程设计是基单片机原理与接口技术的简单应用。

运用所学的单片机原理和接口技术知识完成电子时钟系统的设计与实现。

电子时钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。

由于数字集成电路技术的发展和采用了先进的石英技术,使电子时钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。

尽管目前市场上已有现成的电子表集成电路芯片出售,价格便宜、使用也方便,但鉴于电子时钟电路的基本组成包含了数字电路的主要组成部分,因此进行电子时钟的设计是必要的,用汇编语言设计电子时钟显示程序,要求根据输入程序显示电子时钟画面.研究电子时钟及扩大其应用,有着非常现实的意义。

数字电子钟施工设计方案及对策

数字电子钟施工设计方案及对策

一、设计方案1、总体设计方案说明及系统框图:数字钟是计时周期为24小时,显示满刻度为23时59分59秒,另外应有校时功能和报时功能。

一个根本的数字钟电路主要由译码显示器、“时〞,“分〞,“秒〞计数器、校时电路、报时电路和振荡器组成。

干电路系统由秒信号发生器、“时、分、秒〞计数器、译码器及显示器、校时电路、整点报时电路组成。

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

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

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

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

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

整点报时电路时根据计时系统的输出状态产生一脉冲信号,控制信号灯亮灭周期。

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

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

校时电路时用来对“时〞、“分〞、“秒〞显示数字进展校对调整的。

数字钟实际上是一个对标准频率〔1HZ〕进展计数的计数电路。

数字电子钟的总体框图如下列图所示。

系统框图:2、单元电路设计方案:1〕振荡器和分频器振荡器的作用是产生时间标准信号。

数字钟的精度就是主要取决于时间标准信的频率和稳定度。

所以,在实验中采用脉冲信号作为时间标准信号源。

2〕计数器根据计数周期分别组成两个60进制〔秒、分〕和一个24进制〔时〕的计数器。

把它们适当连接构成秒、分、时的计数,(分计数器中分的个位和十位计数单元的状态转换和秒计数器中的是一样的,只是它要把进位信号传输给时的个位计数单元。

) 实现计时功能。

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

电子时钟实验报告电子时钟实验报告一,实验目的1. 学习8051定时器时间计时处理、按键扫描及LED数码管显示的设计方法。

2. 设计任务及要求利用实验平台上4个LED数码管,设计带有闹铃功能的数字时钟二,实验要求A.基本要求:1. 在4位数码管上显示当前时间。

显示格式“时时分分”2. 由LED闪动做秒显示。

3. 利用按键可对时间及闹玲进行设置,并可显示闹玲时间。

当闹铃时间到蜂鸣器发出声响,按停止键使可使闹玲声停止。

4.实现秒表功能(百分之一秒显示)B.扩展部分:1.日历功能(能对年,月,日,星期进行显示,分辨平年,闰年以及各月天数,并调整)2.音乐闹铃(铃音可选择,闹铃被停止后,闪烁显示当前时刻8秒后,或按键跳入正常时间显示状态)3.定时功能(设定一段时间长度,定时到后,闪烁提示)4.倒计时功能(设定一段时间长度,能实现倒计时显示,时间长减到0时,闪烁提示)5.闹铃重响功能(闹铃被停止后,以停止时刻开始,一段时间后闹铃重响,且重响时间的间隔可调)三,实验基本原理利用单片机定时器完成计时功能,定时器0计时中断程序每隔0.01s中断一次并当作一个计数,设定定时1秒的中断计数初值为100,每中断一次中断计数初值减1,当减到0时,则表示1s到了,秒变量加1,同理再判断是否1min钟到了,再判断是否1h到了。

为了将时间在LED数码管上显示,可采用静态显示法和动态显示法,由于静态显示法需要译码器,数据锁存器等较多硬件,可采用动态显示法实现LED显示,通过对每位数码管的依次扫描,使对应数码管亮,同时向该数码管送对应的字码,使其显示数字。

由于数码管扫描周期很短,由于人眼的视觉暂留效应,使数码管看起来总是亮的,从而实现了各种显示。

1电子时钟实验报告四,实验设计分析针对要实现的功能,采用AT89S51单片机进行设计,AT89S51 单片机是一款低功耗,高性能CMOS8位单片机,片内含4KB在线可编程(ISP)的可反复擦写1000次的Flash只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准MCS- 51指令系统及80C51引脚结构。

这样,既能做到经济合理又能实现预期的功能。

在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,又能便于添加各项功能。

程序可分为闹钟的声音程序、时间显示程序、日期显示程序,秒表显示程序,时间调整程序、闹钟调整程序、定时调整程序,延时程序等。

运用这种方法,关键在于各模块的兼容和配合,若各模块不匹配会出现意想不到的错误。

首先,在编程之前必须了解硬件结构尤其是各引脚的用法,以及内部寄存器、存储单元的用法,否则,编程无从下手,电路也无法设计。

这是前期准备工作。

第二部分是硬件部分:依据想要的功能分块设计设计,比如输入需要开关电路,输出需要显示驱动电路和数码管电路等。

第三部分是软件部分:先学习理解汇编语言的编程方法再根据设计的硬件电路进行分块的编程调试,最终完成程序设计。

第四部分是软件画图部分:设计好电路后进行画图,包括电路图和仿真图的绘制。

第五部分是软件仿真部分:软硬件设计好后将软件载入芯片中进行仿真,仿真无法完成时检查软件程序和硬件电路并进行修改直到仿真成功。

第六部分是硬件实现部分:连接电路并导入程序检查电路,若与设计的完全一样一般能实现想要的功能。

最后进行功能扩展,在已经正确的设计基础上,添加额外的功能!五,实验要求实现A.电路设计1. 整体设计此次设计主要是应用单片机来设计电子时钟,硬件部分主要分以下电路模块:显示电路用8个共阴数码管分别显示,星期(年份),小时、分钟(月份)和秒(日),通过动态扫描进行显示,从而避免了译码器的使用,同时节约了I/0端口,使电路更加简单。

单片机采用AT89S51系列,这种单片机应用简单,适合电子钟设计。

电路的总体设计框架如下:2电子时钟实验报告输入部单输出部机晶振和复位2. 分块设计模块电路主要分为:输入部分、输出部分、复位和晶振电路。

2.1 输入部分输入信号主要是各种模式选择和调整信号,由按键开关提供。

以下为输入部分样例:由于其存在P0对于口,口。

还用到了特殊的P3在本实验中主要用用口输入按键信号,P0:高阻状态,为了实现开关功能,给其添加上拉电阻,具体如下图所示 3电子时钟实验报告输出部分2.2段数码管的位选和段选信号,闹铃脉冲信号,提示灯信号。

本电路的输出信号为7口连接上拉电阻P1故在本实验的数码管是共阴的,为了防止段选信号不能驱动数码管,口接入,如下图:P2后,再送段选信号,以提高驱动,位选信号直接从4电子时钟实验报告闹铃由P2.6端输出,模块如下:2.3 晶振与复位电路本实验单片机时钟用内部时钟,模块如下:复位电路为手动复位构成,模块如下:5电子时钟实验报告各模块拼接组合,电路总体设计图如下:B.程序设计B.1 程序总体设计本实验用汇编程序完成. 6电子时钟实验报告电子时钟实验报告结合电路图,程序设计的整体思路为:接通电源,数码管显示星期数,时,分,秒。

并且走时显示LED灯每隔1秒改变一次明暗,此为正常工作模式。

以下为在该工作方式下模式选择的按键方式:1. 按1键——日期模式。

显示年月日且可调整,调整状态指示灯亮。

日期调整对应键如下:6键——年(千位,百位),按一次该位加15键——年(十位,个位),按一次该位加14键——月,按一次该位加13键——日,按一次该位加10键——调整状态指示灯灭,返回主程序,显示时间2. 按2键——调时模式。

显示时分秒且可调整,调整状态指示灯亮。

时间调整对应键如下:6键——时,按一次该位加15键——分,按一次该位加14键——秒,按一次该位清00键——调整状态指示灯灭,返回主程序,显示时间3. 按3键——闹铃调整模式。

显示闹铃时刻且可调整,调整状态指示灯亮。

闹铃调整对应键如下:5键——时,按一次该位加14键——分,按一次该位加10键——调整状态指示灯灭,返回主程序,显示时间4. 长按4键——定时调整(倒计时)模式。

显示定时长度且可调整,调整状态显示灯亮。

定时调整对应键如下:6键——分,按一次该位加15键——秒,按一次该位加14键——开启定时功能,并显示倒计时0键——调整状态指示灯灭,返回主程序,显示时间5. 按5键铃声测试,扬声器播放音乐。

6. 按下7键,进入秒表模式,显示秒表走时。

拨上7键,秒表暂停;按下7键,秒表又继续走时。

按下8键,秒表清零。

0键——调整状态指示灯灭,返回主程序,显示时间8电子时钟实验报告7. 按下8键,数码管熄灭,时钟仍在走时,进入节能模式。

拨上8键,数码管亮,恢复普通工作模式。

8. 9键为闹铃启动(停止)键,按下可以选择是否要闹铃,以及在闹铃响起时,按此键可以停止闹铃。

9. 10键为铃声选择开关,按下与否,可以选择两手音乐。

10. 11键为闹铃重响控制开关,重响功能开启时,从闹铃随音乐结束而结束的时刻开始,或从手动按9键停止闹铃的时刻开始定时,一段时间后闹铃重响。

11. 12键为闹铃重响间隔选择开关,可选两个定时长度,以便在闹铃重响功能开启时,闹铃初次响后,过一段时间闹铃继续响。

B.2 程序主要模块B.2.1 延时模块数码管显示动态扫描时,用到延时程序,这里使用延迟1ms的程序,此程序需要反复调用程序如下:D_1MS:MOV R7,#2D_5:MOV R2,#250DJNZ R2,$DJNZ R7,D_5RET除数码管动态扫描外,数码管的闪烁提示,以及音乐模块也用到了延时,只是延时的长短不同罢了,在此不再赘述。

B.2.2中断服务程序本实验中,计数器T0,T1中断都有运用,其中T0中断为时钟定时所用,T1中断用于音乐播放。

T0的定时长度为0.01s,工作于方式1,计数1次,时长1us,故计数器计数10000次,进入中断,计数初值为65536-10000=55536=#0D8F0,装满定时器需要0.01s的时间,从而100次中断为一秒,一秒之后,判断是否到60秒,若不到则秒加一,然后返回,若到,则秒赋值为0,分加一,依次类推。

包括日期显示的功能也是如此。

另外,由于要实现倒计时功能,因此在中断程序中还要加入减一的寄存器,需要时将其进行显示。

基于以上考虑,以R3为倒9电子时钟实验报告计时中的秒,R4为倒计时的分,当秒加1时R3减一,减到0之后,秒赋值为59,分减一,直到分为0。

以下为定时中断流程图:R3,R4所存定时长度减1分,时,日周,月,年的进位RETI 中断返回10电子时钟实验报告计数器T1工作于方式1,当调用响铃程序时,其计数功能开启,为音乐音调不同频率的方波的形成,提供延时。

其中断服务程序就是根据音调改变音乐方波输出口电平的高低,用语句 CPL 实现。

中断服务程序中日历的实现较为复杂,要考虑平年,闰年,特殊的2月,每月的天数的不尽相同。

具体的逻辑判断方法为:首先,要考虑年份是不是闰年,闰年的判断方法是:将年份除以100,若能整除,则将年份除以400,若还能整除,则为闰年,若不能,则为平年;若不能被100整除,则判断是否能被4整除,若能,则为闰年,若不能则为平年。

只有2月与平、闰年相关,因此在闰年和平年的子程序中,要判断是不是2月,若是则在相应的年中进行日期的增加,若不是则转入平时的月份。

其中1、3、5、7、8、10、12月是每月31天,4、6、9、11月为每月30天。

日历进位判断流程图如下:年份能否被100整除N Y年份是否能被400整除年份是否能被4整除YNYN闰年平年月是不是月22是不是YYNN1>=28之后返回为日1之后返回为日>=29若月份为1、3、5、7、8、10、12月则调用31天的程序若月份为4、6、9、11则调用30天的程序11电子时钟实验报告本实验用8个数码管,刚好能显示年,月,日,扫描显示与时间的扫描显示类似。

年比较特殊,由两个寄存器存储,个位,十位为0时,表明年数能被100整除,若此时千位,百位组成两位数能被4整除,则年数被400整除,为闰年。

若十位,个位组成两位数能被4整除,则年数能被4整除,为闰年。

B.2.3主程序主程序主要对按键进行扫描,以及判断定时和闹铃时间是否已到,若到则调用相关程序,该段程序如下:MAIN:JNB P3.0,DATETZ ;按下0键,显示日期并可对日期进行调整JNB P3.1,ZSTZ1 ;按下1键,显示时间,并可调时JNB P3.2,NLTZZ ;按下2键,进行闹铃设置JNB P3.3,DSTZ ;按下3键,进行定时设置JNB P3.4,CESHI ;闹铃测试JNB P3.6,STOPWATCHTZ ;按下6键,进入秒表方式ACALL DISP ;调用时钟显示子程序JNB P0.6,RERING ;判断是否开启闹铃重响功能RE: JNB P2.7,DSPDKQ ;判断是否开启闹铃功能,没开则去判断定时FMQPD: ;判断定时值R4,R3是否到零、闹铃时刻是否已到MOV A,HOUR;SUBB A,38H;JZ FEN ;判断小时数是否到闹铃所定时间,若到,则对分进行判断;若不到,则对定时进行判断AJMP DSPDKQ12电子时钟实验报告FEN:MOV A,MINUTE;SUBB A,37H;JZ MIAO ;判断分是否到闹铃所定时间,若到,则对秒进行判断;若不到,则对定时进行判断AJMP DSPDKQMIAO:MOV A,SECONDSUBB A,#0JZ SHENGYIN1 ;判断秒是否到闹铃所定时间,若到,则时,分,秒都到达闹铃时刻,进入响铃子程序;若不到则判断定时AJMP DSPDKQRERING: ;闹铃重响判断程序JNB F0, RE ;标志位F0为0,不进行闹铃重响设定CPL F0MOV 3CH,#1 ;定时判断标志位赋1,定时判断功能开启JNB P0.7,M1 ;闹铃重响间隔时间选取MOV R4,#0 ;闹铃重响间隔30秒MOV R3,#30AJMP MAINM1: ;闹铃重响间隔60秒MOV R4,#1MOV R3,#0AJMP MAINDSPDKQ: ;判断是否应该进行定时判断MOV A,3CH ;3CH是引入的判断因子,当其为0时,不对定时时间是否到0进行判断JNZ DSPD2 ;当3CH不是0时,跳转到定时判断程序13电子时钟实验报告AJMP MAINDSPD2:MOV A,R4;JZ S_PD ;R4所存定时分数为0,则转而判断R3所存定时秒数AJMP MAIN;S_PD:MOV A,R3;JNZ MAIN ;R4,R3所存参数减为0,定时长度已到闹铃重响功能开启时,跳入响铃程序 JNB P0.6,SHENGYIN2 ;不是闹铃重响定时,则定时时间到时,跳入提示程序AJMP TISHI ;AJMP MAINCESHI:ACALL RINGAJMP MAINSHENGYIN1: ;调用响铃子程序LCALL RINGAJMP MAINSHENGYIN2:闹铃重响标志位设定SETB F0 ; LCALL RING ;响铃标志位复位CLR F0 ;AJMP MAINNLTZZ:AJMP NLTZ1 ;跳入闹铃调整程序DSTZ:14电子时钟实验报告AJMP DSTZ1 ;跳入定时调整程序DATETZ:AJMP DATETZ1 ;跳入日期调整程序STOPWATCHTZ:AJMP STOPWATCHTZ1 ;跳入秒表程序B.2.4 显示子程序8个数码管轮流进行显示,分别显示1ms,依赖人的视觉暂留效应,给人以数码管持续高亮的错觉。

相关文档
最新文档