电子时钟设计实验报告

合集下载

数字电子时钟实习报告

数字电子时钟实习报告

一、实习目的本次实习旨在通过设计和制作数字电子时钟,加深对数字电路基本原理、电子元器件性能及电路设计方法的理解。

通过实际操作,掌握数字电子钟的设计、制作、调试和故障排除等技能,提高动手能力和创新意识。

二、实习内容1. 数字电子钟电路设计(1)电路组成:数字电子钟主要由振荡器、分频器、计数器、译码显示、报时电路和校时电路等部分组成。

(2)电路设计:采用555定时器构成振荡器产生1Hz的脉冲信号,通过分频器得到1Hz的秒脉冲信号。

计数器采用异步十进制计数器74LS90,实现秒、分、时的计数。

译码显示采用共阳极LED数码管,显示当前时间。

报时电路由门电路和蜂鸣器构成,实现整点报时功能。

校时电路由按键和计数器构成,实现手动校时功能。

2. 元器件选型(1)振荡器:选用555定时器,其频率稳定,易于调整。

(2)分频器:选用CD4060,具有分频功能,可方便地实现秒、分、时的计数。

(3)计数器:选用74LS90,具有异步计数功能,可方便地实现秒、分、时的计数。

(4)译码显示:选用共阳极LED数码管,显示清晰,功耗低。

(5)报时电路:选用门电路和蜂鸣器,实现整点报时功能。

(6)校时电路:选用按键和计数器,实现手动校时功能。

3. 电路制作与调试(1)电路制作:根据电路原理图,焊接电路板,连接元器件。

(2)电路调试:首先检查电路连接是否正确,然后逐个模块进行调试。

调试过程中,注意观察数码管显示是否正常,报时是否准确,校时是否方便。

三、实习过程1. 设计电路原理图:根据数字电子钟的功能和性能要求,设计电路原理图。

2. 选择元器件:根据电路原理图,选择合适的元器件。

3. 制作电路板:根据电路原理图,制作电路板。

4. 焊接元器件:将元器件焊接在电路板上。

5. 电路调试:逐个模块进行调试,确保电路功能正常。

6. 故障排除:在调试过程中,若出现故障,分析原因,进行修复。

四、实习结果1. 成功设计并制作了数字电子钟,实现了秒、分、时的计数,整点报时和手动校时等功能。

多功能电子时钟数字系统课程设计设计实验报告

多功能电子时钟数字系统课程设计设计实验报告

多功能电子时钟数字系统课程设计设计实验报告数字系统课程设计设计实验报告———多功能电子时钟目录一、电子时钟的功能及工作介绍 01、本设计电子时钟具有的功能 02、本设计电子时钟工作介绍 0二、设计思路 0三、各模块具体介绍 (1)计数器模块: (1)控制模块: (3)四、仿真 (6)五、实验成果 (6)六、实验总结和感想 (6)1、实验错误排查和解决 (6)2、实验感想 (7)七、各模块代码 (8)1、计数器模块 (8)2、控制模块 (20)一、电子时钟的功能及工作介绍1、本设计电子时钟具有的功能1)具有显示时、分、秒的功能,能准确显示时间2)能够手动设置时间3)具有闹钟功能,可以设置闹钟的时间,然后再实际时间与设定时间相等是闹钟响,并有闹钟开关,可控制其是否响4)具有秒表功能,可以累计计时2、本设计电子时钟工作介绍此电子时钟开机后即会显示时间,其中后两位数码管显示秒,前两位数码管显示分,还可以通过拨盘开关S1来使得前两位数码管显示小时。

(开机后,按下按键1一次,会继续显示时间。

)此后,每按下按键1一次,会显示设置小时界面,按下按键1两次会显示设置分钟界面,按下按键1三次会显示闹钟设置小时界面,按下按键1四次会显示闹钟设置分钟界面,按下按键1五次会显示秒表界面。

而在每一个界面,按下按键2相应的位会开始跳动,在按下按键2时,跳动停止,此时按下按键3,即确认键,则会返回时间显示状态。

二、设计思路设计一个电子时钟,必然要用到计时器,而需要设置时间和闹钟,又需要控制器来控制系统所处的状态。

我们采用外部一个按键来切换系统的状态,用另一个按键来调整时间和启动秒表,再有一个按键来确认操作,并返回显示状态,继续等待命令。

在控制器中,需要接受外部信号,并给出信号给计时器,使其做出相应的动作。

电子时钟设计实验报告

电子时钟设计实验报告

单片机电子时钟设计报告一、设计任务本次课程设计的电子时钟电路,是基于单片机STC89C52、时钟芯片和液晶显示,运用C语言编程实现。

电子时钟可以显示日期的年、月、日和时间的时、分、秒,具有复位功能。

二、系统硬件设备及芯片简介数字电子钟系统设计已经成熟,但是目前系统设计时基本都是采用LED作为显示电路,造成硬件电路复杂、功耗高、产品体积庞大等特点;液晶显示模块由于具有低功耗、寿命长、体积小、显示内容丰富、价格低、接口控制方便等优点,因此在各类电子产品中被极广泛地推广和应用。

字符型液晶显示模块是一类专门用于显示字母、数字、符号等点阵式液晶显示模块。

本系统设计采用字符型液品显示模块LCD1602 作为显示器件,这样不仅简化了系统的硬件设计,而且极大地提高了系统的可靠性。

1 LCD1602简介字符型液晶显示模块LCD1602已经是单片机应用设计中最常用的信息显示器件。

LCD1602可以显示两行,每行16个字符,采用+5V电源供电,外围电路配置简单,价格便宜,具有很高的性价比。

2 LCD1602功能介绍2.1 引脚功能LCD1602采用标准14脚(无背光)或16脚(带背光)接口,各引脚功能见表1。

表1 引脚功能2.2 LCD1602读写指令LCD1602读写指令较多且较复杂,具体使用可以查相关资料,下面仅列出最常用的的一些命令:①写指令38H:显示模式设置;②写指令08H:显示关闭;③写指令01H:显示清屏;④写指令06H:显示光标移动设置;⑤写指令0CH:显示开及光标设置。

2.3 LCD1602 读写操作时序LCD1602 读写操作时序总体上来说是比较简单的,掌握其有两种方法:一种是只看时序图,另外一种方法是直接记忆和总结读写时电平高低和变化。

很显然第二种更简单和直接,下面就列出典型读写的时序要求,以方便编写程序。

(1)读状态:输入:RS=L,RW=H,E=H。

输出:D0-D7=状态字。

(2)写指令:输入:RS=L,RW=L,D0-D7=指令码,E=上升沿。

简易电子时钟设计报告

简易电子时钟设计报告

简易电子时钟设计报告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显示屏的每个段点亮或熄灭。

数字电子钟实习报告_2

数字电子钟实习报告_2

实习报告《数字电子时钟设计》班级:学号:姓名:一、设计指标① 数字电子钟一一昼夜24小时为一个计数周期。

② 具有“时”“分”“秒”计时显示。

二、设计原理● 555定时器组成的多谐振荡器电路:其输出频率为 :f=1/T=1/(T1+T2)=1.44/(R1+R2)C 其中:T1=0.7R2C,T2=0.7R2C占空比:q=T1/T2+T2=(R1+R2)/(R1+2R2),当R2>>R1时,占空比近似50%。

● 分频电路由于振荡器产生的频率很高,要得到秒脉冲,需要分频电路,经过三次10分频和一次2分频可得到1Hz 的秒脉冲。

本次设计采用CC4518进行分频。

电路:A1555_VIRTUALGNDDIS OUTRST VCC THR CONTRI U12A4518BP_5V 1A 31B 41C 51D6EN12MR17CP11U13A4518BP_5V1A 31B 41C 51D6EN12MR17CP11U1A4518BP_5V 1A 31B 41C 51D6EN12MR17CP11U5A4518BP_5V 1A 31B 41C 51D6EN12MR17CP11GNDGNDGNDGND计数、译码、显示电路:获得秒脉冲信号后,可根据60秒为一分钟,60分钟为一小时,24小时为一天为一个计数周期的计数规律,分别确定秒、分、时的计数器。

由于秒和分的显示均为60进制,因此它们可以由二级十进制计数器组成,其中秒和分的个位为十进制的计数器,十进制为六进制的计数器,采用异步置零发来实现。

时计数器应为24进制计数器,采用两片4518集成电路来实现,采用异步置零法,当计数器输出的第24个进位信号时,计数器复位,完成一个计数周期。

计数单元由三片4518和两片74LS00与非门组成。

分和秒为60进制,其设计理为:当十位为6时,向前一位产生进位信号,进位信号同时使十位置零,进位信号为2、3管脚通过一个与门。

电子工艺实训报告电子钟

电子工艺实训报告电子钟

一、实习目的本次电子钟实训的目的是通过实际操作,使学生熟悉电子钟的基本原理和制作方法,掌握电子元器件的识别和选用,提高动手能力和实际操作技能,培养学生的创新意识和团队合作精神。

二、实习时间2022年X月X日~2022年X月X日三、实习地点XX职业学院电子实验室四、实习内容1. 电子钟原理及电路分析电子钟是一种利用电子元件实现的计时工具,其基本原理是通过振荡器产生稳定的脉冲信号,通过分频器将脉冲信号进行分频,最终得到1秒的脉冲信号,驱动计时机构实现计时。

2. 电子元器件的识别和选用(1)振荡器:选用555定时器作为振荡器,其内部结构简单,稳定性好,易于调试。

(2)分频器:选用CD4060十进制计数器作为分频器,其内部结构复杂,可分频10次,满足电子钟的计时需求。

(3)计时机构:选用LED数码管显示计时,LED数码管具有低功耗、高亮度、可视角度大等优点。

(4)电源:选用9V电池作为电源,方便携带和使用。

3. 电路板设计与制作(1)设计电路图:根据电子钟的原理,绘制电路图,包括振荡器、分频器、计时机构和电源等部分。

(2)制作电路板:按照电路图,在电路板上焊接各个元器件,注意焊接顺序和焊接质量。

4. 电子钟的调试与测试(1)调试振荡器:调整555定时器的R1、R2电阻,使振荡器产生稳定的脉冲信号。

(2)调试分频器:调整CD4060计数器的时钟输入端,使分频器输出1秒的脉冲信号。

(3)调试计时机构:调整LED数码管显示的时、分、秒,使电子钟准确计时。

(4)测试电子钟:观察电子钟的计时准确性,检查是否存在故障。

五、实习总结1. 通过本次电子钟实训,使学生掌握了电子钟的基本原理和制作方法,熟悉了电子元器件的识别和选用。

2. 提高了学生的动手能力和实际操作技能,培养了学生的创新意识和团队合作精神。

3. 使学生对电子技术有了更深入的了解,为今后从事电子技术相关领域的工作奠定了基础。

4. 在实习过程中,学生之间相互交流、共同探讨,提高了团队协作能力。

数字钟电子实习报告

数字钟电子实习报告

实习报告实习时间:2023年7月1日至2023年7月31日实习单位:XX科技有限公司实习内容:数字钟的设计与制作一、实习目的通过本次实习,我希望能够掌握数字钟的设计原理,了解数字钟的制作流程,提高自己的实际操作能力,培养自己的创新意识和团队协作能力。

二、实习要求1. 熟悉数字钟的设计原理和制作流程。

2. 能够独立完成数字钟的设计和制作。

3. 了解常用电子元器件的性能和使用方法。

4. 具备一定的电路调试和故障排除能力。

三、实习过程1. 设计阶段:在实习的第一周,我们学习了数字钟的设计原理,包括时钟芯片的使用、显示模块的连接、电路图的设计等。

在导师的指导下,我们独立完成了数字钟的设计方案,并进行了讨论和修改。

2. 制作阶段:在实习的第二周,我们开始着手制作数字钟。

我们按照设计方案,选择了合适的电子元器件,进行了电路连接和焊接。

在制作过程中,我们遇到了一些问题,如电路连接错误、元器件损坏等,但在导师的帮助下,我们逐一解决了这些问题。

3. 调试阶段:在实习的第三周,我们开始对制作的数字钟进行调试。

我们使用了调试工具,如万用表、示波器等,对电路进行了检测和调整。

通过不断的调试,我们成功地使数字钟运行起来,并进行了功能测试。

4. 总结与改进:在实习的最后一周,我们对制作的数字钟进行了总结和评估。

我们发现了一些不足之处,如显示模块的亮度不够、时钟精度不够高等。

我们讨论了改进的方法,并提出了一些改进方案,如使用更亮的显示模块、调整时钟频率等。

四、实习收获通过本次实习,我掌握了数字钟的设计原理和制作流程,提高了自己的实际操作能力。

我学会了如何选择合适的电子元器件,进行电路连接和焊接,掌握了调试工具的使用方法,能够对电路进行检测和调整。

在制作过程中,我学会了如何解决问题和团队合作,培养了自己的创新意识和团队协作能力。

五、实习体会通过本次实习,我深刻体会到了理论与实践相结合的重要性。

只有在实际操作中,我们才能真正理解和掌握所学知识。

单片机电子时钟课程设计报告

单片机电子时钟课程设计报告

单片机电子时钟课程设计报告一、设计目的。

本课程设计旨在通过单片机技术的应用,设计并制作一个简单的电子时钟。

通过这一设计,学生将能够掌握单片机的基本原理和应用,培养学生的动手能力和创新意识,提高学生的实际操作能力。

二、设计原理。

本电子时钟采用单片机作为控制核心,通过晶振产生的时钟信号来实现时间的计时和显示。

利用数码管来显示小时和分钟,通过按键来调整时间。

同时,通过蜂鸣器发出报时信号,实现基本的闹钟功能。

三、设计方案。

1. 硬件设计。

(1)单片机选择,本设计选用常见的51单片机作为控制核心,具有成本低、易于编程的特点。

(2)时钟电路,采用晶振作为时钟信号源,通过单片机的定时器来实现时间的计时。

(3)显示模块,采用数码管来显示小时和分钟,通过数码管的扫描显示来实现时间的动态显示。

(4)按键输入,设计按键来调整时间,包括调整小时和分钟。

(5)报时功能,通过蜂鸣器来实现基本的报时功能,可以设置闹钟时间。

2. 软件设计。

(1)时钟控制,通过单片机的定时器来实现时间的计时和更新。

(2)显示控制,设计数码管的扫描显示程序,实现时间的动态显示。

(3)按键处理,设计按键扫描程序,实现对时间的调整。

(4)报时功能,设计蜂鸣器的报时程序,实现基本的闹钟功能。

四、设计实现。

1. 硬件实现。

根据上述设计方案,完成了电子时钟的硬件连接和布线,保证各个模块之间的正常通讯和工作。

2. 软件实现。

编写了单片机的程序,实现了时钟的计时、显示和控制功能,保证了电子时钟的正常运行。

五、实验结果。

经过调试,电子时钟能够准确显示当前的时间,并能够通过按键调整时间和设置闹钟功能,报时功能也能够正常工作。

六、总结与展望。

通过本课程设计,学生掌握了单片机的基本原理和应用,培养了动手能力和创新意识。

在今后的学习和工作中,学生将能够更好地应用单片机技术,设计和制作更加复杂的电子产品。

同时,也为学生今后的科研和创新工作奠定了良好的基础。

单片机实验电子钟报告

单片机实验电子钟报告

实验四 电子钟(定时器、中断综合实验)一、实验目的熟悉MCS51类CPU 的定时器、中断系统编程方法, 了解定时器的应用、实时程序的设计和调试技巧。

二、实验内容编写一个时钟程序, 产生一个50ms 的定时中断, 对定时中断计数, 将时、分、秒显示在数码管上。

三、程序框图主程序中断处理电子钟程序框图四、实验步骤 1.连线说明: E5 区A0 ←→ A3 区A0 E5 区CS ←→ A3 区CS5 E5 区CLK ←→ B2 区2MHzE5 区A.B.C.D ←→ G5 区A.B.C.D (排线每个8 位, 注意高低位一致) 2.时间显示在数码管上五、程序清单 ms50 DATA 31H ;存放多少个50ms sec DATA 32H ;秒 min DATA 33H ;分hour DATA 34H ;时buffer DATA 35H ;显示缓冲区EXTRN CODE(Display8)ORG 0000HLJMP STARORG 000BH ;定时器T0中断处理入口地址LJMP INT_Timer0ORG 0100HSTAR: MOV SP,#60H ;堆栈MOV ms50,A ;清零ms50MOV hour,#12 ;设定初值: 12:59:50MOV min,#59MOV sec,#50MOV TH0,#60 ;定时中断计数器初值MOV TL0,#176 ;定时50msMOV TMOD,#1 ;定时器0: 方式一MOV IE,#82H ;允许定时器0中断SETB TR0 ;开定时器T0STAR1: LCALL Display ;调用显示JNB F0,$CLR F0SJMP STAR1 ;需要重新显示时间;中断服务程序INT_Timer0: MOV TL0,#176-5MOV TH0,#60PUSH 01HMOV R1,#ms50INC @R1 ;50ms单元加1CJNE @R1,#20,ExitIntMOV @R1,#0 ;恢复初值INC R1INC @R1 ;秒加1CJNE @R1,#60,ExitInt1MOV @R1,#0INC R1INC @R1 ;分加1CJNE @R1,#60,ExitInt1MOV @R1,#0INC R1INC @R1 ;时加1CJNE @R1,#24,ExitInt1MOV @R1,#0ExitInt1: SETB F0ExitInt: POP 01HRETIHexToBCD: MOV B,#10DIV ABMOV @R0,BINC R0MOV @R0,AINC R0RETDisplay: MOV R0,#bufferMOV A,secACALL HexToBCDMOV @R0,#10H ;第三位不显示INC R0MOV A,minACALL HexToBCDMOV @R0,#10H ;第六位不显示INC R0MOV A,hourACALL HexToBCDMOV R0,#bufferLCALL Display8RETENDEXTRN CODE (Display8)BUFFER DA TA 60HORG 0000HAJMP MAINORG 000BHAJMP IT0PMAIN: MOV TMOD,#01HMOV 20H,#20HCLR AMOV 52H,A ;计数和显示MOV 51H,A ;空间清零MOV 50H,#50HMOV 40H,AMOV 41H,AMOV 43H,AMOV 44H,AMOV 46H,AMOV 47H,ASETB ET0SETB EAMOV TH0,#9EH ;计数器赋初值MOV TL0,#58HSETB TR0MOV 45H,#11HMOV 42H,#11HMOV R0,#BUFFERLCALL Display8HERE: AJMP HEREIT0P: PUSH PSWPUSH ACCMOV TH0,#9EH ;重新转入计数值MOV TL0,#58HDJNZ 20H,RETURN ;计数不满20返回MOV 20H,#20H ;重置中断次数MOV A,#01H ;秒加1ADD A,50HDA A ;秒单元十进制调制PUSH ACCCJNE A,#60H,SWS ;是否到60秒, 否则返回MOV A,#00HSWS: MOV R5,ASW AP AANL A,#0FHMOV 41H,AMOV A,R5ANL A,#0FHMOV 40H,A ;满60秒, 秒单元清零LCALL AAAPOP ACCMOV 50H,ACJNE A,#60H,RETURNMOV 50H,#00HMOV A,#01H ;分单元加1ADD A,51H ;分单元十进制调整DA APUSH ACCCJNE A,#60H,SWS1;是否到60分, 否则返回MOV A,#00HSWS1: MOV R5,A·SW AP AANL A,#0FHMOV 44H,AMOV A,R5ANL A,#0FHMOV 43H,ALCALL AAAPOP ACCMOV 51H,ACJNE A,#60H,RETURNMOV 51H,#00H ;满60分, 分单元清零MOV A,#01H ;时单元加1ADD A,52HDA APUSH ACCCJNE A,#24H,SWS2 ;是否到24小时, 否则返回MOV A,#00HSWS2: MOV R5,ASW AP AANL A,#0FHMOV 47H,AMOV A,R5ANL A,#0FHMOV 46H,ALCALL AAAPOP ACCMOV 52H,ACJNE A,#24H,RETURNMOV 52H,#00H ;满24小时, 时单元清零RETURN:POP PSWPOP ACCRETIAAA: MOV R0,#40H ;计数器的值赋MOV R1,#60H ;给显示空间MOV R5,#08HABC: MOV A,@R0MOV @R1,AINC R1INC R0DJNZ R5,ABCMOV R0,#BUFFERLCALL Display8RETEND六、思考题1.电子钟走时精度与哪些有关系?中断程序中给TL0赋值为什么与初始化程序中不一样?2、使用定时器方式二, 重新编写程序。

电子时钟实验报告

电子时钟实验报告

电子时钟实验报告电子时钟实验报告_电子时钟电子时钟实验报告一、实验目的学习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位。

电子时钟的电子设计实习报告

电子时钟的电子设计实习报告

电子时钟的电子设计实习报告一、实习目的与要求本次电子设计实习的主要目的是让我们了解和掌握电子时钟的设计与制作过程,培养我们动手实践能力和团队协作精神。

要求我们能够根据给定的功能要求,设计并制作一个电子时钟,实现小时、分钟和秒的显示功能。

二、实习内容与过程1. 需求分析:根据实习任务,我们首先进行了需求分析,明确了电子时钟需要实现的功能,包括小时、分钟和秒的显示,以及时间的设定和调整等功能。

2. 方案设计:在需求分析的基础上,我们设计了电子时钟的总体方案。

采用了MCU(Micro Control Unit,微控制器)作为核心控制器,实现时间的计算和显示控制。

同时,选择了合适的时钟芯片和显示模块,完成了硬件选型。

3. 硬件制作:根据方案设计,我们进行了电路原理图的设计,并选择了合适的元器件进行硬件制作。

主要包括MCU、时钟芯片、显示模块、按键模块等。

4. 软件编程:我们编写了MCU的程序代码,实现了时间的计算、显示控制以及时间的设定和调整等功能。

同时,通过调试和优化代码,保证了时钟的准确性和稳定性。

5. 系统测试:完成了硬件和软件的集成后,我们对电子时钟进行了系统测试。

测试内容包括时间的准确性、显示功能的正常运行以及时间的设定和调整等功能。

三、实习成果与总结通过本次实习,我们成功设计并制作了一个电子时钟,实现了小时、分钟和秒的显示功能,以及时间的设定和调整等功能。

在实习过程中,我们不仅掌握了电子时钟的设计方法和制作流程,还培养了团队协作和动手实践能力。

通过本次实习,我们深刻认识到了电子设计的重要性和实践意义。

在今后的学习和工作中,我们将不断努力,不断提高自己的电子设计能力,为我国的电子产业做出贡献。

电子钟实验报告

电子钟实验报告

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

电子时钟实习报告

电子时钟实习报告

一、实习背景随着科技的不断发展,电子时钟因其精确、方便、美观等特点,已成为现代生活中不可或缺的电子产品。

为了更好地了解电子时钟的设计与制作过程,提高自己的实践能力,我参加了本次电子时钟实习。

二、实习目的1. 了解电子时钟的基本原理和电路组成。

2. 掌握电子时钟的设计与制作方法。

3. 提高自己的动手能力和团队协作能力。

三、实习内容1. 电子时钟基本原理电子时钟是一种利用电子技术实现计时功能的设备。

其主要原理是利用晶振产生稳定频率的信号,经过计数器进行计数,最终由显示器显示时间。

2. 电子时钟电路组成电子时钟电路主要由以下几个部分组成:(1)晶振:产生稳定频率的信号。

(2)计数器:对晶振信号进行计数。

(3)译码器:将计数器的输出转换为显示器可识别的信号。

(4)显示器:显示时间。

(5)复位电路:实现电子时钟的复位功能。

3. 电子时钟设计与制作(1)设计过程在设计电子时钟的过程中,首先要确定所需的功能,如显示时分秒、闹钟等。

然后根据功能需求,选择合适的电子元件和电路模块。

最后,根据电路原理图进行电路板的设计。

(2)制作过程在制作电子时钟的过程中,需要完成以下步骤:①元器件焊接:按照电路原理图,将元器件焊接在电路板上。

②电路板制作:根据电路原理图,制作电路板。

③电路调试:将电路板上的元器件进行调试,确保电路正常工作。

④组装:将电路板、显示器、电池等部件组装在一起。

⑤测试:对组装好的电子时钟进行测试,确保其功能正常。

四、实习成果通过本次电子时钟实习,我取得了以下成果:1. 掌握了电子时钟的基本原理和电路组成。

2. 学会了电子时钟的设计与制作方法。

3. 提高了动手能力和团队协作能力。

五、实习体会1. 理论与实践相结合:在实习过程中,我深刻体会到理论与实践相结合的重要性。

只有将所学知识运用到实际操作中,才能真正掌握电子时钟的设计与制作方法。

2. 注重细节:在制作电子时钟的过程中,细节决定成败。

我学会了如何注意电路板焊接、元器件安装等细节,确保电子时钟的正常工作。

电子时钟实验报告

电子时钟实验报告

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

电子时钟设计报告

电子时钟设计报告

目录1 实验环境 (1)1.1采用Proteus6_9_SP5实现单片机及外围器件的仿真 (1)1.2使用Keil uVision3编写本时钟程序(C语言) (1)2 原理图 (2)3 程序分析及代码 (3)3.1程序分析 (3)3.2源代码 (4)4 效果图 (15)4.1正常显示效果 (15)4.2闹钟设置效果 (15)4.3功能选择模式效果 (16)4.4调时效果 (17)1 实验环境1.1采用Proteus6_9_SP5实现单片机及外围器件的仿真如图:1.2使用Keil uVision3编写本时钟程序(C语言)如图:2 原理图各部分功能实现:●通过A T89C52的P2口控制数码管的段选,决定显示的数值;●通过A T89C52的P1口及38译码器控制数码管的位选,决定显示哪一位数码管;●通过A T89C52的P0口与1*4矩阵键盘连接执行相应功能;●led发光二极管在闹钟定的时间到达时点亮;●因为P0口没有上拉电阻,所以与排阻相连。

3 程序分析及代码3.1程序分析3.1.1程序的优点首次在程序中使用了数组、指针及函数,指针做了函数的参数,大大减少了代码的编写量;3.1.2程序的缺点在调试和设置闹钟时可能会出现时钟暂停的情况;设置闹钟函数不够简洁;闪烁不够稳定。

3.1.3总结此实验是我们学习单片机以来写的第一个较正式的程序,难免存在不足之处。

3.2源代码E-clock.c程序文件:#include "E-clock.h"/*************以下是主函数**************/void main(){iniTimer(); //首先初始化定时计数器while(1){display(); //调用显示函数keyScan(); //扫描键盘bellClock(); //扫描闹钟是否到点}}E-clock.h程序文件:/*************以下是宏定义**************/#include <reg52.h>#define uchar unsigned char //将unsigned char用uchar表示#define uint unsigned intvoid iniTimer(); // 定时计数器初始化函数void display(); // 显示模式变换函数void normalDisplay(uchar *tmp); // 正常显示函数void oneW eiDisplay(uchar num,uchar wei);// 一位数码管显示函数void numCount(); // 时间进位函数void flash(uchar num,uchar wei); // 单位数码管闪动函数void keyScan(); // 键盘扫描函数void numadd(uchar *tmp); // 数字加一函数void bellClock(); // 闹钟定时函数void delay(); // 延时函数/*************以下是变量声明**************/uchar code numTable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x40}; //数字字符编码表uchar code weiTable[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07}; // 数码管位编码表uchar numTmp[6]={0}; // 正常显示的时分秒数据存储数组uchar bellTmp[6]={0}; // 存储闹钟时间的数据存储数组sbit Led=P3^0; // 小灯的位定义uchar time,flsh,enter,ok,value=1,move; // 各个变量的定义void iniTimer(){EA=1; //开中断总开关ET1=1; //允许T1中断TMOD=0x10; //T1工作于定时方式1TH1=(65536-50000)/256; //送定时初值高八位TL1=(65536-50000)%256; //送定时初值低八位TR1=1; //启动T1工作}void display(){numCount();if(enter==1&&ok!=1) //当按下“进入/退出”键后,且没有//按下“确认”键时,进入功能模式,显示1 oneW eiDisplay(value,0);else if(value==1) //当显示“1”时按下“确认”键,进入//调时模式normalDisplay(numTmp);else if(value==2) //当显示“2”时按下“确认”键,//进入闹钟设置模式normalDisplay(bellTmp);}void normalDisplay(uchar *tmp){if(enter==1&&ok==1&&move==5)//如果进入了模式且按下了//“确认”键且选中最右边数码管{flash(tmp[0],7);} //那么该位数码管闪动,此时若//按下“加一”键可以实现加1操作else oneW eiDisplay(tmp[0],7);//如果没有按键,则正常显示if(enter==1&&ok==1&&move==4){flash(tmp[1],6);}else oneW eiDisplay(tmp[1],6);oneW eiDisplay(10,5); //秒与分中间的“-”if(enter==1&&ok==1&&move==3){flash(tmp[2],4);}else oneW eiDisplay(tmp[2],4);if(enter==1&&ok==1&&move==2){flash(tmp[3],3);}else oneW eiDisplay(tmp[3],3);oneW eiDisplay(10,2); //分与时之间的“-”if(enter==1&&ok==1&&move==1){flash(tmp[4],1);}else oneW eiDisplay(tmp[4],1);if(enter==1&&ok==1&&move==0){flash(tmp[5],0);}else oneW eiDisplay(tmp[5],0);}void oneW eiDisplay(uchar num,uchar wei){P2=numTable[num];P1=weiTable[wei];delay();P2=0; //让数码管熄灭一下,起到消影的效果}void numCount() //实现秒到分,分到时的进位{if(time==20)//定时计数器计数20次后,达到1秒,time标志//重新置为0 {time=0;numTmp[0]++; //秒位加1}if(numTmp[0]>9){numTmp[0]=0;numTmp[1]++; }if(numTmp[1]>5) {numTmp[1]=0;numTmp[2]++; }if(numTmp[2]>9) {numTmp[2]=0;numTmp[3]++; }if(numTmp[3]>5) {numTmp[3]=0;numTmp[4]++; }if(numTmp[4]>9) {numTmp[4]=0;numTmp[5]++; }if(numTmp[5]==2&&numTmp[4]==4) //到24整点时,从0点//开始重新显示{numTmp[4]=0;numTmp[5]=0;}}void flash(uchar num,uchar wei){flsh++; //让该位数码管灭6次亮一次,达到闪烁效果P2=0;P1=weiTable[wei];delay();if(flsh==6){oneW eiDisplay(num,wei);flsh=0;}}void keyScan(){P0=0x7f;if(P0!=0x7f){delay(); //键盘延时去抖if(P0!=0x7f){switch(P0){case 0x7e: // “进入/退出”键{enter++; //首次按下该键后,enter标志为1,//进入功能选择模式,数码管显示一if(enter==2){enter=0;ok=0;value=1; }//进入功//能模式后,再次按下“进入/退出”键break; //退出到正常显示状态}case 0x7d: // “加一”键{if(enter==1&&ok!=1) //当按下“进入/退出”键//后,且没有按下“确认”键时,实现1和2的选择{value++;if(value>2)value=1;}if(enter==1&&ok==1)//当按下“进入/退出”键后,//且按下“确认”键后实现时间的各位加1功能{if(value==1) numadd(numTmp);//调时模式时if(value==2) numadd(bellTmp); //闹钟模式时}break;}case 0x7b: //“移位”键{move++; //实现数码管位的移动if(move>5) move=0;break;}case 0x77: //“确认”键{ok=1; //按下该键,ok标志置1Led=1; //当小灯亮时,按下该键,小灯熄灭break;}}while(P0!=0x7f); //如果按键没有松开,则一直等待}}}void numadd(uchar *tmp){switch(move)//按照时分秒的情况,限制加数的范围{case 0: t mp[5]++;if(tmp[5]>2) tmp[5]=0; break;case 1:tmp[4]++;if(tmp[5]==2&&tmp[4]>3)tmp[4]=0;if(tmp[4]>9) tmp[4]=0; break;case 2: t mp[3]++;if(tmp[3]>6) tmp[3]=0; break;case 3: t mp[2]++;if(tmp[2]>9) tmp[2]=0; break;case 4: t mp[1]++;if(tmp[1]>6) tmp[1]=0; break;case 5: t mp[0]++;if(tmp[0]>9) tmp[0]=0; break;}}void bellClock()//将实际时间与设好的闹钟时间比较,如果相等,//则小灯亮{if(bellTmp[0]==0&&bellTmp[1]==0&&bellTmp[2]==0&&bellTmp[3]==0&&bellTmp[4]==0&&bellTmp[5]==0)Led=1; //因闹钟与实际时间初始值均是00-00-00,为了//程序初始时不让小灯亮,将此值屏蔽elseif(numTmp[0]==bellTmp[0]&&numTmp[1]==bellTmp[1]&&numT mp[2]==bellTmp[2]&&numTmp[3]==bellTmp[3]&&numTmp[4]= =bellTmp[4]&&numTmp[5]==bellTmp[5]) Led=0;}void delay() //实现短暂时间的延时{uchar tmp;for(tmp=0;tmp<200;tmp++);}//以下为定时器中断函数,实现50ms的计时void time1() interrupt 3 using 1{TH1=(65536-50000)/256; //重新送初值TL1=(65536-50000)%256;time++;}4 效果图4.1正常显示效果4.2闹钟设置效果(首次进入闹钟设置时默认为零点)4.3功能选择模式效果(注:1为调时)(注:2为闹钟设置)4.4调时效果(注:通过按“加一”键,实现闪烁位的加一由于该位闪烁,所以截图时未显示出数字)。

电装实习电子钟实验报告

电装实习电子钟实验报告

一、实习目的本次电子钟实验旨在通过实际操作,让学生了解和掌握电子钟的基本工作原理,熟悉电子元器件的识别和使用,提高学生的动手能力和电路设计能力。

通过实验,使学生能够熟练掌握电子钟的组装、调试和维修方法,为今后从事相关电子技术工作打下坚实基础。

二、实验器材1. 74LS90计数器芯片(4片)2. 74LS20异或门芯片(1片)3. 555定时器芯片(1片)4. 74LS04六反相器芯片(1片)5. 3.5795MHz晶振(1个)6. 电阻、电容、二极管等电子元器件7. 万用表、电烙铁、焊接工具、面包板等三、实验原理电子钟的原理是利用晶振产生稳定的振荡信号,通过计数器进行计时,并通过显示模块显示时间。

具体工作流程如下:1. 晶振产生3.5795MHz的振荡信号,经过555定时器整形后,得到1Hz的方波信号。

2. 1Hz的方波信号输入到74LS90计数器,计数器进行计数,计数结果为秒。

3. 计数器输出高电平后,通过异或门产生一个脉冲信号,输入到下一个计数器,实现分和时的计数。

4. 计数结果通过74LS04六反相器进行电平转换,输入到显示模块,显示时间。

四、实验步骤1. 按照电路图连接电路,将晶振、555定时器、计数器、异或门、六反相器等芯片插入面包板。

2. 将电阻、电容、二极管等电子元器件按照电路图连接到面包板。

3. 使用万用表检测电路的各个节点电压,确保电路连接正确。

4. 通电测试电路,观察计数器和显示模块是否正常工作。

5. 调整电路参数,使电子钟的显示时间与实际时间一致。

五、实验结果与分析1. 实验成功组装了一台电子钟,计时精度较高。

2. 通过实验,掌握了电子钟的基本工作原理和电路设计方法。

3. 学会了电子元器件的识别和使用,提高了动手能力。

六、实验总结本次电子钟实验,使我们对电子钟的工作原理有了更深入的了解,提高了动手能力和电路设计能力。

在实验过程中,我们遇到了一些问题,如电路连接错误、元器件损坏等,通过查阅资料、请教老师和同学,最终解决了问题。

电子实习数字钟实验报告

电子实习数字钟实验报告

数字钟实验报告一、实验目的1. 学习数字电路的设计与实践,提高动手能力。

2. 了解和掌握数字电子钟的工作原理及制作方法。

3. 培养严谨的科学态度和良好的团队协作精神。

二、实验任务及要求1. 设计并制作一个具有时、分、秒显示功能的数字电子钟。

2. 电子钟应具备校时功能,能手动调整时、分。

3. 电子钟在24小时内整点报时,从59分50秒开始,每2秒钟响一声,共响5次。

4. 电子钟在6--22点之间每整点报时,23--5点之间整点不报时。

三、实验原理及设计思路1. 实验原理数字电子钟主要由石英晶体振荡器、分频器、计数器、译码器、显示器等组成。

石英晶体振荡器产生1Hz的基准信号,分频器将1Hz信号分频得到秒信号,计数器对秒信号进行计数实现时、分、秒的显示,译码器将计数器的输出信号转换为显示器所需的信号,显示器以数字形式显示时间。

2. 设计思路(1)选用合适的石英晶体振荡器,确保电子钟的走时准确。

(2)设计分频器,将1Hz信号分频得到秒信号。

(3)设计计数器,实现时、分、秒的计数功能。

(4)设计译码器,将计数器的输出信号转换为显示器所需的信号。

(5)设计显示器,以数字形式显示时间。

(6)设计校时电路,实现手动调整时、分功能。

(7)设计整点报时电路,实现整点报时功能。

四、实验步骤1. 搭建石英晶体振荡器电路,确保输出1Hz的基准信号。

2. 设计并搭建分频器电路,将1Hz信号分频得到秒信号。

3. 设计并搭建计数器电路,实现时、分、秒的计数功能。

4. 设计并搭建译码器电路,将计数器的输出信号转换为显示器所需的信号。

5. 设计并搭建显示器电路,以数字形式显示时间。

6. 设计并搭建校时电路,实现手动调整时、分功能。

7. 设计并搭建整点报时电路,实现整点报时功能。

8. 调试并优化电路,确保电子钟的正常运行。

五、实验结果与分析1. 实验结果经过以上步骤,我们成功制作了一个具有时、分、秒显示功能的数字电子钟。

实验结果显示,电子钟走时准确,能手动调整时、分,整点报时功能正常,符合实验要求。

数字电子钟 实验报告

数字电子钟 实验报告

课题一数字电子钟电子钟是一种高精度的计时工具,它采用了集成电路和石英技术,因此走时精度高,稳定性能好,使用方便,且不需要经常调校。

电子钟根据显示方式不同,分为指针式电子钟和数字式电子钟。

指针式电子钟采用机械传动带动指针显示;而数字式电子钟则是采用译码电路驱动数码显示器件,以数字形式显示。

这些译码显示器件,利用集成技术可以做的非常小巧,也可以另加一定的驱动电路,推动霓红灯或白炽灯显示系统,制做成大型电子钟表。

因此,数字式电子钟用途非常广泛。

一、课程设计(综合实验)的目的与要求设计一个具有如下功能的数字电子钟:1.基本功能(1)能直接显示时、分、秒;(2)能正确计时,小时采用二十四进制,分和秒采用60进制;(3)有校时功能,手动调整时、分;2.扩展功能(1)能进行24小时整点报时,要求从59分50秒开始,每2秒钟响一声,共响5次;每响一次声音持续0.5秒。

(2)要求只在6--22点之间每整点报时,23--5点之间整点不报时;(3)具有任意几点几分均可响铃的闹钟控制电路。

响铃1分钟,可人为通过开关使响铃提前终止;二、设计(实验)正文数字电子钟实际上是一个对标准频率(1HZ)进行计数并通过数码管显示的计数电路,由于计数的起始时间与标准时间(如北京时间)不一致,故需要在电路上加一个校时电路。

标准的1HZ时间信号必须准确稳定,可以使用555定时器设计1HZ的振荡电路。

时间计数电路由秒计数器(个位,十位)、分计数器(个位,十位)电路构成,秒个位和秒十位计数器、分个位和分十位计数器均为60进制计数器,而根据设计要求,时个位和时十位计数器为24进制计数器。

1.系统原理框图如下:2.1 分、秒计时器分、秒计时器均为60进制计数器,当秒计时器接受到一个秒脉冲时,秒计数器个位开始从1计数到9,同时在个位计数产生进位时将进位接秒计数器的十位计数器CLK,此时秒显示器将显示00、01、02、...、59、00;每当秒计数器数到00时,就会产生一个脉冲输出送至分计时器,此时分计数器数值在原有基础上加1,其显示器将显示00、01、02、...、59、00,当分计数器产生进位时,将会在进位端产生高电平,进而触发电路,驱动蜂鸣器,起到整点报时的功能。

电子钟课程设计实验报告

电子钟课程设计实验报告

电子钟课程设计实验报告实验报告:电子钟课程设计一、实验目的:1. 掌握电子时钟的硬件设计和软件编程方法。

2. 熟悉数字电路的设计和实现。

3. 提高电路设计和实验能力。

二、实验设备和材料:1. FPGA 开发板。

2. 七段数码管。

3. 按钮开关。

4. 时钟电路。

三、实验原理:本电子钟的基本原理是通过 FPGA 芯片实时计数,并将计数结果转化为时间的显示。

时钟电路提供一个恒定的时钟信号,FPGA 芯片在每个时钟脉冲到来时进行计数,并将计数结果转化为显示在七段数码管上。

按钮开关用于设置时间。

四、实验步骤:1. 确定时钟信号的频率,并设计时钟电路,将时钟信号连接到FPGA 开发板上的时钟输入引脚。

2. 将七段数码管分别连接到 FPGA 开发板上的输出引脚。

3. 设计计数模块,包括计数器和时钟信号的同步控制。

4. 设计显示模块,将计数结果转化为七段数码管的控制信号。

5. 设计按钮开关控制模块,用于设置时间和调整闹钟参数等功能。

6. 将上述模块整合在一起,并进行综合和实现。

7. 进行电路调试和测试,检查电子钟的功能是否正常。

五、实验结果:经过调试和测试,实验电子钟正常工作,能够实时显示当前时间,并且可以通过按钮开关进行时间设置和闹钟调整。

六、实验总结:通过本次实验,我掌握了电子时钟的硬件设计和软件编程方法,提高了数字电路设计和实验能力。

通过学习和实践,我深刻理解了数字电路和时序控制的基本原理,并能够将其应用到实际项目中。

我还发现,在设计和实现电子钟的过程中,需要注意时序控制的正确性,以确保信号的稳定和正确传递。

数字电子钟课程设计实验报告

数字电子钟课程设计实验报告

数字电子钟课程设计实验报告1. 引言本实验旨在设计一个数字电子钟,通过对电子元件的运用和数字电路的设计,实现显示当前时间和日期的功能。

在实验过程中,我们将学习数字电子钟的工作原理,熟悉数字电子元件的连接与使用,并运用已学知识进行设计和实现。

2. 设计思路为了设计一个完整的数字电子钟,我们需要考虑以下几个方面的内容:2.1 时钟模块时钟模块是数字电子钟的核心部分,用于记录和显示当前时间。

我们可以使用实时时钟(RTC)模块来实现这一功能。

RTC模块可以精确地计时,并提供与微处理器的接口。

2.2 显示模块数字电子钟的显示模块需要能够显示当前时间和日期。

常见的显示模块包括LED数码管和液晶显示屏。

我们可以根据实际需求选择合适的显示模块。

2.3 控制模块为了方便用户对数字电子钟进行设置和操作,我们需要设计一个控制模块。

用户可以通过控制模块来调整时间、日期等参数,并进行其他操作。

3. 设计步骤3.1 连接电子元件首先,我们需要连接时钟模块、显示模块和控制模块。

按照时钟模块和显示模块的规格说明,将它们与微处理器连接起来。

同时,根据控制模块的需求,连接控制模块与微处理器。

3.2 编写代码编写代码是实现数字电子钟功能的关键步骤。

在代码中,我们需要实现时钟模块的读取和计时功能,显示模块的显示功能,以及控制模块的参数调整和操作功能。

3.3 调试和测试完成代码编写后,我们需要对数字电子钟进行调试和测试。

首先,确保时钟模块的读取和计时功能正常。

然后,验证显示模块的显示功能是否正确。

最后,通过控制模块进行参数调整和操作,确保所有功能都能够正常运行。

4. 实验结果经过设计、编写代码、调试和测试,我们成功地实现了数字电子钟的功能。

我们的数字电子钟可以准确地显示当前时间和日期,并且具备参数调整和操作功能。

5. 总结与讨论本次实验通过设计数字电子钟,我们对数字电路的基本原理和设计方法有了更深入的理解。

通过实践,我们掌握了连接电子元件、编写代码、调试和测试的基本技能,并成功地实现了数字电子钟的功能。

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

单片机电子时钟设计报告一、设计任务本次课程设计的电子时钟电路,是基于单片机STC89C52、时钟芯片和液晶显示,运用C语言编程实现。

电子时钟可以显示日期的年、月、日和时间的时、分、秒,具有复位功能。

二、系统硬件设备及芯片简介数字电子钟系统设计已经成熟,但是目前系统设计时基本都是采用LED作为显示电路,造成硬件电路复杂、功耗高、产品体积庞大等特点;液晶显示模块由于具有低功耗、寿命长、体积小、显示容丰富、价格低、接口控制方便等优点,因此在各类电子产品中被极广泛地推广和应用。

字符型液晶显示模块是一类专门用于显示字母、数字、符号等点阵式液晶显示模块。

本系统设计采用字符型液品显示模块LCD1602 作为显示器件,这样不仅简化了系统的硬件设计,而且极提高了系统的可靠性。

1 LCD1602简介字符型液晶显示模块LCD1602已经是单片机应用设计中最常用的信息显示器件。

LCD1602可以显示两行,每行16个字符,采用+5V电源供电,外围电路配置简单,价格便宜,具有很高的性价比。

2 LCD1602功能介绍2.1 引脚功能LCD1602采用标准14脚(无背光)或16脚(带背光)接口,各引脚功能见表1。

表1 引脚功能2.2 LCD1602读写指令LCD1602读写指令较多且较复杂,具体使用可以查相关资料,下面仅列出最常用的的一些命令:①写指令38H:显示模式设置;②写指令08H:显示关闭;③写指令01H:显示清屏;④写指令06H:显示光标移动设置;⑤写指令0CH:显示开及光标设置。

2.3 LCD1602 读写操作时序LCD1602 读写操作时序总体上来说是比较简单的,掌握其有两种方法:一种是只看时序图,另外一种方法是直接记忆和总结读写时电平高低和变化。

很显然第二种更简单和直接,下面就列出典型读写的时序要求,以方便编写程序。

(1)读状态:输入:RS=L,RW=H,E=H。

输出:D0-D7=状态字。

(2)写指令:输入:RS=L,RW=L,D0-D7=指令码,E=上升沿。

输出:无。

(3)读数据:输入:RS=H,RW=H,E=H。

输出:D0-D7=数据。

(4)写数据:输入:RS=H,RW=L,D0-D7=数据,E=上升沿。

输出:无。

2.4 LCD1602显示方法液晶显示模块是慢速显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平(即不忙),否则该指令失效。

显示字符时,要先输入显示字符地址,即告诉模块在哪里显示字符。

因为写入显示地址时要求最高位D7 恒定为高电平,所以实际写入的数据应该是要显示地址值加上80H,即将最高位D7置为1。

在使用此显示模块时一般要对其进行初始化,设置所需要的显示参数。

液晶模块在显示字符时光标是自动右移的,无需人工干预。

每次输入指令前,都要判断液晶模块是否处于忙状态。

3 数字电子钟硬件电路设计硬件电路系统设计主要由单片机最小系统、输入电路、输出电路等组成。

单片机最小系统同所有单片机系统,在此不作讨论。

输入电路主要时间调节电路,为简化系统我们使两个外部中断来调节“时”和“分”数值,即将INT0、INT1分别接两个按钮。

LCD显示器和单片机接口电路可以采用总线方式或者是模拟口线方式,本设计采用第二种方式,即以单片机I/O 模拟控制信号。

具体电路见图1,P0口作为数据,并接上拉电阻提升电压,P2.0接LCD的RS端、P2.1 接LCD的R/W端、P2.2接LCD的E端,“分”调节按钮接INT0,“时”调节按钮接INT1,图1 省略了电源和单片机最小系统电路。

图1 数字电子钟硬件电路三、设计电路图及程序1.电路图如下原理图如下:2.程序共有四段程序,用Keil仿真是程序列表如图Regx52.h程序为:#ifndef __AT89X52_H__#define __AT89X52_H__sfr P0 = 0x80;sfr SP = 0x81; sfr DPL = 0x82; sfr DPH = 0x83; sfr PCON = 0x87; sfr TCON = 0x88; sfr TMOD = 0x89; sfr TL0 = 0x8A;sfr TL1 = 0x8B;sfr TH0 = 0x8C; sfr TH1 = 0x8D; sfr P1 = 0x90;sfr SCON = 0x98; sfr SBUF = 0x99; sfr P2 = 0xA0; sfr IE = 0xA8;sfr P3 = 0xB0; sfr IP = 0xB8;sfr T2CON = 0xC8;sfr T2MOD = 0xC9;sfr RCAP2L = 0xCA;sfr RCAP2H = 0xCB;sfr TL2 = 0xCC;sfr TH2 = 0xCD;sfr PSW = 0xD0;sfr ACC = 0xE0;sfr B = 0xF0;/*------------------------------------------------ P0 Bit Registers------------------------------------------------*/ sbit P0_0 = 0x80;sbit P0_1 = 0x81;sbit P0_2 = 0x82;sbit P0_3 = 0x83;sbit P0_4 = 0x84;sbit P0_5 = 0x85;sbit P0_6 = 0x86;sbit P0_7 = 0x87;/*------------------------------------------------PCON Bit Values------------------------------------------------*/ #define IDL_ 0x01#define STOP_ 0x02#define PD_ 0x02 /* Alternate definition */#define GF0_ 0x04#define GF1_ 0x08#define SMOD_ 0x80/*------------------------------------------------ TCON Bit Registers------------------------------------------------*/ sbit IT0 = 0x88;sbit IE0 = 0x89;sbit IT1 = 0x8A;sbit IE1 = 0x8B;sbit TR0 = 0x8C;sbit TF0 = 0x8D;sbit TR1 = 0x8E;sbit TF1 = 0x8F;/*------------------------------------------------ TMOD Bit Values------------------------------------------------*/ #define T0_M0_ 0x01#define T0_M1_ 0x02#define T0_CT_ 0x04#define T0_GATE_ 0x08#define T1_M0_ 0x10#define T1_M1_ 0x20#define T1_CT_ 0x40#define T1_GATE_ 0x80#define T1_MASK_ 0xF0#define T0_MASK_ 0x0F/*------------------------------------------------ P1 Bit Registers------------------------------------------------*/ sbit P1_0 = 0x90;sbit P1_1 = 0x91;sbit P1_2 = 0x92;sbit P1_3 = 0x93;sbit P1_4 = 0x94;sbit P1_5 = 0x95;sbit P1_6 = 0x96;sbit P1_7 = 0x97;sbit T2 = 0x90; /* External input to Timer/Counter 2, clock out */ sbit T2EX = 0x91; /* Timer/Counter 2 capture/reload trigger & dir ctl *//*------------------------------------------------SCON Bit Registers------------------------------------------------*/sbit RI = 0x98;sbit TI = 0x99;sbit RB8 = 0x9A;sbit TB8 = 0x9B;sbit REN = 0x9C;sbit SM2 = 0x9D;sbit SM1 = 0x9E;sbit SM0 = 0x9F;/*------------------------------------------------P2 Bit Registers------------------------------------------------*/ sbit P2_0 = 0xA0;sbit P2_1 = 0xA1;sbit P2_2 = 0xA2;sbit P2_3 = 0xA3;sbit P2_4 = 0xA4;sbit P2_5 = 0xA5;sbit P2_6 = 0xA6;sbit P2_7 = 0xA7;/*------------------------------------------------ IE Bit Registers------------------------------------------------*/ sbit EX0 = 0xA8; /* 1=Enable External interrupt 0 */ sbit ET0 = 0xA9; /* 1=Enable Timer 0 interrupt */ sbit EX1 = 0xAA; /* 1=Enable External interrupt 1 */ sbit ET1 = 0xAB; /* 1=Enable Timer 1 interrupt */ sbit ES = 0xAC; /* 1=Enable Serial port interrupt */ sbit ET2 = 0xAD; /* 1=Enable Timer 2 interrupt */sbit EA = 0xAF; /* 0=Disable all interrupts *//*------------------------------------------------P3 Bit Registers (Mnemonics & Ports)------------------------------------------------*/ sbit P3_0 = 0xB0;sbit P3_1 = 0xB1;sbit P3_2 = 0xB2;sbit P3_3 = 0xB3;sbit P3_4 = 0xB4;sbit P3_5 = 0xB5;sbit P3_6 = 0xB6;sbit P3_7 = 0xB7;sbit RXD = 0xB0; /* Serial data input */sbit TXD = 0xB1; /* Serial data output */sbit INT0 = 0xB2; /* External interrupt 0 */sbit INT1 = 0xB3; /* External interrupt 1 */sbit T0 = 0xB4; /* Timer 0 external input */sbit T1 = 0xB5; /* Timer 1 external input */sbit WR = 0xB6; /* External data memory write strobe */ sbit RD = 0xB7; /* External data memory read strobe */IP Bit Registers------------------------------------------------*/sbit PX0 = 0xB8;sbit PT0 = 0xB9;sbit PX1 = 0xBA;sbit PT1 = 0xBB;sbit PS = 0xBC;sbit PT2 = 0xBD;/*------------------------------------------------T2CON Bit Registers------------------------------------------------*/sbit CP_RL2= 0xC8; /* 0=Reload, 1=Capture select */sbit C_T2 = 0xC9; /* 0=Timer, 1=Counter */sbit TR2 = 0xCA; /* 0=Stop timer, 1=Start timer */sbit EXEN2= 0xCB; /* Timer 2 external enable */sbit TCLK = 0xCC; /* 0=Serial clock uses Timer 1 overflow, 1=Timer 2 */ sbit RCLK = 0xCD; /* 0=Serial clock uses Timer 1 overflow, 1=Timer 2 */ sbit EXF2 = 0xCE; /* Timer 2 external flag */sbit TF2 = 0xCF; /* Timer 2 overflow flag */T2MOD Bit Values------------------------------------------------*/#define DCEN_ 0x01 /* 1=Timer 2 can be configured as up/down counter */ #define T2OE_ 0x02 /* Timer 2 output enable *//*------------------------------------------------PSW Bit Registers------------------------------------------------*/sbit P = 0xD0;sbit FL = 0xD1;sbit OV = 0xD2;sbit RS0 = 0xD3;sbit RS1 = 0xD4;sbit F0 = 0xD5;sbit AC = 0xD6;sbit CY = 0xD7;/*------------------------------------------------Interrupt Vectors:Interrupt Address = (Number * 8) + 3------------------------------------------------*/#define IE0_VECTOR 0 /* 0x03 External Interrupt 0 */#define TF0_VECTOR 1 /* 0x0B Timer 0 */#define IE1_VECTOR 2 /* 0x13 External Interrupt 1 */#define TF1_VECTOR 3 /* 0x1B Timer 1 */#define SIO_VECTOR 4 /* 0x23 Serial port */#define TF2_VECTOR 5 /* 0x2B Timer 2 */#define EX2_VECTOR 5 /* 0x2B External Interrupt 2 */#endifLCD1602驱动程序为:#ifndef LCD_CHAR_1602_2005_4_9#define LCD_CHAR_1602_2005_4_9#include <intrins.h>//PortDefinitions**********************************************************sbit LcdRs = P2^0;sbit LcdRw = P2^1;sbit LcdEn = P2^2;sfr DBPort = 0x80; //P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口//部等待函数********************************************************************* *****unsigned char LCD_Wait(void){LcdRs=0;LcdRw=1; _nop_();LcdEn=1; _nop_();//while(DBPort&0x80);//在用Proteus仿真时,注意用屏蔽此语句,在调用GotoXY()时,会进入死循环,//可能在写该控制字时,该模块没有返回写入完备命令,即DBPort&0x80==0x80//实际硬件时打开此语句LcdEn=0;return DBPort;}//向LCD写入命令或数据************************************************************ #define LCD_MAND 0 // mand#define LCD_DATA 1 // Data#define LCD_CLEAR_SCREEN 0x01 // 清屏#define LCD_HOMING 0x02 // 光标返回原点void LCD_Write(bit style, unsigned char input){LcdEn=0;LcdRs=style;LcdRw=0; _nop_();DBPort=input; _nop_();//注意顺序LcdEn=1; _nop_();//注意顺序LcdEn=0; _nop_();LCD_Wait();}//设置显示模式************************************************************ #define LCD_SHOW 0x04 //显示开#define LCD_HIDE 0x00 //显示关#define LCD_CURSOR 0x02 //显示光标#define LCD_NO_CURSOR 0x00 //无光标#define LCD_FLASH 0x01 //光标闪动#define LCD_NO_FLASH 0x00 //光标不闪动void LCD_SetDisplay(unsigned char DisplayMode){LCD_Write(LCD_MAND, 0x08|DisplayMode);}//设置输入模式************************************************************ #define LCD_AC_UP 0x02#define LCD_AC_DOWN 0x00 // default#define LCD_MOVE 0x01 // 画面可平移#define LCD_NO_MOVE 0x00 //defaultvoid LCD_SetInput(unsigned char InputMode){LCD_Write(LCD_MAND, 0x04|InputMode);}//移动光标或屏幕************************************************************/*#define LCD_CURSOR 0x02#define LCD_SCREEN 0x08#define LCD_LEFT 0x00#define LCD_RIGHT 0x04void LCD_Move(unsigned char object, unsigned char direction){if(object==LCD_CURSOR)LCD_Write(LCD_MAND,0x10|direction);if(object==LCD_SCREEN)LCD_Write(LCD_MAND,0x18|direction);}*///初始化LCD************************************************************ void LCD_Initial(){LcdEn=0;LCD_Write(LCD_MAND,0x38); //8位数据端口,2行显示,5*7点阵LCD_Write(LCD_MAND,0x38);LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); //开启显示, 无光标LCD_Write(LCD_MAND,LCD_CLEAR_SCREEN); //清屏LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); //AC递增, 画面不动}//******************************************************************** ****void GotoXY(unsigned char x, unsigned char y){if(y==0)LCD_Write(LCD_MAND,0x80|x);if(y==1)LCD_Write(LCD_MAND,0x80|(x-0x40));}void Print(unsigned char *str){while(*str!='\0'){LCD_Write(LCD_DATA,*str);str++;}}/*void LCD_LoadChar(unsigned char user[8], unsigned char place){unsigned char i;LCD_Write(LCD_MAND,0x40|(place*8));for(i=0; i<8; i++)LCD_Write(LCD_DATA,user[i]);}*///******************************************************************** ****#endifIntrins.h程序为:#ifndef __INTRINS_H__#define __INTRINS_H__extern void _nop_ (void);extern bit _testbit_ (bit);extern unsigned char _cror_ (unsigned char, unsigned char); extern unsigned int _iror_ (unsigned int, unsigned char); extern unsigned long _lror_ (unsigned long, unsigned char); extern unsigned char _crol_ (unsigned char, unsigned char); extern unsigned int _irol_ (unsigned int, unsigned char); extern unsigned long _lrol_ (unsigned long, unsigned char); extern unsigned char _chkfloat_(float);extern void _push_ (unsigned char _sfr);extern void _pop_ (unsigned char _sfr);#endifDS1302时钟程序为:#ifndef _REAL_TIMER_DS1302_2003_7_21_#define _REAL_TIMER_DS1302_2003_7_21_sbit DS1302_CLK = P1^6; //实时时钟时钟线引脚sbit DS1302_IO = P1^7; //实时时钟数据线引脚sbit DS1302_RST = P1^5; //实时时钟复位线引脚sbit ACC0 = ACC^0;sbit ACC7 = ACC^7;typedef struct __SYSTEMTIME__{unsigned char Second;unsigned char Minute;unsigned char Hour;unsigned char Week;unsigned char Day;unsigned char Month;unsigned char Year;unsigned char DateString[9];unsigned char TimeString[9];}SYSTEMTIME; //定义的时间类型#define AM(X) X#define PM(X) (X+12) // 转成24小时制#define DS1302_SECOND 0x80#define DS1302_MINUTE 0x82#define DS1302_HOUR 0x84#define DS1302_WEEK 0x8A#define DS1302_DAY 0x86#define DS1302_MONTH 0x88#define DS1302_YEAR 0x8C#define DS1302_RAM(X) (0xC0+(X)*2) //用于计算DS1302_RAM 地址的宏void DS1302InputByte(unsigned char d) //实时时钟写入一字节(部函数) {unsigned char i;ACC = d;for(i=8; i>0; i--){DS1302_IO = ACC0; //相当于汇编中的RRCDS1302_CLK = 1;DS1302_CLK = 0;ACC = ACC >> 1;}}unsigned char DS1302OutputByte(void) //实时时钟读取一字节(部函数) {unsigned char i;for(i=8; i>0; i--){ACC = ACC >>1; //相当于汇编中的RRCACC7 = DS1302_IO;DS1302_CLK = 1;DS1302_CLK = 0;}return(ACC);}void Write1302(unsigned char ucAddr, unsigned char ucDa) //ucAddr: DS1302地址, ucData: 要写的数据{DS1302_RST = 0;DS1302_CLK = 0;DS1302_RST = 1;DS1302InputByte(ucAddr); // 地址,命令DS1302InputByte(ucDa); // 写1Byte数据DS1302_CLK = 1;DS1302_RST = 0;}unsigned char Read1302(unsigned char ucAddr) //读取DS1302某地址的数据{unsigned char ucData;DS1302_RST = 0;DS1302_CLK = 0;DS1302_RST = 1;DS1302InputByte(ucAddr|0x01); // 地址,命令ucData = DS1302OutputByte(); // 读1Byte数据DS1302_CLK = 1;DS1302_RST = 0;return(ucData);}void DS1302_SetProtect(bit flag) //是否写保护{if(flag)Write1302(0x8E,0x10);elseWrite1302(0x8E,0x00);}void DS1302_SetTime(unsigned char Address, unsigned char Value) // 设置时间函数{DS1302_SetProtect(0);Write1302(Address, ((Value/10)<<4 | (Value%10)));}void DS1302_GetTime(SYSTEMTIME *Time){unsigned char ReadValue;ReadValue = Read1302(DS1302_SECOND);Time->Second = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_MINUTE);Time->Minute = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_HOUR);Time->Hour = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_DAY);Time->Day = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_WEEK);Time->Week = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_MONTH);Time->Month = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_YEAR);Time->Year = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); }void DateToStr(SYSTEMTIME *Time){Time->DateString[0] = Time->Year/10 + '0';Time->DateString[1] = Time->Year%10 + '0';Time->DateString[2] = '-';Time->DateString[3] = Time->Month/10 + '0';Time->DateString[4] = Time->Month%10 + '0';Time->DateString[5] = '-';Time->DateString[6] = Time->Day/10 + '0';Time->DateString[7] = Time->Day%10 + '0';Time->DateString[8] = '\0';}void TimeToStr(SYSTEMTIME *Time){Time->TimeString[0] = Time->Hour/10 + '0';Time->TimeString[1] = Time->Hour%10 + '0';Time->TimeString[2] = ':';Time->TimeString[3] = Time->Minute/10 + '0';Time->TimeString[4] = Time->Minute%10 + '0';Time->TimeString[5] = ':';Time->TimeString[6] = Time->Second/10 + '0';Time->TimeString[7] = Time->Second%10 + '0';Time->DateString[8] = '\0';}void Initial_DS1302(void){unsigned char Second=Read1302(DS1302_SECOND);if(Second&0x80)DS1302_SetTime(DS1302_SECOND,0);}/******************************************************************** ************void BurstWrite1302(unsigned char *pWClock) //往DS1302写入时钟数据(多字节方式){unsigned char i;Write1302(0x8e,0x00); // 控制命令,WP=0,写操作?DS1302_RST = 0;DS1302_CLK = 0;DS1302_RST = 1;DS1302InputByte(0xbe); // 0xbe:时钟多字节写命令for (i = 8; i>0; i--) //8Byte = 7Byte 时钟数据+ 1Byte 控制{DS1302InputByte(*pWClock); // 写1Byte数据pWClock++;}DS1302_CLK = 1;DS1302_RST = 0;}void BurstRead1302(unsigned char *pRClock) //读取DS1302时钟数据(时钟多字节方式){unsigned char i;DS1302_RST = 0;DS1302_CLK = 0;DS1302_RST = 1;DS1302InputByte(0xbf); // 0xbf:时钟多字节读命令for (i=8; i>0; i--){*pRClock = DS1302OutputByte(); // 读1Byte数据pRClock++;}DS1302_CLK = 1;DS1302_RST = 0;}void DS1302_TimeStop(bit flag) // 是否将时钟停止{unsigned char Data;Data=Read1302(DS1302_SECOND);DS1302_SetProtect(0);if(flag)Write1302(DS1302_SECOND, Data|0x80);elseWrite1302(DS1302_SECOND, Data&0x7F);}********************************************************************* ***********/#endif-四、心得体会这是一次非常难得的理论与实践相结合的机会,通过这次比较完整的数字电子时钟设计,我摆脱了单纯的理论知识学习状态,和实际设计的结合锻炼了我综合运用所学的专业基础知识,解决实际工程的能力。

相关文档
最新文档