C语言完成电子钟的设计

合集下载

电子时钟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语言来制作这样一款电子时钟,看时间这把杀猪刀如何“一刀一刀”溜掉。

我会一步一步引导大家了解制作过程。

首先,我们可以想到,需要获取系统的时间函数,并且显示在cmd控制台中。

time.h是c/c++日期和时间头文件,用于获取系统日期和时间等要求。

首先给出提取显示当前时间的1.0版本电子时钟。

#include<stdio.h>#include<time.h>#include<string.h>int main(){char str[50];//定义字符串用于存储时间time_t t;struct tm *nt;//tm是time.h中定义的一个结构体t=time(NULL);nt=localtime(&t);//获取当前时间strftime(str,50,"%Y-% m-%d %H:%M:%S ",nt);//strftime是根据当前计算机区域设置格式化本地时间日期printf("现在时刻:%s\n",str);//打印现在时刻getch();return 0;}运行的结果如下:可以看出,的确做到了显示当前时间,但是很明显这不是电子时钟,电子时钟要不断运行变换时间,而不是让时间凝滞。

那么,我们怎么实现真正的电子时钟呢?我们一起思考:如果要实现时间变化,需要不断重新获取当前时间,并且将之前的显示清除掉,然后再打印显示当前时间,这样循环往复。

所以,需要增加一个while(1)死循环,同时要增加一个清屏函数,清除原来的显示。

清屏函数常用的就是system("cls")。

下面是改进后的2.0版代码。

#include<stdio.h>#include<time.h>#include<string.h>int main(){char str[50];time_t t;struct tm *nt;while(1){system("cls");//清屏函数t=time(NULL);nt=localtime(&t);strftime(str,50,"%Y-%m-%d %H:%M:%S “,nt);printf("现在时刻:%s\n",str);}getch();return 0;}然后运行程序,就可以实现电子时钟了,时间不断刷新,秒数递增,时间随之递增。

电子时钟计时器的设计(c语言版_调试完美通过_可直接使用)(附原理图源程序以及完整的文档)..

电子时钟计时器的设计(c语言版_调试完美通过_可直接使用)(附原理图源程序以及完整的文档)..

湖南人文科技学院课程设计报告课程名称:单片机原理及应用课程设计设计题目:电子时钟的设计系别:通信与控制工程系专业:通信工程班级:09级通信二班学生姓名: 袁琦黄文付学号: 09416230 09416227起止日期:2011年12月20日~2011年12月30日指导教师:王善伟姚毅谢四莲教研室主任:刘建闽摘要时钟是人类日常生活必不可少的工具,本设计从日常生活中常见的事物入手,通过对电子时钟的设计,让我们认识到单片机已经深入到我们生活的每个领域,该设计不仅可以锻炼我们的动手能力,而且可以加深我们对单片机的认识和激发我们对未知科学领域的探索。

本文利用单片机实现数字时钟计时功能的主要内容。

它体积小,成本低、功能强、使用方便、可靠性高等一系列优点,广泛应用于智能产业和工业自动化上。

本次设计采用独立式按键进行时间调整,其中STC89C52是核心元件,同时采用数码管LED动态显示“时”,“分”,“秒”的现代计时装置。

与传统机械表相比,它具有走时精确,显示直观等特点。

它的计时周期为24小时,显满刻度为“23时59分59秒”,另外利用DS1302具有校时功能,断电后有记忆功能,恢复供电时可实现计时同步等特点。

该系统同时具有硬件设计简单、工作稳定性高、价格低廉等优点。

关键词:STC89C52 ;LED数码管;8255芯片;DS1302芯片;目录设计要求 (1)1.方案论证与对比 (1)1.1方案一 (1)1.2方案二 (2)1.3方案对比 (2)2.系统硬件电路的设计 (3)2.1单片机的选择及引脚功能介绍 (3)2.2 8255A芯片的结构及引脚功能介绍 (4)2.3 DS1302芯片的结构及引脚功能介绍 (6)2.4显示电路设计 (7)2.5电源电路设计 (8)2.6键盘动态扫描电路设计 (8)3.控制系统的软件设计 (10)3.1主程序流程图 (10)3.2显示子程序 (11)3.3闹钟时间设定功能程序 (11)3.4键盘扫描程序 (12)4.系统功能调试与整体指标 (13)4.1硬件调试与分析 (13)4.2软件调试与分析 (13)4.3性能分析 (13)5.详细仪器清单 (14)6.总结与思考及致谢 (15)参考文献 (16)附录一:程序(方案一) (17)附录二:程序(方案二) (25)电子时钟的设计设计要求利用单片机作为控制核心,完成一个时钟计时器。

基于C的数字电子钟设计

基于C的数字电子钟设计

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

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

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

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

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

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

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

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

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

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

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

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

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

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

电子钟设计c语言设计

电子钟设计c语言设计

电子钟设计c语言设计电子钟是一种使用数字或者模拟显示时间的时钟。

它通常使用数字显示屏或者液晶屏来显示时间。

电子钟的优势在于与传统机械钟相比,它更加准确、可靠、精准和方便。

通过使用c语言来设计电子钟可以使它更加智能化和强大。

我们知道,c语言是一种通用的高级编程语言,它非常适合用于系统编程和应用程序开发。

电子钟的设计需要运用c语言的数据结构、算法、指针和其他通用编程技术。

设计一个可靠的电子钟需要考虑到准确显示时间、时区调整、闹钟功能、定时器和更多的功能。

在设计电子钟时,我们首先需要考虑到选择合适的开发平台和硬件选型。

例如,我们可以使用Arduino或者Raspberry Pi 等开发板来设计电子钟。

这些开发板既能提供强大的计算能力,又可以提供足够的GPIO引脚和通信接口。

同时,我们还需要选择合适的时钟模块,例如DS1307、DS3231和DS1302等。

接下来,我们可以考虑设计程序框架。

设计程序框架需要考虑到用户需求,从而使程序有条不紊地进行。

我们可以设计菜单选项来满足用户需求,例如时钟显示、日期显示、温度显示等等。

此外,还可以考虑添加一些有趣的功能,例如给予经度和纬度计算日出日落时间以及天气预报等。

电子钟的时间显示通常使用RTC模块与单片机进行通信。

RTC模块可以提供秒、分、时、日、月、年等时间数据。

我们需要从RTC模块读取这些数据,并将它们转换成格式化的字符串进行显示。

我们还需要考虑到时区的调整,以便在不同时区下准确显示时间。

闹钟功能是电子钟的一个重要特性。

我们可以设计界面来设置闹钟时间和日期。

当闹钟响起时,电子钟可以触发警报并发出声音或声音和振动提醒。

我们还可以增加关闭闹钟的选项,以便用户可以在闹钟响起时快速关闭它。

另一个特色功能是定时器,它可以用来进行倒计时或计时操作。

我们可以使用按钮或者旋转编码器来设置定时器时间。

定时器可以在倒计时或计时完成时发出警报来通知用户,以便执行相应的操作。

最后,我们需要考虑到电子钟的可扩展性和灵活性。

c电子时钟课程设计

c电子时钟课程设计

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

课程设计报告课程名称:单片机程序设计报告题目:电子时钟学生姓名:所在学院:信息科学与工程学院专业班级:学生学号:指导教师: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 显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。

用c语言实现钟表

用c语言实现钟表
要使用 C 语言编写一个简单的钟表程序,你可以按照以下步骤进行:
1. 引入所需的头文件:你需要引入一些头文件来实现程序的功能,例如 stdio.h、stdlib.h、time.h 等。
2. 定义程序的数据结构:你可以定义一个结构体来表示钟表的时间,包括时、分、秒等字段。
3. 获取当前时间:使用 time 函数获取当前系统时间,并将其转换为时、分、秒等字段。
localTime->tm_sec);
22.
23.
// 暂停一秒钟
Байду номын сангаас
24.
sleep(1);
25. }
26.
27. return 0;
28. }
29. 这个程序会不断获取当前系统时间,并输出格式为"时:分:秒"的钟表界面。程序会每 秒钟更新一次时间,并在终端上显示。你可以根据需要进行适当的修改和扩展,例
time_t currentTime = time(NULL);
17.
struct tm *localTime = localtime(&currentTime);
18.
19.
// 输出钟表界面
20.
system("clear"); // 清屏(适用于 Linux 和 Mac)
21.
printf("%02d:%02d:%02d\n", localTime->tm_hour, localTime->tm_min,
7. 下面是一个简单的 C 语言实现钟表的代码示例:
8. c 复制代码
9. #include <stdio.h>
10. #include <stdlib.h>

C语言课程设计 时钟代码

C语言课程设计 时钟代码

/*电子时钟源代码*/#include<graphics.h>#include<stdio.h>#include<math.h>#include<dos.h>#define PI 3.1415926 /*定义常量*/#define UP 0x4800 /*上移↑键:修改时间*/#define DOWN 0x5000 /*下移↓键:修改时间*/#define ESC 0x11b /*ESC键:退出系统*/#define TAB 0xf09 /*TAB键:移动光标*//*函数声明*/int keyhandle(int,int); /*键盘按键判断,并调用相关函数处理*/int timeupchange(int); /*处理上移按键*/int timedownchange(int); /*处理下移按键*/int digithour(double); /*将double型的小时数转换成int型*/int digitmin(double); /*将double型的分钟数转换成int型*/int digitsec(double); /*将double型的秒钟数转换成int型*/void digitclock(int,int,int ); /*在指定位置显示时钟或分钟或秒钟数*/void drawcursor(int); /*绘制一个光标*/ void clearcursor(int);/*消除前一个光标*/void clockhandle(); /*时钟处理*/ double h,m,s; /*全局变量:小时,分,秒*/double x,x1,x2,y,y1,y2; /*全局变量:坐标值*/struct time t[1];/*定义一个time结构类型的数组*/main(){int driver, mode=0,i,j;driver=DETECT; /*自动检测显示设备*/initgraph(&driver, &mode, "");/*初始化图形系统*/setlinestyle(0,0,3); /*设置当前画线宽度和类型:设置三点宽实线*/ setbkcolor(0);/*用调色板设置当前背景颜色*/setcolor(9); /*设置当前画线颜色*/ line(82,430,558,430);line(70,62,70,418);line(82,50,558,50);line(570,62,570,418);line(70,62,570,62);line(76,56,297,56);line(340,56,564,56); /*画主体框架的边直线*//*arc(int x, int y, int stangle, int endangle, int radius)*/arc(82,62,90,180,12);arc(558,62,0,90,12);setlinestyle(0,0,3);arc(82,418,180,279,12);setlinestyle(0,0,3);arc(558,418,270,360,12); /*画主体框架的边角弧线*/setcolor(15);outtextxy(300,53,"CLOCK"); /*显示标题*/setcolor(7);rectangle(342,72,560,360); /*画一个矩形,作为时钟的框架*/setwritemode(0); /*规定画线的方式。

基于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、晶振电路单片机的时钟产生方法有两种:内部时钟方式和外部时钟方式。

C语言实现电子时钟程序

C语言实现电子时钟程序

C语⾔实现电⼦时钟程序本⽂实例为⼤家分享了C语⾔实现电⼦时钟程序的具体代码,供⼤家参考,具体内容如下Qt ⾥⾯运⾏#include<windows.h>#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <time.h>typedef struct{int x;int y;}Point;time_t now;struct tm *pt, t1, t2;int printpoint(Point p){Point p1;p1.x = p.x + 2; p1.y = p.y + 4;gotoxy(p1.x, p1.y); printf("%c%c", 2, 2);gotoxy(p1.x, p1.y + 1); printf("%c%c", 2, 2);p1.y += 4;gotoxy(p1.x, p1.y); printf("%c%c", 2, 2);gotoxy(p1.x, p1.y + 1); printf("%c%c", 2, 2);return 0;}int print0(Point p){int i = 0;for (; i<13; i++){gotoxy(p.x + 1, p.y + i);if (i == 0 || i == 12)printf("%c%c%c%c%c%c", 2, 2, 2, 2, 2, 2);elseprintf("%c%4s%c", 2, " ", 2);}return 0;}int print1(Point p){int i = 0;for (; i<13; i++){gotoxy(p.x + 1, p.y + i);printf("%5s%c", " ", 2);}return 0;}int print2(Point p){int i = 0;for (; i<13; i++){gotoxy(p.x + 1, p.y + i);if (i == 0 || i == 6 || i == 12)printf("%c%c%c%c%c%c", 2, 2, 2, 2, 2, 2);else if (i>0 && i<6)printf("%5s%c", " ", 2);elseprintf("%c", 2);}return 0;}int print3(Point p){int i = 0;for (; i<13; i++){gotoxy(p.x + 1, p.y + i);if (i == 0 || i == 6 || i == 12)printf("%c%c%c%c%c%c", 2, 2, 2, 2, 2, 2);elseprintf("%5s%c", " ", 2);}return 0;}int print4(Point p){int i = 0;for (; i<13; i++){gotoxy(p.x + 1, p.y + i);if (i<6) printf("%c%4s%c", 2, " ", 2);else if (i == 6)printf("%c%c%c%c%c%c", 2, 2, 2, 2, 2, 2);else printf("%5s%c", " ", 2);}return 0;}int print5(Point p){int i = 0;for (; i<13; i++){gotoxy(p.x + 1, p.y + i);if (i == 0 || i == 6 || i == 12)printf("%c%c%c%c%c%c", 2, 2, 2, 2, 2, 2);else if (i>0 && i<6)printf("%c", 2);elseprintf("%5s%c", " ", 2);}return 0;}int print6(Point p){int i = 0;for (; i<13; i++){gotoxy(p.x + 1, p.y + i);if (i == 0 || i == 6 || i == 12)printf("%c%c%c%c%c%c", 2, 2, 2, 2, 2, 2);else if (i>0 && i<6)printf("%c", 2);elseprintf("%c%4s%c", 2, " ", 2);}return 0;}int print7(Point p){int i = 0;for (; i<13; i++){gotoxy(p.x + 1, p.y + i);if (i == 0) printf("%c%c%c%c%c%c", 2, 2, 2, 2, 2, 2); else printf("%5s%c", " ", 2);}return 0;}int print8(Point p){int i = 0;for (; i<13; i++){gotoxy(p.x + 1, p.y + i);if (i == 0 || i == 6 || i == 12)printf("%c%c%c%c%c%c", 2, 2, 2, 2, 2, 2);else printf("%c%4s%c", 2, " ", 2);}return 0;}int print9(Point p){int i = 0;for (; i<13; i++){gotoxy(p.x + 1, p.y + i);if (i == 0 || i == 6 || i == 12)printf("%c%c%c%c%c%c", 2, 2, 2, 2, 2, 2); else if (i>0 && i<6)printf("%c%4s%c", 2, " ", 2);elseprintf("%5s%c", " ", 2);}return 0;}int clear(Point p){int i = 0;for (; i<13; i++)gotoxy(p.x, p.y + i); printf("%16s", " ");return 0;}int printtime(Point p, int n){int a, b;Point pp;a = n / 10,b = n % 10;pp.x = p.x + 8, pp.y = p.y;switch (a){case 0: print0(p); break;case 1: print1(p); break;case 2: print2(p); break;case 3: print3(p); break;case 4: print4(p); break;case 5: print5(p); break;}switch (b){case 0: print0(pp); break;case 1: print1(pp); break;case 2: print2(pp); break;case 3: print3(pp); break;case 4: print4(pp); break;case 5: print5(pp); break;case 6: print6(pp); break;case 7: print7(pp); break;case 8: print8(pp); break;case 9: print9(pp); break;}return 0;}int main(){Point phour, pmin, psec, point1, point2;phour.x = 9, pmin.x = 32, psec.x = 55;phour.y = pmin.y = psec.y = 7;point1.x = 25, point2.x = 49;point1.y = point2.y = 7;clrscr();textbackground(YELLOW); /* 设置背景颜⾊*/ textcolor(RED); /* 设置数字显⽰颜⾊*/now = time(0);pt = localtime(&now);t1 = *pt;printtime(phour, t1.tm_hour);printpoint(point1);printtime(pmin, t1.tm_min);printpoint(point2);printtime(psec, t1.tm_sec);while (1){now = time(0);pt = localtime(&now);t2 = *pt;if (t2.tm_sec != t1.tm_sec){t1 = t2;clrscr();printtime(phour, t1.tm_hour);printpoint(point1);printtime(pmin, t1.tm_min);printpoint(point2);printtime(psec, t1.tm_sec);}if (bioskey(1) == 0) continue;else exit(0);}return 0;}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

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语言电子时钟完整版(闹钟,整点报时)

《单片机技术》课程设计说明书数字电子钟系、部:电气与信息工程学院学生姓名:指导教师:职称专业:班级:完成时间: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课时进行应用与拓展讨论。

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)。

单片机C语言 电子时钟程序[1]

单片机C语言   电子时钟程序[1]

单片机C语言电子时钟程序[1]单片机c语言-电子时钟程序[1]#include#defineuintunsignedint#defineucharunsignedcharunsignedcharkey2;bitding =1;unsignedchargetkey(void);uchara,n=0,shi,fen,miao;voiddelay01s(void);ucharled[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};ucharled1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};//存有小数点的voidinit();//函数声明voiddelay(unsignedcharz);//函数声明voiddisplay();//函数声明//函数声明voidmain()//函数声明{p1=0xfe;//对p1口赋初值init();//函数调用while(1){//函数调用key2=getkey();switch(key2){case1:shi++;if(shi==24){shi=0;}break;case2:fen++;if(fen==60){fen=0;}break;case3:if(fen!=0)fen--;if(fen==24){fen=0;}break;case4:ding=~ding;default:break;}display();//函数调用}}voidinit(){tmod=0x01;//定时器工作方式选择和赋初值th0=(65536-50000)/256;tl0=(65536-50000)%6;ea=1;//开总中断et0=1;//开定时器中断tr0=1;//启动定时器}voidtimer0()interrupt1//中断服务程序{if(ding==1){th0=(65536-50000)/256;//中断时间50mstl0=(65536-50000)%6;//定时器重新赋初值a++;if(a==10){n=~n;}if(a==20){n=~n;a=0;p1=p1<<1|p1>>7;miao++;if(miao==60){miao=0;fen++;if(fen==60){fen=0;shi++;if(shi==24){shi=0;}}}}}}voiddisplay()//表明程序{p0=led[shi/10];p2=((p2&0x0f)|0x70);delay(4);if(n==0){p0=led[shi];}else{p0=led1[shi];}p2=((p2&0x0f)|0xb0);delay(4);p0=led[fen/10];p2=((p2&0x0f)|0xd0);delay(4);p0=led[fen];p2=((p2&0x0f)|0xe0);delay(4);}/**********获得键值子程序**********************/unsignedcharbool;//bool是否松键的标志unsignedchargetkey(void){unsignedchartemp,key=0;p2=(p2&0xff)|0x0f;if((p2&0xff)!=((p2&0xff)|0x0f))//有键按下{//delay01s();if(((p2&0xff)!=((p2&0xff)|0x0f))&&(bool==0))//有键按下{temp=~(p2|0xf0);if(temp==1)key=1;elseif(temp==2)key=2;elseif(temp==4)key=3;elseif(temp==8)key=4;bool=1;}}if(((p2&0xff)==((p2&0xff)|0x0f))&&(bool==1)){bool=0;}returnkey;//回到1~16键值}/********延时程序******/voiddelay01s(void){unsignedcharj,k;for(j=5;j>0;j--)//198{for(k=15;k>0;k--)//248{;}}}voiddelay(unsignedcharz){unsignedchari,j,k;for(i=z;i>0;i--)for(j=25;j>0;j--)for(k=20;k>0;k--);} //定义变量。

世上最简单的遥控(数码管显示)电子钟(C语言编写)

世上最简单的遥控(数码管显示)电子钟(C语言编写)

世上最简单的遥控(数码管显示)电子钟(C语言编写)/*此程序为红外遥控电子钟,晶振为12M,MCU 型号为51 系列,电路很简单四位共阳数码管,红外接收管sm0038 接在P3.2*/#include #define uchar unsigned char#define uint unsigned int#define c(x) (x*120000/120000)sbit IR=P3 ; sbit ge=P2;//数码管四位选控制端sbit shi=P2 ;sbit bai=P2;sbit qian=P2;char miao,fen=59,shij=23;//时分秒3 个变量uchar num,ding; //两定时器计数变量uint temp;//遥控解码变量uchar i;uchar j;bit flag;//控制小数点亮与灭变量bit power;//控制数码管亮与灭变量bit flash;//进入时间调整标志位变量uchar IRBUF[4]; //用于保存解码结果uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86, 0x8e};uint Low(){TL0=0;TH0=0;TR0=1;while(!IR&&(TH0&0x80)==0);TR0=0;returnTH0*256+TL0;}//=============================================================uintHigh(){TL0=0;TH0=0;TR0=1;while(IR&&(TH0&0x80)==0);TR0=0;returnTH0*256+TL0;}void xian(uchar shik,uchar fen){P0=table[shik/10];if(power==0)qian=0;elseqian=1;//delay(2);qian=1;if(flag==0)P0=table[shik%10]&0x7f;elseP0=table[shik%10]|0x80;if (power==0)bai=0;elsebai=1;//delay(2);bai=1;P0=table[fen/10];if(power==0)shi=0;els eshi=1;//delay(2);shi=1;P0=table[fen%10];if(power==0)ge=0;elsege=1;//delay(2);ge =1;}void yin(){while(1){ restart: while(IR) {xian(shij,fen); if(flash==1) { if(ding>5) { ding=0; power=~power; //xian(shij,fen); } } }。

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

课程设计说明书日期:2015年 7 月 20 日课程设计名称:专业软件应用综合设计题目:C语言完成电子钟的设计学院:电气与电子信息学院学生姓名:黄胜312013080xxxx周宇312013080xxxx黄诗琪 312013080xxxx万姝熠312013080xxxx 专业:信息工程指导老师:杨坤明成绩C语言完成电子钟的设计摘要:所谓数字钟,是指利用电子电路构成的计时器。

相对机械钟而言,数字钟能达到准确计时,并显示小时、分、秒,同时能对该钟进行校对。

在此基础上,还能够实现整点报时,定时报闹等功能。

设计过程采用系统设计的方法,先分析任务,得到系统要求,然后进行总体设计,划分子系统,然后进行详细设计,最后进行测试。

本文针对简易数字钟的设计要求,提出设计方案,进行由上而下层次化的设计,先定义和规定各个模块的结构,再对模块内部进行详细设计,选择较合适的开发环境进行设计,最后将设计好的模块组合调试,并最终在单片机开发测试仪上测试通过。

关键词:数字电子钟校时报时子系统Abstract:The so-called digital clock, using the timer refers to an electronic circuit. Relative mechanical clock, the digital clock can achieve accurate timing, and displays the hours, minutes, seconds, while the bell proofread. On this basis, we can bring the whole point of time, given Times alarm functions.Design process using methods of system design, the first analysis of the task, get the system requirements, and then carry out the overall design, dividing subsystems, and the detailed design of each functional subsystem determines the internal circuit, the final test.In this paper, a simple digital clock design requirements, we propose two overall design, in the advantages and disadvantages of the two programs, choose a program in which the preferred, and be a top-down hierarchical design, define and regulations structure of each module, and then the internal module detailed design. Time and according to the detailed design of the chip can be used to analyze each chip is suitable for this design, choose a more suitable chip design, the final composition will be designed module debugging, and eventually through simulation at protues.Keywords:Digital electronic clock,timechecking,timereporting,subsystem目录样式:目录一级标题) (1)2 总体方案设计2 (2)2.1 方案比较(样式:目录二级标题)2 (2)2.1.1 方案一(样式:目录二级标题)2 (2)……(提示:目录可以自动生成,不必手动输入。

插入目录的方法:插入引用-->索引和目录-->目录-->设置目录样式)1前言由于现代社会的数字电子技术高速发展,电子钟应运而生,又由于电子技术的不断改进,采用中规模的逻辑器件可以使电子钟的体积变得很少,实用更加方便,应用更加广泛。

1.1 设计背景随着经济的飞速发展,人们对于时间的概念越来越深,数字钟恰好贴合了人们的需求。

1.2 设计目标显示日期、时间、实时温度,带闹钟和整点报时功能,采用24小时制计时,能区分平闰年,大小月。

有校时功能,可在单片机上对日期、时间、闹钟时间进行修改,修改时秒钟暂停计时对应的位置会闪烁,并且区分平闰年、大小月。

整点报时和闹钟可以用相应按键进行开关。

1.3 实施计划设计过程采用系统设计的方法,先分析任务,得到系统要求,然后进行总体设计,划分子系统,然后进行详细设计,最后进行代码编写和测试。

1.4 必备条件单片机基本知识,电路基本知识,C51编程技术,Keil软件。

2总体方案设计通过查阅大量相关技术资料,并结合自己的实际知识,我们设计了一种技术方案来实现系统功能:因为有校时功能,所以不能直接获取数据然后直接显示,我们用一个二维数组存放日期、时间、温度、闹钟数据,用一个一维数组存放段码,一个数组存放位码。

后期要修改直接对数组进行修改。

温度适时读数,不能修改。

图示:单元模块设计本节主要介绍系统各单元模块的工作原理、以及各个单元模块之间的联接关系;同时本节也会对相关代码进行必要说明。

2.1 各单元模块功能介绍及电路设计本系统主要分为四个单元模块,它们分别是:日期、时间、温度模块、闹钟模块、时间修改模块。

各单元模块功能具体说明如下。

2.1.1 日期模块日期储存在数组DIG_DATE[0][0]- DIG_DATE[0][7]。

代码如上,当时间为23:59:59时后一秒触发。

判断当前年份和月份进行时间修改。

2.1.2 时间模块时间储存在数组DIG_DATE[1][0]- DIG_DATE[1][7]。

代码如上,当计时器计数20次或20次以上时触发。

首先是秒钟修改,当影响到分钟时钟时进行对应的修改。

2.1.3 温度模块温度数据储存在DIG_DATE[2][0]- DIG_DATE[2][7]。

当按下切换显示按钮切换到温度时,开启获取温度的函数,然后获取数据。

获取温度的函数封装在temp.c里面,会在打印在附录中。

温度计算函数,将获取到的温度存放在数组中,然后显示。

2.1.4 闹钟模块闹钟数据储存在DIG_DATE[3][0]- DIG_DATE[3][7]。

闹钟判断函数如上,调用方式如下:当有时间变动时触发,用for循环从数组DIG_DATE[3][0]到DIG_DATE[3][7]判断,如果时间相同,则自动打开蜂鸣器开关,蜂鸣器启动,达到闹钟功能。

2.2 特殊功能设计本系统中主要使用了如下两个特殊功能:蜂鸣器播放音乐,修改模式数字闪烁,键盘。

2.2.1 蜂鸣器播放音乐通常蜂鸣器只有0,1即响和不响状态,所以功能低端的时钟启动蜂鸣器是一般只会发出“滴”的声音,我们的设计通过控制蜂鸣器的频率和节拍实现了播放音乐,让提示音乐更人性化,用户体验更好。

实现代码如下:储存频率蜂鸣器执行代码,触发条件是到整点或者闹钟开启并且到达闹钟时间。

2.2.2 修改模式数字闪烁为了提高用户体验,所以设计了在修改模式下,选中的数字会闪烁,这样的话可以减少操作失误。

实现代码如下:首先通过按键触发修改模式,State_change变为1;把一秒分为两部分,当时间小于0.5秒时,给数码管赋0值,因为数码管是共阴极链接,所以赋0值不会亮,当时间大于0.5秒时给数码管赋正常数值,到达数字闪烁的效果。

2.2.3 键盘由于需要直接在单片机上对时间进行修改,并且实现开启和关闭整点报时以及闹钟功能,所以键盘功不能缺少。

首先是键盘扫描,检测是否有按键按下,如果按下了按键则获取对应的键值。

扫描键盘,获取键值然后判断并执行对应功能,具体代码见附录。

3系统调试将代码烧录到单片机开发试验仪,然后按照设计方案进行调试。

3.1 调试环境单片机开发试验仪,Keil软件。

3.2 硬件调试日期显示时间显示(整点报时关闭状态)时间显示(整点报时开启状态)温度显示闹钟时间(闹钟关闭状态)闹钟时间(闹钟开启状态)修改模式4系统功能、指标参数4.1系统能实现的功能显示日期、时间、实时温度,带闹钟和整点报时功能,采用24小时制计时,能区分平闰年,大小月。

有校时功能,可在单片机上对日期、时间、闹钟时间进行修改,修改时秒钟暂停计时对应的位置会闪烁,并且区分平闰年、大小月。

整点报时和闹钟可以用相应按键进行开关。

4.2系统指标参数测试各部分显示正常,精确度:±1(分钟/天)。

4.3系统功能及指标参数分析代码有BUG,由于时间紧来不及修改,具体体现在修改模式下可以修改到3月39日,应该是后期增加闹钟功能时修改了部分代码造成的BUG。

电子钟精确度为±1(分钟/天),精确度不高的原因有二,一是没找到晶振的频率,所以无法进行精确计算定时器的参数,二是由于代码较长,运行下来可能导致计数器记到二十多才执行秒钟+1,造成时间误差。

6结论该数字钟能够准确计时,并有整点报时、实时温度显示等功能,能正常工作。

但校时功能存在BUG。

7总结与体会经过长达两个星期的设计与思考,最终在Keil上完成了数字钟的代码编写和调试,在单片机开发试验仪上测试通过。

其间遇到了许多问题,但最后都一一得到解决。

设计初期要考虑周到,否则后期改进很困难。

应该在初期就多思考几个方案,进行比较论证,选择最合适的方案动手设计。

总体设计在整个设计过程中非常重要,应该花较多的时间在上面。

方案确定后,才开始设计。

设计时,多使用已学的方法,如列真值表,化简逻辑表达式,要整体考虑,不可看一步,做一步。

在整体设计都正确后,再寻求简化的方法。

在设计某些模块的时候无法把握住整体,这时可以先进行小部分功能的实现,在此基础上进行改进,虽然可能会多花一些时间,但这比空想要有效的多。

尽可能是代码耦合有序,模块之间关系清楚,既利于自己修改,也利于与别人交流。

如果代码乱的连自己都看不懂,那还如何改进和扩展。

很多难点的突破都来自于与同学的交流,交流使自己获得更多信息,开拓了思路,因此要重视与别人的交流。

应该有较好的理论基础,整个实验都是在理论的指导下完成了,设计过程中使用了许多理论课上学的内容,如单片机功能的调用。

相关文档
最新文档