c语言程序设计—时钟旋转模型

合集下载

模拟时钟转动程序

模拟时钟转动程序

东南大学C语言课程设计报告课程名称:计算机综合课程设计学院:土木工程学院设计题目:模拟时钟转动程序级别: B级学生姓名:韦信丞学号: 05114419 同组学生:学号:指导教师:郭恒宁2015年 9 月 1 日C语言课程设计任务书模拟时钟转动程序一、课程设计的内容1、能模拟机械钟表行走2、还要准确利用数字显示日期和时间3、在屏幕上显示一个活动时钟4、按任意键时程序退出。

二、课程设计应完成的工作1、编写完成相应题目的程序2、编写课程设计报告,课程设计报告应该包含以下6部分1)需求分析:包括设计题目、设计要求以及系统功能需求分析2)总体设计:包括系统总体设计框架和系统功能模块图3)详细设计:包括主要功能模块的算法设计思路以及对应的工作流程图4)调试分析过程描述:包括测试数据、测试输出结果以及对程序测试过程中存在问题进行思考(主要问题的出错现象、出错原因、解决方法及其效果等,相应效果截图)5)总结:课程设计完成了哪些主要功能,是否有扩展功能?还有哪些地方需要改进?课程设计的学习与体会?有哪些合理化建议?6)附录:主要原程序代码含必要的注释3、答辩:在实验室建立程序运行环境,并在指导教师的监督下,独立解决问题,运行程序和回答教师的提问。

四、应收集的资料及其主要参考文献[1]谭浩强.C程序设计(第四版),北京:清华大学出版社,2010年6月[2]陈清华朱红 . C语言课程设计案例精选与编程指导(第一版),南京:东南大学出版社,2003年6月[3]顾小晶 . 实用C语言简明教程(第一版),北京:中国电力出版社,2003年9月目录1.设计目的与要求 (4)2.总体设计 (5)3.详细设计 (6)3.1画出钟表的轮廓3.2获取系统时间4.调试分析 (7)5.总结 (10)6.附录(程序) (11)7.答辩记录(正文处留出适当空白) (15)8.指导教师意见(正文处留出适当空白) (16)1.目的与要求要求:1、能模拟机械钟表行走2、还要准确利用数字显示日期和时间3、在屏幕上显示一个活动时钟4、按任意键时程序退出。

模拟时钟转动程序课程设计报告

模拟时钟转动程序课程设计报告

《高级语言》课程设计课题名称模拟时钟转动程序学院信息工程专业网络工程地点 D507 学生姓名钟都华学号 13046130 开课时间 2013 至 2014 学年第 2 学期同组人李卓成绩一、课程设计的目的和要求1.课程设计的目的本程序旨在训练读者的基本编程能力,使读者熟悉C语言图形模式下的编程。

本程序中涉及时间结构体、数组、绘图等方面的知识。

通过本程序的训练,使读者能对C 语言有一个更深刻的了解,掌握利用C语言相关函数开发电子时钟的基本原理,为进一步开发出高质量的程序打下坚实的基础。

2.课程设计的要求能模拟机械钟表行走;在屏幕上显示一个活动时钟;程序界面设计合理,色彩得体大方,显示正确;各指针运动规律正确;要准确的利用数字显示日期和时间并且可以根据用户的需求更改当前时间(指针式时钟与数字式时钟实现同步更改);数字式时钟的时间显示与指针式时钟显示一致;可以通过上下键改变当前的时、分、秒;改的时间是小时、分钟、还是秒数;通过Tab键切换按Esc时程序退出。

二、设计如下图,此电子时钟主要由以下4个功能模块组成。

1.界面显示模块电子时钟界面显示在调用时钟运行处理之前完成,在这里主要调用了C语言图形系统函数和自负屏幕处理函数画出时钟程序的主界面。

主界面包括类似Windows自带的电子时钟的界面和帮助界面两部冯。

电子时钟界面包括一个模拟时钟运转的钟表和一个显示时间的数字钟表。

在帮助界面中,主要包括一些按键的操作说明。

2.按键控制模块按键控制模块主要完成两大部分功能。

第一,读取用户按键的键值。

第二,通过对键盘按键值得判断,执行相应的操作,如光标移动、修改时间。

3.时钟动画处理模块在时钟动画处理模块中,它通过对相关条件的判断和时钟坐标值的计算,完成时、分、秒指针的擦除和重绘,以达到模拟时钟运转的功能。

4.数字时钟处理模块在数字时钟处理模块中,它主要实现了数字时钟的显示和数字时钟的修改。

其中,用户可先按Tab键定位需要修改内容的位置,然后通过按光标上移()或下移(功能模块设计1.电子时钟执行主流程此电子时钟执行主流程如右图所示。

模拟时钟转动程序

模拟时钟转动程序

课程设计课程名称高级语言程序课程设计题目名称模拟时钟转动程序学生学院自动化学院专业班级自动化06级(2 )班学号 3106000858 学生姓名霍杰英指导教师杨其宇2007年6月18日广东工业大学课程设计任务书题目名称模拟时钟转动程序学生学院自动化学院专业班级自动化06级(2 )班姓名霍杰英学号3106000858一、课程设计的内容要求:能模拟机械钟表行走,还要准确地利用数字显示日期和时间,在屏幕上显示一个活动时钟,按任意键时程序退出。

二、课程设计的要求与数据1、进一步掌握和利用C语言进行程设计的能力;2、进一步理解和运用结构化程序设计的思想和方法;3、初步掌握开发一个小型实用系统的基本方法;4、学会调试一个较长程序的基本方法;5、学会利用流程图或N-S图表示算法;6、掌握书写程序设计开发文档的能力。

三、课程设计应完成的工作1、编写完成相应题目的程序;2、编写课程设计报告,课程设计报告的内容应包括以下6个部分:1) 需求分析:包括设计题目、设计要求以及系统功能需求分析;2) 总体设计:包括系统总体设计框架和系统功能模块图;3) 详细设计:包括主要功能模块的算法设计思路以及对应的工作流程图;4) 调试分析过程描述:包括测试数据、测试输出结果,以及对程序调试过程中存在问题的思考(列出主要问题的出错现象、出错原因、解决方法及效果等,适当的包含结果截图);5) 总结:课程设计完成了哪些功能,有没有什么扩展功能?还有哪些地方需要改进?课程设计过程中的学习体会与收获、对本次课程设计的认识以及自己的建议等内容;6) 附录:主要源程序代码,含必要的注释。

3、答辩:在实验室建立程序运行的环境,并在指导教师的监督下,独立解决问题、运行程序和回答教师提出的问题。

四、课程设计进程安排五、应收集的资料及主要参考文献[1] 谭浩强.C程序设计(第三版)[M],北京:清华大学出版社,2005.9[2] 谭浩强. C程序设计题解与上机指导(第三版)[M],北京:清华大学出版社,2005.7[3] 夏宝岚张慕蓉夏耘.程序设计教程(第二版)[M],上海:华东理工出版社,2003.1[4] 陈锦昌赵明秀.c语言计算机绘图教程(第一版)[M],广州:华南理工大学出版社,1998.9[5] /course/3_program/c/cshl/2007213/21159.html发出任务书日期:2007年 6 月18 日指导教师签名:计划完成日期:2007年 6 月22 日基层教学单位责任人签章:主管院长签章:目录1 设计目的与要求 (5)2 总体设计 (6)3 详细设计 (7)功能模块设计 (7)3.1画出钟表的轮廓 (7)3.2获取系统时间 (7)3.3让时间和声音动起来 (7)4调试分析 (8)5 总结 (11)6 附录 (12)7 答辩记录 (16)8 指导教师意见 (17)1 目的与要求(1) C题目二十九: 模拟时钟转动程序要求:能模拟机械钟表行走,还要准确地利用数字显示日期和时间,在屏幕上显示一个活动时钟,按任意键时程序退出。

电子钟设计c语言设计

电子钟设计c语言设计

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

用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 <windows.h>#include <conio.h>#include <math.h>#define PI 3.1415926int main(void) //函数原型声明{voidDralDial();voidDrawHand(inthour, int minute, int second);initgraph(600, 600); //初始化600×600的绘图窗口setbkcolor(LIGHTMAGENTA); //设置背景色cleardevice(); //清空屏幕DralDial(); //画表盘setcolor(MAGENTA); //刻字outtextxy(235, 160, " 韩晶");outtextxy(235, 130, " 数计学院");outtextxy(235, 100, "武汉轻工大学");setwritemode(R2_XORPEN); //设置异或绘图方式SYSTEMTIME t; //定义变量保存当前时间while(!kbhit()){GetLocalTime(&t); //获取当前时间DrawHand(t.wHour, t.wMinute, t.wSecond); //画表针 Sleep(1000);DrawHand(t.wHour, t.wMinute, t.wSecond); //擦表针}closegraph(); //关闭绘图窗口return 0;}void DralDial() /*画表盘*/{inti;int x1, y1, x2, y2,x3,y3; //表心坐标系坐标char rome[][3]= {"12","1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11" } ; //数字setcolor(LIGHTGRAY); //画圆circle(300, 300, 250);circle(300, 300, 260);for(i = 0; i< 59; i++) // 画60条短线{setcolor(LIGHTGRAY);x1 = (int)(300 + (sin(i * PI / 30) * 250));y1 = (int)(300 - (cos(i * PI / 30) * 250));x2 = (int)(300 + (sin(i * PI / 30) * 260));y2 = (int)(300 - (cos(i * PI / 30) * 260));line(x1, y1, x2, y2);if(i%5==0){x3 = (int)(290 + (sin((i - 0.2) * PI / 30) * 220));y3 = (int)(290 - (cos((i - 0.2) * PI / 30) * 220));setcolor(YELLOW); //写表盘数字setfont(24, 0, "黑体");outtextxy(x3 , y3, rome[i / 5]);}}}void DrawHand(int hour, int minute, int second) //画指针{intxhour, yhour, xminute, yminute, xsecond, ysecond; //表心坐标系指针坐标 xhour = (int)(130 * sin( hour * PI / 6 + minute * PI / 360 + second * PI / 1800));yhour = (int)(130 * cos( hour * PI / 6 + minute * PI / 360 + second * PI / 1800));xminute = (int)(145 * sin( minute * PI / 30 + second * PI / 1800));yminute = (int)(145 * cos( minute * PI / 30 + second * PI / 1800));xsecond = (int)(200 * sin( second * PI / 30));ysecond = (int)(200 * cos( second * PI / 30));// setlinestyle(PS_SOLID, NULL, 10); //画时针setcolor(LIGHTGREEN);line(300 + xhour, 300 - yhour, 300 -xhour / 6, 300 + yhour / 6);// setlinestyle(PS_SOLID, NULL, 7); //画分针setcolor(LIGHTCYAN);line(300 + xminute, 300 - yminute, 300 -xminute / 4, 300 + yminute / 4);// setlinestyle(PS_SOLID, NULL, 3); //画秒针setcolor(RED);line(300 + xsecond, 300 - ysecond, 300 -xsecond / 3, 300 + ysecond / 3); }。

C语言模拟时钟转动程序

C语言模拟时钟转动程序
{
int x,y,i,k=1;
int gdriver=9,gmode=2;
unsigned char h,m,s;
int o,p,q;
float n;
struct time t[1];
struct date d[1];
initgraph(&gdriver,&gmode,"c:\\tc");
initgraph(&gdriver,&gmode,"c:\\tc");
#define d(a,b,c) X(a,b,c);Y(a,b,c);line(300,240,x,y)
void init() /*划时钟边框函数*/
{
int i,l,x1,x2,y1,y2;
setbkcolor(1);
circle(300,240,200);
circle现方式做保护处理对用户上传分享的文档内容本身不做任何修改或编辑并不能对任何下载内容负责
模拟时钟转动程序
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
d(150,n,30); /*画出时针*/
setcolor(14); /*设置分针颜色*/
d(170,m,6); /*画出分针*/
setcolor(4); /*设置秒针颜色*/
d(190,s,6); /*画出秒针*/
while(!kbhit()) /*控制程序按下任意键退出*/
{
while(t[0].ti_sec==s)
o=d[0].da_year;
p=d[0].da_mon;

C语言模拟时钟转动课设报告-附代码

C语言模拟时钟转动课设报告-附代码

模拟时针转动程序姓名:学号:完成日期:2012年12月设计目的加深对讲授内容的理解,尤其是一些语法规定。

通过课程设计,自然地、熟练地掌握。

熟悉所用的计算机系统的操作方法,也就是熟悉语言程序开发的环境。

学会上机调试程序。

熟悉C语言图形模式下的编程,掌握利用C语言相关函数开发电子时钟的基本原理。

能模拟机械钟表行走;要准确地利用数字显示时间;在屏幕上显示一个活动时钟;程序界面设计合理,色彩得体大方,显示正确;各指针运动规律正确;数字式时钟的时间显示与指针式时钟显示一致。

总体设计电子时钟的功能描述电子时钟流程图模块描述动画处理模块在屏幕上显示sin和cos型的动态函数图像,显示运动的问候语。

转时针动处理模块指针式的时钟表盘为椭圆形并且圆周上有分布均匀的12个刻度刻度显示清楚钟面上有长度不相同的指针即时针、分针、秒针指针的运动具有规律性为顺时针。

数字时钟处理模块数字钟显示时间的格式是年月日时分秒小时为24进制,分钟和秒是60进制,指针式的时钟和数字式的时钟显示的时间同步且两个时钟所显示的时间与计算机的系统时间一致。

详细设计time结构体strume time{usigned char ti_min;usigned char ti_hour;usigned char ti_hud;usigned char ti_sec;};time 结构体定义在dos.h文件中,可以保存系统的当前时间。

全局变量double h,m,s;这三个变量分别保存小时,分钟,秒。

double x,y,x1,y1,x2,y2;保存数字时钟中小时分钟秒在屏幕中显示的位置。

struct time t[1];定义一个time结构类型的数组。

函数功能的描述1.def()函数原型: void def()def()函数是用来输出一组彩带的,通过输入位置和颜色的变化来输出sin型的彩带,且在整个函数中保留结果。

2. abc()函数原型: void abc()abc()函数是用来在退出系统是输出运动的问候语,函数类型单一且比较简单。

模拟时钟转动程序

模拟时钟转动程序

C语言集中上机实验报告题目五: 模拟时钟转动程序院系:班级:姓名:学号:指导教师:2011 年12 月08日目录一课程设计的地位、作用与目的 (2)二课程的基本要求 (2)三课程设计的主要设计思路与流程图 (2)1.设计思路2.流程图3.使用的主要函数4.程序各功能模块四程序的运行结果 (7)1.调试过程出现的问题2.运行结果五心得体会 (7)一课程设计的地位、作用与目的为综合应用C语言程序设计理论知识、进一步提高学生综合解决问题、协调工作的能力和良好的软件开发习惯,特安排本实验内容。

希望通过该实习能够进一步激发学生的学习热情,培养学生初步编程的能力,为后续的学习和发展奠定基础。

二课程的基本要求能模拟机械钟表行走,还要准确地利用数字显示日期和时间,在屏幕上显示一个活动时钟,按任意键时程序退出。

三课程设计的主要设计思路与流程图设计思路:在绘图窗口中先画出表盘后获取系统的时间,利用得到的系统时间计算表针的位置,并将时间在屏幕上输出。

每隔一秒读取一次时间,直到键盘有输入为止。

流程图开始使用的主要函数:setlinestyle 设置画线setcolor 设置颜色line(int x1,int y1,int x2,int y2)画直线circle(int x,int y,int r)画圆outtextxy(int x,int y,char *textstring)在指定位置输出字符initgraph(int x, int y); 初始化绘图窗口setwritemode( ); 设置绘图模式kbhit() 检查是否有键盘输入GetLocalTime(&ti); 获取当前时间sleep() 程序暂停若干时间程序各功能模块:1.计算表针的位置并画出表针void Drawzhizhen(int hour, int minute, int second){double a_hour, a_min, a_sec; // 时、分、秒针的弧度值int x_hour, y_hour, x_min, y_min, x_sec, y_sec; // 时、分、秒针的位置a_sec = second * 2 * PI / 60; // 计算时、分、秒针的弧度值a_min = minute * 2 * PI / 60 + a_sec / 60;a_hour= hour * 2 * PI / 12 + a_min / 12;x_sec = int(120 * sin(a_sec)); y_sec = int(120 * cos(a_sec)); ///计算时、分、秒针的位置x_min = int(100 * sin(a_min)); y_min = int(100 * cos(a_min));x_hour= int(70 * sin(a_hour)); y_hour= int(70 * cos(a_hour));setlinestyle(PS_SOLID, NULL, 10); // 画时针setcolor(WHITE);line(300 + x_hour, 240 - y_hour, 300 - x_hour / 7, 240 + y_hour / 7);setlinestyle(PS_SOLID, NULL, 5);// 画分针setcolor(YELLOW);line(300 + x_min, 240 - y_min, 300 - x_min / 5, 240 + y_min / 5);setlinestyle(PS_SOLID, NULL, 2); // 画秒针setcolor(RED);line(300 + x_sec, 240 - y_sec, 300 - x_sec / 3, 240 + y_sec / 3);}2.画表盘void Drawbiaopan(){int i,l,x1,x2,y1,y2;setbkcolor(1);circle(300,240,180);circle(300,240,185);circle(300,240,20);for(i=0;i<60;i++) /*划钟点上的短线*/ {if(i%5==0)l=15;elsel=5;x1=180*sin(i*6*PI/180)+300;y1=180*cos(i*6*PI/180)+240;x2=(180-l)*sin(i*6*PI/180)+300;y2=(180-l)*cos(i*6*PI/180)+240;line(x1,y1,x2,y2);}outtextxy(300,80,"12") ;outtextxy(300,390,"6");outtextxy(140,230,"9");outtextxy(460,230,"3");outtextxy(380,100,"1");outtextxy(220,100,"11");outtextxy(430,160,"2");outtextxy(430,310,"4");outtextxy(380,370,"5");outtextxy(220,370,"7");outtextxy(160,160,"10");outtextxy(160,310,"8");}3.将获取的整数型时间变量转换成字符型void ch1(int a,int x) //将年转换成字符型并输出{char b,c,d,e;b=(char)(a/1000+48);c=(char)((a%1000)/100+48);d=(char)((a%100)/10+48);e=(char)(a%10+48);outtextxy(x,10,b);outtextxy(x+10,10,c);outtextxy(x+20,10,d);outtextxy(x+30,10,e);}void ch2(int a,int x) //其他时间转换成字符型并输出{char b,c;b=(char)(a/10+48);c=(char)(a%10+48);outtextxy(x,10,b);outtextxy(x+10,10,c);}主函数:void main(){initgraph(640, 480); // 初始化绘图窗口Drawbiaopan(); // 绘制表盘setwritemode(R2_XORPEN); // 设置绘图模式SYSTEMTIME ti; // 定义ti保存当前时间while(!kbhit()) // 按任意键退出钟表程序{GetLocalTime(&ti); // 获取当前时间ch1(ti.wYear,10);outtextxy(50,10,"年"); //输出时间ch2(ti.wMonth,65);outtextxy(85,10,"月");ch2(ti.wDay,100);outtextxy(120,10,"日");ch2(ti.wHour,135);outtextxy(155,10,":");ch2(ti.wMinute,165);outtextxy(185,10,":");ch2(ti.wSecond,195);Drawzhizhen(ti.wHour, ti.wMinute, ti.wSecond); // 画表针Sleep(1000); // 延时1 秒Drawzhizhen(ti.wHour, ti.wMinute, ti.wSecond); // 画表针}closegraph(); // 关闭绘图窗口}四程序的调试与运行结果调试过程出现的问题:1.Vc++6.0中没有“graphics.h”解决办法:安装turboc.2.0中的函数库EasyX2.无法获取系统时间解决办法:使用函数GetLocalTime( );并使用#include <time.h>声明3.Outtextxy()函数无法显示整数型时间解决办法:将整数型时间变量转换为字符型再输出运行结果:五心得体会由于C语言没有学过图形方面的知识,很多东西都要去查资料。

用c语言 做一个图形时钟

用c语言 做一个图形时钟

#include <graphics.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <dos.h>#include <conio.h>#include <time.h>#include <math.h>time_t t;char timestr1[30];//DDD MMM dd hh:mm:ss YYYY char timestr2[30];//DDD MMM dd hh:mm:ss YYYY char hhmmss[9];int graphdriver,graphmode,page;int i,xo,yo,r0,r1,r2,r3,r4,r5,r6,r7;int x1,y1,x2,y2;int hh,mm,ss;double c,s;int xasp,yasp;void main() {xo=60;yo=60;r0=5; //轴r1=20;//时针r2=36;//分针r3=45;//秒针r4=50;//时刻度r5=53;//分刻度r6=55;//刻度外r7=59;//表盘graphdriver=VGA;graphmode=VGAMED;initgraph(&graphdriver,&graphmode,"D:\\BC\\BGI"); getaspectratio(&xasp, &yasp);page=0;timestr2[0]=0;while (1) {if (kbhit()) break;time(&t);strcpy(timestr1,ctime(&t));if (strcmp(timestr1,timestr2)) {strcpy(timestr2,timestr1);hh=atoi(timestr2+11);mm=atoi(timestr2+14);ss=atoi(timestr2+17);setvisualpage(page);setactivepage(1-page);cleardevice();sprintf(hhmmss,"%02d:%02d:%02d",hh,mm,ss);outtextxy(28,0,hhmmss);pieslice(xo,yo,0,360,r0);circle(xo,yo,r7);for (i=0;i<60;i++) {c=cos(i*6*3.14159265/180);s=sin(i*6*3.14159265/180)*xasp/yasp;if (0==(i%5)) {x1=xo+r4*c;y1=yo+r4*s;} else {x1=xo+r5*c;y1=yo+r5*s;}x2=xo+r6*c;y2=yo+r6*s;line(x1,y1,x2,y2);if (((hh%12)*5+mm/12+45)%60==i) {x2=xo+r1*c;y2=yo+r1*s;setlinestyle(0,-1,3);line(xo,yo,x2,y2);setlinestyle(0,-1,1);}if ((mm+45)%60==i) {x2=xo+r2*c;y2=yo+r2*s;setlinestyle(0,-1,3);line(xo,yo,x2,y2);setlinestyle(0,-1,1);}if ((ss+45)%60==i) {x2=xo+r3*c;y2=yo+r3*s;line(xo,yo,x2,y2);}}page=1-page;}delay(100);}getch();closegraph();}。

C语言课程设计报告-模拟时钟转动程序

C语言课程设计报告-模拟时钟转动程序

课程设计报告课程名称结构化程序设计课程设计院部名称专业班级学生姓名王蕾学号课程设计地点课程设计学时指导教师金陵科技学院教务处制目录第一章课程设计的目的和要求.............................................1.1 C语言课程设计的目的............................................1.2 C语言课程设计实现的要求........................................ 第二章课程设计的任务内容............................................... 第三章详细设计说明.....................................................3.1 程序系统的结构..................................................3.1.1 实验设备及环境:(软、硬件环境)3.2 模块描述........................................................3.2.1 指针式时钟................................................3.2.2 数字式时钟................................................3.3 输出项..........................................................3.4 算法............................................................3.5 流程图..........................................................3.6 函数说明........................................................3.7 接口............................................................3.8 调试结果........................................................ 第四章软件使用说明.....................................................4.1 软件使用说明及出现的问题........................................4.2 运行结果........................................................ 第五章课程设计心得与体会............................................... 附录1:参考文献......................................................... 附录2:修改后的源代码……………………………………………………………………模拟时钟转动程序第一章课程设计的目的和要求1.1 C语言课程设计的目的加深对讲授内容的理解,尤其是一些语法规定。

C语言模拟时钟转动课程设计报告

C语言模拟时钟转动课程设计报告

《C语言程序设计》课程设计报告题目:模拟时钟转动程序班级:组别:页脚内容- 0 -组员:指导教师:目录第一章课程设计的题目 (2)1.1C语言课程设计的题目 (2)第二章课程设计的要求 (2)2.1C语言课程设计的要求 (2)第三章课程设计的目的 (2)3.1C语言课程设计的目的 (2)第四章课程设计的内容 (3)4.1C语言课程设计的程序清单和注释 (3)第五章课程设计的运行结果 (7)5.1C语言课程设计的运行结果 (7)第六章课程设计的结果分析 (8)页脚内容- 1 -6.1C语言课程设计的结果分析 (8)第七章课程设计的心得体会 (9)7.1C语言课程设计的心得体会 (9)模拟时钟转动程序第一章课程设计的题目1.1 C语言课程设计的题目本次为期两周的课程设计的题目为设计一个模拟时钟转动的程序。

第二章课程设计的要求2.1 C语言课程设计的要求页脚内容- 2 -能模拟机械钟表行走;要准确地利用数字显示日期和时间;在屏幕上显示一个活动时钟;程序界面设计合理,色彩得体大方,显示正确;各指针运动规律正确;数字式时钟的时间显示与指针式时钟显示一致;按任意键时程序退出。

第三章课程设计的目的3.1 C语言课程设计的目的加深对讲授内容的理解,尤其是一些语法规定。

通过课程设计,自然地、熟练地掌握。

熟悉所用的计算机系统的操作方法,也就是熟悉语言程序开发的环境。

学会上机调试程序。

第四章课程设计的内容4.1 C语言课程设计的程序清单和注释模拟时钟转动程序清单+注释#include<windows.h> //包含窗口头文件#include<math.h> //头文件,包含了一些数学计算的函数#define TWOPI (2*3.14159)#define IDTIMER 1 //计时器ID#define ANGLE TWOPI/360 //2PI页脚内容- 3 -LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam,LPARAM lParam ); //回调函数Int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, LPSTR lpCmdLine,int nCmdShow ) // 应用启动函数mian{TCHAR szClassName[] = TEXT("analogCloc");MSG msg; //定义消息HWND hwnd; //窗口句柄WNDCLASS wndclass; //系统支持结构,定义并初始化窗口结构wndclass.cbClsExtra = 0; //窗口类无扩展wndclass.cbWndExtra = 0; //窗口势力无扩展wndclass.hbrBackground = (HBRUSH)::GetStockObject(WHITE_BRUSH);//窗口背景为白色wndclass.hCursor = NULL;wndclass.hIcon = NULL;wndclass.hInstance = hInstance; //当前实例句柄wndclass.lpfnWndProc = WindowProc; //关联到消息回调函数wndclass.lpszClassName = szClassName;页脚内容- 4 -wndclass.lpszMenuName = NULL; //窗口中无菜单wndclass.style = CS_HREDRAW | CS_VREDRAW ; //窗口重绘风格RegisterClass(&wndclass);hwnd CreateWindow(szClassName,TEXT("Clock"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL, NULL, hInstance, NULL); //创建窗口ShowWindow(hwnd,nCmdShow); //显示窗口UpdateWindow(hwnd); //更新窗口,强制显示while(GetMessage(&msg,NULL,0,0)) //函数GetMessage 是从调用线程的消息队列里取得一个消息并将其放于指定的结构{TranslateMessage(&msg); //消息处理DispatchMessage(&msg); //消息派遣}return msg.wParam; //windows应用程序的消息循环形式}页脚内容- 5 -void setISOTROPIC(HDC hdc,int cxClient,int cyClient)//设置映射模式,使之成为笛卡尔坐标系的映射模式{SetMapMode(hdc,MM_ISOTROPIC);SetWindowExtEx(hdc,1000,1000,NULL); // 逻辑单位与设备单位比1/2 SetViewportExtEx(hdc,cxClient/2,-cyClient/2,NULL);SetViewportOrgEx(hdc,cxClient/2,cyClient/2,NULL); //竖坐标向上为正,下为负}void drawClock(HDC hdc) // 画时钟圆盘{int x, y, radius; //以逻辑单位表示的窗口原点坐标SelectObject(hdc,CreateSolidBrush(RGB(1,148,138)));//设置整个窗口线条颜色for(int i=0;i<360;i+=6){x = (int)(cos(TWOPI/360*i)*900); //cos函数,包含在math.h头文件利的函数y = (int)(sin(TWOPI/360*i)*900);radius = !(i%5)?40:10;页脚内容- 6 -Ellipse(hdc,x-radius,y-radius,x+radius,y+radius);// 把弧度制转换成坐标形式,Ellipse函数用来画圆}}void drawHands(HDC hdc,SYSTEMTIME *pst,BOOL hChange)// draw hands函数负责绘制时钟的时针、分针和秒针的轮廓{int radius[3] = {500,700,850};int angle[3];angle[0] = pst->wHour*30+pst->wMinute/12*6;angle[1] = pst->wMinute*6;angle[2] = pst->wSecond*6;for(int i=hChange?0:2;i<3;i++){MoveToEx(hdc,0,0,NULL);LineTo(hdc,(int)(radius[i]*cos(ANGLE*(90-angle[i]))),(int)(radius[i]*sin(ANGLE*(90-angle[i]))));页脚内容- 7 -}}LRESULT CALLBACK WindowProc(HWND hwnd,UINT message, // 消息标识符,标识某个特定的消息WPARAM wParam,LPARAM lParam) //消息处理函数{TCHAR time[40];PAINTSTRUCT ps;HDC hdc;static int cxClient, cyClient;SYSTEMTIME st; //定义结构体变量static SYSTEMTIME preSt;BOOL hChange;switch(message) //switch 语句一个case代表一种情况页脚内容- 8 -{case WM_CREATE: // 窗口创建事件SetTimer(hwnd,IDTIMER,1000,NULL); //创建一个1000ms定时器GetLocalTime(&st); //得到当前系统时间wsprintf(time,TEXT("%d年%d月%d日%d时%d分%d秒"),//记录系统时间,包括年、月、日、时、分、秒st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond);SetWindowText(hwnd,time); // 设置当前时间为窗口titlepreSt = st;return 0;case WM_SIZE:页脚内容- 9 -cxClient = LOWORD(lParam);cyClient = HIWORD(lParam);return 0;case WM_TIMER: //定时器到时,即是每隔一秒要重画下界面GetLocalTime(&st); //每次都要获取当前时间hChange = st.wHour!=preSt.wHour||st.wMinute!=preSt.wMinute;hdc = GetDC(hwnd);setISOTROPIC(hdc,cxClient,cyClient);SelectObject(hdc,GetStockObject(WHITE_PEN));drawHands(hdc,&preSt,hChange);SelectObject(hdc,GetStockObject(BLACK_PEN));drawHands(hdc,&st,TRUE);ReleaseDC(hwnd,hdc);wsprintf(time,TEXT("%d年%d月%d日%d时%d分%d秒"),//记录系统时间,包括年、月、日、时、分、秒st.wYear,st.wMonth,页脚内容- 10 -st.wDay,st.wHour,st.wMinute,st.wSecond);SetWindowText(hwnd,time); //setwindowText函数:系统里的函数preSt = st; // 更新完毕后记录前一次的状态return 0;case WM_KEYDOWN:case WM_CHAR:DestroyWindow(hwnd); // 关闭窗口return 0;case WM_PAINT: //窗口绘制消息hdc = BeginPaint(hwnd,&ps); //开始绘制setISOTROPIC(hdc,cxClient,cyClient);drawClock(hdc);drawHands(hdc,&preSt,TRUE);页脚内容- 11 -EndPaint(hwnd,&ps); //结束绘制return 0;case WM_DESTROY: //程序退出消息PostQuitMessage(0);return 0;}returnDefWindowProc(hwnd,message,wParam,lParam);//其他消息有系统默认处理}第五章课程设计的运行结果5.1 C语言课程设计的运行结果页脚内容- 12 -第六章课程设计的结果分析6.1 C语言课程设计的结果分析页脚内容- 13 -运行结果分析问题一:程序清单中某个符号添加错误,导致编译时出现错误,执行不出结果。

旋转时钟程序

旋转时钟程序

旋转时钟#include <reg51.h>sbit gate11=P3^0;sbit gate12=P3^1;unsigned char BUFFER[]={0,0,0,0,1,1,7};unsigned char M[]={31,28,31,30,31,30,31,31,30,31,30,31};unsigned char maxnum[]={59,23,31,12,99};unsigned char minnum[]={0,0,1,1,0};unsigned char yy[34];unsigned char code NUM1[] ={0x80,0x7F,0xC0,0xFF,0x40,0x90,0x40,0x8C, // -0-0x40,0x82,0xC0,0xFF,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x81,0x80,0x81,0xC0,0xFF, // -1-0xC0,0xFF,0x00,0x80,0x00,0x80,0x00,0x00,0x80,0xE0,0xC0,0xF0,0x40,0x98,0x40,0x8C, // -2-0x40,0x86,0xC0,0xC3,0x80,0xC1,0x00,0x00,0x80,0x40,0xC0,0xC0,0x40,0x84,0x40,0x84, // -3-0x40,0x84,0xC0,0xFF,0x80,0x7B,0x00,0x00,0x00,0x0C,0x00,0x0E,0x00,0x0B,0x80,0x89, // -4-0xC0,0xFF,0xC0,0xFF,0x00,0x88,0x00,0x00,0xC0,0x47,0xC0,0xC7,0x40,0x84,0x40,0x84, // -5-0x40,0x8C,0x40,0xFC,0x40,0x78,0x00,0x00,0x00,0x7F,0x80,0xFF,0xC0,0x84,0x40,0x84, // -6-0x40,0x84,0x00,0xFC,0x00,0x78,0x00,0x00,0xC0,0x00,0xC0,0x00,0x40,0xF0,0x40,0xF8, // -7-0x40,0x0C,0xC0,0x07,0xC0,0x03,0x00,0x00,0x80,0x7B,0xC0,0xFF,0x40,0x84,0x40,0x84, // -8-0x40,0x84,0xC0,0xFF,0x80,0x7B,0x00,0x00,0x80,0x03,0xC0,0x87,0x40,0x84,0x40,0x84, // -9-0x40,0xC4,0xC0,0x7F,0x80,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x63, // -:-0x00,0x63,0x00,0x00,0x00,0x00,0x00,0x00,};unsigned char code NUM2[]={0x00,0x00,0x7f,0x80,0xff,0xc0,0x82,0x40, // -0- 0x8c,0x40,0x90,0x40,0xff,0xc0,0x7f,0x80,0x00,0x00,0x00,0x00,0x20,0x40,0x60,0x40, // -1- 0xff,0xc0,0xff,0xc0,0x00,0x40,0x00,0x40,0x00,0x00,0x41,0xc0,0xc3,0xc0,0x86,0x40, // -2- 0x8c,0x40,0x98,0x40,0xf0,0xc0,0x60,0xc0,0x00,0x00,0x40,0x80,0xc0,0xc0,0x88,0x40, // -3- 0x88,0x40,0x88,0x40,0xff,0xc0,0x77,0x80,0x00,0x00,0x0c,0x00,0x1c,0x00,0x34,0x00, // -4- 0x64,0x40,0xff,0xc0,0xff,0xc0,0x04,0x40,0x00,0x00,0xf8,0x80,0xf8,0xc0,0x88,0x40, // -5- 0x88,0x40,0x8c,0x40,0x8f,0xc0,0x87,0x80,0x00,0x00,0x3f,0x80,0x7f,0xc0,0xc8,0x40, // -6- 0x88,0x40,0x88,0x40,0x0f,0xc0,0x07,0x80,0x00,0x00,0xc0,0x00,0xc0,0x00,0x83,0xc0, // -7- 0x87,0xc0,0x8c,0x00,0xf8,0x00,0xf0,0x00,0x00,0x00,0x77,0x80,0xff,0xc0,0x88,0x40, // -8- 0x88,0x40,0x88,0x40,0xff,0xc0,0x77,0x80,0x00,0x00,0x70,0x00,0xf8,0x40,0x88,0x40, // -9- 0x88,0x40,0x88,0xc0,0xff,0x80,0x7f,0x00,0x00,0x00,0x00,0xc0,0x01,0x80,0x03,0x00, // -/- 0x06,0x00,0x0c,0x00,0x18,0x00,0x30,0x00,};unsigned char code HZ_12[] ={0x80,0x00,0x88,0x1F,0x30,0x48,0x00,0x24, //"调" 0xF0,0x1F,0x10,0x01,0x50,0x1D,0xF0,0x15,0x50,0x1D,0x10,0x41,0xF8,0x7F,0x10,0x00,0x00,0x02,0x00,0x41,0x80,0x41,0x60,0x31, //"分" 0x18,0x0F,0x00,0x01,0x00,0x21,0x38,0x41,0x40,0x3F,0x80,0x00,0x00,0x01,0x00,0x01,0xE0,0x1F,0x20,0x09,0x20,0x09,0x20,0x09, //"时" 0xE0,0x1F,0x40,0x00,0x40,0x01,0x40,0x26,0x40,0x40,0xF8,0x7F,0x40,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x3F, //"日" 0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0xF8,0x3F,0x10,0x00,0x00,0x00,0x00,0x40,0x00,0x20,0x00,0x10,0xF8,0x0F, //"月" 0x48,0x02,0x48,0x02,0x48,0x22,0x48,0x42,0x48,0x42,0xF8,0x3F,0x00,0x00,0x00,0x00,0x80,0x04,0x40,0x04,0x20,0x04,0x98,0x07, //"年" 0x90,0x04,0x90,0x04,0xF0,0x7F,0x90,0x04,0x90,0x04,0x98,0x04,0x90,0x04,0x10,0x04};unsigned int disp1,disp2,key1,key2,key;unsigned int ii,jj;unsigned int i,w,n,xz,CM,TZ,BZ;void Delay(unsigned int ms){ms=ms*3;while(--ms);}void num_led(int aa, int bb){int kk;for(kk=0;kk<8;kk++){gate11=key1; gate12=key2;P2=~NUM1[aa+kk*2];P1=~NUM1[aa+1+kk*2];Delay(20);P1=0xff;P2=0xff;gate11=key2; gate12=key1;P2=~NUM2[bb+15-kk*2];P1=~NUM2[bb+14-kk*2];Delay(20);P1=0xff;P2=0xff;}}void display_clock(void){key1=key;key2=!key;disp1=BUFFER[3]/10;disp2=BUFFER[4]-(BUFFER[4]/10)*10; ii=disp1*16;jj=disp2*16;num_led(ii,jj);P2=0xff;P1=0xff;Delay(60);disp1=BUFFER[3]-disp1*10;disp2=BUFFER[4]/10;ii=disp1*16;jj=disp2*16;num_led(ii,jj);P2=0xff;P1=0xff;Delay(60);ii=160;jj=160;num_led(ii,jj);P2=0xff;P1=0xff;Delay(60);disp1=BUFFER[2]/10;disp2=BUFFER[5]-(BUFFER[5]/10)*10; ii=disp1*16;jj=disp2*16;num_led(ii,jj);P2=0xff;P1=0xff;Delay(60);disp1=BUFFER[2]-disp1*10;disp2=BUFFER[5]/10;ii=disp1*16;jj=disp2*16;num_led(ii,jj);P2=0xff;P1=0xff;Delay(60);ii=160;jj=160;num_led(ii,jj);P2=0xff;P1=0xff;Delay(60);disp1=BUFFER[1]/10;disp2=BUFFER[6]-(BUFFER[6]/10)*10; ii=disp1*16;jj=disp2*16;num_led(ii,jj);P2=0xff;P1=0xff;Delay(60);disp1=BUFFER[1]-disp1*10;disp2=BUFFER[6]/10;ii=disp1*16;jj=disp2*16;num_led(ii,jj);P2=0xff;P1=0xff;Delay(60);}void display_TZ(void){gate11=key;gate12=!key;for(jj=0;jj<16;jj++){P2=0xff;P1=0xff;Delay(40);}for(jj=0;jj<12;jj++){P2=~HZ_12[jj*2];P1=~HZ_12[1+jj*2];Delay(40);P1=0xff;P2=0xff;}for(jj=0;jj<12;jj++){P2=~HZ_12[TZ*24+jj*2];P1=~HZ_12[TZ*24+1+jj*2]; Delay(40);P1=0xff;P2=0xff;}for(jj=0;jj<8;jj++){P2=~NUM1[160+jj*2];P1=~NUM1[160+1+jj*2];Delay(40);P1=0xff;P2=0xff;}disp1=BUFFER[TZ+1]/10;for(jj=0;jj<8;jj++){P2=~NUM1[disp1*16+jj*2];P1=~NUM1[disp1*16+1+jj*2]; Delay(40);P2=0xff;P1=0xff;}Delay(60);disp1=BUFFER[TZ+1]-disp1*10;for(jj=0;jj<8;jj++){P2=~NUM1[disp1*16+jj*2];P1=~NUM1[disp1*16+1+jj*2]; Delay(40);P2=0xff;P1=0xff;}Delay(60);}void intersvr0(void) interrupt 0{key=!key;if(w==0) w=1;}void intersvr1(void) interrupt 2{TH1=0; TL1=0;}void timer1(void) interrupt 3 using 1{}void timer0(void) interrupt 1 using 1{TH0=-(5000/256);TL0=-(5000%256);TR0=1;BUFFER[0]=BUFFER[0]+1;if (BUFFER[6]%4==0) M[1]=M[1]+1;if (BUFFER[0]>201+xz){BUFFER[0]=0;BUFFER[1]=BUFFER[1]+1;if (BUFFER[1]==60){BUFFER[1]=0;BUFFER[2]=BUFFER[2]+1;if (BUFFER[2]==60){BUFFER[2]=0;BUFFER[3]=BUFFER[3]+1;if (BUFFER[3]==24){BUFFER[3]=0;BUFFER[4]=BUFFER[4]+1;if (BUFFER[4]>M[BUFFER[5]-1]){ BUFFER[4]=1;BUFFER[5]=BUFFER[5]+1;if (BUFFER[5]>12){BUFFER[5]=1;BUFFER[6]=BUFFER[6]+1;if(BUFFER[6]>99) {BUFFER[6]=0;M[1]=M[1]-1;}}}}}}}}void Jm(void){unsigned int kk,mm;CM=0x00;for(kk=0;kk<30;kk++){mm=0;while((P3&0x80)==0x00){};while((P3&0x80)==0x80){mm++;};if((mm>350)&&(mm<100)){CM=0x00; break;};yy[kk]=mm;}for(kk=17;kk<22;kk++){CM=CM<<1;if((yy[kk]>65)&&(yy[kk+8]<65)) {CM=CM|0x01;}else {if((yy[kk]>65)||(yy[kk+8]<65)) {CM=0x00;break;} }}}void main(void){xz=8;TZ=1;BZ=0;key1=0;key2=1;EA=1;IT0=1;EX0=1;EX1=1;IT1=1;ET0=1;TMOD=0x11;TH0=-5000/256; TL0=-5000%256;TR0=1;TH1=0; TL1=0;TR1=1;for(;;){w=0;CM=0;Delay(50);if(w==2) {EX1=0;Jm();Delay(1200);EX1=1;w=0;};if(BZ==1) if(w==1) {display_TZ();n=1;}if(BZ==0) if(w==1) {display_clock();n=1;}if(CM==9) {BUFFER[1]=0;Delay(1200);BZ=!BZ;w=0;CM=0;}if(CM==11){Delay(1200);key=!key;w=1;BZ=0;w=0;CM=0;}if(CM==23) if(BZ==1) {if(BUFFER[TZ+1]<maxnum[TZ-1]) BUFFER[TZ+1]++; else BUFFER[TZ+1]=minnum[TZ-1];Delay(1200);w=0;CM=0;}if(CM==19) if(BZ==1) {if(BUFFER[TZ+1]>minnum[TZ-1])BUFFER[TZ+1]--; else BUFFER[TZ+1]=maxnum[TZ-1];Delay(1200);w=0;CM=0;} if(CM==31) if(BZ==1) {if(TZ<5) TZ++; else TZ=1;Delay(1200);w=0;CM=0;} if(CM==15) if(BZ==1) {if(TZ>1) TZ--; else TZ=5;Delay(1200);w=0;CM=0;}n++;if(n>10) w=1;}}一。

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()函数来处理时钟的运转及数字时钟的显示。

旋转led时钟程序

旋转led时钟程序

旋转led时钟程序#include "STC15F104E.H"#include "intrins.h"#include#include "1302.h"#define uchar unsigned char#define uint unsigned int#include "IR_NEC.h"sbit S1=P3^3;sbit S2=P3^4;sbit S3=P3^5;sbit S4=P3^6;sbit S5=P3^7;sbit S6=P1^2;sbit S7=P1^3;sbit S8=P1^4;sbit S9=P1^5;sbit S10=P1^6;sbit S11=P1^7;sbit S12=P0^0;sbit bell=P3^0;//sbit IR=P1^1;uchar code jiaoshidat[]={5,0x10,0x15,0x20,0x25,0x30,0x35,0x40,0x45,0x50,0x55};uchar code leddata1[]= {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00,0x39,0x49,0x40};//12+13-//uchar code leddata2[]= {0xbF,0x86,0xdB,0xcF,0xe6,0xeD,0xfD,0x87,0xfF,0xeF,0x00}; //有⼩数点uchar dat3[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,0xff};//uchar dat4[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};//uchar t_led[8];//= {0};uchar LED1,LED2,LED3,LED4;uchar xg;uchar tim1;uchar tim2;bit shan,flag2,ds;uint temp[2];uchar miao;uchar fen;uchar shi;uchar nfen;uchar nshi;uchar menu;void IRkey();void leddisplay();void init();void Delayms(uint t){uchar i;while(t--)for(i=0; i<100; i++);}void init(){//TMOD=0x0;TH0 = t0>>8;TL0 = t0;ET0=TR0=1;EA=1;/* T2L = 0xb0; //初始化计时值T2H = 0x3c;AUXR |= 0x10; //定时器2开始计时IE2 |= 0x04; */ //开定时器2中断}void IRkey()//视宝333{if(IR_ok){ds=1;tim2=0;/*if(OKCode==0xbf01){shi=0x23;fen=0x59;miao=0x58;write_time();}if(OKCode==0xbf02){shi=0;fen=0;miao=0x58;write_time();}*/if(OKCode==0xbf16){uchar i;if(++xg>3)xg=0;if(xg==0)for(i=0; i<8; i++)dat4[i]=0xff;if(xg==1){dat4[0]=0xef;dat4[1]=0xbd;dat4[2]=0xf7;dat4[3]=0xde;dat4[4]=0x7b;dat4[5]=0xef;dat4[6]=0xbd;dat4[7]=0xf7;} if(xg==2){dat4[0]=0xff;dat4[1]=~0x40;dat4[2]=0xff;dat4[3]=~0x20;dat4[4]=0xff;dat4[5]=~0x10;dat4[6]=0xff;dat4[7]=0xf7;} if(xg==3)for(i=0; i<8; i++)dat4[i]=0xff;}if(OKCode==0xbf5b)menu=!menu;if(OKCode==0xbf47)if(menu)if(++menu>6)menu=1;if(OKCode==0xbf46)if(menu)if(--menu==0)menu=6;if(OKCode==0xbf19){if(menu==1){if(++shi >0x23)shi = 0;if((shi & 0x0f) > 9) shi+=6;}if(menu==2){if(++fen > 0x59)fen = 0;if((fen & 0x0f) >9)fen+=6;}if(menu==3){if(++miao > 0x59)miao = 0;if((miao & 0x0f) >9)miao+=6;}if(menu==4){if(++yue > 0x12)yue = 0x1;if((yue & 0x0f) >9)yue+=6;}if(menu==5){if(++ri > 0x31)ri = 0x1;if((ri & 0x0f) >9)ri+=6;}if(menu==6)if (++jiaoshi>21)jiaoshi=11;write_time();}if(OKCode==0xbf1d){if(menu==1){if(--shi >0x23)shi =0x23;if((shi & 0x0f) > 9) shi-=6;}if(menu==2){if(--fen > 0x59)fen =0x59;if((fen & 0x0f) >9)fen-=6;}if(menu==3){if(--miao > 0x59)miao = 0x59;if((miao & 0x0f) >9)miao-=6;}if(menu==4){if(--yue == 0)yue = 0x12;if((yue & 0x0f) >9)yue-=6;}if(menu==5){if(--ri > 0x31)ri = 0x31;if((ri & 0x0f) >9)ri-=6;}if(menu==6)if (--jiaoshi>21)jiaoshi=11; write_time();}IR_ok=0;}}void InitTimer1() interrupt 1{ static uint t;NEC();if(++t>=5000){t=0;shan=!shan;if(++tim1>22)tim1=0;if(tim1>15)flag2=1;else flag2=0;if(++tim2>60)ds=0;}}void leddisplay(){ uchar i;if(menu==0){if(flag2==1){if(yue/16)LED1=yue/16;else LED1=10;LED2=yue%16;LED3=ri/16;LED4=ri%16;}if(flag2==0){ if(shi/16)LED1=shi/16;else LED1=10; LED2=shi%16;LED3=fen/16;LED4=fen%16;}}if(menu==1){if(shan){LED1=shi/16;LED2=shi%16;}else{LED1=10;//不显⽰LED2=10;//不显⽰}LED3=fen/16;LED4=fen%16;}if(menu==2){if(shan){LED3=fen/16;LED4=fen%16;}else{LED3=10;LED4=10;}LED1=shi/16;LED2=shi%16;}if(menu==3){if(shan){LED1=shi/16;LED2=shi%16;LED3=fen/16;LED4=fen%16;}else{LED1=10;LED2=10;LED3=10;LED4=10;}}if(menu==4){if(shan){if(yue/16)LED1=yue/16;else LED1=10;LED2=yue%16;}else{LED1=10;//不显⽰LED2=10;//不显⽰}LED3=ri/16;LED4=ri%16;}if(menu==5){if(shan){LED3=ri/16;LED4=ri%16;}else{LED3=10;LED4=10;}if(yue/16)LED1=yue/16;else LED1=10;LED2=yue%16;}if(menu==6){if(jiaoshi>11){LED1=12;LED2=10;LED3=(jiaoshidat[jiaoshi-12])/16;LED4=(jiaoshidat[jiaoshi-12])%16;}if(jiaoshi<11){LED1=13;LED2=10;LED3=(jiaoshidat[10-jiaoshi])/16;LED4=(jiaoshidat[10-jiaoshi])%16;}if(jiaoshi==11){LED1=LED2=10;LED3=LED4=0;}}if(xg==0){dat3[0]=0xFE;dat3[1]=0xFC;dat3[2]=0xF8;dat3[3]=0xF0;dat3[4]=0xE0;dat3[5]=0xC0;dat3[6]=0x80;dat3[7]=0x00;dat3[8]=0xFF;if(miao>0x56){for(i=0; i<7; i++)t_led[i]=7;t_led[7]=(miao/16*10+miao%16-1)%8;}if(miao>0x48&&miao<=0x56){for(i=0; i<6; i++)t_led[i]=7;t_led[6]=(miao/16*10+miao%16-1)%8;}if(miao>0x40&&miao<=0x48){for(i=0; i<5; i++)t_led[i]=7;t_led[5]=(miao/16*10+miao%16-1)%8;}if(miao>0x32&&miao<=0x40){for(i=0; i<4; i++)t_led[i]=7;t_led[4]=(miao/16*10+miao%16-1)%8;}if(miao>0x24&&miao<=0x32){for(i=0; i<3; i++)t_led[i]=7;t_led[3]=(miao/16*10+miao%16-1)%8;}if(miao>0x16&&miao<=0x24){for(i=0; i<2; i++)t_led[i]=7;t_led[2]=(miao/16*10+miao%16-1)%8;}if(miao>0x08&&miao<=0x16){t_led[0]=7;t_led[1]=(miao/16*10+miao%16-1)%8;}if(miao>0x00&&miao<=0x08){for(i=1; i<8; i++)t_led[i]=8;t_led[0]=(miao/16*10+miao%16-1)%8;}if(miao==0x00)for(i=0; i<8; i++)t_led[i]=7;}else{dat3[0]=0xFE; dat3[1]=0xFD; dat3[2]=0xFB; dat3[3]=0xF7; dat3[4]=0xEF; dat3[5]=0xDF; dat3[6]=0xBF; dat3[7]=0x7F; dat3[8]=0xFF;for(i=0; i<8; i++) t_led[i]=8;if(miao>0x56 ){t_led[7]=(miao/16*10+miao%16-1)%8;}if(miao>0x48&&miao<=0x56){t_led[6]=(miao/16*10+miao%16-1)%8;}if(miao>0x40&&miao<=0x48){t_led[5]=(miao/16*10+miao%16-1)%8;}if(miao>0x32&&miao<=0x40){t_led[4]=(miao/16*10+miao%16-1)%8;}if(miao>0x24&&miao<=0x32){t_led[3]=(miao/16*10+miao%16-1)%8;}if(miao>0x16&&miao<=0x24){t_led[2]=(miao/16*10+miao%16-1)%8;}if(miao>0x08&&miao<=0x16){t_led[1]=(miao/16*10+miao%16-1)%8;}if(miao>0x00&&miao<=0x08){t_led[0]=(miao/16*10+miao%16-1)%8;}if(miao==0x00)t_led[7]=3;}P2=leddata1[LED1];S1=0;Delayms(2);S1=1;if(shan|flag2)P2=leddata1[LED2];else P2=leddata1[LED2]|0x80;S2=0;Delayms(2);S2=1;P2=leddata1[LED3];S3=0;Delayms(2);S3=1;P2=leddata1[LED4];S4=0;Delayms(2);S4=1;//////////////////////////////////////////////////////P2=dat3[t_led[0]]&dat4[0]; S5=1;Delayms(2);S5=0;P2=dat3[t_led[1]]&dat4[1]; S6=1;Delayms(2);S6=0;P2=dat3[t_led[2]]&dat4[2]; S7=1;Delayms(2);S7=0;P2=dat3[t_led[3]]&dat4[3]; S8=1; Delayms(2);S8=0;P2=dat3[t_led[4]]&dat4[4]; S9=1; Delayms(2);S9=0;P2=dat3[t_led[5]]&dat4[5]; S10=1; Delayms(2);S10=0;P2=dat3[t_led[6]]&dat4[6]; S11=1; Delayms(2);S11=0;P2=dat3[t_led[7]]&dat4[7]; S12=1; Delayms(2);S12=0;}void main(){init();read_nao();P3M0=0xf8;P3M1=0x00;P2M0=0xff;P2M1=0x00;P1M0=0xfd;P1M1=0x00;P0M0=0x01;P0M1=0x00;IR=1;ri_tmp=0xff;while(1){IRkey();read_time();if(ri_tmp!=ri&&shi==0&&(fen==1)) {if(jiaoshi>11){miao=jiaoshidat[jiaoshi-12]; write_time();}else if(jiaoshi<11){miao=jiaoshidat[jiaoshi];fen=0;write_time();}ri_tmp=ri;}if(~ds)menu=0;leddisplay();}}。

模拟时钟转动程序设计说明书

模拟时钟转动程序设计说明书

摘要 ............................................................. - 0 -1 引言 ........................................................... - 2 -1.1 选题背景 ..................................................... - 2 -1.2 任务与分析 ................................................... - 2 -2 方案设计 ....................................................... -3 -3 界面设计 ....................................................... - 3 -4 代码设计及程序调试 ............................................. - 4 -总结与体会 ....................................................... - 7 -致谢 ............................................................. - 9 -参考文献 ........................................................ - 10 -摘要随着计算机的不断更新发展,计算机图形操作和动画设计扮演着极为重要的角色, Windows环境下的Visual Basic提供了丰富的图形功能。

本文主要通过对选题背景、方案设计、界面设计、代码编写及调试以及软件使用说明等的介绍,介绍了作者利用Visual Basic对“模拟时钟转动”程序的开发设计过程。

模拟时钟转动程序(精)

模拟时钟转动程序(精)

绘制表盘部分
• void init() /*画时钟边框函数*/ • { • int i,l,x1,x2,y1,y2; • setbkcolor(1); /*设置背景颜色白色 */ • circle(300,240,200); /*画圆心为(300,240)半径200圆*/ • circle(300,240,205); • circle(230,180,25); • rectangle(220,280,400,300); /*画矩形(左上角和右下 角坐标)*/ • circle(380,180,25); • circle(300,240,5);
整点报时模块(*丌要求)
• while(t[0].ti_sec==s) • gettime(t); /*获得系统时间*/ • gotoxy(44,18); /*使光标移动到指定坐标*/ • printf("\b\b\b\b\b\b\b\b\b"); /*退格,使表示时间癿字符串 丌断变化*/ • sound(400); /*按给定癿频率打开PC扬声器*/ • delay(70); /*中断程序癿执行,时间为70毫秒*/ • sound(200); • delay(30); • nosound(); /*按给定癿频率兲闭PC扬声器*/ •


√ √ √
√ √ √ √ √ √ √ √ √
程序简要内容
程序系统癿结构
模拟时钟转
指针式时钟
数字式时钟
算法 • 丌论何种指针,每次转动均以π/30弧度(一 秒癿角度)为基本单位,且都以表盘中心为转动 圆心。计算指针端点(x, y)癿公式如下:x =圆 心x坐标 指针长度 * cos (指针方向角)y =圆心y坐 标 指针长度 * sin (指针方向角)注重,指针长度 是指自圆心至指针一个端点癿长度(是整个指针 癿一部分),由于指针可以跨越圆心,因此一个 指针需要计算两个端点。三个指针癿运动是相兲 联癿,秒针转一圈引起分针运动一格,分针转一 圈引起时针运动一格,因此应该使用一个定时器 消息来处理指针癿运动。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机物理建模课程设
计报告
题目:时钟旋转模拟
学院:理学院
专业:物理学
班级:2010126156
姓名:黄帅
指导教师:杨先卫
设计日期:2012年4月30日
一.选题背景:在现代社会里,科学技术高度发展,特别是计算机技术开发突飞猛进,大量的网络设计,计算机程序设计应运而生,并且在多方面领域得到广泛的应用。

现在利用C语言程序来解释一些物理现象,通过学习语言,我们了解了C语言的语言编程的过程。

下面是利用C语言程序来模拟时钟旋转。

二.设计思想:程序在C语言环境下,调用大量库函数,图形函数,数学函数,还有for语句do while等循环语句
三. 主要解决问题的方法及技术关键.
1、主要问题及解决方法:
主要调用到graphics.h,math.h,dos.h等重要库函数,运用循环体等进行编译。

2.技术关键
掌握for语句do while等循环语句的运用,及图形函数,数学函数等函数的应用。

三、程序流程
开始——初始化图形设计——设置窗体的背景色、前景色及画笔——画出时钟的框架、标题及分秒的刻度——调用时钟处理程序——获取当前时间并显示——调用消息处理函数刷新窗口显示——判断修改是增
加还是减少——退出(Esc)
四.程序清单:
#include<graphics.h>
#include<math.h>
#include<dos.h>
#define pi 3.1415926
#define X(a,b,c) x=a*cos(b*c*pi/180-pi/2)+300;
#define Y(a,b,c) y=a*sin(b*c*pi/180-pi/2)+240;
#define d(a,b,c) X(a,b,c);Y(a,b,c);line(300,240,x,y) void init()
{int i,l,x1,x2,y1,y2;
setbkcolor(1);
circle(300,240,200);
circle(300,240,205);
circle(300,240,5);
for(i=0;i<60;i++)
{if(i%5==0) l=15;
else l=5;
x1=200*cos(i*6*pi/180)+300;
y1=200*sin(i*6*pi/180)+240;
x2=(200-l)*cos(i*6*pi/180)+300;
y2=(200-l)*sin(i*6*pi/180)+240;
line(x1,y1,x2,y2);
}
}
main()
{
int x,y;
int gd=VGA,gm=2;
unsigned char h,m,s;
struct time t[1];
initgraph(&gd,&gm,"d:\\wintc\\bgi"); init();
setwritemode(1);
gettime(t);
h=t[0].ti_hour;
m=t[0].ti_min;
s=t[0].ti_sec;
setcolor(7);
d(150,h,30);
setcolor(14);
d(170,m,6);
setcolor(4);
d(190,s,6);
while(!kbhit())
{while(t[0].ti_sec==s)
gettime(t);
sound(400);
delay(70);
sound(200);
delay(30);
nosound();
setcolor(4);
d(190,s,6);
s=t[0].ti_sec;
d(190,s,6);
if (t[0].ti_min!=m)
{
setcolor(14);
d(170,m,6);
m=t[0].ti_min;
d(170,m,6);
}
if (t[0].ti_hour!=h)
{ setcolor(7);
d(150,h,30);
h=t[0].ti_hour;
d(150,h,30);
sound(1000);
delay(240);
nosound();
delay(140);
sound(2000);
delay(240);
nosound();
}
}
getch();
closegraph();
}
六、设计结果说明
1、设计优点:整个程序过程简单明了,容易理解,而
且操作简单。

并且运用了简单的C语言知识,巩固C语
言运用的目的。

2、设计不足:由于对C语言了解的得还不够深入,
所以程序的某些地方还有些不足,要想效果更加好,还需
加以修改。

七 .在设计过程中的感受:
首先经过两周的编程实习,并在后一段的报告总结,我对
C语言这门科有新的认识,本人实在是获益不浅!要想编
写一个准确、高效并有使用价值的程序,一定先要对课本
知识熟悉,还要掌握必要的上机操作能力,写程序其实很
容易而关键在于调试程序。

这次设计,让我重新掌握了C语
言,而且还得到了用C语言解决实际问题的宝贵经验。

其次, 通过此次编程我也发现了自己在学习中的错误和不足,复习了以前学过的知识。

同时也学到了一些没学过的知识,让我从中收益非浅,也为期末考试准备了一下!更重要的是培养了独立思考问题和解决问题的能力,熟悉了一些基本操作和解决问题的方法!
再则, 因为初次接触等原因此次设计遇到了许多问题,我深刻体会到老师发挥的重要作用,C语言程序对我们来说比较难,在匆忙的学习中更是难上加难,似乎觉得自己仅是个匆匆过客,但在老师的帮助下我学会了如何调试,如何查找系统没有提示的错误,最后终于排除万难把程序搞定,体会到原来编程也挺有意思的快感.我想没有老师的帮助我很难在短期内把程序设计做的这样好,在此特地感谢老师的帮助。

相关文档
最新文档