基于c语言单片机电子时钟课程设计

合集下载

单片机设计闹钟课程设计

单片机设计闹钟课程设计

单片机设计闹钟课程设计一、课程目标知识目标:1. 让学生理解单片机的基本原理,掌握闹钟设计的硬件组成和功能模块。

2. 使学生掌握C语言编程基础,能够运用C语言编写简单的闹钟程序。

3. 帮助学生了解单片机中断、定时器等知识,并能将其应用于闹钟设计。

技能目标:1. 培养学生动手实践能力,能够独立完成闹钟硬件电路的搭建和程序编写。

2. 提高学生问题解决能力,能够根据实际需求调整闹钟程序,实现相应功能。

3. 培养学生团队协作能力,能够在小组合作中发挥个人优势,共同完成课程任务。

情感态度价值观目标:1. 培养学生对单片机及编程的兴趣,激发学习热情,树立自信心。

2. 培养学生勇于尝试、不断探索的精神,使其面对困难时保持积极态度。

3. 培养学生遵守实验规程,注重安全意识,养成良好的实验习惯。

课程性质:本课程为实践性较强的课程,旨在让学生通过动手实践,掌握单片机设计与编程的基本技能。

学生特点:学生处于高年级阶段,已具备一定的电子技术基础和编程知识,具备独立思考和解决问题的能力。

教学要求:教师应注重理论与实践相结合,引导学生主动参与,关注个体差异,激发学生潜能,提高教学质量。

通过课程学习,使学生能够将所学知识应用于实际项目中,达到学以致用的目的。

二、教学内容1. 硬件知识:介绍闹钟电路的组成,包括单片机芯片、时钟电路、蜂鸣器、按键等部件的功能和连接方式。

- 教材章节:《单片机原理与应用》第三章“单片机硬件结构”2. C语言编程:讲解C语言基础知识,重点掌握数据类型、运算符、控制语句等,并应用于单片机程序编写。

- 教材章节:《C语言程序设计》第二章“C语言基础”3. 单片机编程:学习单片机编程基础,掌握中断、定时器等编程方法,实现闹钟功能。

- 教材章节:《单片机原理与应用》第四章“中断与定时器”4. 闹钟程序设计:根据实际需求,编写闹钟程序,实现设定时间、响铃、停止等功能。

- 教材章节:《单片机原理与应用》第七章“项目实践案例”5. 实践操作:指导学生进行闹钟硬件电路搭建,程序编写和调试,培养学生动手能力。

电子时钟c语言课程设计

电子时钟c语言课程设计

电子时钟c语言课程设计一、课程目标知识目标:1. 学生能理解并掌握C语言中结构体、指针、函数等基本概念;2. 学生能运用C语言编程实现电子时钟的功能,包括时、分、秒的显示与更新;3. 学生了解电子时钟的原理,明确时间与计算机系统时间的关系。

技能目标:1. 学生能运用所学知识,设计并编写出具有实际功能的电子时钟程序;2. 学生通过课程学习,掌握编程调试技巧,提高解决问题的能力;3. 学生能够进行团队协作,共同分析问题、设计解决方案并完成项目。

情感态度价值观目标:1. 学生培养对编程的兴趣,激发探索精神,增强学习动力;2. 学生通过课程学习,认识到编程在实际生活中的应用,提高学习的实用性;3. 学生在团队协作中,学会沟通与交流,培养合作精神和团队意识。

课程性质:本课程为实践性较强的课程,旨在让学生通过动手实践,掌握C语言编程的基本技能,培养实际编程能力。

学生特点:学生已经掌握了C语言的基本语法,具有一定的编程基础,但对实际项目的开发流程和团队协作经验不足。

教学要求:教师需引导学生将所学理论知识应用于实际项目,注重培养学生的动手能力、解决问题的能力和团队协作能力。

在教学过程中,将目标分解为具体的学习成果,以便进行有效的教学设计和评估。

二、教学内容1. C语言基础回顾:结构体、指针、函数的定义与使用;2. 电子时钟原理介绍:时间概念、计算机系统时间处理;3. 编程环境准备:配置开发环境、编译与调试;4. 项目需求分析:明确电子时钟的功能需求、界面设计;5. 编程实现:- 设计结构体存储时间数据;- 编写函数实现时、分、秒的更新;- 实现界面显示与交互;- 处理异常情况与边界条件;6. 项目测试与优化:测试电子时钟程序、优化代码性能;7. 团队协作与交流:分组进行项目开发、组内讨论与分享;8. 课堂总结与反馈:总结项目开发过程、收集学生反馈。

教材关联章节:C语言基础、结构体与指针、函数、项目实践。

教学内容安排与进度:1. 基础知识回顾(1课时);2. 电子时钟原理介绍(1课时);3. 编程环境准备与项目需求分析(1课时);4. 编程实现(4课时);5. 项目测试与优化(2课时);6. 团队协作与交流(2课时);7. 课堂总结与反馈(1课时)。

基于C的数字电子钟设计

基于C的数字电子钟设计

基于C的数字电子钟设计数字电子钟是现代人生活中不可或缺的一部分,无论在家里、办公室或公共场所,我们都可以看到数字电子钟的身影。

由于其优越的性能,数字电子钟已成为人们计时和计算时间的理想选择。

而基于C语言的数字电子钟具有稳定、高效、灵活等特点,设计和实现一款基于C的数字电子钟将成为现代电子制造领域的一次重大创新。

一、项目背景数字电子钟是一种基于数字电路的设备,它可以通过数字显示器显示时间,具有高精度、高可靠性、高耐用性和低功耗等优点。

在现代社会中,数字电子钟广泛应用于家庭、学校、工厂、银行、火车站、医院等场所,成为现代化生活的必需品。

随着科技的不断发展,数字电子钟也在不断升级和更新,逐步发展成为数字化、智能化的产品。

基于C语言的数字电子钟设计,将主要采用单片机技术,将时间和日期转化为数字显示,可以支持闹钟、计时、秒表等基本功能,还可以实现声控和远程控制等高级功能,使其更加智能化、便捷化。

二、设计思路基于C的数字电子钟设计,主要包括硬件设计和软件设计两部分。

硬件设计部分主要包括芯片选型、电路设计、PCB设计等内容,软件设计部分主要包括程序设计、界面设计、功能实现等内容。

1.芯片选型在设计基于C的数字电子钟时,首先要选择适合的单片机芯片。

常用的单片机芯片有STC89C52、ATmega328P、STM8S003F3等,这些芯片都具有不同的特点和功能,可以根据具体需求进行选择。

如STC89C52单片机具有大容量存储、丰富的外设和编译器支持,适合用于高性能的数字电子钟;而ATmega328P单片机具有低功耗、高集成度和易学易用的特点,适合用于小型数字电子钟等。

2.电路设计电路设计是数字电子钟制作的核心部分,决定了电路的可靠性和性能。

电路设计主要包括时钟电路、显示电路、控制电路等,其中时钟电路可以采用晶体管作为电源,采用稳压器进行电压稳定,以保证时钟的准确度;显示电路可以采用7段数码管进行显示,可以加入闪烁和冒号等效果,提高用户体验;控制电路可以采用按键进行设定和切换模式,还可以加入遥控器等器件,提高数字电子钟的智能化和便捷性。

c电子时钟课程设计

c电子时钟课程设计

c 电子时钟课程设计一、课程目标知识目标:1. 学生能够理解电子时钟的基本原理,掌握电子时钟的主要部件及其功能。

2. 学生能够掌握时、分、秒的概念,学会电子时钟的时间设置与调整。

3. 学生能够了解电子时钟的设计与制作过程,掌握基本的电路连接方法。

技能目标:1. 学生能够运用所学知识,独立完成电子时钟的组装与调试。

2. 学生能够运用电子时钟的设计原理,进行简单的时钟程序编写与优化。

3. 学生能够通过实际操作,培养动手能力、逻辑思维能力和问题解决能力。

情感态度价值观目标:1. 学生通过学习电子时钟的制作,培养对科学技术的热爱和兴趣,增强创新意识。

2. 学生在团队协作中,学会互相帮助、沟通与交流,培养合作精神。

3. 学生能够认识到时间的宝贵,养成珍惜时间、合理安排时间的好习惯。

课程性质:本课程为电子技术实践课程,旨在让学生通过动手实践,掌握电子时钟的基本原理与制作方法。

学生特点:五年级学生具有一定的认知能力、动手能力和逻辑思维能力,对新鲜事物充满好奇。

教学要求:结合学生特点,注重理论与实践相结合,充分调动学生的主观能动性,引导学生在实践中探索、发现、解决问题。

将课程目标分解为具体的学习成果,以便在教学设计和评估中实现课程目标的有效落实。

二、教学内容1. 电子时钟基本原理:电子时钟的工作原理、主要部件(如晶体振荡器、分频器、计数器、显示器件等)及其功能。

教材章节:《电子技术》第五章第二节2. 时间概念与电子时钟设置:时、分、秒的概念,电子时钟的时间设置与调整方法。

教材章节:《电子技术》第五章第三节3. 电子时钟设计与制作:电子时钟的设计流程、电路连接方法,以及组装与调试技巧。

教材章节:《电子技术》第五章第四节、第五节4. 时钟程序编写与优化:基于电子时钟原理,进行简单的时钟程序编写与调试。

教材章节:《电子技术》第五章第六节5. 实践操作与作品展示:学生分组进行电子时钟的组装、调试,展示作品并进行评价。

教材章节:《电子技术》第五章实践环节教学进度安排:第一课时:电子时钟基本原理及主要部件介绍第二课时:时间概念与电子时钟设置方法第三课时:电子时钟设计与制作(一)第四课时:电子时钟设计与制作(二)第五课时:时钟程序编写与优化第六课时:实践操作与作品展示教学内容确保科学性和系统性,结合教材章节,以理论与实践相结合的方式进行教学,旨在帮助学生掌握电子时钟相关知识,培养动手能力与创新能力。

基于c语言的数字电子钟设计.

基于c语言的数字电子钟设计.

一、功能要求整体上要考虑:结构简单大方、布局美观合理、操作方便易懂、尽量避免各元器件之间的相互影响。

1、以AT89C51单片机进行实现秒分时上的正常显示和进位,其中显示功能由单片机控制共阴极数码管来实现,数码管进行动态显示。

2、具有校时功能,按键控制电路其中时键、分键、秒键三个键分别控制时分秒时间的调整。

按秒键秒加1;按分键分加1;按时键时加1.二、硬件设计1、整体设计框图2、管脚功能描述(1) XTAL1(19 脚)和XTAL2(18 脚):振荡器输入输出端口,外接晶振电路。

(2)RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。

(3)P0口8个端口依次和LED显示器的A、B、C、D、E、F、G和Dp端口对应连接,实现对显示器的片选功能。

(4)P2.0~P2.5依次与LED显示器的1、2、3、4、5、6一一连接,实现对显示器的为选功能。

(5)P3.0~P3.2依次与按键电路的秒、分、时三个按键相连接。

通过按键实现对时间的调试功能。

3、整体原理设计其计时周期为24小时,显示满刻度为23时59分59秒,另外还有校时功能。

整个设计图由晶振电路、复位电路、AT89C51单片机、键盘控制电路组成。

显示电路将“时”、“分”、“秒”通过七段显示器显示出来,6个数码管的段选接到单片机的P0口,位选接到单片机的P2口。

数码管按照数码管动态显示的工作原理工作。

把定时器定时时间设为50ms,则计数溢出20次即得时钟计时最小单位秒,而20次计数可用软件方法实现,每累计60秒进1分,每累计60分钟,进1小时。

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

校时电路时用来对“时”、“分”、“秒”显示数字进行校对调整,时分秒三个控制键分别接单片机的p3.2、p3.1、p3.0进行控制。

按一下秒键秒单元就加1 ,按一下分键分就加1,按一下时键时就加1。

4、晶振电路单片机的时钟产生方法有两种:内部时钟方式和外部时钟方式。

基于C51单片机的数字时钟课程设计(C语言带闹钟)

基于C51单片机的数字时钟课程设计(C语言带闹钟)

单片机技术课程设计数字电子钟学院:班级:姓名:学号:教师:摘要电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。

所以设计一个简易数字电子钟很有必要。

本电子钟采用AT89C52单片机为核心,使用12MHz 晶振与单片机AT89C52 相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。

该电子钟设有四个按键KEY1、KEY2、KEY3、KEY4和KEY5键,进行相应的操作就可实现校时、定时、复位功能。

具有时间显示、整点报时、校正等功能。

走时准确、显示直观、运行稳定等优点。

具有极高的推广应用价值。

关键词:电子钟 AT89C52 硬件设计软件设计目录NO TABLE OF CONTENTS ENTRIES FOUND.一、数字电子钟设计任务、功能要求说明及方案介绍1.1 设计课题设计任务设计一个具有特定功能的电子钟。

具有时间显示,并有时间设定,时间调整功能。

1.2 设计课题的功能要求说明设计一个具有特定功能的电子钟。

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

1.3 设计课的设计总体方案介绍及工作原理说明本电子钟主要由单片机、键盘、显示接口电路和复位电路构成,设计课题的总体方案如图1所示:图1-1总体设计方案图本电子钟的所有的软件、参数均存放在AT89C52的Flash ROM和内部RAM 中,减少了芯片的使用数量简化了整体电路也降低了整机的工作电流。

键盘采用动态扫描方式。

利用单片机定时器及计数器产生定时效果通过编程形成数字钟效果,再利用数码管动态扫描显示单片机内部处理的数据,同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。

单片机电子时钟课程设计实验报告(1)

单片机电子时钟课程设计实验报告(1)

单片机电子时钟课程设计实验报告(1)单片机电子时钟课程设计实验报告一、实验内容本次实验的主要内容是使用单片机设计一个电子时钟,通过编程控制单片机,实现时钟的显示、报时、闹钟等功能。

二、实验步骤1.硬件设计根据实验要求,搭建电子时钟的硬件电路,包括单片机、时钟模块、显示模块、按键模块等。

2.软件设计通过C语言编写单片机程序,用于实现时钟功能。

3.程序实现(1)时钟显示功能通过读取时钟模块的时间信息,在显示模块上显示当前时间。

(2)报时功能设置定时器,在每个整点时,通过发出对应的蜂鸣声,提示时间到达整点。

(3)闹钟功能设置闹钟时间和闹铃时间,在闹钟时间到达时,发出提示蜂鸣,并在屏幕上显示“闹钟时间到了”。

(4)时间设置功能通过按键模块实现时间的设置,包括设置小时数、分钟数、秒数等。

(5)年月日设置功能通过按键模块实现年月日的设置,包括设置年份、月份、日期等。

三、实验结果经过调试,电子时钟的各项功能都能够正常实现。

在运行过程中,时钟能够准确、稳定地显示当前时间,并在整点时提示时间到达整点。

在设定的闹铃时间到达时,能够发出提示蜂鸣,并在屏幕上显示“闹钟时间到了”。

同时,在需要设置时间和年月日信息时,也能够通过按键进行相应的设置操作。

四、实验感悟通过本次实验,我深刻体会到了单片机在电子设备中的广泛应用以及C 语言在程序设计中的重要性。

通过实验,我不仅掌握了单片机的硬件设计与编程技术,还学会了在设计电子设备时,应重视系统的稳定性与可靠性,并善于寻找调试过程中的问题并解决。

在今后的学习和工作中,我将继续加强对单片机及其应用的学习与掌握,努力提升自己的实践能力,为未来的科研与工作做好充分准备。

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

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

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

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

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

二、设计原理。

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

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

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

三、设计方案。

1. 硬件设计。

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

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

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

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

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

2. 软件设计。

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

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

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

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

四、设计实现。

1. 硬件实现。

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

2. 软件实现。

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

五、实验结果。

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

六、总结与展望。

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

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

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

单片机简易闹钟课程设计

单片机简易闹钟课程设计

单片机简易闹钟课程设计一、课程目标知识目标:1. 学生能理解单片机的基本原理,掌握闹钟设计的硬件组成及其功能。

2. 学生能掌握C语言编程的基本语法,运用其进行单片机的程序编写。

3. 学生了解实时时钟(RTC)的工作原理,能通过编程实现对时间的读取和设置。

技能目标:1. 学生能运用所学知识,设计并实现一个具有闹钟功能的基本单片机系统。

2. 学生能通过实践操作,学会使用开发板、编程器等工具,提高动手能力。

3. 学生能够分析并解决简易闹钟制作过程中遇到的问题,具备一定的故障排查能力。

情感态度价值观目标:1. 学生在课程学习中,培养对电子制作的兴趣和热情,提高创新意识和团队协作精神。

2. 学生通过实际操作,认识到知识在实际应用中的价值,增强学以致用的意识。

3. 学生在课程实践中,体验克服困难、解决问题的过程,培养坚持不懈、勇于挑战的品质。

课程性质:本课程为实践性较强的课程,结合单片机原理与应用,以项目为导向,培养学生的动手能力和实际问题解决能力。

学生特点:学生为初中或高中年级,具有一定的基础电子知识和C语言编程基础,对新鲜事物充满好奇,喜欢动手操作。

教学要求:教师需结合学生特点,采用讲授与实践相结合的教学方法,引导学生主动参与,注重培养学生的实际操作能力和团队协作能力。

在教学过程中,关注学生个体差异,给予个性化指导,确保学生能够达成课程目标。

通过课程学习,使学生将理论知识与实际应用紧密结合,提高综合素养。

二、教学内容1. 单片机基础知识:介绍单片机的硬件组成、工作原理,重点讲解51单片机的内部结构、引脚功能及寄存器等。

相关教材章节:第一章 单片机概述,1.1-1.3节。

2. C语言编程基础:回顾C语言的基本语法,强调与单片机编程相关的知识点,如数据类型、运算符、控制语句等。

相关教材章节:第二章 C语言编程基础,2.1-2.5节。

3. 闹钟硬件设计:讲解闹钟所需硬件(如时钟芯片、蜂鸣器、按键等)的选型及连接方式,分析电路原理图。

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

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

单片机电子时钟课程设计报告(一)单片机电子时钟课程设计报告随着科技的不断发展,电子时钟软件的应用越来越广泛。

本文将介绍一个单片机电子时钟的设计过程与实现方法。

一、设计目标本次课程设计我们的目标是设计一款能够进行时间显示的电子时钟。

具体要求如下:1. 时钟实时显示当前时间,包括时、分、秒和星期;2. 描述时钟功能,实现时间的调校、时间格式的调亮和调暗等操作;3. 显示格式清晰美观,操作方便简单,能够长时间稳定地工作。

二、硬件设计1. 硬件搭建:本设计采用单片机AT89C51作为核心CPU。

同时使用16MHz的晶振电路来为微控制器提供准确的时基。

另外,为了实现更好的人机交互,本设计还需要使用LCD液晶显示屏和4个按键。

2. 硬件接口:液晶显示屏需要采用并行接口,并且需要对显示屏背光进行控制。

而4个按键需要分别连接到4个I/O口上,从而实现对电子时钟的各项控制功能。

三、软件设计1. 程序框架:本设计使用Keil编程软件进行程序编写,并采用C语言进行程序设计。

主要的程序框架分为4个部分:数据收集模块、处理模块、显示模块和按键扫描模块。

2. 数据收集模块:数据收集模块采用中断方式,以1秒为间隔进行一次数据收集。

同时还需要对实时时间进行调校和校验。

3. 处理模块:处理模块主要用于完成各种时间处理和格式设置功能,包括对时、分、秒等时间数据进行读取、存储和操控操作。

同时,还要完成处于闹钟和日历两种状态的时间判断和时间更新操作。

4. 显示模块:显示模块主要用于将处理过的时间数据显示在LCD液晶显示屏上,实现时间的实时显示功能。

5. 按键扫描模块:按键扫描模块主要用于检测按键的按下和松开状态,并且根据不同按键的功能实现对时钟的不同控制操作。

四、总结本次设计采用单片机AT89C51作为核心CPU,对硬件和软件进行优化设计,结构合理,功能完善。

最终实现了日期时间的实时显示、闹钟功能、日历功能等多种功能。

同时,本设计能够进行时间调亮和调暗,具有操作方便简单、显示清晰美观等特点。

C语言课程设计--电子时钟

C语言课程设计--电子时钟

目录第一章课程设计目的和要求.............................................................. (2)1.1 C语言课程设计的目的.......................................................... (2)1.2 C语言课程设计的要求 (2)第二章课程设计任务内容 (3)第三章详细设计说明 (4)3.1模块 (4)3.1.1函数功能模块图 (4)3.1.2模块描述 (4)3.2 流程图及注释 (5)3.3限制条件 (5)3.4测试计划 (5)第四章软件使用说明及运行结果 (6)4.1使用说明 (6)4.2运行结果 (6)第五章课程设计心得与体会 (7)附录1 参考文献 (8)附录2 程序清单 (9)第一章课程设计目的和要求1.1 C语言课程设计的目的本次课程设计使得课堂教学与实验实践之间关系更为密切,让同学们认识到必须重视实践环节,多读程序,多编写程序,多上机实践。

进一步培养结构化程序设计的思想,加深对高级语言要素和控制结构的理解,针对C语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序风格。

本次课程设计着眼于知识的运用,把平常学的知识运用到课程时间中来,考察我们知识运用能力,对我们所学的理论知识进一步深化。

1.2 C语言课程设计的要求1. 分析课程设计题目的要求。

2. 对系统功能模块进行分析,写出详细设计说明文档。

3. 编写程序代码,代码量要求不少于300行。

调试程序使其能正确运行。

4. 设计完成的软件要便于操作和使用。

5. 设计完成后提交课程设计报告。

第二章课程设计任务内容设计一个电子时钟并满足下列要求:(1)能准确地利用数字显示日期和时间,在屏幕上显示一个运行的电子时钟,按任意键时程序退出。

(2)编写程序及上机运行并打印出来。

能准确得到相应的结果,原满完成该次课程设计的内容。

c语言实现电子时钟_课程设计

c语言实现电子时钟_课程设计

c语言实现电子时钟_课程设计题目: c语言实现电子时钟1课程设计的任务和具体要求1( 掌握利用c语言相关函数开发电子时钟的基本原理,为进一步开发高质量的程序打下坚实的基础。

提高运用c语言解决实际问题的能力。

2( 了解计算机图形学的相关算法。

3( 了解计算机图形学的相关函数的使用。

指导教师签字: 日期: 指导教师评语成绩: 指导教师签字: 日期:2课程设计所需软件、硬件等Windows xp win-TC课程设计进度计划起至日期工作内容备注 2010年12月1日-2010收集资料年12月20日2010年12月20日-2010编写程序年12月26日参考文献、资料索引序号文献、资料名称编著者出版单位a. 姜灵芝等.c语言课程设计案例精编.北京:清华大学出版社.2008b. 胡景春等。

大学生计算机课程实践优秀作品选编.南京:东南大学出版社.20103摘要:我们日常生活中有各种各样的时钟,随着计算机的普及和计算机科学的飞速发展,人们开始越来越多的利用计算机解决实际问题。

开发一个易于查看的时钟有较大的现实意义。

该时钟只实现简单的界面,程序与生活紧密结合,体直观开发简单。

利用c语言编辑源程序,再进行编译连接生成可执行文件,运行时可看见漂亮的外观。

一 .设计课题:电子时钟课程设计二.设计目的:本程序中涉及时间结构体,数组、绘图等方面的知识,通过本程序的训练,使我们有一个更深刻的了解,掌握利用c语言相关函数开发电子时钟的基本原理,为进一步开发高质量的程序打下坚实的基础。

提高运用c语言解决实际问题的能力。

三.设计内容:(1) 欢迎界面,以一个笑脸开始(2)主界面,包括数字时钟和电子时钟和按键提示。

(3)设计者介绍和功能提示。

四.总体设计:电子时钟是针对人们判断时间的落后和不准确性,通过利用计算机来实行对时间的系统计算,增加了准确性。

在软件的总体设计中采用自上而下,逐步细化,模块化设计,结构化编码方式进行。

系统结构图电子时钟时界按钟数面键动字显控画时示制处钟模模理模块块模块块1五.详细设计:(1)电子时钟执行主流程首先,程序调用initgraph()函数,使系统进入图像模式,然后通过使用line(),arc(),outtextxy(),和circle()等函数来绘制主窗口及电子时钟界面,然后调用clockhandle()函数来处理时钟的运转及数字时钟的显示。

基于单片机C语言电子时钟完整版(闹钟,整点报时)

基于单片机C语言电子时钟完整版(闹钟,整点报时)

《单片机技术》课程设计说明书数字电子钟系、部:电气与信息工程学院学生姓名:指导教师:职称专业:班级:完成时间:2013-06-07摘要电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。

所以设计一个简易数字电子钟很有必要。

本电子钟采用ATMEL公司的AT89S52单片机为核心,使用12MHz 晶振与单片机AT89S52 相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。

该电子钟设有四个按键KEY1、KEY2、KEY3、KEY4和KEU5键,进行相应的操作就可实现校时、定时、复位功能。

具有时间显示、整点报时、校正等功能。

走时准确、显示直观、运行稳定等优点。

具有极高的推广应用价值。

关键词电子钟;AT89S52;硬件设计;软件设计ABSTRACTClock is widely used in life, and a simple digital clock is more welcomed by people. So to design a simple digital electronic clock is necessary.The system use a single chip AT89S52 of ATMEL’s as its core to control The crystal oscillator clock,using of E-12MHZ is connected with the microcontroller AT89S52, through the software programming method to achieve a 24-hour cycle, and eight 7-segment LED digital tube (two four in one digital tube) displays hours, minutes and seconds requirements, and in the time course of a timing function, when the time arrived ahead of scheduled time to buzz a good timekeeping. The clock has four buttons KEY1, KEY2, KEY3,KEY4 and KEY5 key, and make the appropriate action can be achieved when the school, timing, reset. With a time display, alarm clock settings, timer function, corrective action. Accurate travel time, display and intuitive, precision, stability, and so on. With a high application value.Key words Electronic clock;;AT89S52;Hardware Design;Software Design目录1设计课题任务、功能要求说明及方案介绍 (1)1.1设计课题任务 (1)1.2功能要求说明 (1)1.3设计总体方案介绍及原理说明 (1)2设计课题硬件系统的设计 (2)2.1设计课题硬件系统各模块功能简要介绍 (2)2.2设计课题电路原理图、PCB图、元器件布局图 (2)2.3设计课题元器件清单 (5)3设计课题软件系统的设计 (6)3.1设计课题使用单片机资源的情况 (6)3.2设计课题软件系统各模块功能简要介绍 (6)3.3设计课题软件系统程序流程框图 (6)3.4设计课题软件系统程序清单 (10)4设计结论、仿真结果、误差分析、教学建议 (21)4.1设计课题的设计结论及使用说明 (21)4.2设计课题的仿真结果 (21)4.3设计课题的误差分析 (22)4.4设计体会 (22)4.5教学建议 (22)结束语 (23)参考文献 (24)致谢 (25)附录 (26)1 设计课题任务、功能要求说明及方案介绍1.1 设计课题任务设计一个具有特定功能的电子钟。

c电子时钟课程设计

c电子时钟课程设计

c 电子时钟课程设计一、课程目标知识目标:1. 学生能够理解电子时钟的基本原理,掌握电子时钟的组成、功能及工作流程。

2. 学生能够运用所学知识,分析并设计简单的电子时钟电路。

3. 学生能够解释电子时钟显示时间的原理,理解时、分、秒之间的换算关系。

技能目标:1. 学生能够运用电子元件,如集成电路、晶体管、LED灯等,动手搭建一个简易的电子时钟。

2. 学生能够通过编程软件,设计并实现电子时钟的显示功能。

3. 学生能够运用所学知识,解决电子时钟在实际应用中遇到的问题。

情感态度价值观目标:1. 培养学生对电子技术的兴趣,激发学生的创新意识和探索精神。

2. 培养学生团队协作意识,提高学生在团队中沟通、协作的能力。

3. 培养学生关注社会发展,了解电子时钟在生活中的应用,认识到科技对生活的影响。

本课程针对中学生设计,结合学生好奇心强、动手能力逐步提高的特点,注重理论与实践相结合,以培养学生的创新能力和实际操作能力为核心。

课程目标具体、可衡量,旨在帮助学生掌握电子时钟相关知识,提高实践技能,培养科学素养,为后续学习打下坚实基础。

二、教学内容本课程教学内容主要包括以下几部分:1. 电子时钟基本原理:介绍电子时钟的组成、工作原理,包括时钟电路、振荡器、分频器、计数器等。

2. 电子时钟电路设计:讲解如何使用集成电路、晶体管、LED灯等元件搭建电子时钟,分析电路图,明确各部分功能。

3. 编程设计:教授如何使用编程软件(如Arduino、Scratch等)设计电子时钟程序,实现时、分、秒的显示功能。

4. 电子时钟制作与调试:指导学生动手制作简易电子时钟,学会调试电路,解决问题,确保电子时钟正常运行。

5. 电子时钟应用与拓展:探讨电子时钟在生活中的应用,了解其发展趋势,激发学生创新意识。

教学内容与课本章节关联如下:1. 电子时钟基本原理——对应教材第3章“数字电路基础”2. 电子时钟电路设计——对应教材第4章“数字电路设计”3. 编程设计——对应教材第5章“微控制器及应用”4. 电子时钟制作与调试——对应教材第6章“电子制作与调试”5. 电子时钟应用与拓展——对应教材第7章“现代电子技术应用”教学进度安排:共5个课时,第1-2课时学习基本原理和电路设计,第3-4课时进行编程设计和制作调试,第5课时进行应用与拓展讨论。

单片机电子钟课程设计

单片机电子钟课程设计

单片机电子钟课程设计一、课程目标知识目标:1. 学生能够理解单片机的基本原理和编程方法。

2. 学生能够掌握电子时钟的构成和工作原理。

3. 学生能够运用所学知识,设计并实现一个具有基本功能的单片机电子钟。

技能目标:1. 学生能够运用编程软件进行单片机程序编写和调试。

2. 学生能够使用电子元件搭建电路,并进行基本的电路测试和故障排除。

3. 学生能够通过团队协作,完成电子钟的设计、制作和优化。

情感态度价值观目标:1. 培养学生对电子技术的兴趣,激发创新意识和探索精神。

2. 培养学生良好的团队合作精神和沟通能力。

3. 培养学生严谨的科学态度,注重实践操作,提高问题解决能力。

课程性质:本课程为实践性较强的课程,结合理论教学和动手操作,培养学生实际动手能力和创新思维。

学生特点:学生为初中生,具备一定的物理和数学基础,对电子技术有一定的好奇心和求知欲。

教学要求:教师需结合学生特点,采用启发式教学,引导学生主动探究,注重理论与实践相结合,提高学生的实际操作能力。

同时,关注学生的个体差异,给予个性化指导,确保课程目标的达成。

通过课程学习,使学生能够将所学知识应用于实际项目中,培养其综合素质。

二、教学内容1. 单片机基础知识:介绍单片机的组成、工作原理和编程语言(C语言),对应教材第二章内容。

2. 电子时钟原理:讲解电子时钟的基本构成、计时原理和显示技术,对应教材第四章内容。

3. 硬件电路设计:学习并设计单片机电子钟的电路图,选择合适的电子元件,对应教材第三章内容。

4. 程序设计与调试:编写单片机程序,实现电子钟的基本功能,如时、分、秒显示,闹钟等,对应教材第五章内容。

5. 电路搭建与测试:根据设计电路图,搭建实体电路,进行功能测试和故障排查,对应教材第六章内容。

6. 项目制作与优化:以小组形式完成电子钟的制作,对产品进行优化和改进,提高性能和稳定性。

教学进度安排:第一周:单片机基础知识学习,熟悉编程环境。

第二周:电子时钟原理学习,设计电路图。

c电子钟的课程设计

c电子钟的课程设计

c 电子钟的课程设计一、课程目标知识目标:1. 学生能够理解电子钟的基本原理和组成部分,掌握其工作原理。

2. 学生能够掌握电子钟中关键元件如时钟芯片、晶体振荡器等的功能和作用。

3. 学生能够描述电子钟的时间计数、显示和调整功能。

技能目标:1. 学生能够运用所学知识,设计简单的电子钟电路,并进行组装和调试。

2. 学生能够通过实际操作,学会使用万用表、电烙铁等基本电子工具。

3. 学生能够运用电子钟相关知识,解决实际生活中的时间测量问题。

情感态度价值观目标:1. 学生通过学习电子钟的制作,培养对电子技术的兴趣和爱好,激发创新意识。

2. 学生在团队协作中,学会互相帮助、共同解决问题,培养合作精神和沟通能力。

3. 学生能够关注电子钟在日常生活中的应用,认识到科技对生活的影响,提高科技素养。

课程性质:本课程为实践性强的学科,结合理论知识与动手操作,培养学生电子技术的基本技能。

学生特点:六年级学生具有一定的电子知识基础和动手能力,对新鲜事物充满好奇心。

教学要求:教师需注重理论与实践相结合,关注学生个体差异,引导学生主动探究,提高学生的实践能力和创新能力。

在教学过程中,将课程目标分解为具体的学习成果,以便进行有效的教学设计和评估。

二、教学内容本课程依据课程目标,选择以下教学内容:1. 电子钟基本原理:讲解电子钟的工作原理,包括时钟芯片、晶体振荡器、计数器、显示电路等组成部分。

2. 电子元件识别与使用:学习常用电子元件如电阻、电容、二极管、三极管等的识别和使用方法。

3. 电子钟电路设计:学习电子钟电路图的绘制,分析电路中各部分的功能和连接方式。

4. 电子钟组装与调试:动手实践,组装电子钟,学会使用万用表、电烙铁等工具进行调试。

5. 电子钟程序设计:学习编写简单的电子钟程序,实现时间计数、显示和调整功能。

教学内容安排和进度:第一课时:电子钟基本原理,时钟芯片和晶体振荡器介绍。

第二课时:电子元件识别与使用,分析电子钟电路图。

c电子时钟课程设计

c电子时钟课程设计

c电子时钟课程设计一、课程目标知识目标:1. 学生能够理解电子时钟的构成和工作原理,掌握基础电子元件的作用。

2. 学生能够阐述数字电路的基本概念,并运用至电子时钟的制作中。

3. 学生能够解释电子时钟显示时间的原理,包括时、分、秒的计算与显示。

技能目标:1. 学生能够运用所学知识,设计并搭建简单的电子时钟电路。

2. 学生能够通过编程,实现电子时钟的时、分、秒显示功能。

3. 学生能够熟练使用相关工具和仪器,进行电子时钟的组装和调试。

情感态度价值观目标:1. 学生培养对电子科学的兴趣,提高学习主动性和探究精神。

2. 学生培养团队协作意识,学会与他人共同解决问题。

3. 学生培养创新思维,敢于尝试新方法,勇于面对挑战。

分析课程性质、学生特点和教学要求,本课程目标旨在使学生在掌握电子时钟相关知识的基础上,提高实践操作能力,培养科学素养和创新能力。

通过具体的学习成果分解,教师可针对不同学生的学习情况进行教学设计和评估,确保课程目标的实现。

二、教学内容本课程教学内容围绕电子时钟的设计与制作展开,依据课程目标,教学内容分为以下三个部分:1. 电子时钟基础知识:- 电子元件:介绍常用电子元件如电阻、电容、二极管、三极管等,以及它们在电子时钟中的作用。

- 数字电路:讲解基本逻辑门、触发器、计数器等数字电路原理,为电子时钟设计打下基础。

- 教材章节:参照课本第3章“数字电路基础”和第4章“常用电子元件及其应用”。

2. 电子时钟设计与制作:- 设计原理:讲解电子时钟工作原理,包括时、分、秒计数及显示方法。

- 制作实践:指导学生进行电子时钟电路设计、编程、组装和调试。

- 教材章节:参照课本第6章“数字电路应用实例”和第7章“电子时钟设计与制作”。

3. 技能训练与创新能力培养:- 实践操作:训练学生熟练使用工具、仪器进行电子时钟组装和调试。

- 创新设计:鼓励学生尝试改进电子时钟设计,发挥创新思维。

- 教材章节:参照课本第8章“实践与创新”相关内容。

c语言电子时钟课程设计

c语言电子时钟课程设计

c语言电子时钟课程设计一、课程目标知识目标:1. 理解C语言中结构体、函数和循环控制的使用,掌握电子时钟的基本原理。

2. 学习并掌握使用C语言编写程序,实现电子时钟的功能,包括时、分、秒的显示与更新。

3. 了解C语言中定时器功能的使用,实现电子时钟的自动更新。

技能目标:1. 能够运用所学知识,独立设计并编写一个简单的C语言电子时钟程序。

2. 培养学生的编程实践能力,提高问题分析和解决能力。

3. 学会使用调试工具,对程序进行调试和优化,提高程序运行的稳定性。

情感态度价值观目标:1. 培养学生对计算机编程的兴趣和热情,激发学生的学习主动性。

2. 培养学生的团队合作意识,学会与他人共同解决问题,相互学习和进步。

3. 培养学生的创新精神,敢于尝试新方法,勇于克服困难,不断优化程序。

课程性质:本课程为实践性较强的课程,结合理论知识与实际操作,使学生能够学以致用。

学生特点:学生已具备一定的C语言基础,了解基本语法和编程思路,但对实际应用还不够熟练。

教学要求:结合学生特点,注重理论与实践相结合,提高学生的编程实践能力,培养学生的问题分析和解决能力。

在教学过程中,关注学生的个体差异,给予个性化指导。

通过课程学习,使学生能够独立完成一个具有实际意义的编程项目。

二、教学内容1. 复习C语言基础:变量、数据类型、运算符、控制结构(章节1-4)。

2. 结构体与指针:介绍结构体的定义和使用,指针的概念和操作(章节5)。

3. 函数:回顾函数的定义、调用和参数传递,强调模块化编程的重要性(章节6)。

4. 循环控制:深入学习for循环和while循环,理解其在电子时钟中的应用(章节7)。

5. 定时器与时间处理:介绍定时器原理,时间处理函数的使用(章节8)。

6. 电子时钟编程实践:结合所学知识,设计并实现电子时钟程序。

- 显示部分:编写代码实现时、分、秒的显示(课时1)。

- 更新部分:实现时间递增,每秒更新显示(课时2)。

- 定时器应用:使用定时器自动更新时间,减少资源消耗(课时3)。

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

课程设计报告课程名称:单片机程序设计报告题目:电子时钟学生姓名:所在学院:信息科学与工程学院专业班级:学生学号:指导教师:2013年12月25日课程设计任务书摘要单片计算机即单片微型计算机。

由RAM、ROM、CPU构成。

定时,计数和多种接口于一体的微控制器。

它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。

而51系列单片机是各单片机中最为典型和最有代表性的一种。

这次课程设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。

本设计主要设计了一个基于AT89C51单片机的电子时钟。

并在数码管上显示相应的时间。

并通过一个控制键用来实现时间的调节和是否进入省电模式的转换。

应用Proteus的ISIS软件实现了单片机电子时钟系统的设计与仿真。

该方法仿真效果真实、准确,节省了硬件资源。

关键词:单片机;子时钟;键控制目录一、概述 (5)1.1电子时钟简介 (5)1.2电子时钟的基本特点 (5)1.3电子时钟的原理 (5)二、方案设计选择 (5)2.1计时方案 (5)2.2显示方案 (5)三、硬件设计 (6)3.1单片机型号选择 (6)3.2数码管显示工作原理 (6)3.3键盘电路设计 (7)3.4电路原理图 (7)四、软件设计 (7)五、结论与心得 (15)六、参考文献 (16)一、概述1.1 电子时钟简介1957年,Ventura发明了世界上第一个电子表,从而奠定了电子时钟的基础,电子时钟开始迅速发展起来。

现代的电子时钟是基于单片机的一种计时工具,采用延时程序产生一定的时间中断用于一秒的定义,通过计数方式进行满六十秒分钟进一,满六十分小时进一,满二十四小时小时清零。

从而达到计时的功能,是人民日常生活补课缺少的工具。

1.2 电子时钟的基本特点现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED 显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。

1.3 电子时钟的原理该电子时钟由89C51,BUTTON,六段数码管等构成,采用晶振电路作为驱动电路,由延时程序和循环程序产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天。

而电路中唯一的一个控制键却拥有多种不同的功能,按下又松开,可以实现屏蔽数码管显示的功能,达到省电的目的;直接按下不松开,则可以通过按键实现分钟的累加,每按一次分钟加一;而连续两次按下按键不放松,则可实现小时的调节,同样每按一次小时加一。

二、方案设计选择2.1计时方案方案1:采用实时时钟芯片现在市场上有很多实时时钟集成电路,如DS1287、DS12887、DS1302等。

这些实时时钟芯片具备年、月、日、时、分、秒计时功能和多点定时功能,计时数据的更新每秒自动进行一次,不需要程序干预。

因此,在工业实时测控系统中多采用这一类专用芯片来实现实时时钟功能。

方案2:使用单片机内部的可编程定时器。

利用单片机内部的定时计数器进行中端定时,配合软件延时实现时、分、秒的计时。

该方案节省硬件成本,但程序设计较为复杂。

2.2显示方案对于实时时钟而言,显示显然是另一个重要的环节。

通常LED显示有两种方式:动态显示和静态显示。

静态显示的优点是程序简单、显示亮度有保证、单片机CPU的开销小,节约CPU的工作时间。

但占有I/O口线多,每一个LED都要占有一个I/O口,硬件开销大,电路复杂。

需要几个LED就必须占有几个并行口,比较适用于LED数量较少的场合。

当然当LED数量较多的时候,可以使用单片机的串行口通过移位寄存器的方式加以解决,但程序编写比较麻烦。

LED动态显示硬件连接简单,但动态扫描的显示方式需要占有CPU较多的时间,在单片机没有太多实时测控任务的情况下可以采用。

本系统需要采用6位LED数码管来分别显示时、分、秒,因数码管个数较多,故本系统选择动态显示方式。

三、硬件设计3.1单片机型号的选择通过对多种单片机性能的分析,最终认为89C51是最理想的电子时钟开发芯片。

89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8 位微处理器,器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C5是一种高效微控制器,而且它与MCS-51兼容,且具有4K字节可编程闪烁存储器和1000写/擦循环,数据保留时间为10年等特点,是最好的选择。

3.2数码管显示工作原理数码管是一种把多个LED显示段集成在一起的显示设备。

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

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

共阴型就是把多个LED显示段的阴极接在一起,即为公共商。

阳极即为二极管的正极,又称为正极,阴极即为二极管的负极,又称为负极。

通常的数码管又分为8段,即8个LED显示段,这是为工程应用方便如设计的,分别为A、B、C、D、E、F、G、DP,其中DP是小数点位段。

而多位数码管,除某一位的公共端会连接在一起,不同位的数码管的相同端也会连接在一起。

即所有的A段都会连在一起,其它的段也是如此,这是实际最常用的用法。

数码管显示方法可分为静态显示和动态显示两种。

静态显示就是数码管的8段输入及其公共端电平一直有效。

动态显示的原理是,各个数码管的相同段连接在一起,共同占用8位段引管线;每位数码管的阳极连在一起组成公共端。

利用人眼的视觉暂留性,依次给出各个数码管公共端加有效信号,在此同时给出该数码管加有效的数据信号,当全段扫描速度大于视觉暂留速度时,显示就会清晰显示出来。

3.3键盘电路设计该设计只用了一个键盘,但实现的功能却是比较完善,减少了硬件资源的损耗,该键盘可以实现小时和分钟的调节;直接按下不松开,则可以通过按键实现分钟的累加,每按一次分钟加一;而连续两次按下按键不放松,则可实现小时的调节,同样每按一次小时加一。

达到时间调节的目的。

3.4电路原理图四、软件设计#include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int#define somenop {_nop_();_nop_();_nop_();_nop_();_nop_();} //宏定义掩延时函数sbit K1=P3^0; //位定义sbit K2=P3^1;sbit K3=P3^2;sbit K4=P3^3;sbit D34=P3^4;sbit SCL = P2^0;sbit SDA = P2^1;void diyi();void xianshi(); // 函数声明void panduan(); //函数声明void delay(uchar z); //函数声明uchar t=0,n=1,m=59,a,temp; //定义变量uchar code at[]={0xe0,0xd0,0xb0,0x70}; //定义数组uchar code as[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uchar code b[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};uint cnt;void delay_us(uchar tt) //短延时函数{while(tt--);}/****************************//***********初始化***********//**************************//********at24c02***********/void I2C_start()//I^2C模块{SDA = 1;_nop_();SCL = 1;somenop;SDA = 0;somenop;SCL = 0;}void I2C_stop(){SDA = 0;_nop_();SCL = 1;somenop;SDA = 1;}void I2C_ack(bit ackbit) {if(ackbit)SDA = 0;elseSDA = 1;somenop;SCL = 1;somenop;SCL = 0;SDA = 1;somenop;}bit I2C_waitack(){SDA = 1;somenop;SCL = 1;somenop;if(SDA){SCL = 0;I2C_stop();return 0;}else{SCL = 0;return 1;}}void I2C_write(uchar dat){uchar i;for(i=0;i<8;i++){if(dat&0x80)SDA = 1;elseSDA = 0;somenop;SCL = 1;dat <<= 1;somenop;SCL = 0;}}uchar I2C_read(){uchar dat;uchar i;for(i=0;i<8;i++){SCL = 1;somenop;dat <<= 1;if(SDA)dat |= 0x01;SCL = 0;somenop;}return dat;}void W_at24c02(uchar add,uchar dat){I2C_start();I2C_write(0xa0);I2C_waitack();I2C_write(add);I2C_waitack();I2C_write(dat);I2C_waitack();I2C_stop();delay_us(300);}uchar R_at24c02(uchar add) {uchar AT_temp;I2C_start();I2C_write(0xa0);I2C_waitack();I2C_write(add);I2C_waitack();I2C_start();I2C_write(0xa1);I2C_waitack();AT_temp = I2C_read();I2C_ack(0);I2C_stop();return AT_temp;}/**************************//************main**********/void main(){diyi();t= R_at24c02(24); //程序运行时,读取掉电前数据m= R_at24c02(23);n= R_at24c02(25);while(1){panduan();//判断子函数xianshi();//显示子函数}}void diyi() //定义子函数{P2=0xbf;P0=0xbf;TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;}void exer1() interrupt 1 //定时器/计数器1{uchar t1;TH0=(65536-50000)/256;TL0=(65536-50000)%256;t1++;if(t1==10){P2=0x9f;P0=0x00;}if(t1==20){P2=0x9f;P0=0xff;t1=0;t++;W_at24c02(24,t ); //每隔一秒,保存当前数据delay(3);W_at24c02(23,m);delay(3);W_at24c02(25,n);if(t==60){ t=0; m++;if(m==60){ m=0; n++; }if(n==24)n=0;}}}void xianshi()//显示函数{P2 = 0xdf; P0 =b[0]; P2=0x1f; P0=0xff; P2 = 0xff; P0 =as[t%10];P2=0x1f;P0=0x00;delay(3);P2 = 0xdf; P0 =b[1]; P2=0x1f; P0=0xff; P2 = 0xff; P0 =as[(t/10)%10]; P2=0x1f;P0=0x00;delay(3);P2 = 0xdf; P0 =b[2]; P2=0x1f; P0=0xff; P2 = 0xff; P0 =0xbf;P2=0x1f;P0=0x00;delay(3);P2 = 0xdf; P0 =b[3]; P2=0x1f; P0=0xff; P2 = 0xff; P0 =as[m%10];P2=0x1f;P0=0x00;delay(3);P2 = 0xdf; P0 =b[4]; P2=0x1f; P0=0xff; P2 = 0xff; P0 =as[(m/10)%10]; P2=0x1f;P0=0x00;delay(3);P2 = 0xdf; P0 =b[5]; P2=0x1f; P0=0xff; P2 = 0xff; P0 =0xbf;P2=0x1f;P0=0x00;delay(3);P2 = 0xdf; P0 =b[6]; P2=0x1f; P0=0xff; P2 = 0xff; P0 =as[n%10];P2=0x1f;P0=0x00;delay(3);P2 = 0xdf; P0 =b[7]; P2=0x1f; P0=0xff; P2 = 0xff; P0 =as[(n/10)%10]; P2=0x1f;P0=0x00;delay(3);}void delay(uchar z)//延时函数{uchar i,j;for(i=0;i<z;i++)for(j=0;j<110;j++);}void panduan()//判断函数{P3=0xfe;delay(5);temp=P3;temp=temp&0xf0;if(temp!=0xf0){delay(5);if(temp!=0xf0){while(P3!=0xfe);if(temp==at[0]){a++;TR0=0; if(a==4) {a=0;TR0=1;}}if(temp==at[1]){if(a==1){ t++; if(t==60){ t=0;} }if(a==2){m++;if(m==60){m=0;}}if(a==3){ n++;if(n==24){n=0;}}}if(temp==at[2]){if(a==1){if(t==0){t=60;}t--;}if(a==2){if(m==0){m=60;}m--;}if(a==3){if(n==0){n=24;}n--;}}P2 = 0xc0;P0 =b[7]; P2=0x00;P0=0xff;P2 = 0xe0;P0=0xff;P2=0x00;P0=0x00;delay(3);}}}五、结论与心得在廖亦凡和曹铁军老师耐心的指导下,我顺利完成了这次单片机课程设计课题中的电子时钟设计,过这次的设计使我认识到本人对单片机方面的知识知道的太少了,对于书本上的很多知识还不能灵活运用,尤其是对程序设计语句的理解和运用,不能够充分理解每个语句的具体含义,导致编程的程序过于复杂,使得需要的存储空间增大。

相关文档
最新文档