欣_欣向荣
我的课程设计报告,希望对你有帮助!成绩 课程设计报告册20 09 ~ 20 10 学年 第 2 学期课程名称: C语言课程设计 任课教师: 班 级: B090602 姓 名: 臧富跃 学 号: B09060243 20 10 年 6 月一.课程设计题目:万年历二.题目要求:(1) 程序运行的开始显示当前份的年年历(2) 能够按照输入的年份显示月历(3) 当输入小于1900的年份时退出程序三.题目分析:课程设计题目的分析,功能模块的划分。(1)首先要根据起始年份判断每年的第一天是周几,然后根据周几控制每月的第一行输出的空格!(2)判断每年是否为闰年,并设置相关的2月份的天数!四.模块设计(流程图):各个模块的设计说明,包括模块的名称、功能、入口参数说明与返回值说明,以及各个模块实现过程的说明(必要时画出流程图)。(1)main函数: 该函数为程序入口,通过一个do-while来实现当输入年数小于1900时程序退出,否则main函数调用calculate函数,并将输入年数作为参数传递给claculate函数!(2)calculate函数:该函数有一个参数,为main函数传递进来的输入年份,返回类型为void, 该函数负责从main函数中承接输入年份并显示出来,然后调用standpirnt函数(3)standpirnt 函数:该函数有一个参数,为calculate函数传递进来的输入年份,返回类型为void,该函数负责实现标准的日历格式输出,根据循环次数设定每月的天数,并且通过tag与tag2来控制每个月的月首的空格!并且通过调用dayOfweek获得输入年份的第一天是周几,并且输出相应空格!(4)dayOfweek函数:该函数有一个参数,是输入的年数,返回值为该年的第一天是周几,该函数负责返回输入年数的第一天是周几,并输出一个与周几匹配的空格数!五.源代码:各个模块实现的源代码。main 函数:void main() {int input = 0;int jude = 1;do {printf("please input a year!/n");scanf("%d",&input);if(input <= 1900) { printf("DATA ERROR !!!"); jude = 0;}printf("the year is %d/n",input);//这里判断是否闰年!if(jude)calculate(input);} while(jude);}*************************************************************Calculate 函数://该函数负责显示年份并且调用standpirnt函数!void calculate(int year) {printf("%d/n",year);standpirnt(year);// dayOfweek(year);}standpirnt函数void standpirnt(int year){//这里测试日历格式输出!int date[31] = {0};for(int i=0; i<31; i++) { date[i] = i+1;}int input = year;int tag = 0;int tag2 = 0;int leap = 0;int ccyd = 0;int bug = 0;for(int j=0; j<12; j++) { printf("******************************/n"); printf(" %d 年 %d 月/n",input,(j+1)); printf("******************************/n"); printf(" 日 一 二 三 四 五 六/n"); //设定月份的天数! if(input % 4 ==0 || input %100 ==0 && input%400 != 0) ccyd = 1; switch((j+1)) { case 1: leap = 31;break; case 2: ccyd?leap = 29:leap = 28;break; case 3: leap = 31;break; case 4: leap = 30;break; case 5: leap = 31;break; case 6: leap = 30;break; case 7: leap = 31;break; case 8: leap = 31;break; case 9: leap = 30;break; case 10: leap = 31;break; case 11: leap = 30;break; case 12: leap = 31;break; }//这里控制跳转换行! for(int k =0; k
摘要现在是一个知识爆炸的新时代,新产品、新技术层出不穷,电子技术的发展更是日新月异。可以毫不夸张的说,电子技术的应用无处不在,电子技术正在不断地改变我们的生活,改变着我们的世界。在这快速发展的年代,时间对人们来说是越来越宝贵,在快节奏的生活时,人们往往忘记了时间,一旦遇到重要的事情而忘记了时间,这将会带来很大的损失。因此我们需要一个定时系统来提醒这些忙碌的人,而数字化的钟表给人们带来了极大的方便。由于单片机具有灵活性强、成本低、功耗低、保密性好等特点,所以电子日历时钟一般都以单片机为核心,外加一些外围设备来实现。 近些年,随着科技的发展和社会的进步,人们对数字钟的要求也越来越高,传统的时钟已不能满足人们的需求。多功能数字钟不管在性能还是在样式上都发生了质的变化,有电子闹钟、数字闹钟等等。单片机在多功能数字钟中的应用已是非常普遍的,人们对数字钟的功能及工作顺序都非常熟悉。但是却很少知道它的内部结构以及工作原理。由单片机作为数字钟的核心控制器,可以通过它的时钟信号进行计时实现计时功能,将其时间数据经单片机输出,利用显示器显示出来,通过按键可以进行定时、校时功能。输出设备显示器可以用液晶显示技术和数码管显示技术。论文中的控制单元是以ATMEL公司的AT89C52微控制器为核心,显示单元采用LED数码管,实现时间的显示。在软件上,采用keil c51软件系统,控制单元采用C语言编程;另外,从硬件和软件上采取了多种措施提高系统的可靠性。1 前言 1 电子时钟的发展状况 2 电子时钟的广泛应用12 系统的总体设计 1 单片机选型2 显示模块 63 电子时钟硬件系统设计1 系统设计思想2 硬件电路1 时钟电路2 复位电路104 电子时钟软件系统设计 1 系统程序设计 2 软件设计的基本思想3 程序设计145 系统的软件仿真调试与应用制作 1 仿真软件Proteus介绍 2 keil c51软件介绍 3 Proteus与keil c51的调试176 设计体会 19参考文献 20