文档库 最新最全的文档下载
当前位置:文档库 › C语言_时钟代码+报告

C语言_时钟代码+报告

C语言_时钟代码+报告

C语言程序设计课程设计报告

选题名称:钟

系(院):

专业:

班级:

姓名学号::

指导教师:

:2007~20081

学年学期学年第学期

2008年1月12日

摘要:

我们日常生活中有各种各样的时钟。随着计算机的普及和计算机科学的飞速发展,人们开始越来越多的利用计算机解决实际问题。开发一个易于查看的时钟有较大的现实意义。同时,该时钟会听到时钟的喀哒声,程序与生活紧密结合,具体直观,开发应用简单。利用C 语言编辑源程序,再进行编译链接生成可执行文件,运行时可以查看时间,听到喀哒声,具体直观,方便了生活。

:Turbo C

关键词计算机;时钟;;函数

目录

4 6 程序调试……………………………………………………………………………

总结 (8)

致谢 (9)

参考文献 (10)

1程序概述

程序设计是一种技术,也是一项工程。程序设计语言是程序设计的工具。一种程序设计语言凝聚了具有时代特征的程序设计理念和方

法。本程序利用C语言中的图形处理函数完成时间的模拟显示。

1.1课题来源

这个C语言时钟的课程设计,可以初步理解C语言编程的方法,对C语言小程序有较深刻的理解。利用C语言中的图形处理函数完成时间的模拟显示。了解图形处理函数的基本功能,掌握C语言中的时间函数等。

1.2课题意义

基于算法思维方法的训练是现代信息素养的重要内容。程序设计是引导学习者利用计算机进行解题的能力培养过程。为了有效地进行程序设计,正确地应用程序设计语言表达算法,必须准确地运用程序设计语言,掌握其语法设计。用C语言编程,设计一个时钟,掌握声音函数sound()、系统时间函数gettime()、绘制多边形函数DrawPoly()的用法。

1.3预期目标

本程序利用C语言中的图形处理函数完成时间的模拟显示。在C 环境中编辑源程序,设置表盘刻度,模拟时针、分针、秒针的运动,声音,生成可执行文件之后并运行在屏幕上会显示一个时钟,便于查看系统的时间,并且会听到秒针运动时的喀哒声。

2 程序分析

2.1基础知识

程序设计是一种技术,也是一项工程。程序设计语言是程序设计的工具。一种程序

C

设计语言凝聚了具有时代特征的程序设计理念和方法。语言结构化程度高、代码见解易读,它具有强大的功能。它把高级语言的基本结构和语句与低级语言的使用性结合

1

起来,可以像汇编语言一样对位、字节和地址进行操作,而这三种操作是计算机最基本的功能。C是结构式语言,结构式语言的显著特点是代码及数据的分隔化,即

程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可以使程序清晰,便于使用、维护以及调试。C语言是一函数形式提供给用户的,用户可方便的调用这写函数,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。

2.2需求分析

(1)技术可行性分析。时钟程序的软硬件要求都是能够达到的。

(2)需求预测分析。一般的时钟应包含有时间的查看,报时等功能,需要通过这个程序实现这些功能,另外还要实现修改时间等辅助功能。

(3)需求确认分析。将需求预测中分析到的需求反馈给用户,让用户提出一些新的要求。这个工作是系统分析中应该持续进行的工作,以确保在系统设计时掌握确实、详尽的用户需求。

3 程序设计及代码编写与注释

#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++)/*划钟点上的短线*/

2

{

if(i%5==0)

l=15;

else

l=5;

x1=200*sin(i*6*pi/180)+300;

y1=200*cos(i*6*pi/180)+240;

x2=(200-l)*sin(i*6*pi/180)+300;

y2=(200-l)*cos(i*6*pi/180)+240;

line(x1,y1,x2,y2);

}

}

main()

{

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");

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

{

settextstyle(TRIPLEX_FONT,HORIZ_DIR,i); /*控制输出字符的字体,方向,大小*/ cleardevice();

settextjustif y(1,1);/*在指定坐标上输出字符串*/

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");

}

init();

setwritemode(1);/*设置画线的输出模式*/ if(k!=0)

{

getdate(d);/*获得系统日期函数*/

o=d[0].da_year;

p=d[0].da_mon;

q=d[0].da_day;

gettime(t);/*获得系统时间函数*/

h=t[0].ti_hour;

m=t[0].ti_min;

s=t[0].ti_sec;

}

setcolor(7);/*设置时针颜色*/

n=(float)h+(float)m/60;

d(150,n,30);/*画出时针*/

setcolor(14);/*设置分针颜色*/

d(170,m,6);/*画出分针*/

setcolor(4);/*设置秒针颜色*/

d(190,s,6);/*画出秒针*/

while(!kbhit())/*控制程序按下任意键退出*/

{

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扬声器*/

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();

}

if(s<10)/*用字符的形式输出时间*/

{ if(m<10)

printf("%u:0%u:0%u",h,m,s);

else

printf("%u:%u:0%u",h,m,s);

}

else

{ if(m<10)

printf("%u:0%u:%u",h,m,s);

else

printf("%u:%u:%u",h,m,s);

}

gotoxy(34,19);/*在指定坐标上输出日期*/

printf("%d年%d月%d日",o,p,q);

printf("\b\b\b\b\b\b\b\b\b");

}

getch();

closegraph();

}

4程序调试

第一步,用编辑程序把编制的源程序按照一定的书写格式送到计算机中,编辑程

序会根据使用人员的意图对源程序进行修改。

第二步,把送入的源程序翻译成机器语言,即用编译程序对源程

序进行语法检查并将符合语法规则的源程序语句翻译成计算机能识别的“语言”。如果经编译程序检查,发现有语法错误,那就必须用编辑程序来修改源程序中的语法错误,然后再编译,直至没有语法错误为止。

第三步,使用计算机中的连接程序,把翻译好的计算机语言程序连接起来,并扶植成一个计算机能真正运行的程序。在连接过程中,一般不会出现连接错误,如果出现了连接错误,说明源程序中存在子程序的调用混乱或参数传递错误等问题。这时又要用编辑程序对源程序进行修改,再进行编译和连接,如此反复进行,直至没有连接错误为止。

第四步,将修改后的程序运行。

C语言时钟

#include "stdio.h" #include "graphics.h" #include "math.h" #include "time.h" #include "dos.h" #define r 200 #define pi 3.1415926 #define X(a,b,c) x=a*cos(b*c*pi/180-pi/2)+300; /*遇到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; /*遇到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) /*宏定义不是说明或语句,在行末不必加分号,如加上分号则连分号也一起置换*/ /* 那么就是当执行d(200,12,6)时相当于写了3句话 首先X(a,b,c) 也就是X(200,12,6) 这时计算x=200*cos(12*6*pi/180-pi/2)+300 也就是计算出了以半径为200,度数为12 步长为6 (实际上就是72度但是这里又减去了pi/2 也就是72-45=27度) 的那点的横坐标也就是x的数值 然后执行Y(a,b,c)也就是Y(200,12,6)这时计算y=200*sin(12*6*pi/180-pi/2)+240 也就是计算出了以半径为200,度数为12 步长为6 (实际上就是72度但是这里又减去了pi/2 也就是72-45=27度) 的那点的纵坐标也就是y的数值 最后是line(300,240,x,y) 也就是画线这样指针就出来了 那么这里第一个参数是设置半径长度第二个参数是设置度数第三个参数是设置步长(度数) */ main() { int x=300,y=240,bx,by,bx1,by1,bx2,by2,bx3,by3,jd,i,j,k,h1,m1,hc=0,l,ax,ay,n,p=0; char b[]={'I',' ',' ',' ',' ','L','o','v','e',' ',' ',' ',' ','Y','o','u'}; int driver=VGA,mode=VGAHI; /*定义图形驱动器*/ int h,m,s; /*定义时针hour 分针minute 秒针second*/ struct time t[1]; /*定义一个结构体名为time的数组,只有一个成员t[0]*/ initgraph(&driver,&mode,""); /*设置图形驱动器*/ setbkcolor(0); /*设置背景色为黑色*/ for(n=0;n<=27;n++) printf("\n"); for(n=0;n<=29;n++) printf(" "); setcolor(14); /*设置前景色为黄色*/ circle(x,y,r); /*以300,240,半径为200画大圆*/

电子时钟程序代码

#include #define uchar unsigned char #define uint unsigned int uchar code weixuan[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01}; //位选,控制哪个数码管亮。(从右到左) uchar code duanxuan[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf, 0xff}; //0-9,'-','灭' uchar data timedata[3]={0x00,0x00,0x00}; //时间缓冲区,分别为:秒、时、分。 uchar data datetime[8]={0xc0,0xc0,0xbf,0xc0,0xc0,0xbf,0xc0,0xc0}; //时间缓冲区,初始化显示00-00-00。 uchar tt1,tt2,tt,tt0,num=0; uchar flag,flag1,flag2,flash; sbit key1=P1^3; sbit key2=P1^5; sbit key3=P1^7; //**************延时函数********************************* void delay(uint del) { uchar i, j; for(i=0; i

单片机基于c语言编写时钟

单片机基于c语言编写时钟 #include #define uint unsigned int #define uchar unsigned char char led[10]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xe6};//共阴数码管数字码 #define weixuan P0 //P0为数码管的段选 sbit sck=P2^7; //移位时钟 sbit tck=P2^6; //锁存时钟 sbit data1=P2^5; //串行数据输入 sbit x1=P1^0; sbit x2=P1^1; sbit x3=P1^2; sbit bee=P3^5; sbit time_change=P1^5; //P3^0为"调时"按键 sbit time_choose=P1^6; //P3^1为"选择时分秒"按键 sbit time_inc=P1^7; //P3^2为"增加"按键 sbit time_ok=P3^3; //P3^3为"完成"按键 uint t; uchar sec,min,hour,sec_ge,sec_shi,min_ge,min_shi,hour_ge,hour_shi; //定义秒,分,时,秒的个位,十位,分的个位,十位,时的个位,十位 int choose_n; //按下"选择时分秒"按键的次数 int flag; //定义"调时"按键的标志位 //--------------------------------------------------------------------- void init(); void display(); void delay(int x); void time_modify(); void send(uchar data8); void naozhong(); //--------------------------------------------------------------------- void main() { init(); while(1) { TR0=1; display(); time_modify(); } } //--------------------------------------------------------------------- void init() {

时钟c语言代码

#include struct clock { int hour; int minute; int second; }; typedef struct clock CLOCK; void Update(void); void Display(void); void Delay(void); int hour, minute, second; /*全局变量定义*/ int main(void) { long i; hour = minute = second = 0; /*hour,minute,second赋初值0*/ for (i=0; i<100000; i++) /*利用循环结构,控制时钟运行的时间*/ { Update(); /*时钟更新*/ Display(); /*时间显示*/ Delay(); /*模拟延时1秒*/ } return 0; } /* 函数功能:时、分、秒时间的更新 函数参数:无 函数返回值:无 */ void Update(void) { second++; if (second == 60)/*若second值为60,表示已过1分钟,则minute值加1*/ { second = 0; minute++; } if (minute == 60)/*若minute值为60,表示已过1小时,则hour值加1*/ { minute = 0;

hour++; } if (hour == 24) /*若hour值为24,则hour的值从0开始计时*/ { hour = 0; } } /* 函数功能:时、分、秒时间的显示 函数参数:无 函数返回值:无 */ void Display(void) /*用回车符'\r'不换行,控制时、分、秒显示的位置*/ { printf("%2d:%2d:%2d\r", hour, minute, second); } /* 函数功能:模拟延迟1秒的时间 函数参数:无 函数返回值:无 */ void Delay(void) { long t; for (t=0; t<500000000; t++) { /*循环体为空语句的循环,起延时作用*/ ; } }

基于单片机C语言电子时钟完整版(闹钟,整点报时)

《单片机技术》课程设计说明书 数字电子钟 系、部:电气与信息工程学院 学生姓名: 指导教师:职称 专业: 班级: 完成时间:2013-06-07

摘要 电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。所以设计一个简易数字电子钟很有必要。本电子钟采用ATMEL公司的AT89S52单片机为核心,使用12MHz 晶振与单片机AT89S52 相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。该电子钟设有四个按键KEY1、KEY2、KEY3、KEY4和KEU5键,进行相应的操作就可实现校时、定时、复位功能。具有时间显示、整点报时、校正等功能。走时准确、显示直观、运行稳定等优点。具有极高的推广应用价值。 关键词电子钟;AT89S52;硬件设计;软件设计

ABSTRACT Clock 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

单片机电子钟c语言程序

单片机电子钟程序设计实习报告 单片机LCD1602电子钟毕业论文 这次嵌入式系统综合实习已经结束了,哎..... 在网络发现很多计算机专业的毕业生都是以电子钟为题的毕业论文,个人感觉做一个电子钟程序设计的技术含量,技术水平都不高。呵呵个人还是比较偏向于软件开发的,比较喜欢vc++开发。 一、引言 1.1课题的背景及目的 随着计算机科学与技术的飞速发展,计算机的应用已经渗透到国民经济与人们生活的各个角落,正在日益改变着传统的人类工作方式和生活方式,而单片机技术又作为计算机技术中的一个独立分支,有着性价比高,集成度高,体积小,可靠性高,控制功能强大,低功耗,低电压,便于生产,便于携带等特点,所以得到越来越广泛的应用,特别是在工业控制和仪表仪器智能化中起极其重要的作用.本文利用单片机强大的控制功能和内部定时器重要部件,设计了一款自行对时间进行调整以及把时、分、秒用LCD显示的电子钟。 电子钟从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。因此,我们此次设计与制做数字钟就是为了了解数字钟的原理,从而学会制作数字钟.而且通过数字钟的制作进一步的了解各种在制作中用到的中小规模集成电路的作用及实用方法.且由于数字钟包括组合逻辑电路和时叙电路.通过它可以进一步学习与掌

握各种组合逻辑电路与时序电路的原理与使用方法 1.2课题的内容要求及研究方法 ①时间以24小时为一个周期; ②显示时、分、秒; ③具有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间; 本文先按照设计的一般步骤,先选定用单片机实现的方案,了解设计要求,再分别从硬件系统设计和软件系统设计两个宏观方面着手.然后大量阅读相关资料,硬件方面,熟练单片机工作基本原理,查出相关元器件的参数,八个八段数码管,继电器等性能.然后画出系统框图和单元电路原理图,再对系统工作原理按照单元电路作简单的说明。软件方面,熟悉编程语言,查找相关子程序.熟悉使用Keil uVision2开发软件及STC-ISP下载软件.把原器件按电路原理图安装.最后再对硬件和软件系统进行调试和仿真。课题的内容是要求设计一款电子钟,而且要求计时准确,显示直观,清晰,时能够精确到秒。最后设计出来的产品,要求电路简洁,稳定性好。 二、课题设计 1、基本原理 本设计基于单片机技术原理,以单片机芯片A T89C52作为核心控制器,通过硬件电路的制作以及软件程序的编制,设计制作出一个多功能数字时钟系统。单片机扩展的LCD显示器用来显示秒、分、时计数单元中的值。整个设计包括两大部分: 硬件部分和软件部分,

51-数字时钟-89C52-单片机C语言程序

数字时钟89C52 单片机C语言程序 STC89C52| /************** 【数字时钟】****************/ /****【功能】1、时间显示2、秒表3、闹钟4、日期显示都可以设置****/ #include /*包含器件配置文件*/ #define uchar unsigned char /*宏定义字符型数据整型数据*/ #define uint unsigned int uchar code H[] = {0x0f, 0x07, 0x0b, 0x0d, 0x0e}; /*按键【P3】端口断码用于按键*/ char Code[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f}; /*显示【0 1 2 3 4 5 6 7 8 9】数字的数码管的段码*/ uchar code C[] = {0x0, 0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F}; /*列扫描控制LED1位2位3位4位5位6位7位8位*/ uchar MON[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; uchar A; uchar BIN=0; /* 【BIN】作为倒计时开始的标志*/ uchar hour = 0; /* 定义[时][分][秒] */ uchar min = 0; uchar sec = 0; uint shi=12; uint fen=30; uchar Mmin=0; uchar Msec=30; uchar M0=0; uchar m=0; uchar year=9; uchar month=7; uchar month2; uchar day=19; uchar set1 = 1; /* set1=1 是调节时分秒set1=2时时调节年月日set=3时事调节闹钟*/ uchar set2 = 1; /* set2=1时是调节【时】位set2=2时事调节【分】位*/ uint x = 0; /* x 每【0.01s】自加一*/ void Delay(uint k);

51单片机电子时钟(C语言)

#include #include #define uchar unsigned char //宏定义 #define uint unsigned int uchar sec,min,hour,sec50,jishu,dtp2; //sec、min、hour、为显示单元,sec50为60秒计数单元,jishu为扫描数码管计数单元 uchar sec1,min1,hour1; //时间中介单元 uchar nzmin,nzhour,nzjishu=0,dispjishu=0; //闹钟分、时定义 uchar data nzbit=0; //闹钟标志位,闹钟默认为开启 uchar data dispbit=0; //显示标志位,默认显示当前时间 uchar data disp[8]; //秒、分、时个位与十位存放数组及‘—’ uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //数字0-9 sbit KEYmin=P3^2; //分加1按钮 sbit KEYhour=P3^3; //时加1按钮 sbit LABA=P1^0; //闹钟输出I/O口

sbit NZdisplay=P3^4; //闹钟显示按钮,按住不放显示闹钟时间,放开则显示当前时间sbit KEYnzmin=P3^5; //闹钟分加1按钮 sbit KEYnzhour=P3^6; //闹钟时加1按钮 sbit KEYoff=P3^7; //关闭闹钟按钮,按第一次为关闭,第二次为开启 void display(); //显示函数声明 void keyscan(); //按键扫描函数声明 void naozhong(); //闹钟判别函数声明 void keynz(); //闹钟按键函数声明 void main() { sec=0; //时间初始化为00—00—00 min=0; hour=0; sec1=0; //显示单元初始化为00—00—00 min1=0; hour1=0; nzmin=01; //闹钟初始时间为01:01 nzhour=01; jishu=0; dtp2=0xfe; P0=0xff; TMOD=0x11; //设T0、T1为模式1 IE=0x8a; TH0=0xb8; //T0定时20ms TL0=0x0; TH1=0xfc; //T1定时1ms TL1=0x66; TR0=1; TR1=1; while(1) { display(); //调用显示子程序 keyscan(); //调用按键子程序 keynz(); //调用闹钟按键子程序 } } void t0int() interrupt 1 //T0定时中断程序 { TH0=0xb8; TL0=0x0; sec50++; if(sec50==50) //对20ms计数50次即1s { sec50=0; //清秒计数器,为下次做准备

时钟、太极图、小球游戏C语言程序设计代码

1项目课题 项目一:时钟 项目二:动态太极图 项目三:小球游戏 2项目内容 项目一:时钟 本时钟编写时用到了Java中的Swing组件以及graphics方法,并具有下列处理功能: (1)显示时钟功能显示钟表时间。 (2)显示时钟功能显示数字时间。 项目二:动态太极图 设计一个动态的太极图。 项目三:小球游戏 用一个挡板去接小球,接到分数加五分,并且随着分数的增加挡板的宽度不断减小,小球的速度不断增减。 3项目步骤 项目一:时钟 (1)创建窗体和画板类 首先,创建窗体类ClockJFrame并且继承JFrame类,再创建创建画板类ClockJPanel并且继承JPanel类。 然后,定义成员变量以及构造方法进行初始化,定义秒时分的坐标:秒针int sx,sy;时针int hx,hy;分针int mx,my。定义时分秒时间:int s,m,h。 最后,初步设计画板尺寸、颜色、位置。 (2)在画板中画刻度线 if(i%5==0){ if(i%15==0){ r=100;//圆心到是12 3 6 9的长度 }else{ r=120;//圆心到8个时针的长度

} }else{ r=140;//圆心到剩余分针的长度 } (3)创建线程,获取当前时间并画时间 在本程序中以实现Runnable接口内部类的形式创建多线程对象。Runnable接口只定义了一个run()方法,所以调用start和sleep()方法时,必须创建Thread实例化对象,Interrupt()方法的作用是中断线程。本程序在move()方法中创建Thread实例化对象。 (4)画时针分针秒针 根据时钟坐标位置的关系得到如下转换公式: hx=(int) (300+(Math.sin(Math.toRadians(h*30+m*0.5))*100)) hy=(int) (300-(Math.cos(Math.toRadians(h*30+m*0.5))*100)) (5)使用repaint()方法重绘组件 项目二:太极图 (1)创建窗体和画板类 首先,创建窗体类taijiJPanel并且继承JPanel类。 然后,定义成员变量以及构造方法进行初始化。 //定义大圆圆心,半径 int dx=400; int dy=300; int dr=200; //定义上中圆的圆心 int x1=400; int y1=200; //定义下中圆的圆心 int x2=400; int y2=400; //定义一个中圆半径

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

模拟时针转动程序 姓名: 完成日期:2021年12月

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

转时针动处理模块指针式的时钟表盘为椭圆形并且圆周上有分布均匀的12个刻度刻度显示清楚钟面上有长度不相同的指针即时针、分针、秒针指针的运动具有规律性为顺时针。 数字时钟处理模块数字钟显示时间的格式是年月日时分秒小时为24进制,分钟和秒是60进制,指针式的时钟和数字式的时钟显示的时间同步且两个时钟所显示的时间与计算机的系统时间一致。 详细设计 time结构体 strume time { usigned char ti_min; usigned char ti_hour; usigned char ti_hud; usigned char ti_sec; }; 全局变量 double h,m,s;这三个变量分别保存小时,分钟,秒。 double x,y,x1,y1,x2,y2;保存数字时钟中小时分钟秒在屏幕中显示的位置。 struct time t[1];定义一个time结构类型的数组。

1.def〔〕 : void def〔〕 def 2. abc〔〕 : void abc〔〕 3 .digitclock〔〕 :void digitclock〔〕 4. clockhandle〔〕:void clockhandle〔〕 5 . main〔〕 : void main〔〕

C语言

C语言——小熊时钟 代码部分 #include #include #include #include #define PI 3.1415926 #define ESC 0x011b float s0=-1,m0=-1,h0=-1; main() { int gdriver, gmode,key,i=3; char H[10]; float n; gdriver = DETECT; initgraph(&gdriver, &gmode, ""); /*初始化图形界面*/ setbkcolor(YELLOW); setcolor(BLUE); setfillstyle(1,1); circle(405,175,22); floodfill(405,175,BLUE); setfillstyle(1,1); /*设置填充形式为红色实填充*/ circle(235,175,22); floodfill(235,175,BLUE); setfillstyle(1,12); circle(320,240,85); circle(320, 240, 82); floodfill(403,240,BLUE); for(n=0;n<=2*PI;n+=PI/30) { putpixel(320+80 * cos(-n), 240+80 * sin(-n),GREEN); /*画标识分钟的小刻度*/ }

for(n=0;n<=2*PI;n+=PI/6) { setcolor(BLUE); circle(320+80 * cos(-n), 240+80 * sin(-n),1); /*画标识小时的大刻度*/ setfillstyle(SOLID_FILL,LIGHTBLUE); floodfill(320+80 * cos(-n), 240+80 * sin(-n),BLUE); } setcolor(GREEN); for(n=0;n<=2*PI;n+=PI/6) { itoa(i,H,10); outtextxy(317+73 * cos(-n), 237+73 * sin(-n),H); /*画标识小时的大刻度对应的数字*/ i--; if(i<1) i+=12; } while(!kbhit()) { timer(); delay(1000); } key=bioskey(0);/*接收键盘按键*/ if(key==ESC) { closegraph(); exit(0); } getch(); closegraph(); /*退出图形界面*/ } timer() { struct tm *when;

c语言嵌入式代码模块

c语言嵌入式代码模块 C语言是一种广泛用于嵌入式系统开发的编程语言,具有简洁高效、可移植性强等特点。在嵌入式系统开发中,我们经常需要编写C语言代码模块来实现各种功能,本文将介绍几个常见的C语言嵌入式代码模块。 一、时钟模块 嵌入式系统中经常需要使用时钟功能,例如计时、定时任务等。以下是一个简单的C语言代码模块实现了一个定时器功能: ```c #include #include void delay(int seconds) { clock_t start_time = clock(); while ((clock() - start_time) / CLOCKS_PER_SEC < seconds); } int main() { printf("Start\n"); delay(5); // 延时5秒 printf("End\n"); return 0;

} ``` 该代码模块使用`clock()`函数获取当前时钟时间,并通过循环等待指定的时间。通过调用`delay()`函数可以实现延时功能。 二、串口通信模块 在嵌入式系统中,与外部设备通信常常使用串口。以下是一个简单的C语言代码模块实现了串口通信功能: ```c #include void uart_send(char data) { // 发送数据到串口 printf("Send data: %c\n", data); } char uart_receive() { // 从串口接收数据 char data = 'A'; printf("Receive data: %c\n", data); return data; }

C语言时钟程序

C语言时钟程序 #include #define uchar unsigned char #define uint unsigned int //sbit dula=P2^6; //sbit wela=P2^7; sbit dula=P1^0; //P1.0 sbit rs=P2^6; sbit lcden=P2^7; sbit rw=P2^5; sbit s1=P3^0; sbit s2=P3^1; sbit s3=P3^2; sbit beep=P1^5; uchar count,s1num; char miao,shi,fen,shi1,ge1,week,ri,yue,nian; uchar code table[]=" 2013-04-29MON"; uchar code table1[]=" 00:00:00"; void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void write_com(uchar com) { rs=0;

lcden=0; rw=0; P0=com; delay(5); lcden=1; delay(5); lcden=0; } void di() { beep=0; delay(100); beep=1; } void write_date(uchar date) { rs=1; lcden=0; rw=0; P0=date; delay(5); lcden=1; delay(5); lcden=0; }

void init() { uchar num; dula=1; //wela=0; lcden=0; // fen=59; // miao=53; // shi=23; write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); write_com(0x80); for(num=0;num<15;num++) { write_date(table[num]); delay(5); } write_com(0x80+0x40); for(num=0;num<12;num++) { write_date(table1[num]); delay(5);

基于51系列单片机与DS1302时钟芯片的电子时钟C语言Proteus仿真报告

基于单片机的电子时钟 : 班级: 学号: 指导教师: 完成日期: I / 20

目录 摘要 一、引言 (1) 二、基于单片机的电子时钟硬件选择分析 (2) 2.1主要IC芯片选择 (2) 2.1.1微处理器选择 (2) 2.1.2 DS1302简介 (4) 2.1.3 DS1302引脚说明 (4) 2.2电子时钟硬件电路设计 (5) 2.2.1时钟电路设计 (6) 2.2.2整点报时功能 (7) 三、Protel软件画原理图 (8) 3.1系统工作流程图 (8) 3.2原理图 (9) 四、proteus软件仿真与调试 (9) 4.1电路板的仿真 (9) 4.2软件调试 (9) 五、源程序 (10) 六、课设心得 (13) II / 20

七、参考文献 (13) 基于单片机电子时钟设计 摘要 电子时钟主要是利用电子技术将时钟电子化、数字化,拥有时钟精确、体积小、界面友好、可扩展性能强等特点,被广泛应用于生活和工作当中。另外,在生活和工农业生产中,也常常需要温度,这就需要电子时钟具有多功能性。 本设计主要为实现一款可正常显示时钟/日历、带有定时闹铃的多功能电子时钟。 本文对当前电子钟开发手段进行了比较和分析,最终确定了采用单片机技术实现多功能电子时钟。本设计应用AT89C52芯片作为核心,6位LED数码管显示,使用DS1302实时时钟日历芯片完成时钟/日历的基本功能。这种实现方法的优点是电路简单,性能可靠,实时性好,时间精确,操作简单,编程容易。 该电子时钟可以应用于一般的生活和工作中,也可通过改装,提高性能,增加新功能,从而给人们的生活和工作带来更多的方便。 关键词:电子时钟;多功能;AT89C52;时钟日历芯片 III / 20

DS1302时钟C语言编程完整实例

DS1302时钟C语言编程完整实例

1 DS130 2 简介: DS1302是美国D ALLAS 公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态R AM,采用S PI 三线接口与C PU 进行 同步通信,并可采用突发方式一次传送多个字节的时钟信号和R AM 数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。工作电压宽达2.5~5.5V。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力。DS1302的外部 引脚分配如图1所示及内部结构如图2所示。DS1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录,因此广泛应用于测量系统中。 图1 DS1302的外部引脚分配 图2 DS1302的内部结构 各引脚的功能为: V cc1:主电源;Vcc2:备份电源。当V cc2>Vcc1+0.2V 时,由Vcc2向D S1302供电,当V cc2< Vcc1时,由V cc1向D S1302供电。 SCLK:串行时钟,输入,控制数据的输入与输出; I/O:三线接口时的双向数据线; CE:输入信号,在读、写数据期间,必须为高。该引脚有两个功能:第一,CE 开始控制字访问移位寄存器的控制逻辑;其次,

CE 提供结束单字节或多字节数据传输的方法。 DS1302有下列几组寄存器: ① D S1302有关日历、时间的寄存器共有12个,其中有7个寄存器 (读时81h ~8Dh ,写时80h ~8Ch ),存放的数据格式为 BCD 码形式, 如图3所示。 图 3 DS1302有关日历、时间的寄存器 小时寄存器(85h 、84h )的位7用于定义 D S1302是运行于12小时 模式还是24小时模式。当为高时,选 择12小时模式。在12小时模式时, 位5是 ,当为1时,表示 PM 。在24小时模式时,位5是第二个10小时 位。 秒寄存器(81h 、80h )的位7定义为时钟暂停标志(CH )。当该 位置为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位置为 0时,时钟开始运行。 控制寄存器(8Fh 、8Eh )的位7是写保护位(WP ), 其它7位均置 为0。在任何的对时钟和 R AM 的写操作之前,WP 位必须为0。当 WP 位为1时,写保护位防止对任一寄存器的写操作。 ②DS1302有关 R AM 的地址 DS1302中附加31字节静态 R AM 的地址如图4所示。 图4 ③ D S1302的工作模式寄存器 所谓突发模式是指一次传送多个字节的时钟信号和 R AM 数据。 突发模式寄存器如图5所示。

相关文档
相关文档 最新文档