LED数码管显示电子钟设计

合集下载

单片机课程设计报告--电子时钟(2021整理)

单片机课程设计报告--电子时钟(2021整理)

一、设计内容该课程设计是利用MCS-51单片机内部的定时/计数器、中断系统、以及行列键盘和LED显示器等部件,设计一个单片机电子时钟。

设计的电子时钟通过数码管显示,并能通过按键实现设置时间和暂停、启动控制等。

二、电子时钟设计思想:用定时/计数器T0,工作于定时,采用方式1,对12MHZ的系统时钟进行定时计数,初值设为XXYY〔自己计算〕。

形成定时时间为50ms。

用片内RAM的7BH单元对50ms 计数,计20次产生秒计数器78H单元加1,秒计数器加到60那么分计数器79H单元加1,分计数器加到60那么时计数器7AH单元加1,时计数器加到24那么时计数器清0。

然后把秒、分、时计数器分成十位和个位放到8个数码管的显示缓冲区,通过数码管显示出来。

显示格式为小时十位、小时个位---分十位、分个位---秒十位、秒个位。

在处理过程中加上了按键判断程序,能对按键处理。

三、MCS-51单片机系统简介单片机应用系统由硬件系统和软件系统两局部组成。

硬件系统是指单片机以及扩展的存储器、I\O接口、外围扩展的功能芯片以及接口电路。

软件系统包括监控程序和各种应用程序。

在单片机应用系统中,单片机是整个系统的核心,对整个系统的信息输入、处理、信息输出进行控制。

与单片机配套的有相应的复位电路、时钟电路以及扩展的存储器和I\O接口,使单片机应用系统能够运行。

在一个单片机应用系统中,往往都会输入信息和显示信息,这就涉及键盘和显示器。

在单片机应用系统中,一般都根据系统的要求配置相应的键盘和显示器。

配置键盘和显示器一般都没有统一的规定,有的系统功能复杂,需输入的信息和显示的信息量大,配置的键盘和显示器功能相对强大,而有些系统输入/输出的信息少,这时可能用几个按键和几个LED 指示灯就可以进行处理了。

在单片机应用系统在中配置的键盘可以是独立键盘,也可能是矩阵键盘。

显示器可以是LED指示灯,也可以是LED数码管,也可以是LCD显示器,还可以使用CRT显示器。

LED数码管设计的可调式电子钟说明说

LED数码管设计的可调式电子钟说明说

LED数码管设计的可调式电子钟说明说可调式电子钟的设计理念是提供用户多样化的时间显示和闹钟设定选项,以满足用户不同的需求和喜好。

以下是对设计的详细说明:1.数码管显示:LED数码管采用7段共阳极连接方式,每个数码管由7个LED灯组成,通过控制各个LED灯的点亮与否,可以显示0-9的数字。

数码管的显示仿真效果要清晰、鲜明,确保用户可以轻松辨认时间。

2.时间调节功能:可调式电子钟具备时间调节的功能,用户可以通过按钮或旋钮调整时间。

其中旋钮可以实现小时和分钟的调节,而按钮可以实现小时和分钟的增加或减少。

设计时需考虑人机交互的便利性,确保时间调节操作简单明了。

3.闹钟设定:可调式电子钟还具备闹钟功能,用户可以设定一个或多个闹钟时间点。

用户可以通过按钮或旋钮设置闹钟的小时和分钟,还可以设定是否重复响铃。

闹铃可以通过声音、震动或LED灯闪烁等方式提醒用户。

为了避免误操作,设计时需要考虑设置闹钟的过程,确保用户能够轻松设置闹钟。

4.电源供应:可调式电子钟可采用外部电源或内置电池供电。

设计时需考虑到电源的稳定性和可靠性,确保时钟长时间准确运行。

当外部电源断开时,内置电池可以提供备用电源,防止时间设置的丢失。

5.背光功能:可调式电子钟还可以考虑添加背光功能,在光线不好的情况下,用户可以通过按下按钮或通过传感器自动点亮背光。

背光的亮度可以根据用户偏好进行调节。

6.美观设计:除了功能性,可调式电子钟的外观设计也很重要。

设计时可以考虑采用简约设计风格,以及时尚的外壳材料。

同时,数字显示的对齐和间距,以及按钮和旋钮的位置、大小都需要细致推敲,确保整体外观美观大方。

总之,可调式电子钟的设计需要满足用户对时间显示和闹钟功能的需求。

通过合理的控制功能,人性化的设计以及简洁好看的外观,可为用户提供一台方便、易用的电子钟。

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

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

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

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

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

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

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

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

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

5)内含128字节RAM。

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

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

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

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

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

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

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

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

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

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

[整理]LED 电子钟 显示时间.

[整理]LED 电子钟 显示时间.

《单片机技术》课程设计任务1、本课题任务如下:设计一个具有特定功能的电子钟。

该电子钟上电或按键复位后能自动显示系统提示符“P.”,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从0时0分0秒开始运行,进入时钟运行状态;再次按电子钟启动/调整键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按启动/调整键再次进入时钟运行状态。

2、本课题要求如下:(1)在AT89S51的P0口和P2口外接由六个LED数码管(LED5~LED0)构成的显示器,用P0口作LED的段码输出口(P0.0~P0.7对应于LED的a~dp),P2.5~P2.0作LED的位控输出线(P2.5~P2.0对应于LED5~LED0),P1口外接四个按键A、B、C、D(对应于P1.0~P1.3)。

(2)、利用六个LED显示当前时间。

(3)、四个按键的功能:A键用于电子钟启动/调整;B键用于调时,范围0-23,0为24点,每按一次时加1;C键用于调分,范围0-59,0 为60分,每按一次分加1;D键用于调秒, 范围0-59,0为60秒,每按一次秒加1。

方案四: 独立式按键,LED动态显示。

该方案方框图如图1.2.4所示,独立式按键直接与单片机I/O口相连构成键盘,每个按键不会相互影响,因本系统用到的按键比较少,采用独立式键盘不会浪费I/O口线,所以本系统采用独立式键盘。

动态显示的亮度虽然不如静态显示,但其硬件电路较简单,可节省硬件成本,虽然动态扫描需占用CPU较多的时间,但本系统中的单片机没有很多实时测控任务,因此,本系统采用此种方案。

本设计中的电子钟的核心是AT89S51单片机,其内部带有4KB在线可编程Flash存储器的单片机,无须外扩程序存储器,硬件电路主要由四部分构成:时钟电路,复位电路,键盘以及显示电路。

时钟电路是电子表硬件电路的核心,没有时钟电路,电子表将无法正常工作计时。

本系统时钟电路采用的晶振的频率为12MHz,定时器采用的是定时器0工作在方式1定时,用于实现时、分、秒的计时,定时时间为62.5ms。

简易电子钟设计范文

简易电子钟设计范文

简易电子钟设计范文电子钟是一种通过电子技术实现时间显示的设备。

它通常由一个数字显示屏,一个控制电路和一个电源组成。

其主要功能是显示小时、分钟和秒钟等时间信息,可以准确地显示时间,并可以根据需要设置闹铃功能。

设计一款简易电子钟可以使用Arduino等开发板或单片机来实现。

首先,我们需要选择一块合适的数字显示屏。

常见的数字显示屏有数码管和液晶显示屏两种类型,它们的显示原理和控制方式有所不同。

如果选择数码管作为显示屏,可以考虑使用常见的7段数码管,它由八个LED灯组成,可以显示0-9的数字以及一些字母和特殊符号。

数码管的控制方式是通过控制每个LED灯的亮灭来实现显示,可以使用数字输出口来控制。

Arduino的数字输出口可以输出高电平(5V)和低电平(0V),通过控制输出口的电平,就能够控制数码管的亮灭。

如果选择液晶显示屏作为显示器,可以选择字符型液晶显示屏或者图形型液晶显示屏。

字符型液晶显示屏通常可以显示一些字符或者数字,它的控制方式是通过并行或者串行接口来控制,可以使用开发板的GPIO口来实现。

图形型液晶显示屏可以显示更多的信息,它的控制方式是通过SPI接口或者I2C接口来控制,这需要相应的驱动库或者芯片来实现。

无论选择数码管还是液晶显示屏,我们都需要编写程序来控制显示。

程序的核心是一个循环,其中使用时钟模块来获取当前的时间,并使用相应的控制方式将时间信息显示在显示屏上。

如果需要设置闹铃功能,可以在循环中判断当前时间和设置的时间是否相等,如果相等则触发闹铃。

设计一个简易电子钟的完整步骤如下:1. 选择适合的开发板或者单片机,例如Arduino。

2.选择合适的显示屏,例如7段数码管或者液晶显示屏。

3.连接显示屏到开发板,根据显示屏的类型选择合适的引脚连接方式。

4.编写代码来控制显示屏显示时间信息。

5.添加时钟模块,用来获取当前的时间信息。

6.根据需要添加闹铃功能。

7.测试电子钟的功能和性能,不断优化改进。

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

电子设计自动化(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 数码管时钟显示屏的组成及工作原理一、时钟显示屏的组成数码管时钟显示屏的组成电路如图所示:由电源电路,单片机最小系统,时钟电路,键盘电路,数码管驱动显示电路,温湿度检测电路,红外接收电路,光亮度检测电路,语音报时电路、电器控制电路,通讯电路等组成。

图3-1 多功能时钟显示屏的组成框图二、时钟显示屏的工作原理时钟显示屏以单片机为核心完成对时钟芯片DS1302管理和数码管的驱动显示控制。

数码管采用静态显示方式,由多片串入并出芯片74HC595(功能等同74HC164)级联的方式进行驱动。

通过温湿度传感器实现温湿度的检测,红外接收电路完成无线调表和多种定时等时钟功能的设置,用按键也可实现时钟调整等以及各种时钟功能的设定。

光亮传感器可以监测环境明暗,实时调整数码管的显示亮度。

语音报时电路实现语音报时,电器控制电路可实现家用电器的定时控制或者上课打铃的控制等,通讯电路可进行有线、无线通讯、控制等。

单片机最小系统数码管红外接收电路键盘电路温湿度传感器光亮检测电路驱动电路语音报时电路通讯电路电器控制电路扩展接口时钟电路功能与特点一、功能:1、年、月、日、时、分、秒、星期;2、温度、湿度检测与显示;3、农历日期的显示;4、手动按键调表;5、红外遥控器调表;6、预留光亮度检测及显示亮度的自动调整;7、预留继电器控制(10A,可实现定时打铃、家电定时控制等);8、预留语音报时和音乐报时功能;9、预留RS232和485串行通讯接口,实现与微机通讯或者远程通讯;10、预留蜂鸣器提示音功能;11、预留无线通讯接口,可实现无线通讯;12、预留I/O接口,方便今后功能扩展。

13、电源保护电路,防止电源反接烧坏路线板元件;二、特点:1、大尺寸,由1.5~2.3寸数码管显示;2、农历、星期能尾随日期变化自动调整;3、采用时钟芯片和备用电池,走时准确,断电不影响计时;4、静态显示工作模式,延长时钟显示屏使用寿命;5、采用新型单片机功能更强、速度更快;6、硬件设计功能丰富;7、可实现数码管显示亮度随环境明暗自动调节,人性化设计,使用舒适;8、可实现多种显示模式,以实现节能目的;9、软件开辟可实现多种扩展功能;10、插接件接口设计,便于组装、维护。

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

《单片机原理及应用》课程设计说明书题目LED数码管显示电子钟设计系(部)专业(班级)姓名学号指导教师起止日期课程设计任务书系(部): 专业:目录一、摘要单片机全称为单片机微型计算机(Single Chip Microsoftcomputer).从应用领域来看,单片机主要用来控制,所以又称为微控制器(Microcontroller Unit)或嵌入式控制器。

单片机是将计算机的基本部件微型化并集成在一块芯片上的微型计算机。

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

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

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

时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础.在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:DS1302,DS12887,X1203等都可以满足高精度的要求。

二、设计内容2.1、任务要求本次设计时钟电路,使用了A TC89C51单片机芯片控制电路,单片机控制电路简单且省去了很多复杂的线路,使得电路简明易懂,使用键盘键上的按键来调整时钟的年、月、日、时、分、秒,还有设定闹钟,用一扬声器来进行定时提醒,同时使用汇编语言程序来控制整个时钟显示,使得编程变得更容易,这样通过四个模块:键盘、芯片、扬声器、LED显示即可满足设计要求.2。

2、设计程序方案设计程序思路:1.实现8位数码管动态扫描显示void Display_1Code(unsigned char pos,unsigned char code1);void Display_2Num(unsigned char pos,unsigned char num,unsigned char point);数码管动态扫描就是:段显位选延时显示消影因为我们用的是共阳数码管,而段码表用的共阴的,所以对code1取反共阳数码管高电平点亮,所以P2移位后不用取反,从高位开始是第1个数码管掩饰显示1ms,P2给全0全部熄灭,消影作用.2。

时间显示采用实时时钟芯片DS1302,读芯片的datasheet,根据时序等说明编写驱动程序。

1)初始化void DS1302_Init(void)2)底层基本读写函数void DS1302_WriteByte(unsigned char byte)unsigned char DS1302_ReadByte(void)3)对芯片寄存器的读写函数void DS1302_WriteData(unsigned char addr,unsigned char mdata)unsigned char DS1302_ReadData(unsigned char addr)4)修改时间函数void DS1302_RWriteData(unsigned char addr,unsigned char mdata)这些函数的实现就看dagasheet了,主要是时序a.时钟上升沿写入数据b。

时钟下降沿读出数据c。

秒寄存器最高位为1关闭时钟,为0则开启时钟5)显示时间和日期void Display_Time(void)显示时分秒,0x40为显示横,如12-30-00void Display_Date(void)显示日期,如20131230,中间没有横杆,但是在年月日上有小数点,通过Display_2Num最后一个参数控制void Display(void)根据dis_mode变量选择当前显示的是时间还是日期还是闹钟。

GetDateTime读取时间并及闹钟时间做比较,检测是否到达闹钟时间。

6)扫描方式动态扫描,定时器0控制扫描周期,10ms扫描一次void Timer0_OVF(void)interrupt 1{TH0 = (65536-10000)/256;TL0 = (65536-10000)%256;}3.按键调时void KeyScanf(void)flag_alarm_mode是闹铃模式则按键退出闹铃并返回,一键关闭闹钟然后对setting_item变量自加,依次表示设置秒、分、时、天、月等等,设置项对应的小数点位点亮.加键一样的过程,根据setting_item的值加不同的量:秒、分、时。

记住改变时间后要修改DS1302芯片的寄存器才能真正修改时间。

2。

3 设计电路仿真图数码管显示模块:图1 数码管显示模块数码管是一种把多个LED显示段集成在一起的显示设备。

有两种类型,一种是共阳型,一种是共阴型。

共阳型就是把多个LED显示段的阳极接在一起,又称为公共端。

共阴型就是把多个LED显示段的阴极接在一起,即为公共商.阳极即为二极管的正极,又称为正极,阴极即为二极管的负极,又称为负极.通常的数码管又分为8段,即8个LED显示段,这是为工程应用方便如设计的,分别为A、B、C、D、E、F、G、DP,其中DP 是小数点位段.系统采用动态显示方式,用P0口来控制LED数码管的段控线,而用P2口来控制其位控线.动态显示通常都是采用动态扫描的方法进行显示,即循环点亮每一个数码管,这样虽然在任何时刻都只有一位数码管被点亮,但由于人眼存在视觉残留效应,只要每位数码管间隔时间足够短,就可以给人以同时显示的感觉。

本设计采用共阳极数码管。

晶振电路模块:在AT89S51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2.而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。

时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。

图2 晶振电路按键模块:时间计数电路由秒个位和秒十位计数器、分个位和分十位计数器、时个位和时十位计数器及星期计数器电路构成,其中秒个位和秒十位计数器、分个位和分十位计数器为60进制计数器,时个位和时十位计数器为24进制计数器.图3 按键模块时钟芯片电路:X1 X2 : 32.768晶振管脚GND :地RST : 复位脚I/O :数据输入/输出引脚SCLK :串行时钟VCC1,VCC2 :电源供电管脚图4 时钟芯片电路电路总体设计仿真图:图5 总体仿真图按菜单/显示时间键会出现一个小光标点,再按菜单/显示时间键,光标点会左移,按加速或者减速键会加减数值。

继续按菜单/显示时间键跳到显示日期、闹钟时,也可以用加速或者减速键调整时间。

按减速/显示闹钟键会显示闹钟.按加速/显示日期键会显示日期。

5s后会自动恢复到显示时间。

操作方便简洁.图6 日期显示图7 闹钟显示三、心得体会单片机作为我们主要的专业课程之一,我觉得单片机课程设计很有必要,而且很有意义.在这次课程设计中,运用到了很多以前的专业知识,虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的一大收获。

站在库的位置上想问题。

另外,要做好一个课程设计,就必须做到:在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美及否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常的,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题的课程设计结束了,但是从中学到的知识会让我受益终身。

发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中.虽然有些程序不是那么清楚理解,自己好好查阅资料,不懂还可以请教老师、同学.当我有什么不明白的地方去向其他同学请教时,即使他们正在忙于思考,也会停下来帮助我。

当我有什么想法告诉他们的时候,他们不会因为我得无知而不耐心听我讲,反而会指出我的不足,一起提高.学到了共同探讨、共同前进的精神,也让我明白谦虚好学的真谛设计过程,常有一些不如意,但毕竟这是第一次做,难免会遇到各种各样的问题。

在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,不能灵活运用。

在以后的学习过程中我会努力的。

四、参考文献[1]谢自美.电子线路设计·实验·测试[M].武汉:华中理工大学出版社,1992.[2] 何立民.单片机应用系统设计[M].北京:北京航空航天大学出版社,1993.[3]楼然笛.单片机开发[M].北京:人民邮电出版社,1994.[4] 付家才.单片机控制工程实践技术[M].北京:化学工业出版社2004.3.[5]李光才.单片机课程设计实例指导[M].北京:北京航空航天大学出版社2004。

[6] 刘湘涛.江世明.单片机原理及应用[M]. 北京:电子工业出版社2006。

程序:/****************************************************************程序功能: 数码管+DS1302的可调时钟(含一个闹钟功能) ** CPU 型号: AT89C51 **晶振频率: 12.0000MHz **时间: 2013-12—29 **作者:唐蜜珠**学号: 20110261xx **班级: 11电子1班**说明:单片机课程设计****************************************************************/#include <reg52。

h〉/*设置项序号宏定义*/#define SETTING_NONE 0#define SETTING_SECOND 1#define SETTING_MINUTE 2#define SETTING_HOUR 3#define SETTING_DAY 4#define SETTING_MONTH 5#define SETTING_YEAR 6#define SETTING_ALARM_SECOND 7#define SETTING_ALARM_MINUTE 8#define SETTING_ALARM_HOUR 9/*显示状态宏定义*/#define DIS_MODE_TIME 1 /* 显示时间*/#define DIS_MODE_DATE 2 /* 显示日期*/#define DIS_MODE_ALARM 4 /*显示闹钟*//*闹钟响/停控制宏定义 */#define ALARM_ON 1 /* 闹钟响 */#define ALARM_OFF 0 /*闹钟停 */#define ALARM_MODE_NONE 0#define ALARM_MODE_ALARM 1#define ALARM_MODE_POINT 2#define ALARM_MODE_DELAY 3/* DS1302时钟芯片引脚定义 */sbit DS1302_DATA = P1^0;sbit DS1302_SCLK = P1^1;sbit DS1302_CE = P1^2;/*按键引脚定义*/sbit KeyMenu = P3^5;sbit KeyAdd = P3^6;sbit KeyDec = P3^7;/*闹钟蜂鸣器引脚定义*/sbit Beep = P1^7;/* 共阴数码管段码表 */unsigned char code codeSeg7[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,};/* 时间/日期相关变量*/unsigned char century = 21,year,month,day,hour,minute,second;/*闹钟变量 */unsigned char alarm_hour,alarm_minute,alarm_second;/* 当前设置项序号变量,初始化为SETTING_NONE表示非设置模式 */unsigned char setting_item = SETTING_NONE;/* 显示状态变量, 初始化为DIS_MODE_TIME显示时间*/unsigned char dis_mode = DIS_MODE_TIME;/* 闹钟响标志:0-闹钟没响 1—闹钟响 */unsigned char flag_alarm_mode = 0;/*闹钟响延时时间控制变量, 16位 */unsigned int alarm_delay;unsigned char point_count;/********************************//* 函数功能:约xms毫秒延时*//* 入口参数:xms—延时xms毫秒*//* 出口参数:无*//********************************/void DelayMs(unsigned int xms){unsigned int i,j;for(i=xms;i〉0;i—-)for(j=110;j〉0;j—-);}/*****************************************************************************************************//*函数功能:定时器延时控制*//*入口参数:mode-闹钟、整点报时、5s回显时间模式控制 alarmonoff—闹钟响(1)不响(0) delay-延时时间(秒)*//*出口参数:无*//*****************************************************************************************************/void Alarm(unsigned char mode,unsigned char alarmonoff,unsigned char delay){flag_alarm_mode = mode; /* 保存显示模式设置 */Beep = !alarmonoff; /* 操作蜂鸣器, 硬件电路为0响*/alarm_delay = delay * 100;/* alarm_delay为定时器0溢出中断计数, 10ms时基, 乘以100为1s */}/********************************//*函数功能:DS1302写字节*//*入口参数:byte-写入字节*//* 出口参数:无*//********************************/void DS1302_WriteByte(unsigned char byte){unsigned char i;for(i=0;i<8;i++){DS1302_SCLK = 0;byte 〉>= 1;/* BIT0数据移到CY寄存器 */DS1302_DATA = CY;/* 将CY寄存器的值写到DS1302数据引脚 */DS1302_SCLK = 1; /* 在时钟上升沿写入*/}}/********************************//*函数功能:DS1302读字节*//*入口参数:无*//* 出口参数:返回读取的字节数据*//********************************/unsigned char DS1302_ReadByte(void){unsigned char i,byte = 0;DS1302_SCLK = 1;for(i=0;i<8;i++)//读数据{byte 〉>= 1;DS1302_SCLK = 0; /*时钟下降沿读取*/if(DS1302_DATA) /*读取引脚状态 */byte |= 0x80; /*保存 */DS1302_SCLK = 1;}return (byte);}/******************************************//*函数功能:写DS1302 *//*入口参数:addr—写目标地址, mdata—待写数据*//*出口参数:无*//******************************************/void DS1302_WriteData(unsigned char addr,unsigned char mdata)//向DS1302写数据{DS1302_CE = 0;DS1302_SCLK = 0;DS1302_CE = 1; /* 使能DS1302 */DS1302_WriteByte(addr); /* 写入地址*/DS1302_WriteByte(mdata);/*写入数据 */DS1302_CE = 0;}/********************************//*函数功能:读DS1302 *//*入口参数:addr—读目标地址 *//*出口参数:返回读到的数据 *//********************************/unsigned char DS1302_ReadData(unsigned char addr) //向DS1302读数据{unsigned char mdata,mdatah,mdatal;DS1302_CE = 0;DS1302_SCLK = 0;DS1302_CE = 1;DS1302_WriteByte(addr);/* 写入地址*/mdata = DS1302_ReadByte(); /* 读出数据*/DS1302_CE = 0;mdatal = mdata & 0x0F;mdatah = (mdata>>4) & 0x0F;mdata = mdatal + mdatah * 10;/*十六进制转化为十进制*/return (mdata);}/**********************************************//*函数功能:修改DS1302的时间值*//*入口参数:addr—写目标地址, mdata-修改值 *//*出口参数:无 *//**********************************************/void DS1302_RWriteData(unsigned char addr,unsigned char mdata){unsigned char mdatah,mdatal;mdatal = mdata % 10;mdatah = mdata /10;mdata = mdatal + (mdatah〈〈4); /* 十进制转化为十六进制*/DS1302_WriteData(0x8e,0x00); /*关闭写保护 */DS1302_WriteData(addr,mdata); /*写入修改数据*/DS1302_WriteData(0x8e,0x80); /* 写保护使能*/}/********************************//*函数功能:初始化DS1302 *//*入口参数:无 *//*出口参数:无 *//********************************/void DS1302_Init(void){unsigned char mdata;DS1302_CE = 0;DS1302_SCLK = 0;DS1302_CE = 1;DS1302_WriteByte(0x81);mdata = DS1302_ReadByte(); /* 读秒寄存器*/if(mdata & 0x80)/* 秒寄存器最高位为时钟关闭位, 1—关闭 0-开启 */ {DS1302_RWriteData(0x80,0x00);/* 清除秒寄存器, 开启DS1302, 开始走时间 */ }DS1302_CE = 0;}/*********************************************************//*函数功能:判断当前设置项是否为参数所指 *//*入口参数:item—待比较的设置项编号 *//*出口参数:1-当前设置项为item所指 0—当前设置项非item所指*//*********************************************************/ unsigned char IsSettingItem(unsigned char item){return (setting_item == item);}/***************************************//*函数功能:点亮1位数码管 *//*入口参数:pos—显示位置 code1—显示段码*//*出口参数:无*//***************************************/void Display_1Code(unsigned char pos,unsigned char code1){P0 = ~code1; /* 设计采用共阳数码管,共阴段码取反 */P2 = (0x80 〉〉 pos); /*选择显示位置*/DelayMs(1);/*延时显示1ms */P2 = 0x00;/* 关闭所有数码管,消除重影 */}/**********************************************************************//*函数功能:显示两位数字 *//*入口参数:pos-显示的位置 num-待显示的数字 point-是(1)否(0)显示小数点*//*出口参数:无*//**********************************************************************/void Display_2Num(unsigned char pos,unsigned char num,unsigned char point){Display_1Code(pos,codeSeg7[num / 10]); /* 显示十位数 */Display_1Code(pos + 1,point?codeSeg7[num % 10] | 0x80 : codeSeg7[num % 10]);/*显示个位数,如果point为真,则最高位置1显示小数点 */}/********************************//*函数功能:显示实时时间 *//*入口参数:无 *//*出口参数: *//********************************/void Display_Time(void){Display_2Num(0,hour,IsSettingItem(SETTING_HOUR));/* 位置0显示小时,第三个参数表示是否显示小数点, 设置小时的时候显示,下同*/Display_1Code(2,0x40);/*显示横杆*/Display_2Num(3,minute,IsSettingItem(SETTING_MINUTE));Display_1Code(5,0x40);Display_2Num(6,second,IsSettingItem(SETTING_SECOND));}/********************************//*函数功能:显示当前日期*//*入口参数: *//*出口参数:*//********************************/void Display_Date(void){Display_2Num(0,century - 1,0);Display_2Num(2,year,IsSettingItem(0) || IsSettingItem(SETTING_YEAR)); /* IsSettingItem (0)表示非设置状态也显示小数点*/Display_2Num(4,month,IsSettingItem(0) || IsSettingItem(SETTING_MONTH));Display_2Num(6,day,IsSettingItem(0)|| IsSettingItem(SETTING_DAY));}/********************************//*函数功能:显示闹钟当前设置值*//*入口参数:无*//*出口参数:无*//********************************/void Display_Alarm(void){Display_2Num(0,alarm_hour,IsSettingItem(SETTING_ALARM_HOUR));Display_1Code(2,0x40);Display_2Num(3,alarm_minute,IsSettingItem(SETTING_ALARM_MINUTE));Display_1Code(5,0x40);Display_2Num(6,alarm_second,IsSettingItem(SETTING_ALARM_SECOND));}/********************************//*函数功能:显示管理 *//*入口参数:无*//*出口参数:无 *//********************************/void Display(void)。

相关文档
最新文档