模拟电子时钟c语言课程设计设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
石家庄铁道大学课程设计
模拟电子时钟
单位电气与电子工程学院分院(系)
专业电气
学号
学生姓名
指导教师
完成日期 2011 年5 月29日
摘要
电子时钟是一种用电脑实现时、分、秒计时的装置,与机械时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命。电子钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及车站、码头、剧院、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大地方便。
C语言功能丰富、表达能力强、使用方便、应用面广、目标程序效率高,因此特别适合模拟电子时钟的开发
关键词:模拟电子时钟,程序设计。
目录
第1章选题的意义 (4)
1.1 (4)
1.2 (4)
第2章系统功能需求分析 (5)
2.1系统的基本要求 (5)
2.2 (5)
第3章系统设计 (6)
第4章系统实现 (7)
第5章总结………………………………………………………………………
19
第1章选题的意义
1.1 选题的意义
随着社会的发展,电子钟逐渐成为人们生活中不可缺少的一部分。人们对时钟精度的要求越来越高,这就要求我们动用电子模拟技术对时钟的精度进行保证,同时模拟电子时钟还可以设计出美观的画面,具有现实中时钟不可相比的优点。此程序所模拟出来的电子时钟具有操作简单,灵活,实用的优点,可以为我们提供方便。
同时通过对生活中普遍存在实物的设计,可以加深我们对c语言的深入理解掌握开发电子钟的基本原理,为进一步开发高质量程序打下基础。
1.2 硬件环境
完整的电脑,包括键盘、鼠标、以及足够大的内存空间。屏幕尺寸推荐使用640*380.
1.3软件环境
开发过程采用win-tc环境,
运行环境是采用windows xp操作系统。
第2章系统功能需求分析
2.1系统的基本要求
实现时钟显示功能,具有动画模拟时钟和数字时钟,可以修改时间,
界面友好,运行稳定
2.2系统的功能
首先画出时钟的界面,包括表盘,表针,以及数字时钟界面。
同时还在屏幕上打印出帮助信息,使使用者轻松方便的使用该时钟。
预期设想实现时钟的调时功能,按下一个键,进入时钟时间重设功能。
本电子时钟有四个模块构成,电子时钟界面显示,电子时钟按键控制,电子时钟动画处理,数字时钟模拟;具备修改时间功能,模拟出动态画面,界面友好,显示准确。可以模拟出动画状态。运行稳定,时间准确,精度较高,界面给人以美感,舒适。
第3章系统设计
设计主体为首先画图,然后调用时钟处理函数,其次再调用一个循环,使之进入主体时钟处理函数。时钟处理函数中含有划线函数,先取得电脑中的时间,调用画图函数画出当前所对应的模拟时钟图像,同时把时间赋给数字时钟
3.1流程图
3.2电子时钟界面显示
本程序定义了huatu()函数,程序首先进入主函数后,就开始调用huatu()函数。Huatu()函数中首先调用initgraph()函数,使系统进入图形模式,调用setlinestyle(x,y,z)函数来设定线粗。Z代表线的粗细,分为1,2,3三个等级的线型;调用setbkcolor(x)函数设置当前的背景颜色,颜色分为1-15个等级,0为白色;然后调用setcolor(x)函数确定当前画线的颜色,同样也有1-15个等级;调用line(x,y,a,b)函数开始画线,(x,y)代表起点坐标(a,b)代表终点坐标;然后调用outtextxy(x,y,””)函数在坐标点为(x,y)的位置输出分号中的内容;其中还调用了circle(i,j,x)函数画出了以x为半径(x,y)为圆心的圆作为表示小时或者分钟的圆点;调用完以上函数就完成了界面主体的绘制。
3.3按键控制模块
在本模块中,使用bioskey()函数读取用户的键值进行判断,执行相应操作。具体如下:
用户按下TAB或者Esc键,系统调按键判断函数,跳出时钟处理函数1,进入输入界面,调用scanf()函数对结构体变量中的元素&t[0].ti_min,&t[0].ti_hour,&t[0].ti_sec重新赋值后,再调用settime(t)函数,使之把数值赋给系统时间,通过改变系统时间达到修改时间的功能。
3.4时钟动画处理
时钟动画处理是本程序的核心,巧妙模拟出动态效果。其中的关键在于对时针、分针、秒针的绘制以及计算。具体设计如下:
(1)坐标点的计算,表盘中的时分秒有一个共同的圆心,但是各
在不同的圆弧上移动,规律是:秒针转动60次,分针转动1次;分针
转动60次,时针转动1次;秒针每一次所经过的角度是60度,并且
可以通过与圆心的关系计算出来。具体计算如下:圆心坐标为(x,y),
半径为r借助三角函数可以求得k点的坐标值(x+a sinθ,y-a cosθ),
同样可以用相同的方法求得,分、秒的坐标值。本程序中a,b,c分
别取50,80,98,单位为像素。可以模拟出不同的长度,作为时、分、
秒指针示意图如下:
(2)动画处理流程
初运行阶段首先取得系统时间并保存在t结构体变量内,同时在数字时钟中显示出当前系统时间。然后开始进入for循环,直到用户按ESC或者Tab键跳出循环。同时打开扬声器,发出滴答声,并利用while循环延迟一秒从而模拟出机械钟的滴答声。延迟一秒后清除原来的秒针,绘制新的秒针,同时更新数字时钟的数字。用一个if语句判断如果分钟有变化,清除分针,重绘分针;如果时针有变化,清除时针,重绘时针。最后通过对键值的判断,若为Esc或者Tab则跳出循环。
3.5数字时钟处理模块