LED数码管显示电子钟设计
单片机课程设计报告--电子时钟(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数码管设计的可调式电子钟说明说可调式电子钟的设计理念是提供用户多样化的时间显示和闹钟设定选项,以满足用户不同的需求和喜好。
以下是对设计的详细说明: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 电子钟 显示时间.
《单片机技术》课程设计任务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数字电子钟的设计一、设计任务与要求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数码管显示二、实验内容和实验目的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、插接件接口设计,便于组装、维护。
LED七段数码管数字钟
设 计 题 目: LED 七段数码管数字钟 学 院 名 称: 计算机科学与工程学院 专 业: 计算机科学与技术 班 级: 05计1 姓 名: 丁 琳 指导教师姓名: 白凤娥 指导教师职称: 教 授设 计 成 绩: 评 阅 教 师: 评 阅 日 期:2008年 12月 日微机原理与接口技术课程设计报告JIANGSU TEACHERS UNIVERCITY OF TECHNOLOGY目录一、设计任务书 (3)二、设计题目 (3)三、设计方案 (3)四、硬件原理 (4)1.七段数码管显示 (4)2.键盘扫描显示 (5)3.8253计数器和8259中断 (6)4.硬件连接 (6)五、程序流程图及程序清单 (7)1.七段数码管显示 (8)2. 键盘扫描显示 (9)3.定时器设计 (12)4.总程序设计 (15)六、调试过程及结果 (29)七、设计总结和体会 (30)八、参考文献 (30)一、设计任务书《微机原理及接口技术》是一门应用性、综合性、实践性较强的课程,没有实际的有针对性的设计环节,我们就不能很好的理解和掌握所学的技术知识,更缺乏解决实际问题的能力。
所以通过有针对性的课程设计,会使我们学会系统地综合运用所学的理论知识,提高我们在微机应用方面的开发与设计本领,系统的掌握微机硬软件设计方法。
通过课程设计实践,不仅要培养我们的实际动手能力,检验我们对本门课学习的情况,更要培养我们在实际的工程设计中查阅专业资料、工具书或参考书,掌握工程设计手段和软件工具,并能用设计报告表达设计思想和结果的能力。
培养我们实事求是和严肃认真的工作态度。
通过设计过程,要求我们熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,使我们得到微机开发应用方面的初步训练。
集体讨论设计题目的总体设计方案、编程、软件硬件调试、编写设计报告等问题,真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。
数码管时钟电路的设计
前言单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。
单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。
由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。
这次毕业设计通过对它的学习、应用,以AT89C205芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由直流电源供电,通过数码管能够准确显示。
.数字时钟是现代社会应用广泛的计时工具,在航天、电子等科研单位,工厂、医院、学校等企事业单位,各种体育赛事及至我们每个人的日常生活中都发挥着重要的作用。
本系统是基于AT89C2051单片机设计的一个具有六位LED显示的数字时实时钟,采用独立式按键进行时间调整,该系统同时具有硬件设计简单、工作稳定性高、价格低廉等优点。
目录摘要时钟,自从它发明的那天起,就成为人类的朋友,但随着时间的推移,科学技术的不断发展,人们对时间计量的精度要求越来越高,应用越来越广。
怎样让时钟更好的为人民服务,怎样让我们的老朋友焕发青春呢?这就要求人们不断设计出新型时钟。
现今,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。
本文利用单片机实现数字时钟计时功能的主要内容,其中AT89C2051是核心元件同时采用数码管动态显示“时”,“分”,“秒”的现代计时装置。
与传统机械表相比,它具有走时精确,显示直观等特点。
它的计时周期为24小时,显满刻度为“23时59分59秒”,另外具有校时功能,断电后有记忆功能,恢复供电时可实现计时同步等特点。
LED点阵显示电子钟课设
LED点阵显示电子钟课设部门: xxx时间: xxx制作人:xxx整理范文,仅供参考,可下载自行修改嵌入式系统设计课程设计题目基于AT89S52LED点阵显示电子钟设计班级11级工业电气学号姓名指导教师白龙牡丹江师范学院2018年11月15日嵌入式课程设计指导书课程名称:嵌入式课程设计学时数:2周学分数:开课院、系<部)、教研室:物理与电子工程学院电子信息教研室执笔人:白龙编写时间:2018.11.15一、设计目的<1)完成点阵显示电子钟设计电路的设计,包括电源电路、单片机控制电路、驱动电路、显示电路;<2)掌握LED点阵显示原理,并完成主程序的编写。
二、设计任务设计一个基于AT89S52LED点阵显示电子钟三、基本内容与要求1、课题内容:设计一种基于AT89S52单片机的LED点阵显示时钟。
2、要求如下:<1)、时钟的显示由LED点阵构成。
<2)、时间能够由按键调整,误差小于1S。
<3)、能正确显示时间,上电显示为12点。
四、设计资料及有关规定1.H型全桥式电路和L298构成电机驱动2.主控制器可以采用AT89S52或STC89C52五、设计成果要求设计论文六、物资准备1.到图书馆、物理系资料室查阅相关资料2.到实验室准备芯片作好实验准备七、主要图式、表式各功能模块电路图要求用电路绘图软件画出八、时间安排2018.11.1 设计动员,发放设计任务书2018.11.2-2018.11.3 查阅资料、拟定设计程序和进度计划20183.11.4-2018.11.10 确定设计方案、实验、画图、编写设计说明书2018.11.11-2018.11.13 完成设计,交指导教师审阅2018.11.14 成绩评定九、考核内容与方式考核的内容包括:学习态度;技术水平与实际能力;论文(计算书、图纸>撰写质量;创新性;采取审定与答辩相结合的方式,成绩评定按百分制记分。
b5E2RGbCAP十、参考书目1.单片机原理及接口技术陈毅刚2.新概念51单片机C语言教程郭天祥3.单片机原理与应用及C51程序设计牡丹江师范学院本科学生课程设计任务书课程名称:嵌入式课程设计目录1 绪论21.1LED点阵显示电子钟的背景及意义22.系统总体方案选择与说明22.1硬件结构22.2控制思想33.各单元硬件设计说明及计算方法33.1 74HC138说明33.274HC573说明43.3 8*8点阵显示屏说明54.软件设计与说明64.1设计流程图如下:64.2设计程序85. 调试结果与必要的调试说明186. 使用说明18致谢20参考文献21基于AT89S52LED点阵显示电子钟设计1 绪论1.1LED点阵显示电子钟的背景及意义在日常生活中,大家见到的都是数码管制作的电子钟,LED点阵时钟则不多见。
基于单片机的电子时钟的设计与实现
基于单片机的电子时钟的设计与实现电子时钟是一种使用微处理器或单片机作为主控制器的数字时钟。
它不仅能够显示当前时间,还可以具备其他附加功能,如闹钟、日历、温度显示等。
一、设计目标设计一个基于单片机的电子时钟,实现以下功能:1.显示时间:小时、分钟和秒钟的显示,采用7段LED数码管来显示。
2.闹钟功能:设置闹钟时间,到达设定的时间时会发出提示音。
3.日历功能:显示日期、星期和月份。
4.温度显示:通过温度传感器获取当前环境温度,并显示在LED数码管上。
5.键盘输入和控制:通过外部键盘进行时间、日期、闹钟、温度等参数的设置和调整。
二、硬件设计1.单片机选择:选择一款适合的单片机作为主控制器,应具备足够的输入/输出引脚、中断和定时器等功能,如STC89C522.时钟电路:使用晶振为单片机提供稳定的时钟源。
3.7段LED数码管:选择合适的尺寸和颜色的数码管,用于显示小时、分钟和秒钟。
4.温度传感器:选择一款适合的温度传感器,如DS18B20,用于获取环境温度。
5.喇叭:用于发出闹钟提示音。
6.外部键盘:选择一款适合的键盘,用于设置和调整时间、日期、闹钟等参数。
三、软件设计1.初始化:设置单片机定时器、外部中断和其他必要的配置。
2.时间显示:通过定时器中断,更新时间,并将小时、分钟和秒钟分别显示在相应的LED数码管上。
3.闹钟功能:设置闹钟时间,定时器中断检测当前时间是否与闹钟时间一致,若一致则触发警报。
4.日历功能:使用定时器中断,更新日期、星期和月份,并将其显示在LED数码管上。
5.温度显示:通过定时器中断,读取温度传感器的数据,并将温度显示在LED数码管上。
6.键盘输入和控制:通过外部中断,读取键盘输入,并根据输入进行相应的操作,如设置时间、闹钟、日期等。
7.警报控制:根据设置的闹钟时间,触发警报功能,同时根据用户的设置进行控制。
四、测试与调试完成软件设计后,进行系统测试与调试,包括验证显示时间、日期、温度等功能的准确性,以及闹钟和警报功能的触发与控制。
多功能电子钟的设计与实现课程设计说明
多功能电子钟的设计与实现课程设计说明多功能电子钟的设计与实现摘要电子时钟主要是利用电子技术将时钟电子化、数字化,拥有时钟精确、体积小、界面友好、可扩展性能强等特点,被广泛应用于生活和工作当中。
另外,在生活和体育赛场中,也常常需要跑秒,这就需要电子时钟具有多功能性。
本设计主要为实现一款可正常显示时钟,带有定时闹铃,跑秒的多功能电子时钟。
本文对当前电子钟开发手段进行了比较和分析,最终确定了采用单片机技术实现多功能电子时钟。
本设计应用AT89C51芯片作为核心,利用74LS164作为串入并出的寄存器,7位LED数码管显示,并且设置按键来对分秒小时闹铃等进行校对。
这种实现方法的优点是电路简单,性能可靠,实时性好,时间精度高,操作简单,编程容易。
该电子时钟可以应用于一般的生活和工作中,也可通过改装,提高性能,增加新功能,从而给人们的生活和工作带来更多的方便。
关键词:电子时钟;AT89C51;74LS164;LED;The Design with Investigation of the Multi-function Electron ClockAbstractElectronic clock is the use of electronic technology will be an electronic clock, digital, with the clock precision, small size and friendly interface, scalable performance, and other characteristics, are widely used to live and work. In addition, in the field of sports and life, often need to run second, which requires electronic clock with versatility.The main design for the realization of this can be a normal clock display, from time to time with alarm, running the second multi-function electronic clock.This article on the current development of the electronic clock means were compared and analyzed to determine the ultimate use of a single chip multifunctional electronic clock technology. AT89C51 chip design of this application as the core, to use as a 74LS164 and a string into the register, 7 LED digital display and button set up to every minute of the hour for alarm, and other proof-reading. This method has the advantage of a simple circuit, reliable and real-time, high-accuracy time, simple, easy to program.The electronic clock can be applied to general life and work, can also be modified to improve performance, add new functions to the people living and working more convenient.Key words: Electronic clock; AT89C51; 74LS164; LED;目录摘要 (I)Abstract .................................................................................................................................... I I 第一章引言 . (5)1.1 多功能电子时钟研究的背景和意义 (5)1.2 电子时钟的功能 (6)第二章电子时钟设计方案分析 (7)第三章基于单片机的电子时钟硬件设计 (8)3.1 主要IC芯片选择 (8)3.1.1微处理器的选择 (8)3.1.2寄存器的选择 (11)3.1.3显示器件的选择 (12)3.1.4看门狗器件的选择 (14)3.2 电子时钟硬件电路设计 (14)3.2.1 显示电路 (15)3.2.2 按键电路设计 (15)3.2.3 闹铃电路设计 (17)3.2.4 复位电路设计 (18)第四章电子时钟软件设计 (20)4.1 主程序设计 (20)4.2 子程序设计 (21)4.2.1 显示子程序设计 (21)4.2.2 键盘扫描子程序 (21)4.2.3闹铃子程序设计 (23)4.2.4跑秒子程序设计 (23)第五章系统调试 (24)5.1 硬件调试 (24)5.1.1 单片机基础电路调试 (24)5.1.2 显示电路调试 (25)5.2 软件调试 (27)结论 (28)参考文献 (29)附录A 程序............................................................................................................................... 附录B 多功能电子时钟硬件电路图......................................................................................... 致谢 .. (30)第一章引言时间是人类生活必不可少的重要元素,如果没有时间的概念,社会将不会有所发展和进步。
电子时钟实验报告电子时钟
电子时钟实验报告一、实验目的学习8051定时器时间计时处理、按键扫描及LED数码管显示的设计方法。
二、设计任务及要求利用实验平台上4个LED数码管,设计带有闹铃功能的数字时钟,要求:1.在4位数码管上显示当前时间,显示格式为“时时分分”;2.由LED闪动做秒显示;3.利用按键可对时间及闹玲进行设置,并可显示闹玲时间。
当闹玲时间到蜂鸣器发出音乐,按停止键使可使闹玲声停止。
三、工作原理及设计思路利用单片机定时器完成计时功能,定时器0计时中断程序每隔5ms中断一次并当作一个计数,每中断一次计数加1,当计数200次时,则表示1s到了,秒变量加1,同理再判断是否1min钟到了,再判断是否1h到了。
为了将时间在LED数码管上显示,可采用静态显示法和动态显示法,由于静态显示法需要数据锁存器等较多硬件,可采用动态显示法实现LED显示。
闹铃声由交流蜂鸣器产生,电路如右图,当P1.7输出不同频率的方波,蜂鸣器便会发出不同的声音。
四、电路设计及描述(1) 硬件连接部分:在ZKS-03单片机综合实验仪上有四位共阳LED数码管,其标号分别为LED1~LED4。
为了节省MCU的I/O口,采用串行接口方式,它仅占用系统2个I/O口,即P1.0口和P1.1口,一个用作数据线SDA,另一个用作时钟信号线CLK,它们都通过跳线选择器JP1相连。
由于采用共阳LED数码管,它的阴极分别通过限流电阻R20~R27连接到控制KD_0~KD_Q7。
这样控制8个发光二极管,就需要8个I/O口。
但由于单片机的I/O 口资源是有限的,因此常采用实验电路所示的串并转换电路来扩充系统资源。
串并转换电路其实质是一个串入并处的移位寄存器,串行数据再同步移位脉冲CLK的作用下经串行数据线SDA把数据移位到KD_0~KD_Q7端,这样仅需2根线就可以分别控制8个发光二极管的亮灭。
而P0口只能作地址/数据总线,P2口只能作地址总线高8位,P3.0、P3.1作为串行输入、输出接口,实验仪上单片机可用作I/O的口仅有:P1.0--P1.7 ,8位;P3.2、P3.3、P3.4、P3.5 ,4位。
led电子钟课程设计
led电子钟课程设计一、课程目标知识目标:1. 让学生理解电子时钟的基本工作原理,掌握LED显示技术的基本概念。
2. 使学生掌握电子时钟设计所需的数字电路知识,包括计时器、时钟信号发生器等。
3. 让学生了解并运用电子编程软件进行电子时钟程序设计。
技能目标:1. 培养学生运用所学知识设计并制作简单LED电子时钟的能力。
2. 培养学生动手实践能力,包括焊接、调试电子电路和编写程序。
3. 提高学生问题解决和团队协作能力,通过项目实践,学会分析问题、调试电路。
情感态度价值观目标:1. 培养学生对电子技术及创新实践的浓厚兴趣,激发学生学习主动性和积极性。
2. 培养学生严谨、细致、负责的科学态度,注重实验操作的安全性和环保意识。
3. 培养学生团队协作精神,学会尊重他人意见,共同完成项目任务。
本课程针对中学生设计,结合学生年龄特点和认知水平,以实践性、创新性为导向,注重培养学生的动手能力、创新思维和团队协作能力。
通过本课程的学习,使学生能够将所学知识应用于实际项目中,提高学生的综合素养。
二、教学内容1. 电子时钟原理:讲解电子时钟的基本工作原理,包括计时器、时钟信号发生器、时钟显示等组成部分。
- 相关教材章节:第二章第三节“电子时钟原理及其设计”2. 数字电路基础:介绍与电子时钟设计相关的数字电路知识,如门电路、触发器、计数器等。
- 相关教材章节:第一章“数字电路基础”3. LED显示技术:讲解LED显示技术的基本原理,包括LED数码管的结构、工作原理和驱动方式。
- 相关教材章节:第三章第一节“LED显示技术及其应用”4. 电子编程软件应用:介绍电子编程软件的使用方法,如Arduino、Keil等,学会编写电子时钟程序。
- 相关教材章节:第四章“电子编程软件及其应用”5. 实践操作:指导学生动手制作LED电子时钟,包括焊接、调试电子电路,编写程序,实现时钟功能。
- 相关教材章节:第五章“实践操作与项目制作”教学内容安排和进度:第一周:电子时钟原理学习,数字电路基础介绍第二周:LED显示技术学习,电子编程软件应用讲解第三周:实践操作指导,分组进行项目制作第四周:项目调试、优化,总结评价教学内容注重科学性和系统性,结合教材章节,循序渐进地传授知识,确保学生能够掌握电子时钟设计的全过程。
单片机课程设计LED点阵显示电子时钟
(课程设计)单片机原理及接口技术课程设计题目:LED点阵显示电子时钟学院班级:学生姓名:学号:摘要电子时钟是一种利用数字电路来显示秒、时的计时装置。
用单片机控制的LED点阵电子显示时钟具有结构简单、性能可靠、成本低廉和显示灵活等优点,其应用前景广阔。
本文设计的是一个5块8*8点阵时钟显示屏,数字采用静止显示方式。
实现的功能有:时钟功能,确定显示当前时间,并可以用按键实现误差调节;计时功能,开始与停止计时;显示精度切换功能,根据不同的工作场合,切换显示精度(时:分显示或分:秒显示硬件组成:AT89C51单片机、集成块74LS373和74LS138、LED点阵、按键若干、晶振、电容、电阻、电源等。
软件组成:定时中断程序、显示程序、起停控制程序、功能切换程序。
系统实现了计时和显示精度切换等创新功能。
关键词:点阵显示电子时钟;计时;精度切换目录摘要 (2)1 概述 (4)2 系统总体方案设计 (5)2.1系统总体设计框图 (5)2.2 初步设计思路 (5)3 硬件电路设计 (6)3.1 LED数码管显示电路 (6)3.1.1 LED点阵 (6)3.1.2 74LS373锁存器 (7)3.1.3 74LS138译码器 (7)3.2 复位电路 (8)3.3 晶振电路 (9)3.4 按键电路 (9)3.5 单片机连接电路 (10)4 软件设计 (11)4.1 计时程序设计 (11)4.2 显示程序设计 (11)4.3 时:分/分:秒切换程序 (13)4.4 起、停控制程序 (14)5 系统调试 (15)6 心得体会 (16)参考文献 (16)附录 (17)附录A:源程序清单 (17)附录B:元件清单 (23)1 概述在日常生活中,大家见到的都是数码管制作的电子钟,LED点阵时钟则不多见。
用单片机控制的LED点阵显示电子钟具有结构简单、性能可靠、成本低廉、价格便宜和显示灵活等优点,其应用前景广阔。
之所以使用LED点阵电子屏显示,是与它本身所具有的优点分不开的[1]。
LED数码管数字钟ppt课件
CLR TR1 ;关闭定时器T1 CLR ET1 ;关定时器T1中断 SETB TR0 ;开启定时器T0 SETB ET0 ;开定时器T0中断(计时开始) LJMP START1 ;跳回主程序 SET1: LCALL DISPLAY ;键释放等待时调 用显示程序(调分) AJMP SET2 ;防止键按下时无时钟显示 SET3: LCALL DISPLAY ;等待调分按键时 时钟显示用
SETB EA ;总中断开放 SETB ET0 ;允许T0中断 SETB TR0 ;开启T0定时器 MOV R4,#14H ;1秒定时用初值(50MS×20) START1: LCALL DISPLAY ;调用显示子程 序 JNB P3.7,SETMM1 ;P3.7口为0时转时间调 整程序 SJMP START1 ;P3.7口为1时跳回START1 SETMM1: LJMP SETMM ;转到时间调整程 序SETMM
N
按键>0.5S?
Y
Y
分调整闪烁标志清零
Y
按键释放?
N 调显示子程序
关闭显示,进入省电模式
调显示子程序
调显示子程序
加1分 N
分>60? Y
分计时单元清零
退出调整模式
;当调时按键按下时进入此程序 SETMM: cLR ET0 ;关定时器T0中断 CLR TR0 ;关闭定时器T0 LCALL DL1S ;调用1秒延时程序 JB P3.7,CLOSEDIS ;键按下时间小于1秒, 关闭显示(省电) MOV R2,#06H ;进入调时状态,赋闪烁定时 初值 SETB ET1 ;允许T1中断 SETB TR1 ;开启定时器T1 SET2: JNB P3.7,SET1 ;P3.7口为0(键未释 放),等待 SETB 00H ;键释放,分调整闪烁标志置1 SET4: JB P3.7,SET3 ;等待键按下 LCALL DL05S ;有键按下,延时0.5秒 JNB P3.7,SETHH ;按下时间大于0.5秒转调 小时状态
51单片机数码管时钟电路的设计
另外,主循环还负责扫描键盘,检测相应键是否被按下,若MODE键被按下则在特定单元中登记该功能,并启动定时器1,然后返回继续执行显示功能。在定时器1中断时,被登记的功能正式执行。期间用时约10ms,用以消除机械抖动。
MOV A, cmode
INC A
CJNE A, #07H, enmode
MOV A, #00H
enmode:
MOV cmode, A
ANL A, #04H
JZ notalapage
MOV npage, #02H
ACALL preala;时钟调整页准备
notalapage:
MOV A, cmode
MOVC A, @A + DPTR
MOV m, #00H
MOV A, h ;h
INC A
DA A
MOV h, A
CJNE A, #24H, incn
MOV h, #00H
incn:
SETB bPalse
JNB bAlaOn, alarmoff
ACALL checkala ;check alarm when alarm is ON
alarmoff:
CJNE A, #60H, notset
MOV s, #00H
SJMP notset
setae:
CPL bAlaOn ;闹钟开关
SJMP notseta
setah:
MOV A, ah ;闹钟时设置
INC A
DA A
MOV ah, A
CJNE A, #24H, notseta
基于单片机的电子时钟6位LED数码管显示
数码管显示电子时钟设计一.功能要求1.数字电子时钟最主要是LED数码管显示功能,以24小时为一个周期,显示时间时、分、秒。
2.具有校时功能,可以对时、进行单独校对,使其校正到标准时间。
二.方案论证1.数字时钟方案数字时钟是本设计的最主要的部分。
根据需要,可利用两种方案实现。
方案一:本方案采用Dallas公司的专用时钟芯片DS12887A。
该芯片内部采用石英晶体振荡器,其芯片精度不大于10ms/年,且具有完备的时钟闹钟功能,因此,可直接对其以用于显示或设置,使得软件编程相对简单。
为保证时钟在电网电压不足或突然掉电等突发情况下仍能正常工作,芯片内部包含锂电池。
当电网电压不足或突然掉电时,系统自动转换到内部锂电池供电系统。
而且即使系统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以备随时提供正确的时间。
方案二:本方案完全用软件实现数字时钟。
原理为:在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。
利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将十字节清零。
该方案具有硬件电路简单的特点。
但由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。
而且,由于是软件实现,当单片机不上电,程序不执行时,时钟将不工作。
基于硬件电路的考虑,本设计采用方案二完成数字时钟的功能。
2.数码管显示方案方案一:静态显示。
所谓静态显示,就是当显示器显示某一字符时,相应的发光二极管恒定的导通或截止。
该方式每一位都需要一个8 位输出口控制。
静态显示时较小的电流能获得较高的亮度,且字符不闪烁。
但当所显示的位数较多时,静态显示所需的I/O口太多,造成了资源的浪费。
方案二:动态显示。
所谓动态显示就是一位一位的轮流点亮各个位,对于显示器的每一位来说,每隔一段时间点亮一次。
LED点阵电子时钟制作实验报告
LED点阵电子时钟制作实验报告一、设计目的在日常生活中,大家见到的都是数码管制作的电子钟,LED点阵时钟则不多见。
尽管点阵时钟有它自己的缺点,如硬件利用不充分,价格较高,但是点阵时钟的字体可以方便地改变,只要改变单片机中的程序,就可以任意改变显示出来的字体,亲切的字体常常会给人耳目一新的感觉,不象普通LED数码管的字体那么呆板,这可能是LED点阵时钟最主要的特点了。
二、方案1、LED点阵电子时钟的结构、功能:1)24小时计时。
2)4位时间显示,使用四块Φ3mm 8×8LED点阵。
3)时钟的发生采用了目前较流行的DS1302实时时钟芯片,时钟精确度较高,掉电后能维持一个月保持时间不掉。
4)采用单片机A T89S52,便于硬件扩展。
89S52采用24MHz晶体,工作频率高,显示数字不闪烁!5)采用变压器供电,便于时钟的摆放。
变压器供电电压是9V的,经PCB主板上的7805稳压后输出稳定的5V电压,损耗较小。
6)电子按钮时间调节。
7)双面PCB设计,电路小巧精悍。
8)有红色和绿色LED可选择(注:只能是单色屏)。
9)点阵屏采用接插的方式插在PCB上(可选),默认的点阵屏是焊在主板上的。
10)单元电路都有滤波电路,整体电路工作稳定。
2、LED点阵电子时钟的主要元件Φ3mm 8×8LED点阵四块、A T89S52单片机一片、DS1302实时时钟芯片一片、LM7805稳压芯片一片、24MHz晶振一个、供电电压是9V变压器一个、调节按钮开关四个,其余电阻、电容、二极管、三极管等若干。
3、LED点阵电子时钟的主要元件性能比较1)关于DS1302时钟芯片:采用DS1302实时时钟芯片的时钟,其程序设计及时间准确度,与单片机直接产生时间的时钟,效果不可同日而语。
DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM 的实时时钟芯片,它可以对年、月、日、周日、时、分、秒进行计时,且具有闰年补偿功能,工作电压宽达2.5~5.5V。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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)。