模拟电子时钟c语言课程设计设计报告-精品

时间:2024.3.19

 

单    位 电气与电子工程学院 分院(系)

专    业   电气           

学    号      

学生姓名           

指导教师          

           

完成日期  20## 年5 月29日


摘  要

电子时钟是一种用电脑实现时、分、秒计时的装置,与机械时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命。电子钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及车站、码头、剧院、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大地方便。

C语言功能丰富、表达能力强、使用方便、应用面广、目标程序效率高,因此特别适合模拟电子时钟的开发

关键词:模拟电子时钟,程序设计。


目录

第1章 选题的意义………………………………………………………………  4

1.1 ………………………………………………………………………… 4

1.2 ………………………………………………………………………… 4

第2章 系统功能需求分析 ……………………………………………………… 5

2.1系统的基本要求 ……………………………………………………… 5

2.2 ………………………………………………………………………… 5

第3章 系统设计 ………………………………………………………………… 6

第4章 系统实现 ………………………………………………………………… 7

第5章 总结 ……………………………………………………………………… 8


第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,y-a),同样可以用相同的方法求得,分、秒的坐标值。本程序中a,b,c分别取50,80,98,单位为像素。可以模拟出不同的长度,作为时、分、秒指针示意图如下:

 

 

 

 


(2)  动画处理流程

初运行阶段首先取得系统时间并保存在t结构体变量内,同时在数字时钟中显示出当前系统时间。然后开始进入for循环,直到用户按ESC或者Tab键跳出循环。同时打开扬声器,发出滴答声,并利用while循环延迟一秒从而模拟出机械钟的滴答声。延迟一秒后清除原来的秒针,绘制新的秒针,同时更新数字时钟的数字。用一个if语句判断如果分钟有变化,清除分针,重绘分针;如果时针有变化,清除时针,重绘时针。最后通过对键值的判断,若为Esc或者Tab则跳出循环。

3.5数字时钟处理模块

在本模块中,每隔一秒会调用gettime(t)函数来得到系统时间,并把它赋给digitclock()函数,并在显示相应的数字时钟位置,同时还有一个判断语句,如果秒数等于60,那么秒数就会重新变为0,从而形成一个循环。修改时间是通过的改变系统时间来实现的,调用scanf()函数把t结构体变量重新赋值,再调用settime()函数就把系统时间修改成功了。

 

 

第4章 系统实现

/*电子时钟源代码*/

#include<graphics.h>

#include<stdio.h>

#include<math.h>

#include<dos.h>

#define PI 3.1415926 /*定义常量*/

#define ESC 0x11b   /*ESC键 : 退出系统*/

#define TAB 0xf09   /*TAB键 : 移动光标*/

/*函数声明*/

int keyhandle(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 ho,mi;

double x,x1,x2,y,y1,y2; /*全局变量:坐标值*/

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

main()

{

  huatu();

  clockhandle1();/*开始调用时钟处理程序*/

  tab1:

  closegraph();

  printf("setuptime,now!\n please (min,hour,sec)\n");

  scanf("%d,%d,%d",&t[0].ti_min,&t[0].ti_hour,&t[0].ti_sec);

  huatu();

  settime(t);

  clockhandle2();

  goto tab1;

  closegraph(); /*关闭图形系统*/

 return 0; /*表示程序正常结束,向操作系统返回一个0值*/

 }

 clockhandle1()

{

 int k=0,count;

 setcolor(15);

 gettime(t);/*取得系统时间,保存在time结构类型的数组变量中*/

 h=t[0].ti_hour;

 m=t[0].ti_min;

 x=50*sin((h*60+m)/360*PI)+320; /*时针的x坐标值*/

 y=180-50*cos((h*60+m)/360*PI); /*时针的y坐标值*/

 line(320,180,x,y);/*在电子表中绘制时针*/

 x1=80*sin(m/30*PI)+320; /*分针的x坐标值*/

 y1=180-80*cos(m/30*PI); /*分针的y坐标值*/

 line(320,180,x1,y1); /*在电子表中绘制分针*/

 digitclock(260,333,digithour(h)); /*在数字时钟中,显示当前的小时值*/

 digitclock(305,333,digitmin(m)); /*在数字时钟中,显示当前的分钟值*/

 setwritemode(1);

 /*规定画线的方式,如果mode=1,则表示画线时用现在特性的线

与所画之处原有的线进行异或(XOR)操作,实际上画出的线是原有线与现在规定

的线进行异或后的结果。因此, 当线的特性不变, 进行两次画线操作相当于没有

画线,即在当前位置处清除了原来的画线*/

 for(count=2;k!=ESC&&k!=TAB;){ /*开始循环,直至用户按下ESC键结束循环*/

   setcolor(12);/*淡红色*/

   sound(500);/*以指定频率打开PC扬声器,这里频率为500Hz*/

   delay(700);/*发一个频率为500Hz的音调,维持700毫秒*/

   sound(200);/*以指定频率打开PC扬声器,这里频率为200Hz*/

   delay(300);

   /*以上两种不同频率的音调,可仿真钟表转动时的嘀哒声*/

   nosound(); /*关闭PC扬声器*/

   s=t[0].ti_sec;

   m=t[0].ti_min;

   h=t[0].ti_hour;

   x2=98*sin(s/30*PI)+320; /*秒针的x坐标值*/

   y2=180-98*cos(s/30*PI); /*秒针的y坐标值*/

       setlinestyle(0,0,1);

   line(320,180,x2,y2);

   /*绘制秒针*/

   /*利用此循环,延时一秒*/

   while(t[0].ti_sec==s&&t[0].ti_min==m&&t[0].ti_hour==h)

   {  gettime(t);/*取得系统时间*/

      if(bioskey(1)!=0){

       k=bioskey(0);

       count=keyhandle(k);

      }

     }

   setcolor(15);

   digitclock(353,333,digitsec(s)+1);/*数字时钟增加1秒*/

   setcolor(12); /*淡红色*/

   x2=98*sin(s/30*PI)+320;

   y2=180-98*cos(s/30*PI);

   line(320,180,x2,y2);

  /*用原来的颜色在原来位置处再绘制秒针,以达到清除当前秒针的目的*/

   /*分钟处理*/

  if(t[0].ti_min!=m){ /*若分钟有变化*/

         /*消除当前分针*/

         setcolor(15); /*白色*/

         x1=80*sin(m/30*PI)+320;

         y1=180-80*cos(m/30*PI);

         line(320,180,x1,y1);

         /*绘制新的分针*/

         m=t[0].ti_min;

         digitclock(305,333,digitmin(m)); /*在数字时钟中显示新的分钟值*/

         x1=80*sin(m/30*PI)+320;

         y1=180-80*cos(m/30*PI);

         line(320,180,x1,y1);

  }

  /*小时处理*/

  if((t[0].ti_hour*60+t[0].ti_min)!=(h*60+m)){  /*若小时数有变化*/

         /*消除当前时针*/

          setcolor(15); /*白色*/

          x=50*sin((h*60+m)/360*PI)+320;/*50:时钟的长度(单位:像素),320:圆心的x坐标值*/

          y=180-50*cos((h*60+m)/360*PI);

          line(320,180,x,y);

          /*绘制新的时针*/

          h=t[0].ti_hour;

          digitclock(260,333,digithour(h));

          x=50*sin((h*60+m)/360*PI)+320;

          y=180-50*cos((h*60+m)/360*PI);

          line(320,180,x,y);

     }

   }

 }

 int keyhandle(int key)   /*键盘控制 */

{ switch(key)

    case TAB:;

}

int digithour(double h)/*将double型的小时数转换成int型*/

{int i;

 for(i=0;i<=23;i++)

  {if(h==i) return i;}

 }

int digitmin(double m)/*将double型的分钟数转换成int型*/

{int i;

 for(i=0;i<=59;i++)

  {if(m==i) return i;}

}

int digitsec(double s) /*将double型的秒钟数转换成int型*/

{int i;

 for(i=0;i<=59;i++)

  {if(s==i) return i;}

}

void digitclock(int x,int y,int clock)/*在指定位置显示数字时钟:时\分\秒*/

{char buffer1[10];

 setfillstyle(0,2);

 bar(x,y,x+20,348);

 if(clock==60) clock=0;

 sprintf(buffer1,"%d",clock);

 outtextxy(x,y,buffer1);

 }

void drawcursor(int count)    /*根据count的值,画一个光标*/

{switch(count)

 {

  case 1:line(424,315,424,325);break;

  case 2:line(465,315,465,325);break;

  case 3:line(505,315,505,325);break;

  }

 }

void clearcursor(int count)    /*根据count的值,清除前一个光标*/

{switch(count)

 {

  case 1:line(424,315,424,325);break;

  case 2:line(465,315,465,325);break;

  case 3:line(505,315,505,325);break;

  }

 }

  huatu()

 {

  int driver, mode=0,i,j;

 driver=DETECT; /*自动检测显示设备*/

 initgraph(&driver, &mode, "");/*初始化图形系统*/

 setlinestyle(0,0,3); /*设置当前画线宽度和类型:设置三点宽实线*/

 setbkcolor(0);/*用调色板设置当前背景颜色*/

 setcolor(9); /*设置当前画线颜色*/

 line(5,5,635,5);

 line(5,5,5,475);

 line(635,5,635,475);

 line(5,475,635,475);

 line(5,235,320,5);

 line(320,5,635,235);

 line(635,235,320,400);

 line(320,400,5,235);        /*画主体框架的边直线*/

 /*arc(int x, int y, int stangle, int endangle, int radius)*/

 setcolor(15);

 outtextxy(305,50,"CLOCK"); /*显示标题*/

 setcolor(7);

   line(250,320,390,320);

 line(390,320,390,350);

 line(390,350,250,350);

 line(250,350,250,320);

 setcolor(5);

 for(i=290;i<=336;i+=46)

   for(j=333;j<=340;j+=7){

   setlinestyle(0,0,3);

   circle(i,j,1); /*以(i, y)为圆心,1为半径画圆*/

  }

 /*绘制表示小时的圆点*/

 setcolor(15);

 for(i=0,mi=0,ho=0;i<=11;i++,ho++){

    x=100*sin((ho*60+mi)/360*PI)+320;

    y=180-100*cos((ho*60+mi)/360*PI);

    setlinestyle(0,0,3);

    circle(x,y,2);

 }

 /*绘制表示分钟或秒钟的圆点*/

 setcolor(11);

 for(i=0,mi=0;i<=59;mi++,i++){

    x=100*sin(mi/30*PI)+320;

    y=180-100*cos(mi/30*PI);

    setlinestyle(0,0,1);

    circle(x,y,1);

 }

 /*在电子表的左边打印帮助提示信息*/

 setcolor(12);

 outtextxy(250,420,"Do not waste time!");

 outtextxy(20,35,"print TAB or ESC to setup time!");

 outtextxy(385,35,"May you be happy forever");

 setcolor(10);

 outtextxy(400,55,"version 1.0");

 outtextxy(20,55,"jinhengli c language program");

 outtextxy(313,65,"12");

 outtextxy(363,80,"1");

 outtextxy(413,120,"2");

 outtextxy(426,175,"3");

outtextxy(413,225,"4");

 outtextxy(370,273,"5");

 outtextxy(316,286,"6");

 outtextxy(263,275,"7");

 outtextxy(219,233,"8");

 outtextxy(205,177,"9");

 outtextxy(214,120,"10");

 outtextxy(263,80,"11");

 setcolor(10);

 circle(150,240,50);

 circle(150,240,45);

 circle(150,240,40);

 circle(150,240,35);

 circle(150,240,30);

 circle(150,240,25);

 circle(150,240,20);

 circle(150,240,15);

 circle(150,240,10);

 circle(150,240,05);

 circle(150,240,1);

 circle(490,240,50);

 circle(490,240,45);

 circle(490,240,40);

 circle(490,240,35);

 circle(490,240,30);

 circle(490,240,25);

 circle(490,240,20);

 circle(490,240,15);

 circle(490,240,10);

 circle(490,240,05);

 circle(490,240,1);

 }

 clockhandle2()

{

 int k=0,count;

 setcolor(15);

 gettime(t);/*取得系统时间,保存在time结构类型的数组变量中*/

 h=t[0].ti_hour;

 m=t[0].ti_min;

 x=50*sin((h*60+m)/360*PI)+320; /*时针的x坐标值*/

 y=180-50*cos((h*60+m)/360*PI); /*时针的y坐标值*/

 line(320,180,x,y);/*在电子表中绘制时针*/

 x1=80*sin(m/30*PI)+320; /*分针的x坐标值*/

 y1=180-80*cos(m/30*PI); /*分针的y坐标值*/

 line(320,180,x1,y1); /*在电子表中绘制分针*/

 digitclock(260,333,digithour(h)); /*在数字时钟中,显示当前的小时值*/

 digitclock(305,333,digitmin(m)); /*在数字时钟中,显示当前的分钟值*/

 setwritemode(1);

 /*规定画线的方式,如果mode=1,则表示画线时用现在特性的线

与所画之处原有的线进行异或(XOR)操作,实际上画出的线是原有线与现在规定

的线进行异或后的结果。因此, 当线的特性不变, 进行两次画线操作相当于没有

画线,即在当前位置处清除了原来的画线*/

 for(count=2;k!=ESC&&k!=TAB;){ /*开始循环,直至用户按下ESC键结束循环*/

   setcolor(12);/*淡红色*/

   sound(500);/*以指定频率打开PC扬声器,这里频率为500Hz*/

   delay(700);/*发一个频率为500Hz的音调,维持700毫秒*/

   sound(200);/*以指定频率打开PC扬声器,这里频率为200Hz*/

   delay(300);

   /*以上两种不同频率的音调,可仿真钟表转动时的嘀哒声*/

   nosound(); /*关闭PC扬声器*/

   s=t[0].ti_sec;

   m=t[0].ti_min;

   h=t[0].ti_hour;

   x2=98*sin(s/30*PI)+320; /*秒针的x坐标值*/

   y2=180-98*cos(s/30*PI); /*秒针的y坐标值*/

       setlinestyle(0,0,1);

   line(320,180,x2,y2);

   /*绘制秒针*/

   /*利用此循环,延时一秒*/

   while(t[0].ti_sec==s&&t[0].ti_min==m&&t[0].ti_hour==h)

   {  gettime(t);/*取得系统时间*/

      if(bioskey(1)!=0){

       k=bioskey(0);

       count=keyhandle(k);

      }

     }

   setcolor(15);

   digitclock(353,333,digitsec(s)+1);/*数字时钟增加1秒*/

   setcolor(12); /*淡红色*/

   x2=98*sin(s/30*PI)+320;

   y2=180-98*cos(s/30*PI);

   line(320,180,x2,y2);

  /*用原来的颜色在原来位置处再绘制秒针,以达到清除当前秒针的目的*/

   /*分钟处理*/

  if(t[0].ti_min!=m){ /*若分钟有变化*/

         /*消除当前分针*/

         setcolor(15); /*白色*/

         x1=80*sin(m/30*PI)+320;

         y1=180-80*cos(m/30*PI);

         line(320,180,x1,y1);

         /*绘制新的分针*/

         m=t[0].ti_min;

         digitclock(305,333,digitmin(m)); /*在数字时钟中显示新的分钟值*/

         x1=80*sin(m/30*PI)+320;

         y1=180-80*cos(m/30*PI);

         line(320,180,x1,y1);

  }

  /*小时处理*/

  if((t[0].ti_hour*60+t[0].ti_min)!=(h*60+m)){  /*若小时数有变化*/

         /*消除当前时针*/

          setcolor(15); /*白色*/

          x=50*sin((h*60+m)/360*PI)+320;/*50:时钟的长度(单位:像素),320:圆心的x坐标值*/

          y=180-50*cos((h*60+m)/360*PI);

          line(320,180,x,y);

          /*绘制新的时针*/

          h=t[0].ti_hour;

          digitclock(260,333,digithour(h));

          x=50*sin((h*60+m)/360*PI)+320;

          y=180-50*cos((h*60+m)/360*PI);

          line(320,180,x,y);

     }

   }

 }


第5章 总结

本次课程设计用到了很多陌生的函数,如:line(),circle(),setcolor(),settime()等,但是通过自己细心地分析,在老师的耐心指导下,我很快学会了许多没见过的函数。这次课程设计就如同上了一次c语言的课,在设计过程中学到很多书本上学不到的知识。真正的学习过程是在实践中不断地摸索,不断地前进中学习的,在实践中可以发现一些现实的问题,可以遇见一些突发情况。在实践中运用知识,既增强了我们的动手能力,同时也锻炼了我们的思维方式以及解决问题的能力。

通过本次课程设计,使我掌握了如何设计一个程序,如何处理程序设计过程中出现的问题。虽然设计过程中出现很多问题,但是努力去思考,努力去攻克,没有设计不出来的程序,没有攻克不了的难题。C语言是一个功能强大的计算机语言,学会c语言可以为我们以后的发展铺平道路。这次实地上机操作,给了我们一份体验,让我们体会到了在程序编写过程中所遇到的难题,同时也激励我们继续在实践中学习c语言,为以后开发出功能强大的软件积累经验。

最后非常感谢刘老师对我的精心指导!

更多相关推荐:
数字电子时钟课程设计报告

数字电子钟课程设计报告题目数字电子钟的设计与仿真专业机械工程前言加入世贸组织以后中国会面临激烈的竞争这种竞争将是一场科技实力管理水平和人才素质的较量风险和机遇共存同时电子产品的研发日新月异不仅是在通信技术方面数...

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

JINGCHUUNIVERSITYOFTECHNOLOGY单片机原理及应用课程设计报告题目电子时钟专业电气工程及其自动化班级20xx级电工2班学号20xx401020xx2姓名王贞指导教师邹云峰提交日期20xx...

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

基于单片机电子时钟的设计绪论单片机自20世纪70年代问世以来以其极高的性能价格比受到人们的重视和关注应用很广发展很快单片机体积小重量轻抗干扰能力强环境要求不高价格低廉可靠性高灵活性好开发较为容易由于具有上述优点...

数字电子时钟课程设计报告-4

数字电子钟课程设计报告题目数字电子钟的设计与仿真专业通信工程前言加入世贸组织以后中国会面临激烈的竞争这种竞争将是一场科技实力管理水平和人才素质的较量风险和机遇共存同时电子产品的研发日新月异不仅是在通信技术方面数...

数字电子时钟课程设计报告

华北科技学院课程设计数字时钟课程设计报告目录一设计的目的任务和要求2二设计的方案的选择与论证4三电路的设计5a设计内容5b数字时钟结构的设计5c设计步骤61时钟脉冲发生器的设计62时分秒计数电路的设计83计数器...

数字电子钟课程设计报告

目录摘要3关键词3一设计任务与要求4二方案设计与论证4方案一4方案二5三硬件单元电路设计与参数计算51电源电路52按键电路53时钟电路54驱动电路55LED显示电路56单片机电路6四软件设计与流程图10五总原电...

数字电子钟课程设计报告-数电

华东交通大学理工学院课程设计报告书所属课程名称数字电子技术课程设计题目数字电子钟课程设计分院电信分院专业班级10电信2班学号20xx0210410201学生姓名陈晓娟指导教师徐涢基2012年12月18日目录第1...

数字电子钟(计时、校时以及整点报时)数电课程设计报告

电子技术课程设计报告题目电子钟整点报时器姓名马帅学号0801020xx班级工业工程0801成绩1目录一引言1二方案论证选择221设计要求222系统框图223设计过程2三电路仿真与设计331所需芯片及芯片管脚图3...

数字电子时钟课程设计报告

数字电子钟课程设计报告题目数字电子钟的设计专业电气化铁道技术赵旭前言加入世贸组织以后中国会面临激烈的竞争这种竞争将是一场科技实力管理水平和人才素质的较量风险和机遇共存同时电子产品的研发日新月异不仅是在通信技术方...

模拟电子时钟c语言课程设计设计报告

石家庄铁道大学课程设计模拟电子时钟单位电气与电子工程学院分院系专业电气学号学生姓名指导教师完成日期20xx年5月29日摘要电子时钟是一种用电脑实现时分秒计时的装置与机械时钟相比具有更高的准确性和直观性且无机械装...

数字电子钟设计开题报告-张腾飞

湖北工程学院新技术学院本科毕业论文设计开题报告题目数字电子钟的设计与制作院系专业学生姓名号指导教师称20xx年9月8日

电子数字时钟课程设计报告(完整实物图+原理图+web图)

数字电子钟的设计1设计目的数字钟是一种用数字电路技术实现时分秒计时的装置与机械式时钟相比具有更高的准确性和直观性且无机械装置具有更更长的使用寿命因此得到了广泛的使用数字钟从原理上讲是一种典型的数字电路其中包括了...

电子时钟课程设计报告(29篇)